diff --git a/tests/handlers/test_profile.py b/tests/handlers/test_profile.py index f077ce12e7..0367e950d4 100644 --- a/tests/handlers/test_profile.py +++ b/tests/handlers/test_profile.py @@ -582,6 +582,80 @@ class ProfileTestCase(unittest.HomeserverTestCase): ], ) + @override_config({"include_profile_updates_in_sync": True}) + def test_display_name_change_does_not_generate_join_action_rows_for_profile_updates( + self, + ) -> None: + """Test that changing ones display name doesn't generate "joined_room" + profile updates to the stream, due to room state membership event changes, + if MSC4429 is enabled. + """ + self.register_user("roger", "password") + roger_token = self.login("roger", "password") + room_id = self.helper.create_room_as( + room_creator=self.frank.to_string(), + tok=self.frank_token, + ) + self.helper.join(room_id, "@roger:test", tok=roger_token) + per_user_updates = self.get_success( + self.store.get_profile_updates_for_user_and_fields( + from_id=0, + to_id=10, + user_id=self.frank.to_string(), + field_names={"displayname"}, + ) + ) + # Starting situation + self.assertEqual( + per_user_updates, + [ + ProfileUpdate( + stream_id=2, + user_id="@roger:test", + action="joined_room", + field_name=None, + ), + ], + ) + + # Change rogers display name + self.get_success( + self.handler.set_field( + target_user=UserID.from_string("@roger:test"), + requester=synapse.types.create_requester("@roger:test"), + field_name="displayname", + new_value="Roger new name", + ) + ) + + per_user_updates = self.get_success( + self.store.get_profile_updates_for_user_and_fields( + from_id=0, + to_id=10, + user_id=self.frank.to_string(), + field_names={"displayname"}, + ) + ) + # Only the displayname change should appear, no extra "room join" due to + # membership state event changes. + self.assertEqual( + per_user_updates, + [ + ProfileUpdate( + stream_id=2, + user_id="@roger:test", + action="joined_room", + field_name=None, + ), + ProfileUpdate( + stream_id=3, + user_id="@roger:test", + action="update", + field_name="displayname", + ), + ], + ) + @parameterized.expand( [ ["displayname", "Frank"],