Add a test for re-caching a token

There was no test that showed that when a token was in the cache
and a request is made to validate it again, it gets cached again.

Change-Id: I1992fa6b5ddc0792dfd1ce90fb888c365ecb1612
Partial-Bug: #1289075
This commit is contained in:
Brant Knudson 2014-08-17 16:34:33 -05:00
parent c9036a00ef
commit 7c954516f5

View File

@ -1212,6 +1212,38 @@ class CommonAuthTokenMiddlewareTest(object):
use_kerberos=use_kerberos,
success=False)
def test_caching_token_on_verify(self):
# When the token is cached, it's cached again when it's verified.
# NOTE(blk-u): This behavior is incorrect and inefficient, see
# bug 1289075.
# The token cache has to be initialized with our cache instance.
self.middleware._token_cache._env_cache_name = 'cache'
cache = memorycache.Client()
self.middleware._token_cache.initialize(env={'cache': cache})
# Mock cache.set since then the test can verify call_count.
orig_cache_set = cache.set
cache.set = mock.Mock(side_effect=orig_cache_set)
token = self.token_dict['signed_token_scoped']
req = webob.Request.blank('/')
req.headers['X-Auth-Token'] = token
self.middleware(req.environ, self.start_fake_response)
self.assertEqual(200, self.response_status)
self.assertThat(1, matchers.Equals(cache.set.call_count))
req = webob.Request.blank('/')
req.headers['X-Auth-Token'] = token
self.middleware(req.environ, self.start_fake_response)
self.assertEqual(200, self.response_status)
# FIXME(blk-u): This should be 1 since the token shouldn't be cached
# again.
self.assertThat(2, matchers.Equals(cache.set.call_count))
class V2CertDownloadMiddlewareTest(BaseAuthTokenMiddlewareTest,
testresources.ResourcedTestCase):