diff options
author | Till <2353100+S7evinK@users.noreply.github.com> | 2024-04-25 15:25:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-25 14:25:31 +0100 |
commit | 47773232b034c0d7b72bb7419a01e772509c8814 (patch) | |
tree | 42efcccf16166d94ba289ecb4edef61b0e0d8fe8 /tests/handlers | |
parent | MSC4108 implementation (#17056) (diff) | |
download | synapse-47773232b034c0d7b72bb7419a01e772509c8814.tar.xz |
Redact membership events if the user requested erasure upon deactivating (#17076)
Fixes #15355 by redacting all membership events before leaving rooms.
Diffstat (limited to 'tests/handlers')
-rw-r--r-- | tests/handlers/test_deactivate_account.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/handlers/test_deactivate_account.py b/tests/handlers/test_deactivate_account.py index b3f9e50f0f..c698771a06 100644 --- a/tests/handlers/test_deactivate_account.py +++ b/tests/handlers/test_deactivate_account.py @@ -424,3 +424,40 @@ class DeactivateAccountTestCase(HomeserverTestCase): self._store.get_knocked_at_rooms_for_local_user(self.user) ) self.assertEqual(len(after_deactivate_knocks), 0) + + def test_membership_is_redacted_upon_deactivation(self) -> None: + """ + Tests that room membership events are redacted if erasure is requested. + """ + # Create a room + room_id = self.helper.create_room_as( + self.user, + is_public=True, + tok=self.token, + ) + + # Change the displayname + membership_event, _ = self.get_success( + self.handler.update_membership( + requester=create_requester(self.user), + target=UserID.from_string(self.user), + room_id=room_id, + action=Membership.JOIN, + content={"displayname": "Hello World!"}, + ) + ) + + # Deactivate the account + self._deactivate_my_account() + + # Get the all membership event IDs + membership_event_ids = self.get_success( + self._store.get_membership_event_ids_for_user(self.user, room_id=room_id) + ) + + # Get the events incl. JSON + events = self.get_success(self._store.get_events_as_list(membership_event_ids)) + + # Validate that there is no displayname in any of the events + for event in events: + self.assertTrue("displayname" not in event.content) |