示例#1
0
    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))
示例#2
0
 def test_token_ttl_settings_of_drf_redis_tokens_settings_is_used_when_redis_db_timeout_argument_is_not_given(
         self):
     MultiToken._set_value_in_cache('key', 'value')
     self.assertIsNotNone(TOKENS_CACHE.ttl('key'))
     self.assertAlmostEquals(
         TOKENS_CACHE.ttl('key'),
         settings.DRF_REDIS_MULTI_TOKENS['TOKEN_TTL_IN_SECONDS'])
示例#3
0
    def test_other_users_tokens_are_not_affected(self):
        second_user = create_test_user('tester2')
        second_token, _ = MultiToken.create_token(second_user)
        MultiToken.expire_token(self.token)

        self.assertIsNotNone(TOKENS_CACHE.get(second_user.pk))
        self.assertIsNotNone(
            TOKENS_CACHE.get(parse_full_token(second_token.key)[1]))
示例#4
0
    def test_other_users_tokens_are_not_affected(self):
        second_user = create_test_user('tester2')
        second_token, _ = MultiToken.create_token(second_user)
        MultiToken.reset_tokens_ttl(self.user.pk)

        self.assertIsNotNone(TOKENS_CACHE.ttl(self.user.pk))
        self.assertIsNone(TOKENS_CACHE.ttl(second_user.pk))
        hash = TOKENS_CACHE.get(second_user.pk)[0]
        self.assertIsNone(TOKENS_CACHE.ttl(hash))
示例#5
0
    def test_token_is_removed_from_redis_when_user_has_multiple_tokens(self):
        second_token, first_device = MultiToken.create_token(self.user)
        MultiToken.expire_token(self.token)

        self.assertEqual(len(TOKENS_CACHE.get(self.user.pk)), 1)
        _, hash = parse_full_token(self.token.key)
        self.assertIsNone(TOKENS_CACHE.get(hash))

        self.assertEqual(
            TOKENS_CACHE.get(self.user.pk)[0],
            parse_full_token(second_token.key)[1])
        self.assertIsNotNone(
            TOKENS_CACHE.get(parse_full_token(second_token.key)[1]))
示例#6
0
    def test_second_hash_is_saved_in_redis_alongside_the_first_one(self):
        first_hash = TOKENS_CACHE.get(self.user.pk)[0]
        second_token, first_device = MultiToken.create_token(self.user)
        second_hash = TOKENS_CACHE.get(self.user.pk)[1]

        self.assertEqual(len(TOKENS_CACHE.get(self.user.pk)), 2)
        self.assertIn(first_hash, TOKENS_CACHE.get(self.user.pk))
        self.assertIn(second_hash, TOKENS_CACHE.get(self.user.pk))
        self.assertIsNotNone(TOKENS_CACHE.get(first_hash))
        self.assertIsNotNone(TOKENS_CACHE.get(second_hash))
示例#7
0
 def test_token_is_removed_from_redis_when_user_has_only_one_token(self):
     self.assertIsNone(MultiToken.expire_token(self.token))
     self.assertEqual(len(TOKENS_CACHE.get(self.user.pk)), 0)
     _, hash = parse_full_token(self.token.key)
     self.assertIsNone(TOKENS_CACHE.get(hash))
示例#8
0
 def test_only_token_hash_is_saved_in_redis(self):
     hash = TOKENS_CACHE.get(self.user.pk)[0]
     self.assertIsNotNone(TOKENS_CACHE.get(hash))
     self.assertIsNone(TOKENS_CACHE.get(self.token.key))
示例#9
0
    def test_token_is_saved_correctly_in_redis(self):
        self.assertIsNotNone(TOKENS_CACHE.get(self.user.pk))

        hashes = TOKENS_CACHE.get(self.user.pk)
        self.assertEqual(len(hashes), 1)
        self.assertIsNotNone(TOKENS_CACHE.get(hashes[0]))
示例#10
0
    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)
示例#11
0
 def test_users_immortal_tokens_get_limited_ttl_when_OVERWRITE_NONE_TTL_setting_is_True(
         self):
     MultiToken.reset_tokens_ttl(self.user.pk)
     self.assertIsNotNone(TOKENS_CACHE.ttl(self.user.pk))
     hash = TOKENS_CACHE.get(self.user.pk)[0]
     self.assertIsNotNone(TOKENS_CACHE.ttl(hash))
示例#12
0
 def test_default_timeout_for_cache_db_is_used_when_it_is_provided(self):
     MultiToken._set_value_in_cache('key', 'value')
     self.assertIsNone(TOKENS_CACHE.ttl('key'))
 def tearDown(self):
     # cleanup Redis after tests
     TOKENS_CACHE.clear()
 def setUp(self):
     TOKENS_CACHE.clear()
     self.user = create_test_user()
     self.token, self.first_device = MultiToken.create_token(self.user)