Skip to content

Commit 9107ed2

Browse files
committed
Add a couple of unit tests for room/<x>/messages
... merely because I was trying to figure out how it worked, and couldn't.
1 parent b1953a9 commit 9107ed2

2 files changed

Lines changed: 57 additions & 1 deletion

File tree

synapse/rest/client/v1/room.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ def on_GET(self, request, room_id):
319319
}))
320320

321321

322-
# TODO: Needs unit testing
322+
# TODO: Needs better unit testing
323323
class RoomMessageListRestServlet(ClientV1RestServlet):
324324
PATTERN = client_path_pattern("/rooms/(?P<room_id>[^/]*)/messages$")
325325

tests/rest/client/v1/test_rooms.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -994,3 +994,59 @@ def test_initial_sync(self):
994994
}
995995
self.assertTrue(self.user_id in presence_by_user)
996996
self.assertEquals("m.presence", presence_by_user[self.user_id]["type"])
997+
998+
999+
class RoomMessageListTestCase(RestTestCase):
1000+
""" Tests /rooms/$room_id/messages REST events. """
1001+
user_id = "@sid1:red"
1002+
1003+
@defer.inlineCallbacks
1004+
def setUp(self):
1005+
self.mock_resource = MockHttpResource(prefix=PATH_PREFIX)
1006+
self.auth_user_id = self.user_id
1007+
1008+
hs = yield setup_test_homeserver(
1009+
"red",
1010+
http_client=None,
1011+
replication_layer=Mock(),
1012+
ratelimiter=NonCallableMock(spec_set=["send_message"]),
1013+
)
1014+
self.ratelimiter = hs.get_ratelimiter()
1015+
self.ratelimiter.send_message.return_value = (True, 0)
1016+
1017+
hs.get_handlers().federation_handler = Mock()
1018+
1019+
def _get_user_by_access_token(token=None, allow_guest=False):
1020+
return {
1021+
"user": UserID.from_string(self.auth_user_id),
1022+
"token_id": 1,
1023+
"is_guest": False,
1024+
}
1025+
hs.get_v1auth()._get_user_by_access_token = _get_user_by_access_token
1026+
1027+
def _insert_client_ip(*args, **kwargs):
1028+
return defer.succeed(None)
1029+
hs.get_datastore().insert_client_ip = _insert_client_ip
1030+
1031+
synapse.rest.client.v1.room.register_servlets(hs, self.mock_resource)
1032+
1033+
self.room_id = yield self.create_room_as(self.user_id)
1034+
1035+
@defer.inlineCallbacks
1036+
def test_topo_token_is_accepted(self):
1037+
token = "t1-0_0_0_0_0"
1038+
(code, response) = yield self.mock_resource.trigger_get(
1039+
"/rooms/%s/messages?access_token=x&from=%s" %
1040+
(self.room_id, token))
1041+
self.assertEquals(200, code)
1042+
self.assertTrue("start" in response)
1043+
self.assertEquals(token, response['start'])
1044+
self.assertTrue("chunk" in response)
1045+
self.assertTrue("end" in response)
1046+
1047+
@defer.inlineCallbacks
1048+
def test_stream_token_is_rejected(self):
1049+
(code, response) = yield self.mock_resource.trigger_get(
1050+
"/rooms/%s/messages?access_token=x&from=s0_0_0_0" %
1051+
self.room_id)
1052+
self.assertEquals(400, code)

0 commit comments

Comments
 (0)