@@ -424,3 +424,40 @@ def test_deactivate_account_rejects_knocks(self) -> None:
424424 self ._store .get_knocked_at_rooms_for_local_user (self .user )
425425 )
426426 self .assertEqual (len (after_deactivate_knocks ), 0 )
427+
428+ def test_membership_is_redacted_upon_deactivation (self ) -> None :
429+ """
430+ Tests that room membership events are redacted if erasure is requested.
431+ """
432+ # Create a room
433+ room_id = self .helper .create_room_as (
434+ self .user ,
435+ is_public = True ,
436+ tok = self .token ,
437+ )
438+
439+ # Change the displayname
440+ membership_event , _ = self .get_success (
441+ self .handler .update_membership (
442+ requester = create_requester (self .user ),
443+ target = UserID .from_string (self .user ),
444+ room_id = room_id ,
445+ action = Membership .JOIN ,
446+ content = {"displayname" : "Hello World!" },
447+ )
448+ )
449+
450+ # Deactivate the account
451+ self ._deactivate_my_account ()
452+
453+ # Get the all membership event IDs
454+ membership_event_ids = self .get_success (
455+ self ._store .get_membership_event_ids_for_user (self .user , room_id = room_id )
456+ )
457+
458+ # Get the events incl. JSON
459+ events = self .get_success (self ._store .get_events_as_list (membership_event_ids ))
460+
461+ # Validate that there is no displayname in any of the events
462+ for event in events :
463+ self .assertTrue ("displayname" not in event .content )
0 commit comments