summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmjith Ramanujam <amjith@newrelic.com>2015-01-04 16:20:52 -0800
committerAmjith Ramanujam <amjith@newrelic.com>2015-01-04 16:20:52 -0800
commitb61663a65c6f05fe36d40bf903e5b547056fc9ca (patch)
tree42315c76c103fce520269cc75d14a7d7859e2798
parentc9109090d7dc3460e045fdfafecc08ad861bc959 (diff)
Move parse_dsn tests to test folder instead of doctests.
-rw-r--r--pgcli/pgexecute.py23
-rw-r--r--tests/test_pgexecute.py40
2 files changed, 47 insertions, 16 deletions
diff --git a/pgcli/pgexecute.py b/pgcli/pgexecute.py
index 3f0a55ee..8a79ebd7 100644
--- a/pgcli/pgexecute.py
+++ b/pgcli/pgexecute.py
@@ -1,27 +1,14 @@
+import logging
import psycopg2
from .packages import pgspecial
+_logger = logging.getLogger(__name__)
+
def _parse_dsn(dsn, default_user, default_password, default_host,
default_port):
"""
This function parses a postgres url to get the different components.
- >>> _parse_dsn('postgres://user:password@host:5432/dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'user', 'password', 'host', '5432')
- >>> _parse_dsn('postgres://user@host:5432/dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'user', 'fpasswd', 'host', '5432')
- >>> _parse_dsn('postgres://localhost:5432/dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'fuser', 'fpasswd', 'localhost', '5432')
- >>> _parse_dsn('postgres://user:password@host/dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'user', 'password', 'host', '1234')
- >>> _parse_dsn('postgres://user@host/dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'user', 'fpasswd', 'host', '1234')
- >>> _parse_dsn('postgres://localhost/dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'fuser', 'fpasswd', 'localhost', '1234')
- >>> _parse_dsn('postgres:///dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- >>> _parse_dsn('postgresql://user:password@host:5432/dbname', 'fuser', 'fpasswd', 'fhost', '1234')
- ('dbname', 'user', 'password', 'host', '5432')
"""
user = password = host = port = dbname = None
@@ -46,6 +33,10 @@ def _parse_dsn(dsn, default_user, default_password, default_host,
port = port or default_port
dbname = dbname or dsn
+ _logger.debug('Parsed connection params:'
+ 'dbname: %r, user: %r, password: %r, host: %r, port: %r',
+ dbname, user, password, host, port)
+
return (dbname, user, password, host, port)
class PGExecute(object):
diff --git a/tests/test_pgexecute.py b/tests/test_pgexecute.py
index e69de29b..185bf7aa 100644
--- a/tests/test_pgexecute.py
+++ b/tests/test_pgexecute.py
@@ -0,0 +1,40 @@
+from pgcli.pgexecute import _parse_dsn
+
+def test__parse_dsn():
+ test_cases = [
+ # Full dsn with all components.
+ ('postgres://user:password@host:5432/dbname',
+ ('dbname', 'user', 'password', 'host', '5432')),
+
+ # dsn without password.
+ ('postgres://user@host:5432/dbname',
+ ('dbname', 'user', 'fpasswd', 'host', '5432')),
+
+ # dsn without user or password.
+ ('postgres://localhost:5432/dbname',
+ ('dbname', 'fuser', 'fpasswd', 'localhost', '5432')),
+
+ # dsn without port.
+ ('postgres://user:password@host/dbname',
+ ('dbname', 'user', 'password', 'host', '1234')),
+
+ # dsn without password and port.
+ ('postgres://user@host/dbname',
+ ('dbname', 'user', 'fpasswd', 'host', '1234')),
+
+ # dsn without user, password, port.
+ ('postgres://localhost/dbname',
+ ('dbname', 'fuser', 'fpasswd', 'localhost', '1234')),
+
+ # dsn without user, password, port or host.
+ ('postgres:///dbname',
+ ('dbname', 'fuser', 'fpasswd', 'fhost', '1234')),
+
+ # Full dsn with all components but with postgresql:// prefix.
+ ('postgresql://user:password@host:5432/dbname',
+ ('dbname', 'user', 'password', 'host', '5432')),
+
+ ]
+
+ for dsn, expected in test_cases:
+ assert _parse_dsn(dsn, 'fuser', 'fpasswd', 'fhost', '1234') == expected