def test_unix_socket_parsing(self): url = db.parse('postgres://%2Fvar%2Frun%2Fpostgresql/d8r82722r2kuvn') self.assertEqual(url['ENGINE'], 'django.db.backends.postgresql') self.assertEqual(url['NAME'], 'd8r82722r2kuvn') self.assertEqual(url['HOST'], '/var/run/postgresql') self.assertEqual(url['USER'], '') self.assertEqual(url['PASSWORD'], '') self.assertEqual(url['PORT'], '') url = db.parse('postgres://C%3A%2Fvar%2Frun%2Fpostgresql/d8r82722r2kuvn') self.assertEqual(url['ENGINE'], 'django.db.backends.postgresql') self.assertEqual(url['HOST'], 'C:/var/run/postgresql') self.assertEqual(url['USER'], '') self.assertEqual(url['PASSWORD'], '') self.assertEqual(url['PORT'], '')
def test_databases(self): result = db.parse({ 'default': 'sqlite://:memory:', 'postgresql': 'postgres://uf07k1i6d8ia0v:@:5435/d8r82722r2kuvn', 'mysql': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'd8r82722r2kuvn', 'HOST': 'ec2-107-21-253-135.compute-1.amazonaws.com', 'USER': '******', 'PASSWORD': '******', 'PORT': 3306, }, }) self.assertEqual(result['default']['ENGINE'], 'django.db.backends.sqlite3') self.assertEqual(result['default']['NAME'], ':memory:') self.assertEqual(result['postgresql']['ENGINE'], 'django.db.backends.postgresql') self.assertEqual(result['postgresql']['NAME'], 'd8r82722r2kuvn') self.assertEqual(result['postgresql']['HOST'], '') self.assertEqual(result['postgresql']['USER'], 'uf07k1i6d8ia0v') self.assertEqual(result['postgresql']['PASSWORD'], '') self.assertEqual(result['postgresql']['PORT'], 5435) self.assertEqual(result['mysql']['ENGINE'], 'django.db.backends.mysql') self.assertEqual(result['mysql']['NAME'], 'd8r82722r2kuvn') self.assertEqual(result['mysql']['HOST'], 'ec2-107-21-253-135.compute-1.amazonaws.com') self.assertEqual(result['mysql']['USER'], 'uf07k1i6d8ia0v') self.assertEqual(result['mysql']['PASSWORD'], 'wegauwhgeuioweg') self.assertEqual(result['mysql']['PORT'], 3306)
def test_network_parsing(self): url = db.parse('postgres://uf07k1i6d8ia0v:@:5435/d8r82722r2kuvn') self.assertEqual(url['ENGINE'], 'django.db.backends.postgresql') self.assertEqual(url['NAME'], 'd8r82722r2kuvn') self.assertEqual(url['HOST'], '') self.assertEqual(url['USER'], 'uf07k1i6d8ia0v') self.assertEqual(url['PASSWORD'], '') self.assertEqual(url['PORT'], 5435)
def test_parsing_with_special_characters(self): url = db.parse('postgres://%23user:%[email protected]:5431/%23database') self.assertEqual(url['ENGINE'], 'django.db.backends.postgresql') self.assertEqual(url['NAME'], '#database') self.assertEqual(url['HOST'], 'ec2-107-21-253-135.compute-1.amazonaws.com') self.assertEqual(url['USER'], '#user') self.assertEqual(url['PASSWORD'], '#password') self.assertEqual(url['PORT'], 5431)
def _test_file(self, dbname): url = db.parse('sqlite://{}'.format(dbname)) self.assertEqual(url['ENGINE'], 'django.db.backends.sqlite3') self.assertEqual(url['NAME'], dbname) self.assertEqual(url['HOST'], '') self.assertEqual(url['USER'], '') self.assertEqual(url['PASSWORD'], '') self.assertEqual(url['PORT'], '') self.assertDictEqual(url['OPTIONS'], {})
def test_dsn_parsing(self): dsn = ('(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)' '(HOST=oraclehost)(PORT=1521)))' '(CONNECT_DATA=(SID=hr)))') url = db.parse('oracle://*****:*****@/' + dsn) self.assertEqual(url['ENGINE'], 'django.db.backends.oracle') self.assertEqual(url['USER'], 'scott') self.assertEqual(url['PASSWORD'], 'tiger') self.assertEqual(url['HOST'], '') self.assertEqual(url['PORT'], '')
def test_parsing(self): if self.SCHEME is None: return for value, (user, passw, host, port, database, options) in GENERIC_TESTS: value = '{scheme}://{value}'.format(scheme=self.SCHEME, value=value) with self.subTest(value=value): result = db.parse(value) self.assertEqual(result['NAME'], database) self.assertEqual(result['HOST'], host) self.assertEqual(result['USER'], user) self.assertEqual(result['PASSWORD'], passw) self.assertEqual(result['PORT'], port if not self.STRING_PORTS else str(port)) self.assertDictEqual(result['OPTIONS'], options)
def test_gis_search_path_parsing(self): url = db.parse( 'postgis://*****:*****@ec2-107-21-253-135.compute-1.amazonaws.com:5431' '/d8r82722r2kuvn?currentSchema=otherschema' ) self.assertEqual(url['ENGINE'], 'django.contrib.gis.db.backends.postgis') self.assertEqual(url['NAME'], 'd8r82722r2kuvn') self.assertEqual(url['HOST'], 'ec2-107-21-253-135.compute-1.amazonaws.com') self.assertEqual(url['USER'], 'uf07k1i6d8ia0v') self.assertEqual(url['PASSWORD'], 'wegauwhgeuioweg') self.assertEqual(url['PORT'], 5431) self.assertEqual(url['OPTIONS']['options'], '-c search_path=otherschema') self.assertNotIn('currentSchema', url['OPTIONS'])
def test_with_sslca_options(self): url = db.parse( 'mysql://*****:*****@ec2-107-21-253-135.compute-1.amazonaws.com:3306/d8r82722r2kuvn' '?ssl-ca=rds-combined-ca-bundle.pem') self.assertEqual(url['ENGINE'], 'django.db.backends.mysql') self.assertEqual(url['NAME'], 'd8r82722r2kuvn') self.assertEqual(url['HOST'], 'ec2-107-21-253-135.compute-1.amazonaws.com') self.assertEqual(url['USER'], 'uf07k1i6d8ia0v') self.assertEqual(url['PASSWORD'], 'wegauwhgeuioweg') self.assertEqual(url['PORT'], 3306) self.assertEqual(url['OPTIONS'], {'ssl': { 'ca': 'rds-combined-ca-bundle.pem' }})
def test_database_url_with_options(self): # Test full options url = db.parse( 'postgres://*****:*****@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn' '?sslrootcert=rds-combined-ca-bundle.pem&sslmode=verify-full' ) self.assertEqual(url['ENGINE'], 'django.db.backends.postgresql') self.assertEqual(url['NAME'], 'd8r82722r2kuvn') self.assertEqual(url['HOST'], 'ec2-107-21-253-135.compute-1.amazonaws.com') self.assertEqual(url['USER'], 'uf07k1i6d8ia0v') self.assertEqual(url['PASSWORD'], 'wegauwhgeuioweg') self.assertEqual(url['PORT'], 5431) self.assertEqual(url['OPTIONS'], { 'sslrootcert': 'rds-combined-ca-bundle.pem', 'sslmode': 'verify-full' })
def test_memory_url(self): url = db.parse('sqlite://:memory:') self.assertEqual(url['ENGINE'], 'django.db.backends.sqlite3') self.assertEqual(url['NAME'], ':memory:')