utf-8 encode user keys in memcache (bug 1056373)
Change-Id: I026dd4282742213e69c7aa02e109439b07a73c8e
(cherry picked from commit 431e50a785
)
This commit is contained in:
parent
84f41c2e43
commit
8154492da3
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user