Skip to content

Commit

Permalink
Stabilize set_displayname() in module API (matrix-org#14628)
Browse files Browse the repository at this point in the history
  • Loading branch information
emgrav committed Jan 10, 2023
1 parent ba4ea7d commit e61e963
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/14629.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Adds a `set_displayname()` method to the module API for setting a user's display name.
27 changes: 27 additions & 0 deletions synapse/module_api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1585,6 +1585,33 @@ async def create_room(

return room_id_and_alias["room_id"], room_id_and_alias.get("room_alias", None)

async def set_displayname(
self,
user_id: UserID,
new_displayname: str,
deactivation: bool = False,
) -> None:
"""Sets a user's display name.
Added in Synapse v1.75.0.
Args:
user_id:
The user whose display name is to be changed.
new_displayname:
The new display name to give the user.
deactivation:
Whether this change was made while deactivating the user.
"""
requester = create_requester(user_id)
await self._hs.get_profile_handler().set_displayname(
target_user=user_id,
requester=requester,
new_displayname=new_displayname,
by_admin=True,
deactivation=deactivation,
)


class PublicRoomListManager:
"""Contains methods for adding to, removing from and querying whether a room
Expand Down
18 changes: 18 additions & 0 deletions tests/module_api/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,24 @@ def test_can_set_admin(self):
self.assertEqual(found_user.user_id.to_string(), user_id)
self.assertIdentical(found_user.is_admin, True)

def test_can_set_displayname(self):
localpart = "alice_wants_a_new_displayname"
user_id = self.register_user(localpart, "1234", displayname="Alice", admin=False)
found_userinfo = self.get_success(
self.module_api.get_userinfo_by_id(user_id)
)

self.get_success(
self.module_api.set_displayname(
found_userinfo.user_id, "Bob", deactivation=False
)
)
found_profile = self.get_success(
self.module_api.get_profile_for_user(localpart)
)

self.assertEqual(found_profile.display_name, "Bob")

def test_get_userinfo_by_id(self):
user_id = self.register_user("alice", "1234")
found_user = self.get_success(self.module_api.get_userinfo_by_id(user_id))
Expand Down

0 comments on commit e61e963

Please sign in to comment.