@@ -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