|
|
|
@ -17,9 +17,6 @@ |
|
|
|
|
from tests import unittest |
|
|
|
|
from twisted.internet import defer |
|
|
|
|
|
|
|
|
|
from synapse.api.errors import StoreError |
|
|
|
|
from synapse.util import stringutils |
|
|
|
|
|
|
|
|
|
from tests.utils import setup_test_homeserver |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -80,64 +77,12 @@ class RegistrationStoreTestCase(unittest.TestCase): |
|
|
|
|
|
|
|
|
|
self.assertTrue("token_id" in result) |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def test_exchange_refresh_token_valid(self): |
|
|
|
|
uid = stringutils.random_string(32) |
|
|
|
|
device_id = stringutils.random_string(16) |
|
|
|
|
generator = TokenGenerator() |
|
|
|
|
last_token = generator.generate(uid) |
|
|
|
|
|
|
|
|
|
self.db_pool.runQuery( |
|
|
|
|
"INSERT INTO refresh_tokens(user_id, token, device_id) " |
|
|
|
|
"VALUES(?,?,?)", |
|
|
|
|
(uid, last_token, device_id)) |
|
|
|
|
|
|
|
|
|
(found_user_id, refresh_token, device_id) = \ |
|
|
|
|
yield self.store.exchange_refresh_token(last_token, |
|
|
|
|
generator.generate) |
|
|
|
|
self.assertEqual(uid, found_user_id) |
|
|
|
|
|
|
|
|
|
rows = yield self.db_pool.runQuery( |
|
|
|
|
"SELECT token, device_id FROM refresh_tokens WHERE user_id = ?", |
|
|
|
|
(uid, )) |
|
|
|
|
self.assertEqual([(refresh_token, device_id)], rows) |
|
|
|
|
# We issued token 1, then exchanged it for token 2 |
|
|
|
|
expected_refresh_token = u"%s-%d" % (uid, 2,) |
|
|
|
|
self.assertEqual(expected_refresh_token, refresh_token) |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def test_exchange_refresh_token_none(self): |
|
|
|
|
uid = stringutils.random_string(32) |
|
|
|
|
generator = TokenGenerator() |
|
|
|
|
last_token = generator.generate(uid) |
|
|
|
|
|
|
|
|
|
with self.assertRaises(StoreError): |
|
|
|
|
yield self.store.exchange_refresh_token(last_token, generator.generate) |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def test_exchange_refresh_token_invalid(self): |
|
|
|
|
uid = stringutils.random_string(32) |
|
|
|
|
generator = TokenGenerator() |
|
|
|
|
last_token = generator.generate(uid) |
|
|
|
|
wrong_token = "%s-wrong" % (last_token,) |
|
|
|
|
|
|
|
|
|
self.db_pool.runQuery( |
|
|
|
|
"INSERT INTO refresh_tokens(user_id, token) VALUES(?,?)", |
|
|
|
|
(uid, wrong_token,)) |
|
|
|
|
|
|
|
|
|
with self.assertRaises(StoreError): |
|
|
|
|
yield self.store.exchange_refresh_token(last_token, generator.generate) |
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
def test_user_delete_access_tokens(self): |
|
|
|
|
# add some tokens |
|
|
|
|
generator = TokenGenerator() |
|
|
|
|
refresh_token = generator.generate(self.user_id) |
|
|
|
|
yield self.store.register(self.user_id, self.tokens[0], self.pwhash) |
|
|
|
|
yield self.store.add_access_token_to_user(self.user_id, self.tokens[1], |
|
|
|
|
self.device_id) |
|
|
|
|
yield self.store.add_refresh_token_to_user(self.user_id, refresh_token, |
|
|
|
|
self.device_id) |
|
|
|
|
|
|
|
|
|
# now delete some |
|
|
|
|
yield self.store.user_delete_access_tokens( |
|
|
|
@ -146,9 +91,6 @@ class RegistrationStoreTestCase(unittest.TestCase): |
|
|
|
|
# check they were deleted |
|
|
|
|
user = yield self.store.get_user_by_access_token(self.tokens[1]) |
|
|
|
|
self.assertIsNone(user, "access token was not deleted by device_id") |
|
|
|
|
with self.assertRaises(StoreError): |
|
|
|
|
yield self.store.exchange_refresh_token(refresh_token, |
|
|
|
|
generator.generate) |
|
|
|
|
|
|
|
|
|
# check the one not associated with the device was not deleted |
|
|
|
|
user = yield self.store.get_user_by_access_token(self.tokens[0]) |
|
|
|
|