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

Commit 92495b4

Browse files
author
Mathieu Velten
committed
Add tests
1 parent 283ac1d commit 92495b4

File tree

1 file changed

+113
-1
lines changed

1 file changed

+113
-1
lines changed

tests/rest/admin/test_room.py

Lines changed: 113 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@
2424
import synapse.rest.admin
2525
from synapse.api.constants import EventTypes, Membership, RoomTypes
2626
from synapse.api.errors import Codes
27-
from synapse.handlers.pagination import PaginationHandler, PurgeStatus
27+
from synapse.handlers.pagination import DeleteStatus, PaginationHandler, PurgeStatus
2828
from synapse.rest.client import directory, events, login, room
2929
from synapse.server import HomeServer
30+
from synapse.types import UserID
3031
from synapse.util import Clock
3132
from synapse.util.stringutils import random_string
3233

@@ -502,6 +503,9 @@ def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
502503
)
503504
self.url_status_by_delete_id = "/_synapse/admin/v2/rooms/delete_status/"
504505

506+
self.room_member_handler = hs.get_room_member_handler()
507+
self.pagination_handler = hs.get_pagination_handler()
508+
505509
@parameterized.expand(
506510
[
507511
("DELETE", "/_synapse/admin/v2/rooms/%s"),
@@ -972,6 +976,114 @@ def test_shutdown_room_block_peek(self) -> None:
972976
# Assert we can no longer peek into the room
973977
self._assert_peek(self.room_id, expect_code=403)
974978

979+
@unittest.override_config({"purge_retention_period": "1d"})
980+
def test_purge_forgotten_room(self) -> None:
981+
# Create a test room
982+
room_id = self.helper.create_room_as(
983+
self.admin_user,
984+
tok=self.admin_user_tok,
985+
)
986+
987+
self.helper.leave(room_id, user=self.admin_user, tok=self.admin_user_tok)
988+
self.get_success(
989+
self.room_member_handler.forget(
990+
UserID.from_string(self.admin_user), room_id
991+
)
992+
)
993+
994+
# Test that room is not yet purged
995+
with self.assertRaises(AssertionError):
996+
self._is_purged(room_id)
997+
998+
self.reactor.advance(3600 * 24)
999+
1000+
self._is_purged(room_id)
1001+
1002+
def test_resume_purge_room(self) -> None:
1003+
# Create a test room
1004+
room_id = self.helper.create_room_as(
1005+
self.admin_user,
1006+
tok=self.admin_user_tok,
1007+
)
1008+
self.helper.leave(room_id, user=self.admin_user, tok=self.admin_user_tok)
1009+
1010+
self.get_success(
1011+
self.store.upsert_room_to_purge(
1012+
room_id,
1013+
random_string(16),
1014+
DeleteStatus.STATUS_PURGING,
1015+
)
1016+
)
1017+
1018+
# Test that room is not yet purged
1019+
with self.assertRaises(AssertionError):
1020+
self._is_purged(room_id)
1021+
1022+
self.reactor.advance(3600 * 1)
1023+
1024+
self._is_purged(room_id)
1025+
1026+
def test_resume_shutdown_room(self) -> None:
1027+
# Create a test room
1028+
room_id = self.helper.create_room_as(
1029+
self.other_user,
1030+
tok=self.other_user_tok,
1031+
)
1032+
1033+
delete_id = random_string(16)
1034+
1035+
self.get_success(
1036+
self.store.upsert_room_to_purge(
1037+
room_id,
1038+
delete_id,
1039+
DeleteStatus.STATUS_SHUTTING_DOWN,
1040+
shutdown_params=json.dumps(
1041+
{
1042+
"requester_user_id": self.admin_user,
1043+
"new_room_user_id": self.admin_user,
1044+
"new_room_name": None,
1045+
"message": None,
1046+
"block": False,
1047+
"purge": True,
1048+
"force_purge": True,
1049+
}
1050+
),
1051+
)
1052+
)
1053+
1054+
# Test that room is not yet shutdown
1055+
self._is_member(room_id, self.other_user)
1056+
1057+
# Test that room is not yet purged
1058+
with self.assertRaises(AssertionError):
1059+
self._is_purged(room_id)
1060+
1061+
self.reactor.advance(3600 * 1)
1062+
1063+
# Test that all users has been kicked (room is shutdown)
1064+
self._has_no_members(room_id)
1065+
1066+
self._is_purged(room_id)
1067+
1068+
# Retrieve delete results
1069+
result = self.make_request(
1070+
"GET",
1071+
self.url_status_by_delete_id + delete_id,
1072+
access_token=self.admin_user_tok,
1073+
)
1074+
self.assertEqual(200, result.code, msg=result.json_body)
1075+
1076+
# Check that the user is in kicked_users
1077+
self.assertIn(
1078+
self.other_user, result.json_body["shutdown_room"]["kicked_users"]
1079+
)
1080+
1081+
new_room_id = result.json_body["shutdown_room"]["new_room_id"]
1082+
self.assertTrue(new_room_id)
1083+
1084+
# Check that the user is actually in the new room
1085+
self._is_member(new_room_id, self.other_user)
1086+
9751087
def _is_blocked(self, room_id: str, expect: bool = True) -> None:
9761088
"""Assert that the room is blocked or not"""
9771089
d = self.store.is_room_blocked(room_id)

0 commit comments

Comments
 (0)