"""Test jwt cache refresh""" import unittest import pytest import datetime import random from time import * from unittest import mock from unittest.mock import MagicMock from daemonJwtHandler.constants import auth from daemonJwtHandler.logic import jwt_expiry mock_datetime = datetime.datetime(2020, 1, 1, 1, 0, 0, 123) def test_get_jwt_cache_expiry(monkeypatch): """Test fetching expiration of jwt token.""" token_expiry_seconds = 36000 token_expiration_time = str( mock_datetime + datetime.timedelta(seconds=token_expiry_seconds)) jitter = 1 expected_cache_timeout = \ token_expiry_seconds - auth.TOKEN_EXPIRATION_DELTA + jitter expected_expiation_time = mock_datetime + datetime.timedelta( seconds=expected_cache_timeout) expiration = { 'jwt_expiration_time': expected_expiation_time, 'jwt_expiry_secs': expected_cache_timeout } monkeypatch.setattr(random, 'randint', MagicMock(return_value=jitter)) jwt_expiry.datetime = MockTime cache_timeout = jwt_expiry.get_jwt_cache_expiry(token_expiration_time) assert cache_timeout == expiration def test_get_jwt_cache_expiry_error(monkeypatch): """Test fetching expiration of jwt token in case of error.""" jitter = 1 monkeypatch.setattr(random, 'randint', MagicMock(return_value=jitter)) jwt_expiry.datetime = MockTime cache_timeout = jwt_expiry.get_jwt_cache_expiry('incorrect format') assert cache_timeout == { 'jwt_expiration_time': None, 'jwt_expiry_secs': -1 } class MockTime: """Mock for utcnow and strptime.""" @staticmethod def utcnow(): """Set mock value for utcnow.""" return mock_datetime @staticmethod def strptime(datetime_string, time_format): """Set mock value for strptime.""" return datetime.datetime.strptime(datetime_string, time_format)