diff options
author | Dolph Mathews <dolph.mathews@gmail.com> | 2012-09-25 19:04:50 +0000 |
---|---|---|
committer | Joe Heck <heckj@mac.com> | 2012-09-26 16:05:54 +0000 |
commit | 0e1f05e7a851f5fb72742e4d3e4978d76fe23b55 (patch) | |
tree | 423a711852e8d9337a1206cf7c30e31b27ce0f0e | |
parent | 176ee9bce7557937710c8ec8086ff61cc751cf0f (diff) | |
download | keystone-0e1f05e7a851f5fb72742e4d3e4978d76fe23b55.tar.gz |
utf-8 encode user keys in memcache (bug 1056373)2012.1.3
(cherry picked from commit 431e50a7851d2e7dbb212d02647faeb958ed21e8)
Change-Id: I026dd4282742213e69c7aa02e109439b07a73c8e
-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 796b69ea9..4210b8d30 100644 --- a/keystone/token/backends/memcache.py +++ b/keystone/token/backends/memcache.py @@ -45,6 +45,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) @@ -66,7 +69,7 @@ class Token(token.Driver): if 'id' in data['user']: token_data = 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): @@ -83,7 +86,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 = user_record.split(',') 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 06f1c310c..b65c3b683 100644 --- a/tests/test_backend_memcache.py +++ b/tests/test_backend_memcache.py @@ -79,9 +79,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) |