From b70ba392164791f87deb20260188425ba868c864 Mon Sep 17 00:00:00 2001 From: David Tulloh <git-david@tulloh.id.au> Date: Tue, 31 May 2016 18:24:04 +0200 Subject: [PATCH] Expand tests to cover alternate digests --- repoze/who/tests/test__auth_tkt.py | 40 ++++++++++++++++++++++++++++++++++++---- 1 files changed, 36 insertions(+), 4 deletions(-) diff --git a/repoze/who/tests/test__auth_tkt.py b/repoze/who/tests/test__auth_tkt.py index 75572f1..3035442 100644 --- a/repoze/who/tests/test__auth_tkt.py +++ b/repoze/who/tests/test__auth_tkt.py @@ -11,6 +11,7 @@ return self._getTargetClass()(*args, **kw) def test_ctor_defaults(self): + import hashlib from .. import _auth_tkt with _Monkey(_auth_tkt, time_mod=_Timemod): tkt = self._makeOne('SEEKRIT', 'USERID', '1.2.3.4') @@ -22,11 +23,14 @@ self.assertEqual(tkt.time, _WHEN) self.assertEqual(tkt.cookie_name, 'auth_tkt') self.assertEqual(tkt.secure, False) + self.assertEqual(tkt.digest_algo, hashlib.md5) def test_ctor_explicit(self): + import hashlib tkt = self._makeOne('SEEKRIT', 'USERID', '1.2.3.4', tokens=('a', 'b'), user_data='DATA', time=_WHEN, - cookie_name='oatmeal', secure=True) + cookie_name='oatmeal', secure=True, + digest_algo=hashlib.sha512) self.assertEqual(tkt.secret, 'SEEKRIT') self.assertEqual(tkt.userid, 'USERID') self.assertEqual(tkt.ip, '1.2.3.4') @@ -35,6 +39,23 @@ self.assertEqual(tkt.time, _WHEN) self.assertEqual(tkt.cookie_name, 'oatmeal') self.assertEqual(tkt.secure, True) + self.assertEqual(tkt.digest_algo, hashlib.sha512) + + def test_ctor_string_algorithm(self): + import hashlib + tkt = self._makeOne('SEEKRIT', 'USERID', '1.2.3.4', tokens=('a', 'b'), + user_data='DATA', time=_WHEN, + cookie_name='oatmeal', secure=True, + digest_algo='sha1') + self.assertEqual(tkt.secret, 'SEEKRIT') + self.assertEqual(tkt.userid, 'USERID') + self.assertEqual(tkt.ip, '1.2.3.4') + self.assertEqual(tkt.tokens, 'a,b') + self.assertEqual(tkt.user_data, 'DATA') + self.assertEqual(tkt.time, _WHEN) + self.assertEqual(tkt.cookie_name, 'oatmeal') + self.assertEqual(tkt.secure, True) + self.assertEqual(tkt.digest_algo, hashlib.sha1) def test_digest(self): from .._auth_tkt import calculate_digest, hashlib @@ -112,9 +133,9 @@ class Test_parse_ticket(unittest.TestCase): - def _callFUT(self, secret='SEEKRIT', ticket=None, ip='1.2.3.4'): + def _callFUT(self, secret='SEEKRIT', ticket=None, ip='1.2.3.4', digest="md5"): from .._auth_tkt import parse_ticket - return parse_ticket(secret, ticket, ip) + return parse_ticket(secret, ticket, ip, digest) def test_bad_timestamp(self): from .._auth_tkt import BadTicket @@ -168,10 +189,21 @@ self.assertEqual(tokens, ['a', 'b']) self.assertEqual(user_data, 'DATA') + def test_w_tokens_and_data_ok_alternate_digest(self): + from .._auth_tkt import calculate_digest, hashlib + digest = calculate_digest('1.2.3.4', _WHEN, 'SEEKRIT', 'USERID', + 'a,b', 'DATA', hashlib.sha256) + TICKET = '%s%08xUSERID!a,b!DATA' % (digest, _WHEN) + timestamp, userid, tokens, user_data = self._callFUT(ticket=TICKET, digest=hashlib.sha256) + self.assertEqual(timestamp, _WHEN) + self.assertEqual(userid, 'USERID') + self.assertEqual(tokens, ['a', 'b']) + self.assertEqual(user_data, 'DATA') + class Test_helpers(unittest.TestCase): - # calculate_digest is not very testable, and fully exercised throug callers. + # calculate_digest is not very testable, and fully exercised through callers. def test_ints_to_bytes(self): from struct import pack -- Gitblit v1.9.3