summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keystone/token/backends/memcache.py8
-rw-r--r--tests/test_backend_memcache.py14
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)