mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 16:44:49 -04:00
Merge branch 'develop' of github.com:matrix-org/synapse into new_state_resolution
This commit is contained in:
commit
2aaedab203
125 changed files with 3032 additions and 2068 deletions
|
@ -21,6 +21,7 @@ from mock import Mock
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.handlers.directory import DirectoryHandler
|
||||
from synapse.types import RoomAlias
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool, MockKey
|
||||
|
||||
|
@ -65,9 +66,9 @@ class DirectoryTestCase(unittest.TestCase):
|
|||
|
||||
self.store = hs.get_datastore()
|
||||
|
||||
self.my_room = hs.parse_roomalias("#my-room:test")
|
||||
self.your_room = hs.parse_roomalias("#your-room:test")
|
||||
self.remote_room = hs.parse_roomalias("#another:remote")
|
||||
self.my_room = RoomAlias.from_string("#my-room:test")
|
||||
self.your_room = RoomAlias.from_string("#your-room:test")
|
||||
self.remote_room = RoomAlias.from_string("#another:remote")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_local_association(self):
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
from tests import unittest
|
||||
from twisted.internet import defer, reactor
|
||||
|
||||
from mock import Mock, call, ANY, NonCallableMock, patch
|
||||
from mock import Mock, call, ANY, NonCallableMock
|
||||
import json
|
||||
|
||||
from tests.utils import (
|
||||
|
@ -31,6 +31,7 @@ from synapse.api.errors import SynapseError
|
|||
from synapse.handlers.presence import PresenceHandler, UserPresenceCache
|
||||
from synapse.streams.config import SourcePaginationConfig
|
||||
from synapse.storage.transactions import DestinationsTable
|
||||
from synapse.types import UserID
|
||||
|
||||
OFFLINE = PresenceState.OFFLINE
|
||||
UNAVAILABLE = PresenceState.UNAVAILABLE
|
||||
|
@ -59,68 +60,216 @@ class JustPresenceHandlers(object):
|
|||
def __init__(self, hs):
|
||||
self.presence_handler = PresenceHandler(hs)
|
||||
|
||||
class PresenceStateTestCase(unittest.TestCase):
|
||||
""" Tests presence management. """
|
||||
|
||||
class PresenceTestCase(unittest.TestCase):
|
||||
@defer.inlineCallbacks
|
||||
def setUp(self):
|
||||
db_pool = SQLiteMemoryDbPool()
|
||||
yield db_pool.prepare()
|
||||
self.clock = MockClock()
|
||||
|
||||
self.mock_config = NonCallableMock()
|
||||
self.mock_config.signing_key = [MockKey()]
|
||||
|
||||
self.mock_federation_resource = MockHttpResource()
|
||||
|
||||
self.mock_http_client = Mock(spec=[])
|
||||
self.mock_http_client.put_json = DeferredMockCallable()
|
||||
|
||||
db_pool = None
|
||||
hs_kwargs = {}
|
||||
|
||||
if hasattr(self, "make_datastore_mock"):
|
||||
hs_kwargs["datastore"] = self.make_datastore_mock()
|
||||
else:
|
||||
db_pool = SQLiteMemoryDbPool()
|
||||
yield db_pool.prepare()
|
||||
|
||||
hs = HomeServer("test",
|
||||
clock=MockClock(),
|
||||
clock=self.clock,
|
||||
db_pool=db_pool,
|
||||
handlers=None,
|
||||
resource_for_federation=Mock(),
|
||||
http_client=None,
|
||||
resource_for_federation=self.mock_federation_resource,
|
||||
http_client=self.mock_http_client,
|
||||
config=self.mock_config,
|
||||
keyring=Mock(),
|
||||
**hs_kwargs
|
||||
)
|
||||
hs.handlers = JustPresenceHandlers(hs)
|
||||
|
||||
self.store = hs.get_datastore()
|
||||
self.datastore = hs.get_datastore()
|
||||
|
||||
# Mock the RoomMemberHandler
|
||||
room_member_handler = Mock(spec=[])
|
||||
hs.handlers.room_member_handler = room_member_handler
|
||||
|
||||
# Some local users to test with
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_clementine = hs.parse_userid("@clementine:test")
|
||||
|
||||
yield self.store.create_presence(self.u_apple.localpart)
|
||||
yield self.store.set_presence_state(
|
||||
self.u_apple.localpart, {"state": ONLINE, "status_msg": "Online"}
|
||||
)
|
||||
self.setUp_roommemberhandler_mocks(hs.handlers)
|
||||
|
||||
self.handler = hs.get_handlers().presence_handler
|
||||
self.event_source = hs.get_event_sources().sources["presence"]
|
||||
|
||||
self.distributor = hs.get_distributor()
|
||||
self.distributor.declare("user_joined_room")
|
||||
|
||||
yield self.setUp_users(hs)
|
||||
|
||||
def setUp_roommemberhandler_mocks(self, handlers):
|
||||
self.room_id = "a-room"
|
||||
self.room_members = []
|
||||
|
||||
room_member_handler = handlers.room_member_handler = Mock(spec=[
|
||||
"get_rooms_for_user",
|
||||
"get_room_members",
|
||||
"fetch_room_distributions_into",
|
||||
])
|
||||
self.room_member_handler = room_member_handler
|
||||
|
||||
def get_rooms_for_user(user):
|
||||
if user in self.room_members:
|
||||
return defer.succeed(["a-room"])
|
||||
return defer.succeed([self.room_id])
|
||||
else:
|
||||
return defer.succeed([])
|
||||
room_member_handler.get_rooms_for_user = get_rooms_for_user
|
||||
|
||||
def get_room_members(room_id):
|
||||
if room_id == "a-room":
|
||||
if room_id == self.room_id:
|
||||
return defer.succeed(self.room_members)
|
||||
else:
|
||||
return defer.succeed([])
|
||||
room_member_handler.get_room_members = get_room_members
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def fetch_room_distributions_into(room_id, localusers=None,
|
||||
remotedomains=None, ignore_user=None):
|
||||
|
||||
members = yield get_room_members(room_id)
|
||||
for member in members:
|
||||
if ignore_user is not None and member == ignore_user:
|
||||
continue
|
||||
|
||||
if member.is_mine:
|
||||
if localusers is not None:
|
||||
localusers.add(member)
|
||||
else:
|
||||
if remotedomains is not None:
|
||||
remotedomains.add(member.domain)
|
||||
room_member_handler.fetch_room_distributions_into = (
|
||||
fetch_room_distributions_into)
|
||||
|
||||
self.setUp_datastore_room_mocks(self.datastore)
|
||||
|
||||
def setUp_datastore_room_mocks(self, datastore):
|
||||
def get_room_hosts(room_id):
|
||||
if room_id == self.room_id:
|
||||
hosts = set([u.domain for u in self.room_members])
|
||||
return defer.succeed(hosts)
|
||||
else:
|
||||
return defer.succeed([])
|
||||
datastore.get_joined_hosts_for_room = get_room_hosts
|
||||
|
||||
def user_rooms_intersect(userlist):
|
||||
room_member_ids = map(lambda u: u.to_string(), self.room_members)
|
||||
|
||||
shared = all(map(lambda i: i in room_member_ids, userlist))
|
||||
return defer.succeed(shared)
|
||||
self.store.user_rooms_intersect = user_rooms_intersect
|
||||
datastore.user_rooms_intersect = user_rooms_intersect
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def setUp_users(self, hs):
|
||||
# Some local users to test with
|
||||
self.u_apple = UserID.from_string("@apple:test")
|
||||
self.u_banana = UserID.from_string("@banana:test")
|
||||
self.u_clementine = UserID.from_string("@clementine:test")
|
||||
|
||||
for u in self.u_apple, self.u_banana, self.u_clementine:
|
||||
yield self.datastore.create_presence(u.localpart)
|
||||
|
||||
yield self.datastore.set_presence_state(
|
||||
self.u_apple.localpart, {"state": ONLINE, "status_msg": "Online"}
|
||||
)
|
||||
|
||||
# ID of a local user that does not exist
|
||||
self.u_durian = UserID.from_string("@durian:test")
|
||||
|
||||
# A remote user
|
||||
self.u_cabbage = UserID.from_string("@cabbage:elsewhere")
|
||||
|
||||
|
||||
class MockedDatastorePresenceTestCase(PresenceTestCase):
|
||||
def make_datastore_mock(self):
|
||||
datastore = Mock(spec=[
|
||||
# Bits that Federation needs
|
||||
"prep_send_transaction",
|
||||
"delivered_txn",
|
||||
"get_received_txn_response",
|
||||
"set_received_txn_response",
|
||||
"get_destination_retry_timings",
|
||||
])
|
||||
|
||||
self.setUp_datastore_federation_mocks(datastore)
|
||||
self.setUp_datastore_presence_mocks(datastore)
|
||||
|
||||
return datastore
|
||||
|
||||
def setUp_datastore_federation_mocks(self, datastore):
|
||||
datastore.get_destination_retry_timings.return_value = (
|
||||
defer.succeed(DestinationsTable.EntryType("", 0, 0))
|
||||
)
|
||||
|
||||
def get_received_txn_response(*args):
|
||||
return defer.succeed(None)
|
||||
datastore.get_received_txn_response = get_received_txn_response
|
||||
|
||||
def setUp_datastore_presence_mocks(self, datastore):
|
||||
self.current_user_state = {
|
||||
"apple": OFFLINE,
|
||||
"banana": OFFLINE,
|
||||
"clementine": OFFLINE,
|
||||
"fig": OFFLINE,
|
||||
}
|
||||
|
||||
def get_presence_state(user_localpart):
|
||||
return defer.succeed(
|
||||
{"state": self.current_user_state[user_localpart],
|
||||
"status_msg": None,
|
||||
"mtime": 123456000}
|
||||
)
|
||||
datastore.get_presence_state = get_presence_state
|
||||
|
||||
def set_presence_state(user_localpart, new_state):
|
||||
was = self.current_user_state[user_localpart]
|
||||
self.current_user_state[user_localpart] = new_state["state"]
|
||||
return defer.succeed({"state": was})
|
||||
datastore.set_presence_state = set_presence_state
|
||||
|
||||
def get_presence_list(user_localpart, accepted):
|
||||
if not user_localpart in self.PRESENCE_LIST:
|
||||
return defer.succeed([])
|
||||
return defer.succeed([
|
||||
{"observed_user_id": u} for u in
|
||||
self.PRESENCE_LIST[user_localpart]])
|
||||
datastore.get_presence_list = get_presence_list
|
||||
|
||||
def is_presence_visible(observed_localpart, observer_userid):
|
||||
return True
|
||||
datastore.is_presence_visible = is_presence_visible
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def setUp_users(self, hs):
|
||||
# Some local users to test with
|
||||
self.u_apple = UserID.from_string("@apple:test")
|
||||
self.u_banana = UserID.from_string("@banana:test")
|
||||
self.u_clementine = UserID.from_string("@clementine:test")
|
||||
self.u_durian = UserID.from_string("@durian:test")
|
||||
self.u_elderberry = UserID.from_string("@elderberry:test")
|
||||
self.u_fig = UserID.from_string("@fig:test")
|
||||
|
||||
# Remote user
|
||||
self.u_onion = UserID.from_string("@onion:farm")
|
||||
self.u_potato = UserID.from_string("@potato:remote")
|
||||
|
||||
yield
|
||||
|
||||
|
||||
class PresenceStateTestCase(PresenceTestCase):
|
||||
""" Tests presence management. """
|
||||
@defer.inlineCallbacks
|
||||
def setUp(self):
|
||||
yield super(PresenceStateTestCase, self).setUp()
|
||||
|
||||
self.mock_start = Mock()
|
||||
self.mock_stop = Mock()
|
||||
|
@ -141,7 +290,7 @@ class PresenceStateTestCase(unittest.TestCase):
|
|||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_allowed_state(self):
|
||||
yield self.store.allow_presence_visible(
|
||||
yield self.datastore.allow_presence_visible(
|
||||
observed_localpart=self.u_apple.localpart,
|
||||
observer_userid=self.u_banana.to_string(),
|
||||
)
|
||||
|
@ -189,7 +338,7 @@ class PresenceStateTestCase(unittest.TestCase):
|
|||
{"state": UNAVAILABLE,
|
||||
"status_msg": "Away",
|
||||
"mtime": 1000000},
|
||||
(yield self.store.get_presence_state(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_state(self.u_apple.localpart))
|
||||
)
|
||||
|
||||
self.mock_start.assert_called_with(self.u_apple,
|
||||
|
@ -206,49 +355,11 @@ class PresenceStateTestCase(unittest.TestCase):
|
|||
self.mock_stop.assert_called_with(self.u_apple)
|
||||
|
||||
|
||||
class PresenceInvitesTestCase(unittest.TestCase):
|
||||
class PresenceInvitesTestCase(PresenceTestCase):
|
||||
""" Tests presence management. """
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def setUp(self):
|
||||
self.mock_http_client = Mock(spec=[])
|
||||
self.mock_http_client.put_json = DeferredMockCallable()
|
||||
|
||||
self.mock_federation_resource = MockHttpResource()
|
||||
|
||||
db_pool = SQLiteMemoryDbPool()
|
||||
yield db_pool.prepare()
|
||||
|
||||
self.mock_config = NonCallableMock()
|
||||
self.mock_config.signing_key = [MockKey()]
|
||||
|
||||
hs = HomeServer("test",
|
||||
clock=MockClock(),
|
||||
db_pool=db_pool,
|
||||
handlers=None,
|
||||
resource_for_client=Mock(),
|
||||
resource_for_federation=self.mock_federation_resource,
|
||||
http_client=self.mock_http_client,
|
||||
config=self.mock_config,
|
||||
keyring=Mock(),
|
||||
)
|
||||
hs.handlers = JustPresenceHandlers(hs)
|
||||
|
||||
self.store = hs.get_datastore()
|
||||
|
||||
# Some local users to test with
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
yield self.store.create_presence(self.u_apple.localpart)
|
||||
yield self.store.create_presence(self.u_banana.localpart)
|
||||
|
||||
# ID of a local user that does not exist
|
||||
self.u_durian = hs.parse_userid("@durian:test")
|
||||
|
||||
# A remote user
|
||||
self.u_cabbage = hs.parse_userid("@cabbage:elsewhere")
|
||||
|
||||
self.handler = hs.get_handlers().presence_handler
|
||||
yield super(PresenceInvitesTestCase, self).setUp()
|
||||
|
||||
self.mock_start = Mock()
|
||||
self.mock_stop = Mock()
|
||||
|
@ -266,10 +377,10 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEquals(
|
||||
[{"observed_user_id": "@banana:test", "accepted": 1}],
|
||||
(yield self.store.get_presence_list(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_list(self.u_apple.localpart))
|
||||
)
|
||||
self.assertTrue(
|
||||
(yield self.store.is_presence_visible(
|
||||
(yield self.datastore.is_presence_visible(
|
||||
observed_localpart=self.u_banana.localpart,
|
||||
observer_userid=self.u_apple.to_string(),
|
||||
))
|
||||
|
@ -285,7 +396,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEquals(
|
||||
[],
|
||||
(yield self.store.get_presence_list(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_list(self.u_apple.localpart))
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
|
@ -310,7 +421,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEquals(
|
||||
[{"observed_user_id": "@cabbage:elsewhere", "accepted": 0}],
|
||||
(yield self.store.get_presence_list(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_list(self.u_apple.localpart))
|
||||
)
|
||||
|
||||
yield put_json.await_calls()
|
||||
|
@ -345,7 +456,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
)
|
||||
|
||||
self.assertTrue(
|
||||
(yield self.store.is_presence_visible(
|
||||
(yield self.datastore.is_presence_visible(
|
||||
observed_localpart=self.u_apple.localpart,
|
||||
observer_userid=self.u_cabbage.to_string(),
|
||||
))
|
||||
|
@ -384,7 +495,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
@defer.inlineCallbacks
|
||||
def test_accepted_remote(self):
|
||||
yield self.store.add_presence_list_pending(
|
||||
yield self.datastore.add_presence_list_pending(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid=self.u_cabbage.to_string(),
|
||||
)
|
||||
|
@ -401,7 +512,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEquals(
|
||||
[{"observed_user_id": "@cabbage:elsewhere", "accepted": 1}],
|
||||
(yield self.store.get_presence_list(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_list(self.u_apple.localpart))
|
||||
)
|
||||
|
||||
self.mock_start.assert_called_with(
|
||||
|
@ -409,7 +520,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
@defer.inlineCallbacks
|
||||
def test_denied_remote(self):
|
||||
yield self.store.add_presence_list_pending(
|
||||
yield self.datastore.add_presence_list_pending(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid="@eggplant:elsewhere",
|
||||
)
|
||||
|
@ -426,16 +537,16 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEquals(
|
||||
[],
|
||||
(yield self.store.get_presence_list(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_list(self.u_apple.localpart))
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_drop_local(self):
|
||||
yield self.store.add_presence_list_pending(
|
||||
yield self.datastore.add_presence_list_pending(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid=self.u_banana.to_string(),
|
||||
)
|
||||
yield self.store.set_presence_list_accepted(
|
||||
yield self.datastore.set_presence_list_accepted(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid=self.u_banana.to_string(),
|
||||
)
|
||||
|
@ -447,7 +558,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEquals(
|
||||
[],
|
||||
(yield self.store.get_presence_list(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_list(self.u_apple.localpart))
|
||||
)
|
||||
|
||||
self.mock_stop.assert_called_with(
|
||||
|
@ -455,11 +566,11 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
@defer.inlineCallbacks
|
||||
def test_drop_remote(self):
|
||||
yield self.store.add_presence_list_pending(
|
||||
yield self.datastore.add_presence_list_pending(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid=self.u_cabbage.to_string(),
|
||||
)
|
||||
yield self.store.set_presence_list_accepted(
|
||||
yield self.datastore.set_presence_list_accepted(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid=self.u_cabbage.to_string(),
|
||||
)
|
||||
|
@ -471,16 +582,16 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
|
||||
self.assertEquals(
|
||||
[],
|
||||
(yield self.store.get_presence_list(self.u_apple.localpart))
|
||||
(yield self.datastore.get_presence_list(self.u_apple.localpart))
|
||||
)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_presence_list(self):
|
||||
yield self.store.add_presence_list_pending(
|
||||
yield self.datastore.add_presence_list_pending(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid=self.u_banana.to_string(),
|
||||
)
|
||||
yield self.store.set_presence_list_accepted(
|
||||
yield self.datastore.set_presence_list_accepted(
|
||||
observer_localpart=self.u_apple.localpart,
|
||||
observed_userid=self.u_banana.to_string(),
|
||||
)
|
||||
|
@ -495,7 +606,7 @@ class PresenceInvitesTestCase(unittest.TestCase):
|
|||
], presence)
|
||||
|
||||
|
||||
class PresencePushTestCase(unittest.TestCase):
|
||||
class PresencePushTestCase(MockedDatastorePresenceTestCase):
|
||||
""" Tests steady-state presence status updates.
|
||||
|
||||
They assert that presence state update messages are pushed around the place
|
||||
|
@ -505,138 +616,9 @@ class PresencePushTestCase(unittest.TestCase):
|
|||
presence handler; namely the _local_pushmap and _remote_recvmap.
|
||||
BE WARNED...
|
||||
"""
|
||||
def setUp(self):
|
||||
self.clock = MockClock()
|
||||
|
||||
self.mock_http_client = Mock(spec=[])
|
||||
self.mock_http_client.put_json = DeferredMockCallable()
|
||||
|
||||
self.mock_federation_resource = MockHttpResource()
|
||||
|
||||
self.mock_config = NonCallableMock()
|
||||
self.mock_config.signing_key = [MockKey()]
|
||||
|
||||
hs = HomeServer("test",
|
||||
clock=self.clock,
|
||||
db_pool=None,
|
||||
datastore=Mock(spec=[
|
||||
"set_presence_state",
|
||||
"get_joined_hosts_for_room",
|
||||
|
||||
# Bits that Federation needs
|
||||
"prep_send_transaction",
|
||||
"delivered_txn",
|
||||
"get_received_txn_response",
|
||||
"set_received_txn_response",
|
||||
"get_destination_retry_timings",
|
||||
]),
|
||||
handlers=None,
|
||||
resource_for_client=Mock(),
|
||||
resource_for_federation=self.mock_federation_resource,
|
||||
http_client=self.mock_http_client,
|
||||
config=self.mock_config,
|
||||
keyring=Mock(),
|
||||
)
|
||||
hs.handlers = JustPresenceHandlers(hs)
|
||||
|
||||
self.datastore = hs.get_datastore()
|
||||
self.datastore.get_destination_retry_timings.return_value = (
|
||||
defer.succeed(DestinationsTable.EntryType("", 0, 0))
|
||||
)
|
||||
|
||||
def get_received_txn_response(*args):
|
||||
return defer.succeed(None)
|
||||
self.datastore.get_received_txn_response = get_received_txn_response
|
||||
|
||||
self.handler = hs.get_handlers().presence_handler
|
||||
self.event_source = hs.get_event_sources().sources["presence"]
|
||||
|
||||
# Mock the RoomMemberHandler
|
||||
hs.handlers.room_member_handler = Mock(spec=[
|
||||
"get_rooms_for_user",
|
||||
"get_room_members",
|
||||
])
|
||||
self.room_member_handler = hs.handlers.room_member_handler
|
||||
|
||||
self.room_members = []
|
||||
|
||||
def get_rooms_for_user(user):
|
||||
if user in self.room_members:
|
||||
return defer.succeed(["a-room"])
|
||||
else:
|
||||
return defer.succeed([])
|
||||
self.room_member_handler.get_rooms_for_user = get_rooms_for_user
|
||||
|
||||
def get_room_members(room_id):
|
||||
if room_id == "a-room":
|
||||
return defer.succeed(self.room_members)
|
||||
else:
|
||||
return defer.succeed([])
|
||||
self.room_member_handler.get_room_members = get_room_members
|
||||
|
||||
def get_room_hosts(room_id):
|
||||
if room_id == "a-room":
|
||||
hosts = set([u.domain for u in self.room_members])
|
||||
return defer.succeed(hosts)
|
||||
else:
|
||||
return defer.succeed([])
|
||||
self.datastore.get_joined_hosts_for_room = get_room_hosts
|
||||
|
||||
def user_rooms_intersect(userlist):
|
||||
room_member_ids = map(lambda u: u.to_string(), self.room_members)
|
||||
|
||||
shared = all(map(lambda i: i in room_member_ids, userlist))
|
||||
return defer.succeed(shared)
|
||||
self.datastore.user_rooms_intersect = user_rooms_intersect
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def fetch_room_distributions_into(room_id, localusers=None,
|
||||
remotedomains=None, ignore_user=None):
|
||||
|
||||
members = yield get_room_members(room_id)
|
||||
for member in members:
|
||||
if ignore_user is not None and member == ignore_user:
|
||||
continue
|
||||
|
||||
if member.is_mine:
|
||||
if localusers is not None:
|
||||
localusers.add(member)
|
||||
else:
|
||||
if remotedomains is not None:
|
||||
remotedomains.add(member.domain)
|
||||
self.room_member_handler.fetch_room_distributions_into = (
|
||||
fetch_room_distributions_into)
|
||||
|
||||
def get_presence_list(user_localpart, accepted=None):
|
||||
if user_localpart == "apple":
|
||||
return defer.succeed([
|
||||
{"observed_user_id": "@banana:test"},
|
||||
{"observed_user_id": "@clementine:test"},
|
||||
])
|
||||
else:
|
||||
return defer.succeed([])
|
||||
self.datastore.get_presence_list = get_presence_list
|
||||
|
||||
def is_presence_visible(observer_userid, observed_localpart):
|
||||
if (observed_localpart == "clementine" and
|
||||
observer_userid == "@banana:test"):
|
||||
return False
|
||||
return False
|
||||
self.datastore.is_presence_visible = is_presence_visible
|
||||
|
||||
self.distributor = hs.get_distributor()
|
||||
self.distributor.declare("user_joined_room")
|
||||
|
||||
# Some local users to test with
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_clementine = hs.parse_userid("@clementine:test")
|
||||
self.u_durian = hs.parse_userid("@durian:test")
|
||||
self.u_elderberry = hs.parse_userid("@elderberry:test")
|
||||
|
||||
# Remote user
|
||||
self.u_onion = hs.parse_userid("@onion:farm")
|
||||
self.u_potato = hs.parse_userid("@potato:remote")
|
||||
PRESENCE_LIST = {
|
||||
'apple': [ "@banana:test", "@clementine:test" ],
|
||||
}
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_push_local(self):
|
||||
|
@ -911,7 +893,7 @@ class PresencePushTestCase(unittest.TestCase):
|
|||
)
|
||||
|
||||
yield self.distributor.fire("user_joined_room", self.u_clementine,
|
||||
"a-room"
|
||||
self.room_id
|
||||
)
|
||||
|
||||
self.room_members.append(self.u_clementine)
|
||||
|
@ -974,7 +956,7 @@ class PresencePushTestCase(unittest.TestCase):
|
|||
self.room_members = [self.u_apple, self.u_banana]
|
||||
|
||||
yield self.distributor.fire("user_joined_room", self.u_potato,
|
||||
"a-room"
|
||||
self.room_id
|
||||
)
|
||||
|
||||
yield put_json.await_calls()
|
||||
|
@ -1003,13 +985,13 @@ class PresencePushTestCase(unittest.TestCase):
|
|||
self.room_members.append(self.u_potato)
|
||||
|
||||
yield self.distributor.fire("user_joined_room", self.u_clementine,
|
||||
"a-room"
|
||||
self.room_id
|
||||
)
|
||||
|
||||
put_json.await_calls()
|
||||
|
||||
|
||||
class PresencePollingTestCase(unittest.TestCase):
|
||||
class PresencePollingTestCase(MockedDatastorePresenceTestCase):
|
||||
""" Tests presence status polling. """
|
||||
|
||||
# For this test, we have three local users; apple is watching and is
|
||||
|
@ -1022,106 +1004,18 @@ class PresencePollingTestCase(unittest.TestCase):
|
|||
'fig': [ "@potato:remote" ],
|
||||
}
|
||||
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def setUp(self):
|
||||
self.mock_http_client = Mock(spec=[])
|
||||
self.mock_http_client.put_json = DeferredMockCallable()
|
||||
|
||||
self.mock_federation_resource = MockHttpResource()
|
||||
|
||||
self.mock_config = NonCallableMock()
|
||||
self.mock_config.signing_key = [MockKey()]
|
||||
|
||||
hs = HomeServer("test",
|
||||
clock=MockClock(),
|
||||
db_pool=None,
|
||||
datastore=Mock(spec=[
|
||||
# Bits that Federation needs
|
||||
"prep_send_transaction",
|
||||
"delivered_txn",
|
||||
"get_received_txn_response",
|
||||
"set_received_txn_response",
|
||||
"get_destination_retry_timings",
|
||||
]),
|
||||
handlers=None,
|
||||
resource_for_client=Mock(),
|
||||
resource_for_federation=self.mock_federation_resource,
|
||||
http_client=self.mock_http_client,
|
||||
config=self.mock_config,
|
||||
keyring=Mock(),
|
||||
)
|
||||
hs.handlers = JustPresenceHandlers(hs)
|
||||
|
||||
self.datastore = hs.get_datastore()
|
||||
self.datastore.get_destination_retry_timings.return_value = (
|
||||
defer.succeed(DestinationsTable.EntryType("", 0, 0))
|
||||
)
|
||||
|
||||
def get_received_txn_response(*args):
|
||||
return defer.succeed(None)
|
||||
self.datastore.get_received_txn_response = get_received_txn_response
|
||||
yield super(PresencePollingTestCase, self).setUp()
|
||||
|
||||
self.mock_update_client = Mock()
|
||||
|
||||
def update(*args,**kwargs):
|
||||
# print "mock_update_client: Args=%s, kwargs=%s" %(args, kwargs,)
|
||||
return defer.succeed(None)
|
||||
|
||||
self.mock_update_client.side_effect = update
|
||||
|
||||
self.handler = hs.get_handlers().presence_handler
|
||||
self.handler.push_update_to_clients = self.mock_update_client
|
||||
|
||||
hs.handlers.room_member_handler = Mock(spec=[
|
||||
"get_rooms_for_user",
|
||||
])
|
||||
# For this test no users are ever in rooms
|
||||
def get_rooms_for_user(user):
|
||||
return defer.succeed([])
|
||||
hs.handlers.room_member_handler.get_rooms_for_user = get_rooms_for_user
|
||||
|
||||
# Mocked database state
|
||||
# Local users always start offline
|
||||
self.current_user_state = {
|
||||
"apple": OFFLINE,
|
||||
"banana": OFFLINE,
|
||||
"clementine": OFFLINE,
|
||||
"fig": OFFLINE,
|
||||
}
|
||||
|
||||
def get_presence_state(user_localpart):
|
||||
return defer.succeed(
|
||||
{"state": self.current_user_state[user_localpart],
|
||||
"status_msg": None,
|
||||
"mtime": 123456000}
|
||||
)
|
||||
self.datastore.get_presence_state = get_presence_state
|
||||
|
||||
def set_presence_state(user_localpart, new_state):
|
||||
was = self.current_user_state[user_localpart]
|
||||
self.current_user_state[user_localpart] = new_state["state"]
|
||||
return defer.succeed({"state": was})
|
||||
self.datastore.set_presence_state = set_presence_state
|
||||
|
||||
def get_presence_list(user_localpart, accepted):
|
||||
return defer.succeed([
|
||||
{"observed_user_id": u} for u in
|
||||
self.PRESENCE_LIST[user_localpart]])
|
||||
self.datastore.get_presence_list = get_presence_list
|
||||
|
||||
def is_presence_visible(observed_localpart, observer_userid):
|
||||
return True
|
||||
self.datastore.is_presence_visible = is_presence_visible
|
||||
|
||||
# Local users
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_clementine = hs.parse_userid("@clementine:test")
|
||||
self.u_fig = hs.parse_userid("@fig:test")
|
||||
|
||||
# Remote users
|
||||
self.u_potato = hs.parse_userid("@potato:remote")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_push_local(self):
|
||||
# apple goes online
|
||||
|
|
|
@ -27,6 +27,7 @@ from synapse.server import HomeServer
|
|||
from synapse.api.constants import PresenceState
|
||||
from synapse.handlers.presence import PresenceHandler
|
||||
from synapse.handlers.profile import ProfileHandler
|
||||
from synapse.types import UserID
|
||||
|
||||
|
||||
OFFLINE = PresenceState.OFFLINE
|
||||
|
@ -136,12 +137,12 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
|
|||
lambda u: defer.succeed([]))
|
||||
|
||||
# Some local users to test with
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_clementine = hs.parse_userid("@clementine:test")
|
||||
self.u_apple = UserID.from_string("@apple:test")
|
||||
self.u_banana = UserID.from_string("@banana:test")
|
||||
self.u_clementine = UserID.from_string("@clementine:test")
|
||||
|
||||
# Remote user
|
||||
self.u_potato = hs.parse_userid("@potato:remote")
|
||||
self.u_potato = UserID.from_string("@potato:remote")
|
||||
|
||||
self.mock_get_joined = (
|
||||
self.datastore.get_rooms_for_user_where_membership_is
|
||||
|
|
|
@ -22,7 +22,7 @@ from mock import Mock, NonCallableMock
|
|||
from synapse.api.errors import AuthError
|
||||
from synapse.server import HomeServer
|
||||
from synapse.handlers.profile import ProfileHandler
|
||||
from synapse.api.constants import Membership
|
||||
from synapse.types import UserID
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool, MockKey
|
||||
|
||||
|
@ -71,9 +71,9 @@ class ProfileTestCase(unittest.TestCase):
|
|||
|
||||
self.store = hs.get_datastore()
|
||||
|
||||
self.frank = hs.parse_userid("@1234ABCD:test")
|
||||
self.bob = hs.parse_userid("@4567:test")
|
||||
self.alice = hs.parse_userid("@alice:remote")
|
||||
self.frank = UserID.from_string("@1234ABCD:test")
|
||||
self.bob = UserID.from_string("@4567:test")
|
||||
self.alice = UserID.from_string("@alice:remote")
|
||||
|
||||
yield self.store.create_profile(self.frank.localpart)
|
||||
|
||||
|
|
|
@ -15,12 +15,13 @@
|
|||
|
||||
|
||||
from twisted.internet import defer
|
||||
from tests import unittest
|
||||
from .. import unittest
|
||||
|
||||
from synapse.api.constants import EventTypes, Membership
|
||||
from synapse.handlers.room import RoomMemberHandler, RoomCreationHandler
|
||||
from synapse.handlers.profile import ProfileHandler
|
||||
from synapse.server import HomeServer
|
||||
from synapse.types import UserID
|
||||
from ..utils import MockKey
|
||||
|
||||
from mock import Mock, NonCallableMock
|
||||
|
@ -164,7 +165,7 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
|
|||
event, context=context,
|
||||
)
|
||||
self.notifier.on_new_room_event.assert_called_once_with(
|
||||
event, extra_users=[self.hs.parse_userid(target_user_id)]
|
||||
event, extra_users=[UserID.from_string(target_user_id)]
|
||||
)
|
||||
self.assertFalse(self.datastore.get_room.called)
|
||||
self.assertFalse(self.datastore.store_room.called)
|
||||
|
@ -174,7 +175,7 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
|
|||
def test_simple_join(self):
|
||||
room_id = "!foo:red"
|
||||
user_id = "@bob:red"
|
||||
user = self.hs.parse_userid(user_id)
|
||||
user = UserID.from_string(user_id)
|
||||
|
||||
join_signal_observer = Mock()
|
||||
self.distributor.observe("user_joined_room", join_signal_observer)
|
||||
|
@ -252,7 +253,7 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
|
|||
def test_simple_leave(self):
|
||||
room_id = "!foo:red"
|
||||
user_id = "@bob:red"
|
||||
user = self.hs.parse_userid(user_id)
|
||||
user = UserID.from_string(user_id)
|
||||
|
||||
builder = self.hs.get_event_builder_factory().new({
|
||||
"type": EventTypes.Member,
|
||||
|
|
|
@ -27,6 +27,7 @@ from synapse.server import HomeServer
|
|||
from synapse.handlers.typing import TypingNotificationHandler
|
||||
|
||||
from synapse.storage.transactions import DestinationsTable
|
||||
from synapse.types import UserID
|
||||
|
||||
|
||||
def _expect_edu(destination, edu_type, content, origin="test"):
|
||||
|
@ -153,11 +154,11 @@ class TypingNotificationsTestCase(unittest.TestCase):
|
|||
self.auth.check_joined_room = check_joined_room
|
||||
|
||||
# Some local users to test with
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_apple = UserID.from_string("@apple:test")
|
||||
self.u_banana = UserID.from_string("@banana:test")
|
||||
|
||||
# Remote user
|
||||
self.u_onion = hs.parse_userid("@onion:farm")
|
||||
self.u_onion = UserID.from_string("@onion:farm")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_started_typing_local(self):
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2014 OpenMarket Ltd
|
||||
# Copyright 2015 OpenMarket Ltd
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
@ -12,4 +12,3 @@
|
|||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
|
14
tests/rest/client/__init__.py
Normal file
14
tests/rest/client/__init__.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2015 OpenMarket Ltd
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
15
tests/rest/client/v1/__init__.py
Normal file
15
tests/rest/client/v1/__init__.py
Normal file
|
@ -0,0 +1,15 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2014 OpenMarket Ltd
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
|
@ -19,13 +19,13 @@ from tests import unittest
|
|||
# twisted imports
|
||||
from twisted.internet import defer
|
||||
|
||||
import synapse.rest.events
|
||||
import synapse.rest.register
|
||||
import synapse.rest.room
|
||||
import synapse.rest.client.v1.events
|
||||
import synapse.rest.client.v1.register
|
||||
import synapse.rest.client.v1.room
|
||||
|
||||
from synapse.server import HomeServer
|
||||
|
||||
from ..utils import MockHttpResource, SQLiteMemoryDbPool, MockKey
|
||||
from ....utils import MockHttpResource, SQLiteMemoryDbPool, MockKey
|
||||
from .utils import RestTestCase
|
||||
|
||||
from mock import Mock, NonCallableMock
|
||||
|
@ -144,9 +144,9 @@ class EventStreamPermissionsTestCase(RestTestCase):
|
|||
hs.get_clock().time_msec.return_value = 1000000
|
||||
hs.get_clock().time.return_value = 1000
|
||||
|
||||
synapse.rest.register.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.events.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.register.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.events.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
# register an account
|
||||
self.user_id = "sid1"
|
|
@ -20,11 +20,14 @@ from twisted.internet import defer
|
|||
|
||||
from mock import Mock
|
||||
|
||||
from ..utils import MockHttpResource, MockKey
|
||||
from ....utils import MockHttpResource, MockKey
|
||||
|
||||
from synapse.api.constants import PresenceState
|
||||
from synapse.handlers.presence import PresenceHandler
|
||||
from synapse.server import HomeServer
|
||||
from synapse.rest.client.v1 import presence
|
||||
from synapse.rest.client.v1 import events
|
||||
from synapse.types import UserID
|
||||
|
||||
|
||||
OFFLINE = PresenceState.OFFLINE
|
||||
|
@ -69,9 +72,10 @@ class PresenceStateTestCase(unittest.TestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(myid),
|
||||
"user": UserID.from_string(myid),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
@ -86,9 +90,9 @@ class PresenceStateTestCase(unittest.TestCase):
|
|||
return defer.succeed([])
|
||||
room_member_handler.get_rooms_for_user = get_rooms_for_user
|
||||
|
||||
hs.register_servlets()
|
||||
presence.register_servlets(hs, self.mock_resource)
|
||||
|
||||
self.u_apple = hs.parse_userid(myid)
|
||||
self.u_apple = UserID.from_string(myid)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_my_status(self):
|
||||
|
@ -159,12 +163,13 @@ class PresenceListTestCase(unittest.TestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(myid),
|
||||
"user": UserID.from_string(myid),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
|
||||
room_member_handler = hs.handlers.room_member_handler = Mock(
|
||||
hs.handlers.room_member_handler = Mock(
|
||||
spec=[
|
||||
"get_rooms_for_user",
|
||||
]
|
||||
|
@ -172,10 +177,10 @@ class PresenceListTestCase(unittest.TestCase):
|
|||
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
hs.register_servlets()
|
||||
presence.register_servlets(hs, self.mock_resource)
|
||||
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_apple = UserID.from_string("@apple:test")
|
||||
self.u_banana = UserID.from_string("@banana:test")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_my_list(self):
|
||||
|
@ -279,11 +284,12 @@ class PresenceEventStreamTestCase(unittest.TestCase):
|
|||
hs.get_clock().time_msec.return_value = 1000000
|
||||
|
||||
def _get_user_by_req(req=None):
|
||||
return hs.parse_userid(myid)
|
||||
return (UserID.from_string(myid), "")
|
||||
|
||||
hs.get_auth().get_user_by_req = _get_user_by_req
|
||||
|
||||
hs.register_servlets()
|
||||
presence.register_servlets(hs, self.mock_resource)
|
||||
events.register_servlets(hs, self.mock_resource)
|
||||
|
||||
hs.handlers.room_member_handler = Mock(spec=[])
|
||||
|
||||
|
@ -319,8 +325,8 @@ class PresenceEventStreamTestCase(unittest.TestCase):
|
|||
|
||||
self.presence = hs.get_handlers().presence_handler
|
||||
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_apple = UserID.from_string("@apple:test")
|
||||
self.u_banana = UserID.from_string("@banana:test")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_shortpoll(self):
|
|
@ -20,10 +20,13 @@ from twisted.internet import defer
|
|||
|
||||
from mock import Mock, NonCallableMock
|
||||
|
||||
from ..utils import MockHttpResource, MockKey
|
||||
from ....utils import MockHttpResource, MockKey
|
||||
|
||||
from synapse.api.errors import SynapseError, AuthError
|
||||
from synapse.server import HomeServer
|
||||
from synapse.types import UserID
|
||||
|
||||
from synapse.rest.client.v1 import profile
|
||||
|
||||
myid = "@1234ABCD:test"
|
||||
PATH_PREFIX = "/_matrix/client/api/v1"
|
||||
|
@ -55,13 +58,13 @@ class ProfileTestCase(unittest.TestCase):
|
|||
)
|
||||
|
||||
def _get_user_by_req(request=None):
|
||||
return hs.parse_userid(myid)
|
||||
return (UserID.from_string(myid), "")
|
||||
|
||||
hs.get_auth().get_user_by_req = _get_user_by_req
|
||||
|
||||
hs.get_handlers().profile_handler = self.mock_handler
|
||||
|
||||
hs.register_servlets()
|
||||
profile.register_servlets(hs, self.mock_resource)
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_get_my_name(self):
|
|
@ -18,19 +18,16 @@
|
|||
# twisted imports
|
||||
from twisted.internet import defer
|
||||
|
||||
import synapse.rest.room
|
||||
import synapse.rest.client.v1.room
|
||||
from synapse.api.constants import Membership
|
||||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.types import UserID
|
||||
|
||||
from tests import unittest
|
||||
|
||||
# python imports
|
||||
import json
|
||||
import urllib
|
||||
import types
|
||||
|
||||
from ..utils import MockHttpResource, SQLiteMemoryDbPool, MockKey
|
||||
from ....utils import MockHttpResource, SQLiteMemoryDbPool, MockKey
|
||||
from .utils import RestTestCase
|
||||
|
||||
from mock import Mock, NonCallableMock
|
||||
|
@ -70,9 +67,10 @@ class RoomPermissionsTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
|
@ -82,7 +80,7 @@ class RoomPermissionsTestCase(RestTestCase):
|
|||
|
||||
self.auth_user_id = self.rmcreator_id
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
self.auth = hs.get_auth()
|
||||
|
||||
|
@ -466,9 +464,10 @@ class RoomsMemberListTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
|
@ -476,7 +475,7 @@ class RoomsMemberListTestCase(RestTestCase):
|
|||
return defer.succeed(None)
|
||||
hs.get_datastore().insert_client_ip = _insert_client_ip
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
@ -555,9 +554,10 @@ class RoomsCreateTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
|
@ -565,7 +565,7 @@ class RoomsCreateTestCase(RestTestCase):
|
|||
return defer.succeed(None)
|
||||
hs.get_datastore().insert_client_ip = _insert_client_ip
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
@ -657,9 +657,10 @@ class RoomTopicTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
@ -668,7 +669,7 @@ class RoomTopicTestCase(RestTestCase):
|
|||
return defer.succeed(None)
|
||||
hs.get_datastore().insert_client_ip = _insert_client_ip
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
# create the room
|
||||
self.room_id = yield self.create_room_as(self.user_id)
|
||||
|
@ -773,9 +774,10 @@ class RoomMemberStateTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
|
@ -783,7 +785,7 @@ class RoomMemberStateTestCase(RestTestCase):
|
|||
return defer.succeed(None)
|
||||
hs.get_datastore().insert_client_ip = _insert_client_ip
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
self.room_id = yield self.create_room_as(self.user_id)
|
||||
|
||||
|
@ -909,9 +911,10 @@ class RoomMessagesTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
|
@ -919,7 +922,7 @@ class RoomMessagesTestCase(RestTestCase):
|
|||
return defer.succeed(None)
|
||||
hs.get_datastore().insert_client_ip = _insert_client_ip
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
self.room_id = yield self.create_room_as(self.user_id)
|
||||
|
||||
|
@ -1013,9 +1016,10 @@ class RoomInitialSyncTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
|
@ -1023,12 +1027,12 @@ class RoomInitialSyncTestCase(RestTestCase):
|
|||
return defer.succeed(None)
|
||||
hs.get_datastore().insert_client_ip = _insert_client_ip
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
# Since I'm getting my own presence I need to exist as far as presence
|
||||
# is concerned.
|
||||
hs.get_handlers().presence_handler.registered_user(
|
||||
hs.parse_userid(self.user_id)
|
||||
UserID.from_string(self.user_id)
|
||||
)
|
||||
|
||||
# create the room
|
|
@ -18,10 +18,11 @@
|
|||
# twisted imports
|
||||
from twisted.internet import defer
|
||||
|
||||
import synapse.rest.room
|
||||
import synapse.rest.client.v1.room
|
||||
from synapse.server import HomeServer
|
||||
from synapse.types import UserID
|
||||
|
||||
from ..utils import MockHttpResource, MockClock, SQLiteMemoryDbPool, MockKey
|
||||
from ....utils import MockHttpResource, MockClock, SQLiteMemoryDbPool, MockKey
|
||||
from .utils import RestTestCase
|
||||
|
||||
from mock import Mock, NonCallableMock
|
||||
|
@ -69,9 +70,10 @@ class RoomTypingTestCase(RestTestCase):
|
|||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": hs.parse_userid(self.auth_user_id),
|
||||
"user": UserID.from_string(self.auth_user_id),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
"token_id": 1,
|
||||
}
|
||||
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
@ -82,7 +84,7 @@ class RoomTypingTestCase(RestTestCase):
|
|||
|
||||
def get_room_members(room_id):
|
||||
if room_id == self.room_id:
|
||||
return defer.succeed([hs.parse_userid(self.user_id)])
|
||||
return defer.succeed([UserID.from_string(self.user_id)])
|
||||
else:
|
||||
return defer.succeed([])
|
||||
|
||||
|
@ -104,7 +106,7 @@ class RoomTypingTestCase(RestTestCase):
|
|||
hs.get_handlers().room_member_handler.fetch_room_distributions_into = (
|
||||
fetch_room_distributions_into)
|
||||
|
||||
synapse.rest.room.register_servlets(hs, self.mock_resource)
|
||||
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
|
||||
|
||||
self.room_id = yield self.create_room_as(self.user_id)
|
||||
# Need another user to make notifications actually work
|
60
tests/rest/client/v2_alpha/__init__.py
Normal file
60
tests/rest/client/v2_alpha/__init__.py
Normal file
|
@ -0,0 +1,60 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2015 OpenMarket Ltd
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from tests import unittest
|
||||
|
||||
from mock import Mock
|
||||
|
||||
from ....utils import MockHttpResource, MockKey
|
||||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.types import UserID
|
||||
|
||||
|
||||
PATH_PREFIX = "/_matrix/client/v2_alpha"
|
||||
|
||||
|
||||
class V2AlphaRestTestCase(unittest.TestCase):
|
||||
# Consumer must define
|
||||
# USER_ID = <some string>
|
||||
# TO_REGISTER = [<list of REST servlets to register>]
|
||||
|
||||
def setUp(self):
|
||||
self.mock_resource = MockHttpResource(prefix=PATH_PREFIX)
|
||||
|
||||
mock_config = Mock()
|
||||
mock_config.signing_key = [MockKey()]
|
||||
|
||||
hs = HomeServer("test",
|
||||
db_pool=None,
|
||||
datastore=Mock(spec=[
|
||||
"insert_client_ip",
|
||||
]),
|
||||
http_client=None,
|
||||
resource_for_client=self.mock_resource,
|
||||
resource_for_federation=self.mock_resource,
|
||||
config=mock_config,
|
||||
)
|
||||
|
||||
def _get_user_by_token(token=None):
|
||||
return {
|
||||
"user": UserID.from_string(self.USER_ID),
|
||||
"admin": False,
|
||||
"device_id": None,
|
||||
}
|
||||
hs.get_auth().get_user_by_token = _get_user_by_token
|
||||
|
||||
for r in self.TO_REGISTER:
|
||||
r.register_servlets(hs, self.mock_resource)
|
|
@ -1,5 +0,0 @@
|
|||
synapse/storage/feedback.py
|
||||
synapse/storage/keys.py
|
||||
synapse/storage/pdu.py
|
||||
synapse/storage/stream.py
|
||||
synapse/storage/transactions.py
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.storage.directory import DirectoryStore
|
||||
from synapse.types import RoomID, RoomAlias
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool
|
||||
|
||||
|
@ -37,8 +38,8 @@ class DirectoryStoreTestCase(unittest.TestCase):
|
|||
|
||||
self.store = DirectoryStore(hs)
|
||||
|
||||
self.room = hs.parse_roomid("!abcde:test")
|
||||
self.alias = hs.parse_roomalias("#my-room:test")
|
||||
self.room = RoomID.from_string("!abcde:test")
|
||||
self.alias = RoomAlias.from_string("#my-room:test")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_room_to_alias(self):
|
||||
|
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.storage.presence import PresenceStore
|
||||
from synapse.types import UserID
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool, MockClock
|
||||
|
||||
|
@ -37,8 +38,8 @@ class PresenceStoreTestCase(unittest.TestCase):
|
|||
|
||||
self.store = PresenceStore(hs)
|
||||
|
||||
self.u_apple = hs.parse_userid("@apple:test")
|
||||
self.u_banana = hs.parse_userid("@banana:test")
|
||||
self.u_apple = UserID.from_string("@apple:test")
|
||||
self.u_banana = UserID.from_string("@banana:test")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_state(self):
|
||||
|
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.storage.profile import ProfileStore
|
||||
from synapse.types import UserID
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool
|
||||
|
||||
|
@ -36,7 +37,7 @@ class ProfileStoreTestCase(unittest.TestCase):
|
|||
|
||||
self.store = ProfileStore(hs)
|
||||
|
||||
self.u_frank = hs.parse_userid("@frank:test")
|
||||
self.u_frank = UserID.from_string("@frank:test")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_displayname(self):
|
||||
|
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.api.constants import EventTypes, Membership
|
||||
from synapse.types import UserID, RoomID
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool, MockKey
|
||||
|
||||
|
@ -48,10 +49,10 @@ class RedactionTestCase(unittest.TestCase):
|
|||
self.handlers = hs.get_handlers()
|
||||
self.message_handler = self.handlers.message_handler
|
||||
|
||||
self.u_alice = hs.parse_userid("@alice:test")
|
||||
self.u_bob = hs.parse_userid("@bob:test")
|
||||
self.u_alice = UserID.from_string("@alice:test")
|
||||
self.u_bob = UserID.from_string("@bob:test")
|
||||
|
||||
self.room1 = hs.parse_roomid("!abc123:test")
|
||||
self.room1 = RoomID.from_string("!abc123:test")
|
||||
|
||||
self.depth = 1
|
||||
|
||||
|
|
|
@ -53,7 +53,10 @@ class RegistrationStoreTestCase(unittest.TestCase):
|
|||
)
|
||||
|
||||
self.assertEquals(
|
||||
{"admin": 0, "device_id": None, "name": self.user_id},
|
||||
{"admin": 0,
|
||||
"device_id": None,
|
||||
"name": self.user_id,
|
||||
"token_id": 1},
|
||||
(yield self.store.get_user_by_token(self.tokens[0]))
|
||||
)
|
||||
|
||||
|
@ -63,7 +66,10 @@ class RegistrationStoreTestCase(unittest.TestCase):
|
|||
yield self.store.add_access_token_to_user(self.user_id, self.tokens[1])
|
||||
|
||||
self.assertEquals(
|
||||
{"admin": 0, "device_id": None, "name": self.user_id},
|
||||
{"admin": 0,
|
||||
"device_id": None,
|
||||
"name": self.user_id,
|
||||
"token_id": 2},
|
||||
(yield self.store.get_user_by_token(self.tokens[1]))
|
||||
)
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.types import UserID, RoomID, RoomAlias
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool
|
||||
|
||||
|
@ -38,9 +39,9 @@ class RoomStoreTestCase(unittest.TestCase):
|
|||
# management of the 'room_aliases' table
|
||||
self.store = hs.get_datastore()
|
||||
|
||||
self.room = hs.parse_roomid("!abcde:test")
|
||||
self.alias = hs.parse_roomalias("#a-room-name:test")
|
||||
self.u_creator = hs.parse_userid("@creator:test")
|
||||
self.room = RoomID.from_string("!abcde:test")
|
||||
self.alias = RoomAlias.from_string("#a-room-name:test")
|
||||
self.u_creator = UserID.from_string("@creator:test")
|
||||
|
||||
yield self.store.store_room(self.room.to_string(),
|
||||
room_creator_user_id=self.u_creator.to_string(),
|
||||
|
@ -97,7 +98,7 @@ class RoomEventsStoreTestCase(unittest.TestCase):
|
|||
self.store = hs.get_datastore()
|
||||
self.event_factory = hs.get_event_factory();
|
||||
|
||||
self.room = hs.parse_roomid("!abcde:test")
|
||||
self.room = RoomID.from_string("!abcde:test")
|
||||
|
||||
yield self.store.store_room(self.room.to_string(),
|
||||
room_creator_user_id="@creator:text",
|
||||
|
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.api.constants import EventTypes, Membership
|
||||
from synapse.types import UserID, RoomID
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool, MockKey
|
||||
|
||||
|
@ -49,13 +50,13 @@ class RoomMemberStoreTestCase(unittest.TestCase):
|
|||
self.handlers = hs.get_handlers()
|
||||
self.message_handler = self.handlers.message_handler
|
||||
|
||||
self.u_alice = hs.parse_userid("@alice:test")
|
||||
self.u_bob = hs.parse_userid("@bob:test")
|
||||
self.u_alice = UserID.from_string("@alice:test")
|
||||
self.u_bob = UserID.from_string("@bob:test")
|
||||
|
||||
# User elsewhere on another host
|
||||
self.u_charlie = hs.parse_userid("@charlie:elsewhere")
|
||||
self.u_charlie = UserID.from_string("@charlie:elsewhere")
|
||||
|
||||
self.room = hs.parse_roomid("!abc123:test")
|
||||
self.room = RoomID.from_string("!abc123:test")
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def inject_room_member(self, room, user, membership, replaces_state=None):
|
||||
|
|
|
@ -19,6 +19,7 @@ from twisted.internet import defer
|
|||
|
||||
from synapse.server import HomeServer
|
||||
from synapse.api.constants import EventTypes, Membership
|
||||
from synapse.types import UserID, RoomID
|
||||
|
||||
from tests.utils import SQLiteMemoryDbPool, MockKey
|
||||
|
||||
|
@ -48,11 +49,11 @@ class StreamStoreTestCase(unittest.TestCase):
|
|||
self.handlers = hs.get_handlers()
|
||||
self.message_handler = self.handlers.message_handler
|
||||
|
||||
self.u_alice = hs.parse_userid("@alice:test")
|
||||
self.u_bob = hs.parse_userid("@bob:test")
|
||||
self.u_alice = UserID.from_string("@alice:test")
|
||||
self.u_bob = UserID.from_string("@bob:test")
|
||||
|
||||
self.room1 = hs.parse_roomid("!abc123:test")
|
||||
self.room2 = hs.parse_roomid("!xyx987:test")
|
||||
self.room1 = RoomID.from_string("!abc123:test")
|
||||
self.room2 = RoomID.from_string("!xyx987:test")
|
||||
|
||||
self.depth = 1
|
||||
|
||||
|
|
|
@ -42,12 +42,6 @@ class UserIDTestCase(unittest.TestCase):
|
|||
self.assertTrue(userA == userAagain)
|
||||
self.assertTrue(userA != userB)
|
||||
|
||||
def test_via_homeserver(self):
|
||||
user = mock_homeserver.parse_userid("@3456ijkl:my.domain")
|
||||
|
||||
self.assertEquals("3456ijkl", user.localpart)
|
||||
self.assertEquals("my.domain", user.domain)
|
||||
|
||||
|
||||
class RoomAliasTestCase(unittest.TestCase):
|
||||
|
||||
|
@ -62,9 +56,3 @@ class RoomAliasTestCase(unittest.TestCase):
|
|||
room = RoomAlias("channel", "my.domain")
|
||||
|
||||
self.assertEquals(room.to_string(), "#channel:my.domain")
|
||||
|
||||
def test_via_homeserver(self):
|
||||
room = mock_homeserver.parse_roomalias("#elsewhere:my.domain")
|
||||
|
||||
self.assertEquals("elsewhere", room.localpart)
|
||||
self.assertEquals("my.domain", room.domain)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue