def test_users_immortal_tokens_stay_immortal_when_OVERWRITE_NONE_TTL_setting_is_False(
            self):
        hash = TOKENS_CACHE.get(self.user.pk)[0]
        MultiToken.reset_tokens_ttl(self.user.pk)

        self.assertIsNone(TOKENS_CACHE.ttl(self.user.pk))
        self.assertIsNone(TOKENS_CACHE.ttl(hash))
    def test_immortal_tokens_stay_immortal_when_user_provided_timeout_is_None(
            self):
        hash = TOKENS_CACHE.get(self.user.pk)[0]
        self.assertIsNone(TOKENS_CACHE.ttl(self.user.pk))
        self.assertIsNone(TOKENS_CACHE.ttl(hash))
        MultiToken.reset_tokens_ttl(self.user.pk)

        self.assertIsNone(TOKENS_CACHE.ttl(self.user.pk))
        self.assertIsNone(TOKENS_CACHE.ttl(hash))
    def test_users_immortal_tokens_get_limited_ttl_when_OVERWRITE_NONE_TTL_setting_is_True(
            self):
        hash = TOKENS_CACHE.get(self.user.pk)[0]
        self.assertIsNone(TOKENS_CACHE.ttl(self.user.pk))
        self.assertIsNone(TOKENS_CACHE.ttl(hash))

        MultiToken.reset_tokens_ttl(self.user.pk)
        self.assertIsNotNone(TOKENS_CACHE.ttl(self.user.pk))
        self.assertIsNotNone(TOKENS_CACHE.ttl(hash))
    def test_other_users_tokens_are_not_affected(self):
        second_user = create_test_user('tester2')
        second_token, _ = MultiToken.create_token(second_user)
        import time
        time.sleep(1)
        MultiToken.reset_tokens_ttl(self.user.pk)

        self.assertEqual(TOKENS_CACHE.ttl(self.user.pk), 1000)
        self.assertNotEqual(TOKENS_CACHE.ttl(second_user.pk), 1000)
        hash = TOKENS_CACHE.get(second_user.pk)[0]
        self.assertNotEqual(hash, 1000)
    def test_token_with_ttl_gets_new_ttl_when_user_changes_timeout_to_2000(
            self, mocked_settings):
        hash = TOKENS_CACHE.get(self.user.pk)[0]
        TOKENS_CACHE.expire(self.user.pk, 1000)
        TOKENS_CACHE.expire(TOKENS_CACHE.ttl(hash), 1000)

        settings = MockedSettings(timeout=2000)
        mocked_settings.CACHES.__getitem__.return_value = settings.CACHES[
            'default']
        MultiToken.reset_tokens_ttl(self.user.pk)

        self.assertEqual(TOKENS_CACHE.ttl(self.user.pk), 2000)
        self.assertEqual(TOKENS_CACHE.ttl(hash), 2000)
    def test_token_with_ttl_becomes_immortal_when_user_changes_timeout_to_None(
            self, mocked_settings):
        hash = TOKENS_CACHE.get(self.user.pk)[0]
        TOKENS_CACHE.expire(self.user.pk, 1000)
        TOKENS_CACHE.expire(TOKENS_CACHE.ttl(hash), 1000)

        settings = MockedSettings(timeout=None)
        mocked_settings.CACHES.__getitem__.return_value = settings.CACHES[
            'default']
        MultiToken.reset_tokens_ttl(self.user.pk)

        self.assertIsNone(TOKENS_CACHE.ttl(self.user.pk))
        self.assertIsNone(TOKENS_CACHE.ttl(hash))
Beispiel #7
0
    def authenticate_credentials(self, key):
        try:
            user = MultiToken.get_user_from_token(key)
            if user._type == 'DOC':
                user.lastseen = time.time()
                user.save()
            if settings.DJFORGE_REDIS_MULTITOKENS.get(
                    'RESET_TOKEN_TTL_ON_USER_LOG_IN'):
                MultiToken.reset_tokens_ttl(user.pk)

        except get_user_model().DoesNotExist:
            raise exceptions.AuthenticationFailed('Invalid token.')

        if not user.is_active:
            raise exceptions.AuthenticationFailed('User inactive or deleted.')

        return (user, MultiToken(key, user))
    def test_correct_ttl_is_set_for_renewed_tokens(self):
        hash = TOKENS_CACHE.get(self.user.pk)[0]
        MultiToken.reset_tokens_ttl(self.user.pk)

        self.assertAlmostEquals(TOKENS_CACHE.ttl(self.user.pk), 1000)
        self.assertAlmostEquals(TOKENS_CACHE.ttl(hash), 1000)