summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorOleksandr Shulgin <oleksandr.shulgin@zalando.de>2015-06-01 15:11:12 +0200
committerOleksandr Shulgin <oleksandr.shulgin@zalando.de>2015-06-01 15:11:12 +0200
commit6a2f21aa14eec258178b6a90255ebfe7bbe0acdc (patch)
treef019778ec824557660cff71ec9637162697414d7 /tests
parent6c57e4a648cbd5ff81db425978e007f5961e2e77 (diff)
downloadpsycopg2-6a2f21aa14eec258178b6a90255ebfe7bbe0acdc.tar.gz
Move parse_dsn to extensions, add tests
Diffstat (limited to 'tests')
-rwxr-xr-xtests/test_connection.py31
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):