@@ -181,6 +181,35 @@ async fn test_negotiate_capabilities_immediately() {
181181 assert_matches ! ( driver_handle. recv( ) . now_or_never( ) , None ) ;
182182}
183183
184+ static HELLO_EVENT : Lazy < JsonValue > = Lazy :: new ( || {
185+ json ! ( {
186+ "content" : {
187+ "body" : "hello" ,
188+ "msgtype" : "m.text" ,
189+ } ,
190+ "event_id" : "$msda7m0df9E9op3" ,
191+ "origin_server_ts" : 152037280 ,
192+ "sender" : "@example:localhost" ,
193+ "type" : "m.room.message" ,
194+ "room_id" : & * ROOM_ID ,
195+ } )
196+ } ) ;
197+
198+ static TOMBSTONE_EVENT : Lazy < JsonValue > = Lazy :: new ( || {
199+ json ! ( {
200+ "content" : {
201+ "body" : "This room has been replaced" ,
202+ "replacement_room" : "!newroom:localhost" ,
203+ } ,
204+ "event_id" : "$foun39djjod0f" ,
205+ "origin_server_ts" : 152039280 ,
206+ "sender" : "@bob:localhost" ,
207+ "state_key" : "" ,
208+ "type" : "m.room.tombstone" ,
209+ "room_id" : & * ROOM_ID ,
210+ } )
211+ } ) ;
212+
184213#[ async_test]
185214async fn test_read_messages ( ) {
186215 let ( _, mock_server, driver_handle) = run_test_driver ( true ) . await ;
@@ -205,66 +234,40 @@ async fn test_read_messages() {
205234 // No messages from the driver
206235 assert_matches ! ( recv_message( & driver_handle) . now_or_never( ) , None ) ;
207236
208- {
209- let response_json = json ! ( {
210- "chunk" : [
211- {
212- "content" : {
213- "body" : "hello" ,
214- "msgtype" : "m.text" ,
215- } ,
216- "event_id" : "$msda7m0df9E9op3" ,
217- "origin_server_ts" : 152037280 ,
218- "sender" : "@example:localhost" ,
219- "type" : "m.room.message" ,
220- "room_id" : & * ROOM_ID ,
221- } ,
222- {
223- "content" : {
224- "body" : "This room has been replaced" ,
225- "replacement_room" : "!newroom:localhost" ,
226- } ,
227- "event_id" : "$foun39djjod0f" ,
228- "origin_server_ts" : 152039280 ,
229- "sender" : "@bob:localhost" ,
230- "state_key" : "" ,
231- "type" : "m.room.tombstone" ,
232- "room_id" : & * ROOM_ID ,
233- } ,
234- ] ,
235- "end" : "t47409-4357353_219380_26003_2269" ,
236- "start" : "t392-516_47314_0_7_1_1_1_11444_1"
237- } ) ;
238- mock_server
239- . mock_room_messages ( )
240- . match_limit ( 2 )
241- . respond_with ( ResponseTemplate :: new ( 200 ) . set_body_json ( response_json) )
242- . mock_once ( )
243- . mount ( )
244- . await ;
245-
246- // Ask the driver to read messages
247- send_request (
248- & driver_handle,
249- "2-read-messages" ,
250- "org.matrix.msc2876.read_events" ,
251- json ! ( {
252- "type" : "m.room.message" ,
253- "limit" : 2 ,
254- } ) ,
255- )
237+ let response_json = json ! ( {
238+ "chunk" : [ * HELLO_EVENT , * TOMBSTONE_EVENT ] ,
239+ "end" : "t47409-4357353_219380_26003_2269" ,
240+ "start" : "t392-516_47314_0_7_1_1_1_11444_1"
241+ } ) ;
242+ mock_server
243+ . mock_room_messages ( )
244+ . match_limit ( 2 )
245+ . respond_with ( ResponseTemplate :: new ( 200 ) . set_body_json ( response_json) )
246+ . mock_once ( )
247+ . mount ( )
256248 . await ;
257249
258- // Receive the response
259- let msg = recv_message ( & driver_handle) . await ;
260- assert_eq ! ( msg[ "api" ] , "fromWidget" ) ;
261- assert_eq ! ( msg[ "action" ] , "org.matrix.msc2876.read_events" ) ;
262- let events = msg[ "response" ] [ "events" ] . as_array ( ) . unwrap ( ) ;
250+ // Ask the driver to read messages
251+ send_request (
252+ & driver_handle,
253+ "2-read-messages" ,
254+ "org.matrix.msc2876.read_events" ,
255+ json ! ( {
256+ "type" : "m.room.message" ,
257+ "limit" : 2 ,
258+ } ) ,
259+ )
260+ . await ;
263261
264- assert_eq ! ( events. len( ) , 1 ) ;
265- let first_event = & events[ 0 ] ;
266- assert_eq ! ( first_event[ "content" ] [ "body" ] , "hello" ) ;
267- }
262+ // Receive the response
263+ let msg = recv_message ( & driver_handle) . await ;
264+ assert_eq ! ( msg[ "api" ] , "fromWidget" ) ;
265+ assert_eq ! ( msg[ "action" ] , "org.matrix.msc2876.read_events" ) ;
266+ let events = msg[ "response" ] [ "events" ] . as_array ( ) . unwrap ( ) ;
267+
268+ assert_eq ! ( events. len( ) , 1 ) ;
269+ let first_event = & events[ 0 ] ;
270+ assert_eq ! ( first_event[ "content" ] [ "body" ] , "hello" ) ;
268271}
269272
270273#[ async_test]
@@ -293,43 +296,41 @@ async fn test_read_messages_with_msgtype_capabilities() {
293296
294297 let f = EventFactory :: new ( ) . room ( & ROOM_ID ) . sender ( user_id ! ( "@example:localhost" ) ) ;
295298
296- {
297- let end = "t47409-4357353_219380_26003_2269" ;
298- let chunk2 = vec ! [
299- f. notice( "custom content" ) . event_id( event_id!( "$msda7m0df9E9op3" ) ) . into_raw_timeline( ) ,
300- f. text_msg( "hello" ) . event_id( event_id!( "$msda7m0df9E9op5" ) ) . into_raw_timeline( ) ,
301- f. reaction( event_id!( "$event_id" ) , "annotation" ) . into_raw_timeline( ) ,
302- ] ;
303- mock_server
304- . mock_room_messages ( )
305- . match_limit ( 3 )
306- . ok ( RoomMessagesResponseTemplate :: default ( ) . end_token ( end) . events ( chunk2) )
307- . mock_once ( )
308- . mount ( )
309- . await ;
310-
311- // Ask the driver to read messages
312- send_request (
313- & driver_handle,
314- "2-read-messages" ,
315- "org.matrix.msc2876.read_events" ,
316- json ! ( {
317- "type" : "m.room.message" ,
318- "limit" : 3 ,
319- } ) ,
320- )
299+ let end = "t47409-4357353_219380_26003_2269" ;
300+ let chunk2 = vec ! [
301+ f. notice( "custom content" ) . event_id( event_id!( "$msda7m0df9E9op3" ) ) . into_raw_timeline( ) ,
302+ f. text_msg( "hello" ) . event_id( event_id!( "$msda7m0df9E9op5" ) ) . into_raw_timeline( ) ,
303+ f. reaction( event_id!( "$event_id" ) , "annotation" ) . into_raw_timeline( ) ,
304+ ] ;
305+ mock_server
306+ . mock_room_messages ( )
307+ . match_limit ( 3 )
308+ . ok ( RoomMessagesResponseTemplate :: default ( ) . end_token ( end) . events ( chunk2) )
309+ . mock_once ( )
310+ . mount ( )
321311 . await ;
322312
323- // Receive the response
324- let msg = recv_message ( & driver_handle) . await ;
325- assert_eq ! ( msg[ "api" ] , "fromWidget" ) ;
326- assert_eq ! ( msg[ "action" ] , "org.matrix.msc2876.read_events" ) ;
327- let events = msg[ "response" ] [ "events" ] . as_array ( ) . unwrap ( ) ;
313+ // Ask the driver to read messages
314+ send_request (
315+ & driver_handle,
316+ "2-read-messages" ,
317+ "org.matrix.msc2876.read_events" ,
318+ json ! ( {
319+ "type" : "m.room.message" ,
320+ "limit" : 3 ,
321+ } ) ,
322+ )
323+ . await ;
328324
329- assert_eq ! ( events. len( ) , 1 ) ;
330- let first_event = & events[ 0 ] ;
331- assert_eq ! ( first_event[ "content" ] [ "body" ] , "hello" ) ;
332- }
325+ // Receive the response
326+ let msg = recv_message ( & driver_handle) . await ;
327+ assert_eq ! ( msg[ "api" ] , "fromWidget" ) ;
328+ assert_eq ! ( msg[ "action" ] , "org.matrix.msc2876.read_events" ) ;
329+ let events = msg[ "response" ] [ "events" ] . as_array ( ) . unwrap ( ) ;
330+
331+ assert_eq ! ( events. len( ) , 1 ) ;
332+ let first_event = & events[ 0 ] ;
333+ assert_eq ! ( first_event[ "content" ] [ "body" ] , "hello" ) ;
333334}
334335
335336#[ async_test]
0 commit comments