diff options
author | Amjith Ramanujam <amjith@newrelic.com> | 2015-01-04 16:20:52 -0800 |
---|---|---|
committer | Amjith Ramanujam <amjith@newrelic.com> | 2015-01-04 16:20:52 -0800 |
commit | b61663a65c6f05fe36d40bf903e5b547056fc9ca (patch) | |
tree | 42315c76c103fce520269cc75d14a7d7859e2798 | |
parent | c9109090d7dc3460e045fdfafecc08ad861bc959 (diff) |
Move parse_dsn tests to test folder instead of doctests.
-rw-r--r-- | pgcli/pgexecute.py | 23 | ||||
-rw-r--r-- | tests/test_pgexecute.py | 40 |
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 |