Fixed #23792 -- Added test.utils.freeze_time() context manager.

This commit is contained in:
Thomas Chaumeny 2014-11-10 19:33:49 +01:00 committed by Tim Graham
parent 54085b0f9b
commit 994d6137a2
3 changed files with 25 additions and 21 deletions

View file

@ -1,10 +1,10 @@
from __future__ import unicode_literals
import datetime
import time
from django.core import signing
from django.test import TestCase
from django.test.utils import freeze_time
from django.utils.encoding import force_str
from django.utils import six
@ -117,23 +117,15 @@ class TestTimestampSigner(TestCase):
def test_timestamp_signer(self):
value = 'hello'
_time = time.time
time.time = lambda: 123456789
try:
with freeze_time(123456789):
signer = signing.TimestampSigner('predictable-key')
ts = signer.sign(value)
self.assertNotEqual(ts,
signing.Signer('predictable-key').sign(value))
self.assertEqual(signer.unsign(ts), value)
time.time = lambda: 123456800
self.assertEqual(signer.unsign(ts, max_age=13), value)
with freeze_time(123456800):
self.assertEqual(signer.unsign(ts, max_age=12), value)
# max_age parameter can also accept a datetime.timedelta object
self.assertEqual(signer.unsign(ts, max_age=datetime.timedelta(seconds=11)), value)
self.assertRaises(
signing.SignatureExpired, signer.unsign, ts, max_age=10)
with self.assertRaises(signing.SignatureExpired):
self.assertEqual(signer.unsign(ts, max_age=datetime.timedelta(seconds=10)), value)
finally:
time.time = _time
self.assertRaises(signing.SignatureExpired, signer.unsign, ts, max_age=10)