diff options
-rw-r--r-- | keystone/token/backends/memcache.py | 8 | ||||
-rw-r--r-- | tests/test_backend_memcache.py | 14 |
2 files changed, 19 insertions, 3 deletions
diff --git a/keystone/token/backends/memcache.py b/keystone/token/backends/memcache.py index fc57cf4d2..3f7d63948 100644 --- a/keystone/token/backends/memcache.py +++ b/keystone/token/backends/memcache.py @@ -48,6 +48,9 @@ class Token(token.Driver): def _prefix_token_id(self, token_id): return 'token-%s' % token_id.encode('utf-8') + def _prefix_user_id(self, user_id): + return 'usertokens-%s' % user_id.encode('utf-8') + def get_token(self, token_id): ptk = self._prefix_token_id(token_id) token = self.client.get(ptk) @@ -69,7 +72,7 @@ class Token(token.Driver): if 'id' in data['user']: token_data = jsonutils.dumps(token_id) user_id = data['user']['id'] - user_key = 'usertokens-%s' % user_id + user_key = self._prefix_user_id(user_id) if not self.client.append(user_key, ',%s' % token_data): if not self.client.add(user_key, token_data): if not self.client.append(user_key, ',%s' % token_data): @@ -96,7 +99,8 @@ class Token(token.Driver): def list_tokens(self, user_id, tenant_id=None): tokens = [] - user_record = self.client.get('usertokens-%s' % user_id) or "" + user_key = self._prefix_user_id(user_id) + user_record = self.client.get(user_key) or "" token_list = jsonutils.loads('[%s]' % user_record) for token_id in token_list: ptk = self._prefix_token_id(token_id) diff --git a/tests/test_backend_memcache.py b/tests/test_backend_memcache.py index 884a94ac7..b7f26b1dd 100644 --- a/tests/test_backend_memcache.py +++ b/tests/test_backend_memcache.py @@ -78,9 +78,21 @@ class MemcacheToken(test.TestCase, test_backend.TokenTests): fake_client = MemcacheClient() self.token_api = token_memcache.Token(client=fake_client) - def test_get_unicode(self): + def test_create_unicode_token_id(self): token_id = unicode(uuid.uuid4().hex) data = {'id': token_id, 'a': 'b', 'user': {'id': 'testuserid'}} self.token_api.create_token(token_id, data) self.token_api.get_token(token_id) + + def test_create_unicode_user_id(self): + token_id = uuid.uuid4().hex + user_id = unicode(uuid.uuid4().hex) + data = {'id': token_id, 'a': 'b', + 'user': {'id': user_id}} + self.token_api.create_token(token_id, data) + self.token_api.get_token(token_id) + + def test_list_tokens_unicode_user_id(self): + user_id = unicode(uuid.uuid4().hex) + self.token_api.list_tokens(user_id) |