mirror of
https://github.com/jazzband/dj-database-url.git
synced 2026-03-16 22:20:24 +00:00
Merge pull request #84 from tomkins/ipv6-parsing
Fix IPv6 address parsing
This commit is contained in:
commit
2c512e95c4
2 changed files with 18 additions and 6 deletions
|
|
@ -87,13 +87,14 @@ def parse(url, engine=None, conn_max_age=0):
|
|||
path = ':memory:'
|
||||
|
||||
# Handle postgres percent-encoded paths.
|
||||
netloc = url.netloc
|
||||
if "@" in netloc:
|
||||
netloc = netloc.rsplit("@", 1)[1]
|
||||
if ":" in netloc:
|
||||
netloc = netloc.split(":", 1)[0]
|
||||
hostname = netloc or ''
|
||||
hostname = url.hostname or ''
|
||||
if '%2f' in hostname.lower():
|
||||
# Switch to url.netloc to avoid lower cased paths
|
||||
hostname = url.netloc
|
||||
if "@" in hostname:
|
||||
hostname = hostname.rsplit("@", 1)[1]
|
||||
if ":" in hostname:
|
||||
hostname = hostname.split(":", 1)[0]
|
||||
hostname = hostname.replace('%2f', '/').replace('%2F', '/')
|
||||
|
||||
# Update with environment configuration.
|
||||
|
|
|
|||
|
|
@ -43,6 +43,17 @@ class DatabaseTestSuite(unittest.TestCase):
|
|||
assert url['PASSWORD'] == ''
|
||||
assert url['PORT'] == ''
|
||||
|
||||
def test_ipv6_parsing(self):
|
||||
url = 'postgres://ieRaekei9wilaim7:wegauwhgeuioweg@[2001:db8:1234::1234:5678:90af]:5431/d8r82722r2kuvn'
|
||||
url = dj_database_url.parse(url)
|
||||
|
||||
assert url['ENGINE'] == 'django.db.backends.postgresql_psycopg2'
|
||||
assert url['NAME'] == 'd8r82722r2kuvn'
|
||||
assert url['HOST'] == '2001:db8:1234::1234:5678:90af'
|
||||
assert url['USER'] == 'ieRaekei9wilaim7'
|
||||
assert url['PASSWORD'] == 'wegauwhgeuioweg'
|
||||
assert url['PORT'] == 5431
|
||||
|
||||
def test_postgres_search_path_parsing(self):
|
||||
url = 'postgres://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn?currentSchema=otherschema'
|
||||
url = dj_database_url.parse(url)
|
||||
|
|
|
|||
Loading…
Reference in a new issue