mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-08 20:14:59 -04:00
Add an option to disable purge in delete room admin API (#7964)
Add option ```purge``` to ```POST /_synapse/admin/v1/rooms/<room_id>/delete``` Fixes: #3761 Signed-off-by: Dirk Klimpel dirk@klimpel.org
This commit is contained in:
parent
8a25332d94
commit
e866e3b896
4 changed files with 75 additions and 7 deletions
|
@ -283,6 +283,23 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
self.assertEqual(400, int(channel.result["code"]), msg=channel.result["body"])
|
||||
self.assertEqual(Codes.BAD_JSON, channel.json_body["errcode"])
|
||||
|
||||
def test_purge_is_not_bool(self):
|
||||
"""
|
||||
If parameter `purge` is not boolean, return an error
|
||||
"""
|
||||
body = json.dumps({"purge": "NotBool"})
|
||||
|
||||
request, channel = self.make_request(
|
||||
"POST",
|
||||
self.url,
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
)
|
||||
self.render(request)
|
||||
|
||||
self.assertEqual(400, int(channel.result["code"]), msg=channel.result["body"])
|
||||
self.assertEqual(Codes.BAD_JSON, channel.json_body["errcode"])
|
||||
|
||||
def test_purge_room_and_block(self):
|
||||
"""Test to purge a room and block it.
|
||||
Members will not be moved to a new room and will not receive a message.
|
||||
|
@ -297,7 +314,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
# Assert one user in room
|
||||
self._is_member(room_id=self.room_id, user_id=self.other_user)
|
||||
|
||||
body = json.dumps({"block": True})
|
||||
body = json.dumps({"block": True, "purge": True})
|
||||
|
||||
request, channel = self.make_request(
|
||||
"POST",
|
||||
|
@ -331,7 +348,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
# Assert one user in room
|
||||
self._is_member(room_id=self.room_id, user_id=self.other_user)
|
||||
|
||||
body = json.dumps({"block": False})
|
||||
body = json.dumps({"block": False, "purge": True})
|
||||
|
||||
request, channel = self.make_request(
|
||||
"POST",
|
||||
|
@ -351,6 +368,42 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
self._is_blocked(self.room_id, expect=False)
|
||||
self._has_no_members(self.room_id)
|
||||
|
||||
def test_block_room_and_not_purge(self):
|
||||
"""Test to block a room without purging it.
|
||||
Members will not be moved to a new room and will not receive a message.
|
||||
The room will not be purged.
|
||||
"""
|
||||
# Test that room is not purged
|
||||
with self.assertRaises(AssertionError):
|
||||
self._is_purged(self.room_id)
|
||||
|
||||
# Test that room is not blocked
|
||||
self._is_blocked(self.room_id, expect=False)
|
||||
|
||||
# Assert one user in room
|
||||
self._is_member(room_id=self.room_id, user_id=self.other_user)
|
||||
|
||||
body = json.dumps({"block": False, "purge": False})
|
||||
|
||||
request, channel = self.make_request(
|
||||
"POST",
|
||||
self.url.encode("ascii"),
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
)
|
||||
self.render(request)
|
||||
|
||||
self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"])
|
||||
self.assertEqual(None, channel.json_body["new_room_id"])
|
||||
self.assertEqual(self.other_user, channel.json_body["kicked_users"][0])
|
||||
self.assertIn("failed_to_kick_users", channel.json_body)
|
||||
self.assertIn("local_aliases", channel.json_body)
|
||||
|
||||
with self.assertRaises(AssertionError):
|
||||
self._is_purged(self.room_id)
|
||||
self._is_blocked(self.room_id, expect=False)
|
||||
self._has_no_members(self.room_id)
|
||||
|
||||
def test_shutdown_room_consent(self):
|
||||
"""Test that we can shutdown rooms with local users who have not
|
||||
yet accepted the privacy policy. This used to fail when we tried to
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue