Skip to content

Commit

Permalink
Fixed keywords support for encrypt_password and tests completed
Browse files Browse the repository at this point in the history
  • Loading branch information
dvarrazzo committed May 20, 2018
1 parent 9e4f89a commit abca14d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
2 changes: 1 addition & 1 deletion psycopg/psycopgmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -957,7 +957,7 @@ static PyMethodDef psycopgMethods[] = {
{"get_wait_callback", (PyCFunction)psyco_get_wait_callback,
METH_NOARGS, psyco_get_wait_callback_doc},
{"encrypt_password", (PyCFunction)psyco_encrypt_password,
METH_VARARGS, psyco_encrypt_password_doc},
METH_VARARGS|METH_KEYWORDS, psyco_encrypt_password_doc},

{NULL, NULL, 0, NULL} /* Sentinel */
};
Expand Down
30 changes: 28 additions & 2 deletions tests/test_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -1421,6 +1421,13 @@ def test_encrypt_password_post_9_6(self):
'md594839d658c28a357126f105b9cb14cfc'
)

# keywords
self.assertEqual(
ext.encrypt_password(
password='psycopg2', user='ashesh',
scope=self.conn, algorithm='md5'),
'md594839d658c28a357126f105b9cb14cfc'
)
if libpq_version() < 100000:
self.assertRaises(
psycopg2.NotSupportedError,
Expand All @@ -1444,18 +1451,37 @@ def test_encrypt_password_post_9_6(self):
)[:14], 'SCRAM-SHA-256$'
)

self.assertRaises(psycopg2.ProgrammingError,
ext.encrypt_password, 'psycopg2', 'ashesh', self.conn, 'abc')

@skip_after_postgres(10)
def test_encrypt_password_pre_10(self):
self.assertEqual(
ext.encrypt_password('psycopg2', 'ashesh', self.conn),
'md594839d658c28a357126f105b9cb14cfc'
)

# Encryption algorithm will be ignored for postgres version < 10, it
# will always use MD5.
self.assertRaises(psycopg2.ProgrammingError,
ext.encrypt_password, 'psycopg2', 'ashesh', self.conn, 'abc')

def test_encrypt_md5(self):
self.assertEqual(
ext.encrypt_password('psycopg2', 'ashesh', algorithm='md5'),
'md594839d658c28a357126f105b9cb14cfc'
)

def test_encrypt_scram(self):
if libpq_version() >= 100000:
self.assert_(
ext.encrypt_password(
'psycopg2', 'ashesh', self.conn, 'scram-sha-256')
.startswith('SCRAM-SHA-256$'))
else:
self.assertRaises(psycopg2.NotSupportedError,
ext.encrypt_password,
password='psycopg2', user='ashesh',
scope=self.conn, algorithm='scram-sha-256')


class AutocommitTests(ConnectingTestCase):
def test_closed(self):
Expand Down

0 comments on commit abca14d

Please sign in to comment.