@@ -530,6 +530,53 @@ def test_read_receipt_not_sent_to_large_rooms(self) -> None:
530530 # Test that we didn't get a read receipt.
531531 self .assertIsNone (self ._get_read_receipt ())
532532
533+ def test_read_marker_doesnt_send_receipt_to_large_rooms (self ) -> None :
534+ # Beeper: we don't send read receipts on rooms with over 100 users
535+ # add another 100 users to the room
536+ for i in range (RECEIPTS_MAX_ROOM_SIZE ):
537+ user = self .register_user (f"user_{ i } " , f"secure_password_{ i } " )
538+ tok = self .login (f"user_{ i } " , f"secure_password_{ i } " )
539+ self .helper .join (room = self .room_id , user = user , tok = tok )
540+
541+ res = self .helper .send (
542+ self .room_id , body = "woah, this is a big room!" , tok = self .tok
543+ )
544+
545+ # Send a read receipt
546+ channel = self .make_request (
547+ "POST" ,
548+ f"/rooms/{ self .room_id } /read_markers" ,
549+ {
550+ ReceiptTypes .FULLY_READ : res ["event_id" ],
551+ ReceiptTypes .READ : res ["event_id" ],
552+ },
553+ access_token = self .tok2 ,
554+ )
555+
556+ self .assertEqual (channel .code , 200 , channel .json_body )
557+ # Test that we didn't get a read receipt.
558+ self .assertIsNone (self ._get_read_receipt ())
559+
560+ def test_read_marker_does_send_receipt_to_small_rooms (self ) -> None :
561+ res = self .helper .send (
562+ self .room_id , body = "woah, this is room is tiny!" , tok = self .tok
563+ )
564+
565+ # Send a read receipt
566+ channel = self .make_request (
567+ "POST" ,
568+ f"/rooms/{ self .room_id } /read_markers" ,
569+ {
570+ ReceiptTypes .FULLY_READ : res ["event_id" ],
571+ ReceiptTypes .READ : res ["event_id" ],
572+ },
573+ access_token = self .tok2 ,
574+ )
575+
576+ self .assertEqual (channel .code , 200 , channel .json_body )
577+ # Test that we didn't get a read receipt.
578+ self .assertIsNotNone (self ._get_read_receipt ())
579+
533580 def _get_read_receipt (self ) -> Optional [JsonDict ]:
534581 """Syncs and returns the read receipt."""
535582
0 commit comments