diff options
Diffstat (limited to 'tests/signed_cookies_tests')
-rw-r--r-- | tests/signed_cookies_tests/__init__.py | 0 | ||||
-rw-r--r-- | tests/signed_cookies_tests/models.py | 1 | ||||
-rw-r--r-- | tests/signed_cookies_tests/tests.py | 64 |
3 files changed, 65 insertions, 0 deletions
diff --git a/tests/signed_cookies_tests/__init__.py b/tests/signed_cookies_tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/signed_cookies_tests/__init__.py diff --git a/tests/signed_cookies_tests/models.py b/tests/signed_cookies_tests/models.py new file mode 100644 index 0000000000..71abcc5198 --- /dev/null +++ b/tests/signed_cookies_tests/models.py @@ -0,0 +1 @@ +# models.py file for tests to run. diff --git a/tests/signed_cookies_tests/tests.py b/tests/signed_cookies_tests/tests.py new file mode 100644 index 0000000000..800092a2d7 --- /dev/null +++ b/tests/signed_cookies_tests/tests.py @@ -0,0 +1,64 @@ +from __future__ import unicode_literals + +import time + +from django.core import signing +from django.http import HttpRequest, HttpResponse +from django.test import TestCase + + +class SignedCookieTest(TestCase): + + def test_can_set_and_read_signed_cookies(self): + response = HttpResponse() + response.set_signed_cookie('c', 'hello') + self.assertIn('c', response.cookies) + self.assertTrue(response.cookies['c'].value.startswith('hello:')) + request = HttpRequest() + request.COOKIES['c'] = response.cookies['c'].value + value = request.get_signed_cookie('c') + self.assertEqual(value, 'hello') + + def test_can_use_salt(self): + response = HttpResponse() + response.set_signed_cookie('a', 'hello', salt='one') + request = HttpRequest() + request.COOKIES['a'] = response.cookies['a'].value + value = request.get_signed_cookie('a', salt='one') + self.assertEqual(value, 'hello') + self.assertRaises(signing.BadSignature, + request.get_signed_cookie, 'a', salt='two') + + def test_detects_tampering(self): + response = HttpResponse() + response.set_signed_cookie('c', 'hello') + request = HttpRequest() + request.COOKIES['c'] = response.cookies['c'].value[:-2] + '$$' + self.assertRaises(signing.BadSignature, + request.get_signed_cookie, 'c') + + def test_default_argument_supresses_exceptions(self): + response = HttpResponse() + response.set_signed_cookie('c', 'hello') + request = HttpRequest() + request.COOKIES['c'] = response.cookies['c'].value[:-2] + '$$' + self.assertEqual(request.get_signed_cookie('c', default=None), None) + + def test_max_age_argument(self): + value = 'hello' + _time = time.time + time.time = lambda: 123456789 + try: + response = HttpResponse() + response.set_signed_cookie('c', value) + request = HttpRequest() + request.COOKIES['c'] = response.cookies['c'].value + self.assertEqual(request.get_signed_cookie('c'), value) + + time.time = lambda: 123456800 + self.assertEqual(request.get_signed_cookie('c', max_age=12), value) + self.assertEqual(request.get_signed_cookie('c', max_age=11), value) + self.assertRaises(signing.SignatureExpired, + request.get_signed_cookie, 'c', max_age = 10) + finally: + time.time = _time |