def create_room_with_remote_server(self,
                                       user,
                                       token,
                                       remote_server="other_server"):
        room = self.helper.create_room_as(user, tok=token)
        store = self.hs.get_datastore()
        federation = self.hs.get_federation_handler()

        prev_event_ids = self.get_success(
            store.get_latest_event_ids_in_room(room))
        room_version = self.get_success(store.get_room_version(room))

        factory = EventBuilderFactory(self.hs)
        factory.hostname = remote_server

        user_id = UserID("user", remote_server).to_string()

        event_dict = {
            "type": EventTypes.Member,
            "state_key": user_id,
            "content": {
                "membership": Membership.JOIN
            },
            "sender": user_id,
            "room_id": room,
        }

        builder = factory.for_room_version(room_version, event_dict)
        join_event = self.get_success(builder.build(prev_event_ids, None))

        self.get_success(
            federation.on_send_join_request(remote_server, join_event))
        self.replicate()

        return room
Example #2
0
 def build_event_builder_factory(self):
     return EventBuilderFactory(self)
Example #3
0
 def get_event_builder_factory(self) -> EventBuilderFactory:
     return EventBuilderFactory(self)
Example #4
0
 def build_event_builder_factory(self):
     return EventBuilderFactory(
         clock=self.get_clock(),
         hostname=self.hostname,
     )