summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2014-09-01 13:41:44 +0100
committerErik Johnston <erik@matrix.org>2014-09-01 13:41:44 +0100
commit10efca1a74892610e7438ed428c3acfb0e89060b (patch)
treeddbc029565cfa9f037a2d20597c0faf280bceacc /tests
parentStart adding storage for new events. (diff)
parentadd another public wishlist item (diff)
downloadsynapse-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.py18
-rw-r--r--tests/handlers/test_presence.py152
-rw-r--r--tests/handlers/test_typing.py6
-rw-r--r--tests/rest/test_events.py2
-rw-r--r--tests/rest/test_presence.py24
-rw-r--r--tests/rest/test_profile.py2
-rw-r--r--tests/rest/test_rooms.py2
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):