summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2018-05-20 20:50:04 +0100
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2018-05-20 20:50:04 +0100
commitabca14d6015dc88a8e66c4baa374ab7102798ee4 (patch)
tree288545fd87cb7422e50169138b9fdf2f3a4d5897
parent9e4f89a2a1e154d05f48b996a20fef1bdbbe9d51 (diff)
downloadpsycopg2-abca14d6015dc88a8e66c4baa374ab7102798ee4.tar.gz
Fixed keywords support for encrypt_password and tests completed
-rw-r--r--psycopg/psycopgmodule.c2
-rwxr-xr-xtests/test_connection.py30
2 files changed, 29 insertions, 3 deletions
diff --git a/psycopg/psycopgmodule.c b/psycopg/psycopgmodule.c
index 121bf13..1b0567b 100644
--- a/psycopg/psycopgmodule.c
+++ b/psycopg/psycopgmodule.c
@@ -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 */
};
diff --git a/tests/test_connection.py b/tests/test_connection.py
index f8d2d1d..7861ab7 100755
--- a/tests/test_connection.py
+++ b/tests/test_connection.py
@@ -1421,6 +1421,13 @@ class TestEncryptPassword(ConnectingTestCase):
'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,
@@ -1444,6 +1451,9 @@ class TestEncryptPassword(ConnectingTestCase):
)[: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(
@@ -1451,11 +1461,27 @@ class TestEncryptPassword(ConnectingTestCase):
'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):