diff options
author | Oleksandr Shulgin <oleksandr.shulgin@zalando.de> | 2015-06-01 15:11:12 +0200 |
---|---|---|
committer | Oleksandr Shulgin <oleksandr.shulgin@zalando.de> | 2015-06-01 15:11:12 +0200 |
commit | 6a2f21aa14eec258178b6a90255ebfe7bbe0acdc (patch) | |
tree | f019778ec824557660cff71ec9637162697414d7 /tests | |
parent | 6c57e4a648cbd5ff81db425978e007f5961e2e77 (diff) | |
download | psycopg2-6a2f21aa14eec258178b6a90255ebfe7bbe0acdc.tar.gz |
Move parse_dsn to extensions, add tests
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/test_connection.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/test_connection.py b/tests/test_connection.py index 340693e..eb80d4c 100755 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -270,6 +270,37 @@ class ConnectionTests(ConnectingTestCase): self.assert_(c.closed, "connection failed so it must be closed") self.assert_('foobar' not in c.dsn, "password was not obscured") + def test_parse_dsn(self): + from psycopg2 import ProgrammingError + from psycopg2.extensions import parse_dsn + + self.assertEqual(parse_dsn('dbname=test user=tester password=secret'), + dict(user='tester', password='secret', dbname='test'), + "simple DSN parsed") + + self.assertEqual(parse_dsn("dbname='test 2' user=tester password=secret"), + dict(user='tester', password='secret', dbname='test 2'), + "DSN with quoting parsed") + + self.assertEqual(parse_dsn('postgresql://tester:secret@/test'), + dict(user='tester', password='secret', dbname='test'), + "simple URI dsn parsed") + + # Can't really use assertRaisesRegexp() here since we need to + # make sure that secret is *not* exposed in the error messgage + # (and it also requires python >= 2.7). + raised = False + try: + # unterminated quote after dbname: + parse_dsn("dbname='test 2 user=tester password=secret") + except ProgrammingError, e: + raised = True + self.assertTrue(e.message.find('secret') < 0, + "DSN was not exposed in error message") + except e: + self.fail("unexpected error condition: " + repr(e)) + self.assertTrue(raised, "ProgrammingError raised due to invalid DSN") + class IsolationLevelsTestCase(ConnectingTestCase): |