diff --git a/tests/appservice/test_appservice.py b/tests/appservice/test_appservice.py
index 62149d6902..8ce8dc0a87 100644
--- a/tests/appservice/test_appservice.py
+++ b/tests/appservice/test_appservice.py
@@ -217,18 +217,9 @@ class ApplicationServiceTestCase(unittest.TestCase):
_regex("@irc_.*")
)
join_list = [
- Mock(
- type="m.room.member", room_id="!foo:bar", sender="@alice:here",
- state_key="@alice:here"
- ),
- Mock(
- type="m.room.member", room_id="!foo:bar", sender="@irc_fo:here",
- state_key="@irc_fo:here" # AS user
- ),
- Mock(
- type="m.room.member", room_id="!foo:bar", sender="@bob:here",
- state_key="@bob:here"
- )
+ "@alice:here",
+ "@irc_fo:here", # AS user
+ "@bob:here",
]
self.event.sender = "@xmpp_foobar:matrix.org"
diff --git a/tests/handlers/test_federation.py b/tests/handlers/test_federation.py
index 08d2404b6c..f3821242bc 100644
--- a/tests/handlers/test_federation.py
+++ b/tests/handlers/test_federation.py
@@ -83,7 +83,7 @@ class FederationTestCase(unittest.TestCase):
"hashes": {"sha256":"AcLrgtUIqqwaGoHhrEvYG1YLDIsVPYJdSRGhkp3jJp8"},
})
- self.datastore.persist_event.return_value = defer.succeed(None)
+ self.datastore.persist_event.return_value = defer.succeed((1,1))
self.datastore.get_room.return_value = defer.succeed(True)
self.auth.check_host_in_room.return_value = defer.succeed(True)
@@ -126,5 +126,5 @@ class FederationTestCase(unittest.TestCase):
self.auth.check.assert_called_once_with(ANY, auth_events={})
self.notifier.on_new_room_event.assert_called_once_with(
- ANY, extra_users=[]
+ ANY, 1, 1, extra_users=[]
)
diff --git a/tests/handlers/test_presence.py b/tests/handlers/test_presence.py
index 70147b017e..29372d488a 100644
--- a/tests/handlers/test_presence.py
+++ b/tests/handlers/test_presence.py
@@ -233,7 +233,7 @@ class MockedDatastorePresenceTestCase(PresenceTestCase):
if not user_localpart in self.PRESENCE_LIST:
return defer.succeed([])
return defer.succeed([
- {"observed_user_id": u} for u in
+ {"observed_user_id": u, "accepted": accepted} for u in
self.PRESENCE_LIST[user_localpart]])
datastore.get_presence_list = get_presence_list
@@ -624,6 +624,7 @@ class PresencePushTestCase(MockedDatastorePresenceTestCase):
"""
PRESENCE_LIST = {
'apple': [ "@banana:test", "@clementine:test" ],
+ 'banana': [ "@apple:test" ],
}
@defer.inlineCallbacks
@@ -733,10 +734,12 @@ class PresencePushTestCase(MockedDatastorePresenceTestCase):
self.assertEquals(
[
- {"observed_user": self.u_banana,
- "presence": OFFLINE},
+ {"observed_user": self.u_banana,
+ "presence": OFFLINE,
+ "accepted": True},
{"observed_user": self.u_clementine,
- "presence": OFFLINE},
+ "presence": OFFLINE,
+ "accepted": True},
],
presence
)
@@ -757,9 +760,11 @@ class PresencePushTestCase(MockedDatastorePresenceTestCase):
self.assertEquals([
{"observed_user": self.u_banana,
"presence": ONLINE,
- "last_active_ago": 2000},
+ "last_active_ago": 2000,
+ "accepted": True},
{"observed_user": self.u_clementine,
- "presence": OFFLINE},
+ "presence": OFFLINE,
+ "accepted": True},
], presence)
(events, _) = yield self.event_source.get_new_events_for_user(
@@ -836,12 +841,7 @@ class PresencePushTestCase(MockedDatastorePresenceTestCase):
@defer.inlineCallbacks
def test_recv_remote(self):
- # TODO(paul): Gut-wrenching
- potato_set = self.handler._remote_recvmap.setdefault(self.u_potato,
- set())
- potato_set.add(self.u_apple)
-
- self.room_members = [self.u_banana, self.u_potato]
+ self.room_members = [self.u_apple, self.u_banana, self.u_potato]
self.assertEquals(self.event_source.get_current_key(), 0)
@@ -886,11 +886,8 @@ class PresencePushTestCase(MockedDatastorePresenceTestCase):
@defer.inlineCallbacks
def test_recv_remote_offline(self):
""" Various tests relating to SYN-261 """
- potato_set = self.handler._remote_recvmap.setdefault(self.u_potato,
- set())
- potato_set.add(self.u_apple)
- self.room_members = [self.u_banana, self.u_potato]
+ self.room_members = [self.u_apple, self.u_banana, self.u_potato]
self.assertEquals(self.event_source.get_current_key(), 0)
@@ -1097,12 +1094,8 @@ class PresencePollingTestCase(MockedDatastorePresenceTestCase):
# apple should see both banana and clementine currently offline
self.mock_update_client.assert_has_calls([
- call(users_to_push=[self.u_apple],
- observed_user=self.u_banana,
- statuscache=ANY),
- call(users_to_push=[self.u_apple],
- observed_user=self.u_clementine,
- statuscache=ANY),
+ call(users_to_push=[self.u_apple]),
+ call(users_to_push=[self.u_apple]),
], any_order=True)
# Gut-wrenching tests
@@ -1121,13 +1114,8 @@ class PresencePollingTestCase(MockedDatastorePresenceTestCase):
# apple and banana should now both see each other online
self.mock_update_client.assert_has_calls([
- call(users_to_push=set([self.u_apple]),
- observed_user=self.u_banana,
- room_ids=[],
- statuscache=ANY),
- call(users_to_push=[self.u_banana],
- observed_user=self.u_apple,
- statuscache=ANY),
+ call(users_to_push=set([self.u_apple]), room_ids=[]),
+ call(users_to_push=[self.u_banana]),
], any_order=True)
self.assertTrue("apple" in self.handler._local_pushmap)
@@ -1143,10 +1131,7 @@ class PresencePollingTestCase(MockedDatastorePresenceTestCase):
# banana should now be told apple is offline
self.mock_update_client.assert_has_calls([
- call(users_to_push=set([self.u_banana, self.u_apple]),
- observed_user=self.u_apple,
- room_ids=[],
- statuscache=ANY),
+ call(users_to_push=set([self.u_banana, self.u_apple]), room_ids=[]),
], any_order=True)
self.assertFalse("banana" in self.handler._local_pushmap)
diff --git a/tests/handlers/test_presencelike.py b/tests/handlers/test_presencelike.py
index 977e832da7..19107caeee 100644
--- a/tests/handlers/test_presencelike.py
+++ b/tests/handlers/test_presencelike.py
@@ -101,8 +101,8 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
self.datastore.get_profile_avatar_url = get_profile_avatar_url
self.presence_list = [
- {"observed_user_id": "@banana:test"},
- {"observed_user_id": "@clementine:test"},
+ {"observed_user_id": "@banana:test", "accepted": True},
+ {"observed_user_id": "@clementine:test", "accepted": True},
]
def get_presence_list(user_localpart, accepted=None):
return defer.succeed(self.presence_list)
@@ -144,8 +144,8 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_set_my_state(self):
self.presence_list = [
- {"observed_user_id": "@banana:test"},
- {"observed_user_id": "@clementine:test"},
+ {"observed_user_id": "@banana:test", "accepted": True},
+ {"observed_user_id": "@clementine:test", "accepted": True},
]
mocked_set = self.datastore.set_presence_state
@@ -167,8 +167,8 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
self.mock_get_joined.side_effect = get_joined
self.presence_list = [
- {"observed_user_id": "@banana:test"},
- {"observed_user_id": "@clementine:test"},
+ {"observed_user_id": "@banana:test", "accepted": True},
+ {"observed_user_id": "@clementine:test", "accepted": True},
]
self.datastore.set_presence_state.return_value = defer.succeed(
@@ -203,26 +203,20 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
"presence": ONLINE,
"last_active_ago": 0,
"displayname": "Frank",
- "avatar_url": "http://foo"},
+ "avatar_url": "http://foo",
+ "accepted": True},
{"observed_user": self.u_clementine,
- "presence": OFFLINE}
+ "presence": OFFLINE,
+ "accepted": True}
], presence)
self.mock_update_client.assert_has_calls([
- call(users_to_push=set([self.u_apple, self.u_banana, self.u_clementine]),
- room_ids=[],
- observed_user=self.u_apple,
- statuscache=ANY), # self-reflection
+ call(
+ users_to_push={self.u_apple, self.u_banana, self.u_clementine},
+ room_ids=[]
+ ),
], any_order=True)
- statuscache = self.mock_update_client.call_args[1]["statuscache"]
- self.assertEquals({
- "presence": ONLINE,
- "last_active": 1000000, # MockClock
- "displayname": "Frank",
- "avatar_url": "http://foo",
- }, statuscache.state)
-
self.mock_update_client.reset_mock()
self.datastore.set_profile_displayname.return_value = defer.succeed(
@@ -232,25 +226,16 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
self.u_apple, "I am an Apple")
self.mock_update_client.assert_has_calls([
- call(users_to_push=set([self.u_apple, self.u_banana, self.u_clementine]),
+ call(
+ users_to_push={self.u_apple, self.u_banana, self.u_clementine},
room_ids=[],
- observed_user=self.u_apple,
- statuscache=ANY), # self-reflection
+ ),
], any_order=True)
- statuscache = self.mock_update_client.call_args[1]["statuscache"]
- self.assertEquals({
- "presence": ONLINE,
- "last_active": 1000000, # MockClock
- "displayname": "I am an Apple",
- "avatar_url": "http://foo",
- }, statuscache.state)
-
-
@defer.inlineCallbacks
def test_push_remote(self):
self.presence_list = [
- {"observed_user_id": "@potato:remote"},
+ {"observed_user_id": "@potato:remote", "accepted": True},
]
self.datastore.set_presence_state.return_value = defer.succeed(
@@ -314,13 +299,7 @@ class PresenceProfilelikeDataTestCase(unittest.TestCase):
self.mock_update_client.assert_called_with(
users_to_push=set([self.u_apple]),
room_ids=[],
- observed_user=self.u_potato,
- statuscache=ANY)
-
- statuscache = self.mock_update_client.call_args[1]["statuscache"]
- self.assertEquals({"presence": ONLINE,
- "displayname": "Frank",
- "avatar_url": "http://foo"}, statuscache.state)
+ )
state = yield self.handlers.presence_handler.get_state(self.u_potato,
self.u_apple)
diff --git a/tests/handlers/test_room.py b/tests/handlers/test_room.py
index 6417f73309..a2d7635995 100644
--- a/tests/handlers/test_room.py
+++ b/tests/handlers/test_room.py
@@ -87,6 +87,8 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
self.ratelimiter = hs.get_ratelimiter()
self.ratelimiter.send_message.return_value = (True, 0)
+ self.datastore.persist_event.return_value = (1,1)
+
@defer.inlineCallbacks
def test_invite(self):
room_id = "!foo:red"
@@ -160,7 +162,7 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
event, context=context,
)
self.notifier.on_new_room_event.assert_called_once_with(
- event, extra_users=[UserID.from_string(target_user_id)]
+ event, 1, 1, extra_users=[UserID.from_string(target_user_id)]
)
self.assertFalse(self.datastore.get_room.called)
self.assertFalse(self.datastore.store_room.called)
@@ -226,7 +228,7 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
event, context=context
)
self.notifier.on_new_room_event.assert_called_once_with(
- event, extra_users=[user]
+ event, 1, 1, extra_users=[user]
)
join_signal_observer.assert_called_with(
@@ -304,7 +306,7 @@ class RoomMemberHandlerTestCase(unittest.TestCase):
event, context=context
)
self.notifier.on_new_room_event.assert_called_once_with(
- event, extra_users=[user]
+ event, 1, 1, extra_users=[user]
)
leave_signal_observer.assert_called_with(
diff --git a/tests/handlers/test_typing.py b/tests/handlers/test_typing.py
index b318d4944a..7ccbe2ea9c 100644
--- a/tests/handlers/test_typing.py
+++ b/tests/handlers/test_typing.py
@@ -183,7 +183,7 @@ class TypingNotificationsTestCase(unittest.TestCase):
)
self.on_new_user_event.assert_has_calls([
- call(rooms=[self.room_id]),
+ call('typing_key', 1, rooms=[self.room_id]),
])
self.assertEquals(self.event_source.get_current_key(), 1)
@@ -246,7 +246,7 @@ class TypingNotificationsTestCase(unittest.TestCase):
)
self.on_new_user_event.assert_has_calls([
- call(rooms=[self.room_id]),
+ call('typing_key', 1, rooms=[self.room_id]),
])
self.assertEquals(self.event_source.get_current_key(), 1)
@@ -300,7 +300,7 @@ class TypingNotificationsTestCase(unittest.TestCase):
)
self.on_new_user_event.assert_has_calls([
- call(rooms=[self.room_id]),
+ call('typing_key', 1, rooms=[self.room_id]),
])
yield put_json.await_calls()
@@ -332,7 +332,7 @@ class TypingNotificationsTestCase(unittest.TestCase):
)
self.on_new_user_event.assert_has_calls([
- call(rooms=[self.room_id]),
+ call('typing_key', 1, rooms=[self.room_id]),
])
self.on_new_user_event.reset_mock()
@@ -352,7 +352,7 @@ class TypingNotificationsTestCase(unittest.TestCase):
self.clock.advance_time(11)
self.on_new_user_event.assert_has_calls([
- call(rooms=[self.room_id]),
+ call('typing_key', 2, rooms=[self.room_id]),
])
self.assertEquals(self.event_source.get_current_key(), 2)
@@ -378,7 +378,7 @@ class TypingNotificationsTestCase(unittest.TestCase):
)
self.on_new_user_event.assert_has_calls([
- call(rooms=[self.room_id]),
+ call('typing_key', 3, rooms=[self.room_id]),
])
self.on_new_user_event.reset_mock()
diff --git a/tests/rest/client/v1/test_presence.py b/tests/rest/client/v1/test_presence.py
index 8e0c5fa630..4b32c7a203 100644
--- a/tests/rest/client/v1/test_presence.py
+++ b/tests/rest/client/v1/test_presence.py
@@ -27,6 +27,9 @@ from synapse.handlers.presence import PresenceHandler
from synapse.rest.client.v1 import presence
from synapse.rest.client.v1 import events
from synapse.types import UserID
+from synapse.util.async import run_on_reactor
+
+from collections import namedtuple
OFFLINE = PresenceState.OFFLINE
@@ -180,7 +183,7 @@ class PresenceListTestCase(unittest.TestCase):
@defer.inlineCallbacks
def test_get_my_list(self):
self.datastore.get_presence_list.return_value = defer.succeed(
- [{"observed_user_id": "@banana:test"}],
+ [{"observed_user_id": "@banana:test", "accepted": True}],
)
(code, response) = yield self.mock_resource.trigger("GET",
@@ -188,7 +191,7 @@ class PresenceListTestCase(unittest.TestCase):
self.assertEquals(200, code)
self.assertEquals([
- {"user_id": "@banana:test", "presence": OFFLINE},
+ {"user_id": "@banana:test", "presence": OFFLINE, "accepted": True},
], response)
self.datastore.get_presence_list.assert_called_with(
@@ -264,11 +267,13 @@ class PresenceEventStreamTestCase(unittest.TestCase):
datastore=Mock(spec=[
"set_presence_state",
"get_presence_list",
+ "get_rooms_for_user",
]),
clock=Mock(spec=[
"call_later",
"cancel_call_later",
"time_msec",
+ "looping_call",
]),
)
@@ -292,12 +297,21 @@ class PresenceEventStreamTestCase(unittest.TestCase):
else:
return []
hs.handlers.room_member_handler.get_joined_rooms_for_user = get_rooms_for_user
+ hs.handlers.room_member_handler.get_room_members = (
+ lambda r: self.room_members if r == "a-room" else []
+ )
self.mock_datastore = hs.get_datastore()
self.mock_datastore.get_app_service_by_token = Mock(return_value=None)
self.mock_datastore.get_app_service_by_user_id = Mock(
return_value=defer.succeed(None)
)
+ self.mock_datastore.get_rooms_for_user = (
+ lambda u: [
+ namedtuple("Room", "room_id")(r)
+ for r in get_rooms_for_user(UserID.from_string(u))
+ ]
+ )
def get_profile_displayname(user_id):
return defer.succeed("Frank")
@@ -350,19 +364,19 @@ class PresenceEventStreamTestCase(unittest.TestCase):
self.mock_datastore.set_presence_state.return_value = defer.succeed(
{"state": ONLINE}
)
- self.mock_datastore.get_presence_list.return_value = defer.succeed(
- []
- )
+ self.mock_datastore.get_presence_list.return_value = defer.succeed([])
yield self.presence.set_state(self.u_banana, self.u_banana,
state={"presence": ONLINE}
)
+ yield run_on_reactor()
+
(code, response) = yield self.mock_resource.trigger("GET",
- "/events?from=0_1_0&timeout=0", None)
+ "/events?from=s0_1_0&timeout=0", None)
self.assertEquals(200, code)
- self.assertEquals({"start": "0_1_0", "end": "0_2_0", "chunk": [
+ self.assertEquals({"start": "s0_1_0", "end": "s0_2_0", "chunk": [
{"type": "m.presence",
"content": {
"user_id": "@banana:test",
diff --git a/tests/storage/test_base.py b/tests/storage/test_base.py
index 8c348ecc95..8573f18b55 100644
--- a/tests/storage/test_base.py
+++ b/tests/storage/test_base.py
@@ -33,8 +33,9 @@ class SQLBaseStoreTestCase(unittest.TestCase):
def setUp(self):
self.db_pool = Mock(spec=["runInteraction"])
self.mock_txn = Mock()
- self.mock_conn = Mock(spec_set=["cursor"])
+ self.mock_conn = Mock(spec_set=["cursor", "rollback", "commit"])
self.mock_conn.cursor.return_value = self.mock_txn
+ self.mock_conn.rollback.return_value = None
# Our fake runInteraction just runs synchronously inline
def runInteraction(func, *args, **kwargs):
diff --git a/tests/utils.py b/tests/utils.py
index cc038fecf1..3b5c335911 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -197,6 +197,9 @@ class MockClock(object):
return t
+ def looping_call(self, function, interval):
+ pass
+
def cancel_call_later(self, timer):
if timer[2]:
raise Exception("Cannot cancel an expired timer")
@@ -355,7 +358,7 @@ class MemoryDataStore(object):
return []
def get_room_events_max_id(self):
- return 0 # TODO (erikj)
+ return "s0" # TODO (erikj)
def get_send_event_level(self, room_id):
return defer.succeed(0)
|