Fix 404 on /profile when the display name is empty but not the avatar (#16012)

pull/11508/head
Mathieu Velten 2023-07-27 15:45:05 +02:00 committed by GitHub
parent a461f1f846
commit a719b703d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 1 deletions

1
changelog.d/16012.bugfix Normal file
View File

@ -0,0 +1 @@
Fix 404 not found code returned on profile endpoint when the display name is empty but not the avatar URL.

View File

@ -68,7 +68,7 @@ class ProfileHandler:
if self.hs.is_mine(target_user): if self.hs.is_mine(target_user):
profileinfo = await self.store.get_profileinfo(target_user) profileinfo = await self.store.get_profileinfo(target_user)
if profileinfo.display_name is None: if profileinfo.display_name is None and profileinfo.avatar_url is None:
raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND)
return { return {

View File

@ -179,6 +179,16 @@ class ProfileTestCase(unittest.HomeserverTestCase):
self.assertEqual("http://my.server/me.png", avatar_url) self.assertEqual("http://my.server/me.png", avatar_url)
def test_get_profile_empty_displayname(self) -> None:
self.get_success(self.store.set_profile_displayname(self.frank, None))
self.get_success(
self.store.set_profile_avatar_url(self.frank, "http://my.server/me.png")
)
profile = self.get_success(self.handler.get_profile(self.frank.to_string()))
self.assertEqual("http://my.server/me.png", profile["avatar_url"])
def test_set_my_avatar(self) -> None: def test_set_my_avatar(self) -> None:
self.get_success( self.get_success(
self.handler.set_avatar_url( self.handler.set_avatar_url(