diff --git a/requirements.txt b/requirements.txt index 12c1a878..1ed7882d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,6 +7,7 @@ pytest-django==2.6 pytest==2.5.2 pytest-cov==1.6 flake8==2.2.2 +freezegun==0.3.2 # Optional packages django-oauth-plus>=2.2.1 diff --git a/tests/test_views.py b/tests/test_views.py index 1799dcd4..713f371a 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -1,4 +1,3 @@ -import time from calendar import timegm from datetime import datetime, timedelta @@ -9,6 +8,8 @@ from django.conf.urls import patterns from django.contrib.auth import get_user_model +from freezegun import freeze_time + from rest_framework import status from rest_framework.test import APIClient @@ -311,25 +312,25 @@ def test_refresh_jwt(self): """ client = APIClient(enforce_csrf_checks=True) - orig_token = self.get_token() - orig_token_decoded = utils.jwt_decode_handler(orig_token) + with freeze_time('2015-01-01 00:00:01'): + orig_token = self.get_token() + orig_token_decoded = utils.jwt_decode_handler(orig_token) - expected_orig_iat = timegm(datetime.utcnow().utctimetuple()) + expected_orig_iat = timegm(datetime.utcnow().utctimetuple()) - # Make sure 'orig_iat' exists and is the current time (give some slack) - orig_iat = orig_token_decoded['orig_iat'] - self.assertLessEqual(orig_iat - expected_orig_iat, 1) + # Make sure 'orig_iat' exists and is the current time (give some slack) + orig_iat = orig_token_decoded['orig_iat'] + self.assertLessEqual(orig_iat - expected_orig_iat, 1) - # wait a few seconds, so new token will have different exp - time.sleep(2) + with freeze_time('2015-01-01 00:00:03'): - # Now try to get a refreshed token - response = client.post('/auth-token-refresh/', {'token': orig_token}, - format='json') - self.assertEqual(response.status_code, status.HTTP_200_OK) + # Now try to get a refreshed token + response = client.post('/auth-token-refresh/', {'token': orig_token}, + format='json') + self.assertEqual(response.status_code, status.HTTP_200_OK) - new_token = response.data['token'] - new_token_decoded = utils.jwt_decode_handler(new_token) + new_token = response.data['token'] + new_token_decoded = utils.jwt_decode_handler(new_token) # Make sure 'orig_iat' on the new token is same as original self.assertEquals(new_token_decoded['orig_iat'], orig_iat) diff --git a/tox.ini b/tox.ini index cfe97f3e..032b097e 100644 --- a/tox.ini +++ b/tox.ini @@ -20,6 +20,7 @@ deps = py27-django1.6-drf{2.4.3,2.4.4,3.0.0,3.1.0}: django-oauth2-provider==0.2.6.1 pytest-django==2.8.0 py27-django{1.6,1.7,1.8}-drf3.1.0: djangorestframework-oauth==1.0.1 + freezegun==0.3.2 [testenv:py27-flake8] commands = ./runtests.py --lintonly