18
18
from unittest .mock import ANY , Mock , call
19
19
20
20
from twisted .internet import defer
21
+ from twisted .test .proto_helpers import MemoryReactor
21
22
from twisted .web .resource import Resource
22
23
23
24
from synapse .api .errors import AuthError
24
25
from synapse .federation .transport .server import TransportLayerServer
25
- from synapse .types import UserID , create_requester
26
+ from synapse .server import HomeServer
27
+ from synapse .types import JsonDict , UserID , create_requester
28
+ from synapse .util import Clock
26
29
27
30
from tests import unittest
28
31
from tests .test_utils import make_awaitable
42
45
OTHER_ROOM_ID = "another-room"
43
46
44
47
45
- def _expect_edu_transaction (edu_type , content , origin = "test" ):
48
+ def _expect_edu_transaction (
49
+ edu_type : str , content : JsonDict , origin : str = "test"
50
+ ) -> JsonDict :
46
51
return {
47
52
"origin" : origin ,
48
53
"origin_server_ts" : 1000000 ,
@@ -51,12 +56,12 @@ def _expect_edu_transaction(edu_type, content, origin="test"):
51
56
}
52
57
53
58
54
- def _make_edu_transaction_json (edu_type , content ) :
59
+ def _make_edu_transaction_json (edu_type : str , content : JsonDict ) -> bytes :
55
60
return json .dumps (_expect_edu_transaction (edu_type , content )).encode ("utf8" )
56
61
57
62
58
63
class TypingNotificationsTestCase (unittest .HomeserverTestCase ):
59
- def make_homeserver (self , reactor , clock ) :
64
+ def make_homeserver (self , reactor : MemoryReactor , clock : Clock ) -> HomeServer :
60
65
# we mock out the keyring so as to skip the authentication check on the
61
66
# federation API call.
62
67
mock_keyring = Mock (spec = ["verify_json_for_server" ])
@@ -83,7 +88,7 @@ def create_resource_dict(self) -> Dict[str, Resource]:
83
88
d ["/_matrix/federation" ] = TransportLayerServer (self .hs )
84
89
return d
85
90
86
- def prepare (self , reactor , clock , hs ) :
91
+ def prepare (self , reactor : MemoryReactor , clock : Clock , hs : HomeServer ) -> None :
87
92
mock_notifier = hs .get_notifier ()
88
93
self .on_new_event = mock_notifier .on_new_event
89
94
@@ -111,24 +116,24 @@ def get_received_txn_response(*args):
111
116
112
117
self .room_members = []
113
118
114
- async def check_user_in_room (room_id , user_id ) :
119
+ async def check_user_in_room (room_id : str , user_id : str ) -> None :
115
120
if user_id not in [u .to_string () for u in self .room_members ]:
116
121
raise AuthError (401 , "User is not in the room" )
117
122
return None
118
123
119
124
hs .get_auth ().check_user_in_room = check_user_in_room
120
125
121
- async def check_host_in_room (room_id , server_name ) :
126
+ async def check_host_in_room (room_id : str , server_name : str ) -> bool :
122
127
return room_id == ROOM_ID
123
128
124
129
hs .get_event_auth_handler ().check_host_in_room = check_host_in_room
125
130
126
- def get_joined_hosts_for_room (room_id ):
131
+ def get_joined_hosts_for_room (room_id : str ):
127
132
return {member .domain for member in self .room_members }
128
133
129
134
self .datastore .get_joined_hosts_for_room = get_joined_hosts_for_room
130
135
131
- async def get_users_in_room (room_id ):
136
+ async def get_users_in_room (room_id : str ):
132
137
return {str (u ) for u in self .room_members }
133
138
134
139
self .datastore .get_users_in_room = get_users_in_room
@@ -153,7 +158,7 @@ async def get_users_in_room(room_id):
153
158
lambda * args , ** kwargs : make_awaitable (None )
154
159
)
155
160
156
- def test_started_typing_local (self ):
161
+ def test_started_typing_local (self ) -> None :
157
162
self .room_members = [U_APPLE , U_BANANA ]
158
163
159
164
self .assertEqual (self .event_source .get_current_key (), 0 )
@@ -187,7 +192,7 @@ def test_started_typing_local(self):
187
192
)
188
193
189
194
@override_config ({"send_federation" : True })
190
- def test_started_typing_remote_send (self ):
195
+ def test_started_typing_remote_send (self ) -> None :
191
196
self .room_members = [U_APPLE , U_ONION ]
192
197
193
198
self .get_success (
@@ -217,7 +222,7 @@ def test_started_typing_remote_send(self):
217
222
try_trailing_slash_on_400 = True ,
218
223
)
219
224
220
- def test_started_typing_remote_recv (self ):
225
+ def test_started_typing_remote_recv (self ) -> None :
221
226
self .room_members = [U_APPLE , U_ONION ]
222
227
223
228
self .assertEqual (self .event_source .get_current_key (), 0 )
@@ -256,7 +261,7 @@ def test_started_typing_remote_recv(self):
256
261
],
257
262
)
258
263
259
- def test_started_typing_remote_recv_not_in_room (self ):
264
+ def test_started_typing_remote_recv_not_in_room (self ) -> None :
260
265
self .room_members = [U_APPLE , U_ONION ]
261
266
262
267
self .assertEqual (self .event_source .get_current_key (), 0 )
@@ -292,7 +297,7 @@ def test_started_typing_remote_recv_not_in_room(self):
292
297
self .assertEqual (events [1 ], 0 )
293
298
294
299
@override_config ({"send_federation" : True })
295
- def test_stopped_typing (self ):
300
+ def test_stopped_typing (self ) -> None :
296
301
self .room_members = [U_APPLE , U_BANANA , U_ONION ]
297
302
298
303
# Gut-wrenching
@@ -343,7 +348,7 @@ def test_stopped_typing(self):
343
348
[{"type" : "m.typing" , "room_id" : ROOM_ID , "content" : {"user_ids" : []}}],
344
349
)
345
350
346
- def test_typing_timeout (self ):
351
+ def test_typing_timeout (self ) -> None :
347
352
self .room_members = [U_APPLE , U_BANANA ]
348
353
349
354
self .assertEqual (self .event_source .get_current_key (), 0 )
0 commit comments