diff options
author | Erik Johnston <erik@matrix.org> | 2014-09-01 13:41:44 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-09-01 13:41:44 +0100 |
commit | 10efca1a74892610e7438ed428c3acfb0e89060b (patch) | |
tree | ddbc029565cfa9f037a2d20597c0faf280bceacc /tests | |
parent | Start adding storage for new events. (diff) | |
parent | add another public wishlist item (diff) | |
download | synapse-10efca1a74892610e7438ed428c3acfb0e89060b.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into room_config
Diffstat (limited to 'tests')
-rw-r--r-- | tests/federation/test_federation.py | 18 | ||||
-rw-r--r-- | tests/handlers/test_presence.py | 152 | ||||
-rw-r--r-- | tests/handlers/test_typing.py | 6 | ||||
-rw-r--r-- | tests/rest/test_events.py | 2 | ||||
-rw-r--r-- | tests/rest/test_presence.py | 24 | ||||
-rw-r--r-- | tests/rest/test_profile.py | 2 | ||||
-rw-r--r-- | tests/rest/test_rooms.py | 2 |
7 files changed, 116 insertions, 90 deletions
diff --git a/tests/federation/test_federation.py b/tests/federation/test_federation.py index 938b57bec9..51308ca358 100644 --- a/tests/federation/test_federation.py +++ b/tests/federation/test_federation.py @@ -87,7 +87,7 @@ class FederationTestCase(unittest.TestCase): # Empty context initially (code, response) = yield self.mock_resource.trigger("GET", - "/matrix/federation/v1/state/my-context/", None) + "/_matrix/federation/v1/state/my-context/", None) self.assertEquals(200, code) self.assertFalse(response["pdus"]) @@ -112,7 +112,7 @@ class FederationTestCase(unittest.TestCase): ) (code, response) = yield self.mock_resource.trigger("GET", - "/matrix/federation/v1/state/my-context/", None) + "/_matrix/federation/v1/state/my-context/", None) self.assertEquals(200, code) self.assertEquals(1, len(response["pdus"])) @@ -123,7 +123,7 @@ class FederationTestCase(unittest.TestCase): ) (code, response) = yield self.mock_resource.trigger("GET", - "/matrix/federation/v1/pdu/red/abc123def456/", None) + "/_matrix/federation/v1/pdu/red/abc123def456/", None) self.assertEquals(404, code) # Now insert such a PDU @@ -142,7 +142,7 @@ class FederationTestCase(unittest.TestCase): ) (code, response) = yield self.mock_resource.trigger("GET", - "/matrix/federation/v1/pdu/red/abc123def456/", None) + "/_matrix/federation/v1/pdu/red/abc123def456/", None) self.assertEquals(200, code) self.assertEquals(1, len(response["pdus"])) self.assertEquals("m.text", response["pdus"][0]["pdu_type"]) @@ -168,7 +168,7 @@ class FederationTestCase(unittest.TestCase): self.mock_http_client.put_json.assert_called_with( "remote", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data={ "ts": 1000000, "origin": "test", @@ -203,7 +203,7 @@ class FederationTestCase(unittest.TestCase): # MockClock ensures we can guess these timestamps self.mock_http_client.put_json.assert_called_with( "remote", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data={ "origin": "test", "ts": 1000000, @@ -226,7 +226,7 @@ class FederationTestCase(unittest.TestCase): self.federation.register_edu_handler("m.test", recv_observer) yield self.mock_resource.trigger("PUT", - "/matrix/federation/v1/send/1001000/", + "/_matrix/federation/v1/send/1001000/", """{ "origin": "remote", "ts": 1001000, @@ -261,7 +261,7 @@ class FederationTestCase(unittest.TestCase): self.mock_http_client.get_json.assert_called_with( destination="remote", - path="/matrix/federation/v1/query/a-question", + path="/_matrix/federation/v1/query/a-question", args={"one": "1", "two": "2"} ) @@ -273,7 +273,7 @@ class FederationTestCase(unittest.TestCase): self.federation.register_query_handler("a-question", recv_handler) code, response = yield self.mock_resource.trigger("GET", - "/matrix/federation/v1/query/a-question?three=3&four=4", None) + "/_matrix/federation/v1/query/a-question?three=3&four=4", None) self.assertEquals(200, code) self.assertEquals({"another": "response"}, response) diff --git a/tests/handlers/test_presence.py b/tests/handlers/test_presence.py index fcd7a784cd..451e1eaa22 100644 --- a/tests/handlers/test_presence.py +++ b/tests/handlers/test_presence.py @@ -314,7 +314,7 @@ class PresenceInvitesTestCase(unittest.TestCase): put_json = self.mock_http_client.put_json put_json.expect_call_and_return( call("elsewhere", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data=_expect_edu("elsewhere", "m.presence_invite", content={ "observer_user": "@apple:test", @@ -340,7 +340,7 @@ class PresenceInvitesTestCase(unittest.TestCase): put_json = self.mock_http_client.put_json put_json.expect_call_and_return( call("elsewhere", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data=_expect_edu("elsewhere", "m.presence_accept", content={ "observer_user": "@cabbage:elsewhere", @@ -352,7 +352,7 @@ class PresenceInvitesTestCase(unittest.TestCase): ) yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000000/", + "/_matrix/federation/v1/send/1000000/", _make_edu_json("elsewhere", "m.presence_invite", content={ "observer_user": "@cabbage:elsewhere", @@ -371,7 +371,7 @@ class PresenceInvitesTestCase(unittest.TestCase): put_json = self.mock_http_client.put_json put_json.expect_call_and_return( call("elsewhere", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data=_expect_edu("elsewhere", "m.presence_deny", content={ "observer_user": "@cabbage:elsewhere", @@ -383,7 +383,7 @@ class PresenceInvitesTestCase(unittest.TestCase): ) yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000000/", + "/_matrix/federation/v1/send/1000000/", _make_edu_json("elsewhere", "m.presence_invite", content={ "observer_user": "@cabbage:elsewhere", @@ -397,7 +397,7 @@ class PresenceInvitesTestCase(unittest.TestCase): @defer.inlineCallbacks def test_accepted_remote(self): yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000000/", + "/_matrix/federation/v1/send/1000000/", _make_edu_json("elsewhere", "m.presence_accept", content={ "observer_user": "@apple:test", @@ -415,7 +415,7 @@ class PresenceInvitesTestCase(unittest.TestCase): @defer.inlineCallbacks def test_denied_remote(self): yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000000/", + "/_matrix/federation/v1/send/1000000/", _make_edu_json("elsewhere", "m.presence_deny", content={ "observer_user": "@apple:test", @@ -514,13 +514,6 @@ class PresencePushTestCase(unittest.TestCase): ) hs.handlers = JustPresenceHandlers(hs) - def update(*args,**kwargs): - # print "mock_update_client: Args=%s, kwargs=%s" %(args, kwargs,) - return defer.succeed(None) - - self.mock_update_client = Mock() - self.mock_update_client.side_effect = update - self.datastore = hs.get_datastore() def get_received_txn_response(*args): @@ -528,7 +521,7 @@ class PresencePushTestCase(unittest.TestCase): self.datastore.get_received_txn_response = get_received_txn_response self.handler = hs.get_handlers().presence_handler - self.handler.push_update_to_clients = self.mock_update_client + self.event_source = hs.get_event_sources().sources["presence"] # Mock the RoomMemberHandler hs.handlers.room_member_handler = Mock(spec=[ @@ -622,16 +615,23 @@ class PresencePushTestCase(unittest.TestCase): apple_set.add(self.u_banana) apple_set.add(self.u_clementine) + self.assertEquals(self.event_source.get_current_key(), 0) + yield self.handler.set_state(self.u_apple, self.u_apple, {"state": ONLINE}) - self.mock_update_client.assert_has_calls([ - call(users_to_push=set([self.u_apple, self.u_banana, self.u_clementine]), - room_ids=["a-room"], - observed_user=self.u_apple, - statuscache=ANY), # self-reflection - ], any_order=True) - self.mock_update_client.reset_mock() + self.assertEquals(self.event_source.get_current_key(), 1) + self.assertEquals( + self.event_source.get_new_events_for_user(self.u_apple, 0, None)[0], + [ + {"type": "m.presence", + "content": { + "user_id": "@apple:test", + "state": ONLINE, + "mtime_age": 0, + }}, + ], + ) presence = yield self.handler.get_presence_list( observer_user=self.u_apple, accepted=True) @@ -657,31 +657,24 @@ class PresencePushTestCase(unittest.TestCase): "state": OFFLINE}, ], presence) - self.mock_update_client.assert_has_calls([ - call(users_to_push=set([self.u_banana]), - room_ids=[], - observed_user=self.u_banana, - statuscache=ANY), # self-reflection - ]) # and no others... + self.assertEquals(self.event_source.get_current_key(), 2) + self.assertEquals( + self.event_source.get_new_events_for_user( + self.u_banana, 1, None + )[0], + [ + {"type": "m.presence", + "content": { + "user_id": "@banana:test", + "state": ONLINE, + "mtime_age": 2000 + }}, + ] + ) @defer.inlineCallbacks def test_push_remote(self): put_json = self.mock_http_client.put_json -# put_json.expect_call_and_return( -# call("remote", -# path=ANY, # Can't guarantee which txn ID will be which -# data=_expect_edu("remote", "m.presence", -# content={ -# "push": [ -# {"user_id": "@apple:test", -# "state": "online", -# "mtime_age": 0}, -# ], -# } -# ) -# ), -# defer.succeed((200, "OK")) -# ) put_json.expect_call_and_return( call("farm", path=ANY, # Can't guarantee which txn ID will be which @@ -724,8 +717,10 @@ class PresencePushTestCase(unittest.TestCase): self.room_members = [self.u_banana, self.u_potato] + self.assertEquals(self.event_source.get_current_key(), 0) + yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000000/", + "/_matrix/federation/v1/send/1000000/", _make_edu_json("elsewhere", "m.presence", content={ "push": [ @@ -737,12 +732,20 @@ class PresencePushTestCase(unittest.TestCase): ) ) - self.mock_update_client.assert_has_calls([ - call(users_to_push=set([self.u_apple]), - room_ids=["a-room"], - observed_user=self.u_potato, - statuscache=ANY), - ], any_order=True) + self.assertEquals(self.event_source.get_current_key(), 1) + self.assertEquals( + self.event_source.get_new_events_for_user( + self.u_apple, 0, None + )[0], + [ + {"type": "m.presence", + "content": { + "user_id": "@potato:remote", + "state": ONLINE, + "mtime_age": 1000, + }} + ] + ) self.clock.advance_time(2) @@ -754,24 +757,35 @@ class PresencePushTestCase(unittest.TestCase): def test_join_room_local(self): self.room_members = [self.u_apple, self.u_banana] - yield self.distributor.fire("user_joined_room", self.u_elderberry, + self.assertEquals(self.event_source.get_current_key(), 0) + + # TODO(paul): Gut-wrenching + self.handler._user_cachemap[self.u_clementine] = UserPresenceCache() + self.handler._user_cachemap[self.u_clementine].update( + { + "state": PresenceState.ONLINE, + "mtime": self.clock.time_msec(), + }, self.u_clementine + ) + + yield self.distributor.fire("user_joined_room", self.u_clementine, "a-room" ) - self.mock_update_client.assert_has_calls([ - call(room_ids=["a-room"], - observed_user=self.u_elderberry, - users_to_push=set(), - statuscache=ANY), - call(users_to_push=set([self.u_elderberry]), - observed_user=self.u_apple, - room_ids=[], - statuscache=ANY), - call(users_to_push=set([self.u_elderberry]), - observed_user=self.u_banana, - room_ids=[], - statuscache=ANY), - ], any_order=True) + self.assertEquals(self.event_source.get_current_key(), 1) + self.assertEquals( + self.event_source.get_new_events_for_user( + self.u_apple, 0, None + )[0], + [ + {"type": "m.presence", + "content": { + "user_id": "@clementine:test", + "state": ONLINE, + "mtime_age": 0, + }} + ] + ) @defer.inlineCallbacks def test_join_room_remote(self): @@ -822,7 +836,7 @@ class PresencePushTestCase(unittest.TestCase): put_json.expect_call_and_return( call("remote", - path="/matrix/federation/v1/send/1000002/", + path="/_matrix/federation/v1/send/1000002/", data=_expect_edu("remote", "m.presence", content={ "push": [ @@ -1116,7 +1130,7 @@ class PresencePollingTestCase(unittest.TestCase): put_json = self.mock_http_client.put_json put_json.expect_call_and_return( call("remote", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data=_expect_edu("remote", "m.presence", content={ "push": [ @@ -1131,7 +1145,7 @@ class PresencePollingTestCase(unittest.TestCase): ) yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000000/", + "/_matrix/federation/v1/send/1000000/", _make_edu_json("remote", "m.presence", content={ "poll": [ "@banana:test" ], @@ -1145,7 +1159,7 @@ class PresencePollingTestCase(unittest.TestCase): self.assertTrue(self.u_banana in self.handler._remote_sendmap) yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000001/", + "/_matrix/federation/v1/send/1000001/", _make_edu_json("remote", "m.presence", content={ "unpoll": [ "@banana:test" ], diff --git a/tests/handlers/test_typing.py b/tests/handlers/test_typing.py index 300a6e340a..c3c98074cc 100644 --- a/tests/handlers/test_typing.py +++ b/tests/handlers/test_typing.py @@ -166,7 +166,7 @@ class TypingNotificationsTestCase(unittest.TestCase): put_json = self.mock_http_client.put_json put_json.expect_call_and_return( call("farm", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data=_expect_edu("farm", "m.typing", content={ "room_id": self.room_id, @@ -192,7 +192,7 @@ class TypingNotificationsTestCase(unittest.TestCase): self.room_members = [self.u_apple, self.u_onion] yield self.mock_federation_resource.trigger("PUT", - "/matrix/federation/v1/send/1000000/", + "/_matrix/federation/v1/send/1000000/", _make_edu_json("farm", "m.typing", content={ "room_id": self.room_id, @@ -216,7 +216,7 @@ class TypingNotificationsTestCase(unittest.TestCase): put_json = self.mock_http_client.put_json put_json.expect_call_and_return( call("farm", - path="/matrix/federation/v1/send/1000000/", + path="/_matrix/federation/v1/send/1000000/", data=_expect_edu("farm", "m.typing", content={ "room_id": self.room_id, diff --git a/tests/rest/test_events.py b/tests/rest/test_events.py index 3099a24e8c..1d1336d12d 100644 --- a/tests/rest/test_events.py +++ b/tests/rest/test_events.py @@ -36,7 +36,7 @@ from mock import Mock logging.getLogger().addHandler(logging.NullHandler()) -PATH_PREFIX = "/matrix/client/api/v1" +PATH_PREFIX = "/_matrix/client/api/v1" class EventStreamPaginationApiTestCase(unittest.TestCase): diff --git a/tests/rest/test_presence.py b/tests/rest/test_presence.py index 7f7347dcf9..61692f02c2 100644 --- a/tests/rest/test_presence.py +++ b/tests/rest/test_presence.py @@ -37,7 +37,7 @@ ONLINE = PresenceState.ONLINE myid = "@apple:test" -PATH_PREFIX = "/matrix/client/api/v1" +PATH_PREFIX = "/_matrix/client/api/v1" class JustPresenceHandlers(object): @@ -229,7 +229,7 @@ class PresenceEventStreamTestCase(unittest.TestCase): # HIDEOUS HACKERY # TODO(paul): This should be injected in via the HomeServer DI system from synapse.streams.events import ( - PresenceSource, NullSource, EventSources + PresenceEventSource, NullSource, EventSources ) old_SOURCE_TYPES = EventSources.SOURCE_TYPES @@ -240,7 +240,7 @@ class PresenceEventStreamTestCase(unittest.TestCase): EventSources.SOURCE_TYPES = { k: NullSource for k in old_SOURCE_TYPES.keys() } - EventSources.SOURCE_TYPES["presence"] = PresenceSource + EventSources.SOURCE_TYPES["presence"] = PresenceEventSource hs = HomeServer("test", db_pool=None, @@ -274,6 +274,15 @@ class PresenceEventStreamTestCase(unittest.TestCase): lambda u: defer.succeed([])) self.mock_datastore = hs.get_datastore() + + def get_profile_displayname(user_id): + return defer.succeed("Frank") + self.mock_datastore.get_profile_displayname = get_profile_displayname + + def get_profile_avatar_url(user_id): + return defer.succeed(None) + self.mock_datastore.get_profile_avatar_url = get_profile_avatar_url + self.presence = hs.get_handlers().presence_handler self.u_apple = hs.parse_userid("@apple:test") @@ -295,7 +304,9 @@ class PresenceEventStreamTestCase(unittest.TestCase): # all be ours # I'll already get my own presence state change - self.assertEquals({"start": "0_1", "end": "0_1", "chunk": []}, response) + self.assertEquals({"start": "0_1_0", "end": "0_1_0", "chunk": []}, + response + ) self.mock_datastore.set_presence_state.return_value = defer.succeed( {"state": ONLINE}) @@ -306,14 +317,15 @@ class PresenceEventStreamTestCase(unittest.TestCase): state={"state": ONLINE}) (code, response) = yield self.mock_resource.trigger("GET", - "/events?from=0_1&timeout=0", None) + "/events?from=0_1_0&timeout=0", None) self.assertEquals(200, code) - self.assertEquals({"start": "0_1", "end": "0_2", "chunk": [ + self.assertEquals({"start": "0_1_0", "end": "0_2_0", "chunk": [ {"type": "m.presence", "content": { "user_id": "@banana:test", "state": ONLINE, + "displayname": "Frank", "mtime_age": 0, }}, ]}, response) diff --git a/tests/rest/test_profile.py b/tests/rest/test_profile.py index 9bd8dc9783..24456769c7 100644 --- a/tests/rest/test_profile.py +++ b/tests/rest/test_profile.py @@ -26,7 +26,7 @@ from synapse.api.errors import SynapseError, AuthError from synapse.server import HomeServer myid = "@1234ABCD:test" -PATH_PREFIX = "/matrix/client/api/v1" +PATH_PREFIX = "/_matrix/client/api/v1" class ProfileTestCase(unittest.TestCase): """ Tests profile management. """ diff --git a/tests/rest/test_rooms.py b/tests/rest/test_rooms.py index 914dc28f53..b432cf254e 100644 --- a/tests/rest/test_rooms.py +++ b/tests/rest/test_rooms.py @@ -32,7 +32,7 @@ from .utils import RestTestCase from mock import Mock -PATH_PREFIX = "/matrix/client/api/v1" +PATH_PREFIX = "/_matrix/client/api/v1" class RoomPermissionsTestCase(RestTestCase): |