diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_auth/test_auth_tkt.py | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/test_auth/test_auth_tkt.py b/tests/test_auth/test_auth_tkt.py new file mode 100644 index 0000000..4713ea0 --- /dev/null +++ b/tests/test_auth/test_auth_tkt.py @@ -0,0 +1,120 @@ +import hashlib +import six +if six.PY3: + import base64 +from paste.auth.auth_tkt import AuthTicket +try: + from http.cookies import SimpleCookie +except ImportError: + # Python 2 + from Cookie import SimpleCookie + + +def test_auth_ticket_digest_and_cookie_value(): + test_parameters = [ + ( + ( + 'shared_secret', + 'username', + '0.0.0.0', # remote address + ), + { + 'tokens': ['admin'], + 'time': 1579782607 + }, + b'731274bec45f6983c1f33bac8e8baf43', + b'731274bec45f6983c1f33bac8e8baf435e2991cfusername!admin!', + ), + ( + ( + 'shared_secret', + 'username', + '0.0.0.0', + ), + { + 'tokens': ['admin'], + 'time': 1579782607, + 'digest_algo': hashlib.sha512 + }, + b'09e72a63c57ca4cfeca5fa578646deb2b27f7a461d91ad9aa32b85c93ef6fa7744ac006eb3d9a71a36375b5ab50cbae072bb3042e2a59198b7f314900cba4423', + b'09e72a63c57ca4cfeca5fa578646deb2b27f7a461d91ad9aa32b85c93ef6fa7744ac006eb3d9a71a36375b5ab50cbae072bb3042e2a59198b7f314900cba44235e2991cfusername!admin!', + ), + ] + + for test_args, test_kwargs, expected_digest, expected_cookie_value in test_parameters: + token = AuthTicket(*test_args, **test_kwargs) + assert expected_digest == token.digest() + assert expected_cookie_value == token.cookie_value() + + +def test_auth_ticket_cookie(): + test_parameters = [ + ( + ( + 'shared_secret', + 'username', + '0.0.0.0', # remote address + ), + { + 'tokens': ['admin'], + 'time': 1579782607 + }, + { + 'name': 'auth_tkt', + 'path': '/', + 'secure': '', + 'cookie_value': b'731274bec45f6983c1f33bac8e8baf435e2991cfusername!admin!' + } + ), + ( + ( + 'shared_secret', + 'username', + '0.0.0.0', # remote address + ), + { + 'tokens': ['admin'], + 'time': 1579782607, + 'secure': True + }, + { + 'name': 'auth_tkt', + 'path': '/', + 'secure': 'true', + 'cookie_value': b'731274bec45f6983c1f33bac8e8baf435e2991cfusername!admin!' + } + ), + ( + ( + 'shared_secret', + 'username', + '0.0.0.0', # remote address + ), + { + 'tokens': ['admin'], + 'time': 1579782607, + 'cookie_name': 'custom_cookie', + 'secure': False + }, + { + 'name': 'custom_cookie', + 'path': '/', + 'secure': '', + 'cookie_value': b'731274bec45f6983c1f33bac8e8baf435e2991cfusername!admin!' + } + ), + ] + + for test_args, test_kwargs, expected_values in test_parameters: + token = AuthTicket(*test_args, **test_kwargs) + expected_cookie = SimpleCookie() + if six.PY3: + # import pdb; pdb.set_trace() + expected_cookie_value = base64.b64encode(expected_values['cookie_value']) + else: + expected_cookie_value = expected_values['cookie_value'].encode('base64') + + expected_cookie[expected_values['name']] = expected_cookie_value + expected_cookie[expected_values['name']]['path'] = expected_values['path'] + expected_cookie[expected_values['name']]['secure'] = expected_values['secure'] + assert expected_cookie == token.cookie() |