Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Add a unit test for copying over arbitrary room types when upgrading …
Browse files Browse the repository at this point in the history
…a room (#12792)
  • Loading branch information
anoadragon453 authored May 19, 2022
1 parent 177b884 commit 96df312
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
1 change: 1 addition & 0 deletions changelog.d/12792.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Implement [MSC3818: Copy room type on upgrade](https://github.com/matrix-org/matrix-spec-proposals/pull/3818).
2 changes: 1 addition & 1 deletion synapse/handlers/room.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ async def clone_existing_room(
requester: the user requesting the upgrade
old_room_id : the id of the room to be replaced
new_room_id: the id to give the new room (should already have been
created with _gemerate_room_id())
created with _generate_room_id())
new_room_version: the new room version to use
tombstone_event_id: the ID of the tombstone event in the old room.
"""
Expand Down
32 changes: 31 additions & 1 deletion tests/rest/client/test_upgrade_room.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def test_not_in_room(self) -> None:
"""
Upgrading a room should work fine.
"""
# THe user isn't in the room.
# The user isn't in the room.
roomless = self.register_user("roomless", "pass")
roomless_token = self.login(roomless, "pass")

Expand Down Expand Up @@ -263,3 +263,33 @@ def test_space(self) -> None:
self.assertIn((EventTypes.SpaceChild, self.room_id), state_ids)
# The child that was removed should not be copied over.
self.assertNotIn((EventTypes.SpaceChild, old_room_id), state_ids)

def test_custom_room_type(self) -> None:
"""Test upgrading a room that has a custom room type set."""
test_room_type = "com.example.my_custom_room_type"

# Create a room with a custom room type.
room_id = self.helper.create_room_as(
self.creator,
tok=self.creator_token,
extra_content={
"creation_content": {EventContentFields.ROOM_TYPE: test_room_type}
},
)

# Upgrade the room!
channel = self._upgrade_room(room_id=room_id)
self.assertEqual(200, channel.code, channel.result)
self.assertIn("replacement_room", channel.json_body)

new_room_id = channel.json_body["replacement_room"]

state_ids = self.get_success(self.store.get_current_state_ids(new_room_id))

# Ensure the new room is the same type as the old room.
create_event = self.get_success(
self.store.get_event(state_ids[(EventTypes.Create, "")])
)
self.assertEqual(
create_event.content.get(EventContentFields.ROOM_TYPE), test_room_type
)

0 comments on commit 96df312

Please sign in to comment.