mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-13 22:03:31 +01:00
Add a unit test for copying over arbitrary room types when upgrading a room (#12792)
This commit is contained in:
parent
177b884ad7
commit
96df31239c
3 changed files with 33 additions and 2 deletions
1
changelog.d/12792.feature
Normal file
1
changelog.d/12792.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Implement [MSC3818: Copy room type on upgrade](https://github.com/matrix-org/matrix-spec-proposals/pull/3818).
|
|
@ -427,7 +427,7 @@ class RoomCreationHandler:
|
||||||
requester: the user requesting the upgrade
|
requester: the user requesting the upgrade
|
||||||
old_room_id : the id of the room to be replaced
|
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
|
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
|
new_room_version: the new room version to use
|
||||||
tombstone_event_id: the ID of the tombstone event in the old room.
|
tombstone_event_id: the ID of the tombstone event in the old room.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -76,7 +76,7 @@ class UpgradeRoomTest(unittest.HomeserverTestCase):
|
||||||
"""
|
"""
|
||||||
Upgrading a room should work fine.
|
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 = self.register_user("roomless", "pass")
|
||||||
roomless_token = self.login(roomless, "pass")
|
roomless_token = self.login(roomless, "pass")
|
||||||
|
|
||||||
|
@ -263,3 +263,33 @@ class UpgradeRoomTest(unittest.HomeserverTestCase):
|
||||||
self.assertIn((EventTypes.SpaceChild, self.room_id), state_ids)
|
self.assertIn((EventTypes.SpaceChild, self.room_id), state_ids)
|
||||||
# The child that was removed should not be copied over.
|
# The child that was removed should not be copied over.
|
||||||
self.assertNotIn((EventTypes.SpaceChild, old_room_id), state_ids)
|
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
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in a new issue