Skip to content
Snippets Groups Projects
test_room_summary.py 39 KiB
Newer Older
  • Learn to ignore specific revisions
  •             # The previous federation response should be reused.
                result = self.get_success(
                    self.handler.get_room_hierarchy(create_requester(self.user), self.space)
                )
                self.assertEqual(federation_requests, 1)
                self._assert_hierarchy(result, expected)
    
                # Expire the response cache
                self.reactor.advance(5 * 60 + 1)
    
                # A new federation request should be made.
                result = self.get_success(
                    self.handler.get_room_hierarchy(create_requester(self.user), self.space)
                )
                self.assertEqual(federation_requests, 2)
                self._assert_hierarchy(result, expected)
    
    
    
    class RoomSummaryTestCase(unittest.HomeserverTestCase):
        servlets = [
            admin.register_servlets_for_client_rest_resource,
            room.register_servlets,
            login.register_servlets,
        ]
    
        def prepare(self, reactor, clock, hs: HomeServer):
            self.hs = hs
            self.handler = self.hs.get_room_summary_handler()
    
            # Create a user.
            self.user = self.register_user("user", "pass")
            self.token = self.login("user", "pass")
    
            # Create a simple room.
            self.room = self.helper.create_room_as(self.user, tok=self.token)
            self.helper.send_state(
                self.room,
                event_type=EventTypes.JoinRules,
                body={"join_rule": JoinRules.INVITE},
                tok=self.token,
            )
    
        def test_own_room(self):
            """Test a simple room created by the requester."""
            result = self.get_success(self.handler.get_room_summary(self.user, self.room))
            self.assertEqual(result.get("room_id"), self.room)
    
        def test_visibility(self):
            """A user not in a private room cannot get its summary."""
            user2 = self.register_user("user2", "pass")
            token2 = self.login("user2", "pass")
    
            # The user cannot see the room.
            self.get_failure(self.handler.get_room_summary(user2, self.room), NotFoundError)
    
            # If the room is made world-readable it should return a result.
            self.helper.send_state(
                self.room,
                event_type=EventTypes.RoomHistoryVisibility,
                body={"history_visibility": HistoryVisibility.WORLD_READABLE},
                tok=self.token,
            )
            result = self.get_success(self.handler.get_room_summary(user2, self.room))
            self.assertEqual(result.get("room_id"), self.room)
    
            # Make it not world-readable again and confirm it results in an error.
            self.helper.send_state(
                self.room,
                event_type=EventTypes.RoomHistoryVisibility,
                body={"history_visibility": HistoryVisibility.JOINED},
                tok=self.token,
            )
            self.get_failure(self.handler.get_room_summary(user2, self.room), NotFoundError)
    
            # If the room is made public it should return a result.
            self.helper.send_state(
                self.room,
                event_type=EventTypes.JoinRules,
                body={"join_rule": JoinRules.PUBLIC},
                tok=self.token,
            )
            result = self.get_success(self.handler.get_room_summary(user2, self.room))
            self.assertEqual(result.get("room_id"), self.room)
    
            # Join the space, make it invite-only again and results should be returned.
            self.helper.join(self.room, user2, tok=token2)
            self.helper.send_state(
                self.room,
                event_type=EventTypes.JoinRules,
                body={"join_rule": JoinRules.INVITE},
                tok=self.token,
            )
            result = self.get_success(self.handler.get_room_summary(user2, self.room))
            self.assertEqual(result.get("room_id"), self.room)