From 3e72f4b7b6ff92a78c546115c5ff6fe63661dece Mon Sep 17 00:00:00 2001 From: Mads Jensen Date: Thu, 28 Sep 2017 21:53:59 +0200 Subject: [PATCH] Completed test coverage for BasePasswordHasher. --- tests/auth_tests/test_hashers.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/auth_tests/test_hashers.py b/tests/auth_tests/test_hashers.py index f00e2720b9..b03046c0b1 100644 --- a/tests/auth_tests/test_hashers.py +++ b/tests/auth_tests/test_hashers.py @@ -431,6 +431,8 @@ class TestUtilsHashPass(SimpleTestCase): class BasePasswordHasherTests(SimpleTestCase): + not_implemented_msg = 'subclasses of BasePasswordHasher must provide %s() method' + def setUp(self): self.hasher = BasePasswordHasher() @@ -445,6 +447,33 @@ class BasePasswordHasherTests(SimpleTestCase): with self.assertRaisesMessage(ValueError, msg): PlainHasher()._load_library() + def test_attributes(self): + self.assertIsNone(self.hasher.algorithm) + self.assertIsNone(self.hasher.library) + + def test_encode(self): + msg = self.not_implemented_msg % 'an encode' + with self.assertRaisesMessage(NotImplementedError, msg): + self.hasher.encode('password', 'salt') + + def test_harden_runtime(self): + msg = 'subclasses of BasePasswordHasher should provide a harden_runtime() method' + with self.assertWarns(Warning, msg=msg): + self.hasher.harden_runtime('password', 'encoded') + + def test_must_update(self): + self.assertIs(self.hasher.must_update('encoded'), False) + + def test_safe_summary(self): + msg = self.not_implemented_msg % 'a safe_summary' + with self.assertRaisesMessage(NotImplementedError, msg): + self.hasher.safe_summary('encoded') + + def test_verify(self): + msg = self.not_implemented_msg % 'a verify' + with self.assertRaisesMessage(NotImplementedError, msg): + self.hasher.verify('password', 'encoded') + @skipUnless(argon2, "argon2-cffi not installed") @override_settings(PASSWORD_HASHERS=PASSWORD_HASHERS)