Skip to content

Commit a347ee5

Browse files
committed
use separate factories for creating bad digestmod cases
One factory is for test cases when the digestmod parameter is missing; the other is for test cases when the digestmod parameter is unknown.
1 parent ca7851c commit a347ee5

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

Lib/test/test_hmac.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -620,16 +620,23 @@ def do_test_constructor_unknown_digestmod(self, catcher):
620620
def cases_missing_digestmod_in_constructor(self):
621621
raise NotImplementedError
622622

623+
def make_missing_digestmod_cases(self, func, choices):
624+
"""Generate cases for missing digestmod tests."""
625+
key, msg = b'unused key', b'unused msg'
626+
cases = self._invalid_digestmod_cases(func, key, msg, choices)
627+
return [(func, (key,), {}), (func, (key, msg), {})] + cases
628+
623629
def cases_unknown_digestmod_in_constructor(self):
624630
raise NotImplementedError
625631

626-
def make_invalid_digestmod_cases(self, func, invalid_values):
627-
"""Generate cases for either missing or unknown digestmod tests."""
628-
key = b'unused key'
629-
msg = b'unused msg'
632+
def make_unknown_digestmod_cases(self, func, choices):
633+
"""Generate cases for unknown digestmod tests."""
634+
key, msg = b'unused key', b'unused msg'
635+
return self._invalid_digestmod_cases(func, key, msg, choices)
630636

637+
def _invalid_digestmod_cases(self, func, key, msg, choices):
631638
cases = []
632-
for digestmod in invalid_values:
639+
for digestmod in choices:
633640
kwargs = {'digestmod': digestmod}
634641
cases.append((func, (key,), kwargs))
635642
cases.append((func, (key, msg), kwargs))
@@ -678,13 +685,12 @@ class PyConstructorBaseMixin(PyModuleMixin,
678685
ConstructorTestCaseMixin):
679686

680687
def cases_missing_digestmod_in_constructor(self):
681-
func, key, msg = self.hmac_new, b'unused key', b'unused msg'
682-
cases = self.make_invalid_digestmod_cases(func, ['', None, False])
683-
cases.extend([(func, (key,), {}), (func, (key, msg), {})])
684-
return cases
688+
func, choices = self.hmac_new, ['', None, False]
689+
return self.make_missing_digestmod_cases(func, choices)
685690

686691
def cases_unknown_digestmod_in_constructor(self):
687-
return self.make_invalid_digestmod_cases(self.hmac_new, ['unknown'])
692+
func, choices = self.hmac_new, ['unknown']
693+
return self.make_unknown_digestmod_cases(func, choices)
688694

689695
@requires_builtin_sha2()
690696
def test_constructor_with_module(self):
@@ -703,7 +709,7 @@ class PyConstructorTestCase(ThroughObjectMixin, PyConstructorBaseMixin,
703709

704710
class PyModuleConstructorTestCase(ThroughModuleAPIMixin, PyConstructorBaseMixin,
705711
unittest.TestCase):
706-
"""Test the hmac.new() constructor function."""
712+
"""Test the hmac.new() and hmac.digest() functions."""
707713

708714
def test_hmac_digest_digestmod_parameter(self):
709715
func = self.hmac_digest
@@ -749,13 +755,12 @@ def test_constructor_unknown_digestmod(self):
749755
self.do_test_constructor_unknown_digestmod(self.assert_digestmod_error)
750756

751757
def cases_missing_digestmod_in_constructor(self):
752-
func, key, msg = self.hmac_new, b'unused key', b'unused msg'
753-
cases = self.make_invalid_digestmod_cases(func, ['', None, False])
754-
cases.extend([(func, (key,), {}), (func, (key, msg), {})])
755-
return cases
758+
func, choices = self.hmac_new, ['', None, False]
759+
return self.make_missing_digestmod_cases(func, choices)
756760

757761
def cases_unknown_digestmod_in_constructor(self):
758-
return self.make_invalid_digestmod_cases(self.hmac_new, ['unknown', 1234])
762+
func, choices = self.hmac_new, ['unknown', 1234]
763+
return self.make_unknown_digestmod_cases(func, choices)
759764

760765

761766
class OpenSSLConstructorTestCase(ThroughOpenSSLAPIMixin,

0 commit comments

Comments
 (0)