mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 07:15:32 -04:00
Add type hints to tests/rest/client
(#12084)
This commit is contained in:
parent
6c0b44a3d7
commit
1901cb1d4a
12 changed files with 198 additions and 138 deletions
|
@ -13,12 +13,16 @@
|
|||
# limitations under the License.
|
||||
|
||||
"""Tests REST events for /profile paths."""
|
||||
from typing import Any, Dict
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from twisted.test.proto_helpers import MemoryReactor
|
||||
|
||||
from synapse.api.errors import Codes
|
||||
from synapse.rest import admin
|
||||
from synapse.rest.client import login, profile, room
|
||||
from synapse.server import HomeServer
|
||||
from synapse.types import UserID
|
||||
from synapse.util import Clock
|
||||
|
||||
from tests import unittest
|
||||
|
||||
|
@ -32,20 +36,20 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
room.register_servlets,
|
||||
]
|
||||
|
||||
def make_homeserver(self, reactor, clock):
|
||||
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
|
||||
self.hs = self.setup_test_homeserver()
|
||||
return self.hs
|
||||
|
||||
def prepare(self, reactor, clock, hs):
|
||||
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
|
||||
self.owner = self.register_user("owner", "pass")
|
||||
self.owner_tok = self.login("owner", "pass")
|
||||
self.other = self.register_user("other", "pass", displayname="Bob")
|
||||
|
||||
def test_get_displayname(self):
|
||||
def test_get_displayname(self) -> None:
|
||||
res = self._get_displayname()
|
||||
self.assertEqual(res, "owner")
|
||||
|
||||
def test_set_displayname(self):
|
||||
def test_set_displayname(self) -> None:
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
"/profile/%s/displayname" % (self.owner,),
|
||||
|
@ -57,7 +61,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
res = self._get_displayname()
|
||||
self.assertEqual(res, "test")
|
||||
|
||||
def test_set_displayname_noauth(self):
|
||||
def test_set_displayname_noauth(self) -> None:
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
"/profile/%s/displayname" % (self.owner,),
|
||||
|
@ -65,7 +69,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
self.assertEqual(channel.code, 401, channel.result)
|
||||
|
||||
def test_set_displayname_too_long(self):
|
||||
def test_set_displayname_too_long(self) -> None:
|
||||
"""Attempts to set a stupid displayname should get a 400"""
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
|
@ -78,11 +82,11 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
res = self._get_displayname()
|
||||
self.assertEqual(res, "owner")
|
||||
|
||||
def test_get_displayname_other(self):
|
||||
def test_get_displayname_other(self) -> None:
|
||||
res = self._get_displayname(self.other)
|
||||
self.assertEqual(res, "Bob")
|
||||
|
||||
def test_set_displayname_other(self):
|
||||
def test_set_displayname_other(self) -> None:
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
"/profile/%s/displayname" % (self.other,),
|
||||
|
@ -91,11 +95,11 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
self.assertEqual(channel.code, 400, channel.result)
|
||||
|
||||
def test_get_avatar_url(self):
|
||||
def test_get_avatar_url(self) -> None:
|
||||
res = self._get_avatar_url()
|
||||
self.assertIsNone(res)
|
||||
|
||||
def test_set_avatar_url(self):
|
||||
def test_set_avatar_url(self) -> None:
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
"/profile/%s/avatar_url" % (self.owner,),
|
||||
|
@ -107,7 +111,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
res = self._get_avatar_url()
|
||||
self.assertEqual(res, "http://my.server/pic.gif")
|
||||
|
||||
def test_set_avatar_url_noauth(self):
|
||||
def test_set_avatar_url_noauth(self) -> None:
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
"/profile/%s/avatar_url" % (self.owner,),
|
||||
|
@ -115,7 +119,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
self.assertEqual(channel.code, 401, channel.result)
|
||||
|
||||
def test_set_avatar_url_too_long(self):
|
||||
def test_set_avatar_url_too_long(self) -> None:
|
||||
"""Attempts to set a stupid avatar_url should get a 400"""
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
|
@ -128,11 +132,11 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
res = self._get_avatar_url()
|
||||
self.assertIsNone(res)
|
||||
|
||||
def test_get_avatar_url_other(self):
|
||||
def test_get_avatar_url_other(self) -> None:
|
||||
res = self._get_avatar_url(self.other)
|
||||
self.assertIsNone(res)
|
||||
|
||||
def test_set_avatar_url_other(self):
|
||||
def test_set_avatar_url_other(self) -> None:
|
||||
channel = self.make_request(
|
||||
"PUT",
|
||||
"/profile/%s/avatar_url" % (self.other,),
|
||||
|
@ -141,14 +145,14 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
self.assertEqual(channel.code, 400, channel.result)
|
||||
|
||||
def _get_displayname(self, name=None):
|
||||
def _get_displayname(self, name: Optional[str] = None) -> str:
|
||||
channel = self.make_request(
|
||||
"GET", "/profile/%s/displayname" % (name or self.owner,)
|
||||
)
|
||||
self.assertEqual(channel.code, 200, channel.result)
|
||||
return channel.json_body["displayname"]
|
||||
|
||||
def _get_avatar_url(self, name=None):
|
||||
def _get_avatar_url(self, name: Optional[str] = None) -> str:
|
||||
channel = self.make_request(
|
||||
"GET", "/profile/%s/avatar_url" % (name or self.owner,)
|
||||
)
|
||||
|
@ -156,7 +160,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
return channel.json_body.get("avatar_url")
|
||||
|
||||
@unittest.override_config({"max_avatar_size": 50})
|
||||
def test_avatar_size_limit_global(self):
|
||||
def test_avatar_size_limit_global(self) -> None:
|
||||
"""Tests that the maximum size limit for avatars is enforced when updating a
|
||||
global profile.
|
||||
"""
|
||||
|
@ -187,7 +191,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
self.assertEqual(channel.code, 200, channel.result)
|
||||
|
||||
@unittest.override_config({"max_avatar_size": 50})
|
||||
def test_avatar_size_limit_per_room(self):
|
||||
def test_avatar_size_limit_per_room(self) -> None:
|
||||
"""Tests that the maximum size limit for avatars is enforced when updating a
|
||||
per-room profile.
|
||||
"""
|
||||
|
@ -220,7 +224,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
self.assertEqual(channel.code, 200, channel.result)
|
||||
|
||||
@unittest.override_config({"allowed_avatar_mimetypes": ["image/png"]})
|
||||
def test_avatar_allowed_mime_type_global(self):
|
||||
def test_avatar_allowed_mime_type_global(self) -> None:
|
||||
"""Tests that the MIME type whitelist for avatars is enforced when updating a
|
||||
global profile.
|
||||
"""
|
||||
|
@ -251,7 +255,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
self.assertEqual(channel.code, 200, channel.result)
|
||||
|
||||
@unittest.override_config({"allowed_avatar_mimetypes": ["image/png"]})
|
||||
def test_avatar_allowed_mime_type_per_room(self):
|
||||
def test_avatar_allowed_mime_type_per_room(self) -> None:
|
||||
"""Tests that the MIME type whitelist for avatars is enforced when updating a
|
||||
per-room profile.
|
||||
"""
|
||||
|
@ -283,7 +287,7 @@ class ProfileTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
self.assertEqual(channel.code, 200, channel.result)
|
||||
|
||||
def _setup_local_files(self, names_and_props: Dict[str, Dict[str, Any]]):
|
||||
def _setup_local_files(self, names_and_props: Dict[str, Dict[str, Any]]) -> None:
|
||||
"""Stores metadata about files in the database.
|
||||
|
||||
Args:
|
||||
|
@ -316,8 +320,7 @@ class ProfilesRestrictedTestCase(unittest.HomeserverTestCase):
|
|||
room.register_servlets,
|
||||
]
|
||||
|
||||
def make_homeserver(self, reactor, clock):
|
||||
|
||||
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
|
||||
config = self.default_config()
|
||||
config["require_auth_for_profile_requests"] = True
|
||||
config["limit_profile_requests_to_users_who_share_rooms"] = True
|
||||
|
@ -325,7 +328,7 @@ class ProfilesRestrictedTestCase(unittest.HomeserverTestCase):
|
|||
|
||||
return self.hs
|
||||
|
||||
def prepare(self, reactor, clock, hs):
|
||||
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
|
||||
# User owning the requested profile.
|
||||
self.owner = self.register_user("owner", "pass")
|
||||
self.owner_tok = self.login("owner", "pass")
|
||||
|
@ -337,22 +340,24 @@ class ProfilesRestrictedTestCase(unittest.HomeserverTestCase):
|
|||
|
||||
self.room_id = self.helper.create_room_as(self.owner, tok=self.owner_tok)
|
||||
|
||||
def test_no_auth(self):
|
||||
def test_no_auth(self) -> None:
|
||||
self.try_fetch_profile(401)
|
||||
|
||||
def test_not_in_shared_room(self):
|
||||
def test_not_in_shared_room(self) -> None:
|
||||
self.ensure_requester_left_room()
|
||||
|
||||
self.try_fetch_profile(403, access_token=self.requester_tok)
|
||||
|
||||
def test_in_shared_room(self):
|
||||
def test_in_shared_room(self) -> None:
|
||||
self.ensure_requester_left_room()
|
||||
|
||||
self.helper.join(room=self.room_id, user=self.requester, tok=self.requester_tok)
|
||||
|
||||
self.try_fetch_profile(200, self.requester_tok)
|
||||
|
||||
def try_fetch_profile(self, expected_code, access_token=None):
|
||||
def try_fetch_profile(
|
||||
self, expected_code: int, access_token: Optional[str] = None
|
||||
) -> None:
|
||||
self.request_profile(expected_code, access_token=access_token)
|
||||
|
||||
self.request_profile(
|
||||
|
@ -363,13 +368,18 @@ class ProfilesRestrictedTestCase(unittest.HomeserverTestCase):
|
|||
expected_code, url_suffix="/avatar_url", access_token=access_token
|
||||
)
|
||||
|
||||
def request_profile(self, expected_code, url_suffix="", access_token=None):
|
||||
def request_profile(
|
||||
self,
|
||||
expected_code: int,
|
||||
url_suffix: str = "",
|
||||
access_token: Optional[str] = None,
|
||||
) -> None:
|
||||
channel = self.make_request(
|
||||
"GET", self.profile_url + url_suffix, access_token=access_token
|
||||
)
|
||||
self.assertEqual(channel.code, expected_code, channel.result)
|
||||
|
||||
def ensure_requester_left_room(self):
|
||||
def ensure_requester_left_room(self) -> None:
|
||||
try:
|
||||
self.helper.leave(
|
||||
room=self.room_id, user=self.requester, tok=self.requester_tok
|
||||
|
@ -389,7 +399,7 @@ class OwnProfileUnrestrictedTestCase(unittest.HomeserverTestCase):
|
|||
profile.register_servlets,
|
||||
]
|
||||
|
||||
def make_homeserver(self, reactor, clock):
|
||||
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
|
||||
config = self.default_config()
|
||||
config["require_auth_for_profile_requests"] = True
|
||||
config["limit_profile_requests_to_users_who_share_rooms"] = True
|
||||
|
@ -397,12 +407,12 @@ class OwnProfileUnrestrictedTestCase(unittest.HomeserverTestCase):
|
|||
|
||||
return self.hs
|
||||
|
||||
def prepare(self, reactor, clock, hs):
|
||||
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
|
||||
# User requesting the profile.
|
||||
self.requester = self.register_user("requester", "pass")
|
||||
self.requester_tok = self.login("requester", "pass")
|
||||
|
||||
def test_can_lookup_own_profile(self):
|
||||
def test_can_lookup_own_profile(self) -> None:
|
||||
"""Tests that a user can lookup their own profile without having to be in a room
|
||||
if 'require_auth_for_profile_requests' is set to true in the server's config.
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue