16
16
17
17
from synapse .api .auth import Auth
18
18
from synapse .api .constants import UserTypes
19
- from synapse .api .errors import Codes , ResourceLimitError , SynapseError
19
+ from synapse .api .errors import (
20
+ CodeMessageException ,
21
+ Codes ,
22
+ ResourceLimitError ,
23
+ SynapseError ,
24
+ )
20
25
from synapse .events .spamcheck import load_legacy_spam_checkers
21
26
from synapse .spam_checker_api import RegistrationBehaviour
22
27
from synapse .types import RoomAlias , RoomID , UserID , create_requester
@@ -120,14 +125,24 @@ def make_homeserver(self, reactor, clock):
120
125
hs_config = self .default_config ()
121
126
122
127
# some of the tests rely on us having a user consent version
123
- hs_config ["user_consent" ] = {
124
- "version" : "test_consent_version" ,
125
- "template_dir" : "." ,
126
- }
128
+ hs_config .setdefault ("user_consent" , {}).update (
129
+ {
130
+ "version" : "test_consent_version" ,
131
+ "template_dir" : "." ,
132
+ }
133
+ )
127
134
hs_config ["max_mau_value" ] = 50
128
135
hs_config ["limit_usage_by_mau" ] = True
129
136
130
- hs = self .setup_test_homeserver (config = hs_config )
137
+ # Don't attempt to reach out over federation.
138
+ self .mock_federation_client = Mock ()
139
+ self .mock_federation_client .make_query .side_effect = CodeMessageException (
140
+ 500 , ""
141
+ )
142
+
143
+ hs = self .setup_test_homeserver (
144
+ config = hs_config , federation_client = self .mock_federation_client
145
+ )
131
146
132
147
load_legacy_spam_checkers (hs )
133
148
@@ -138,9 +153,6 @@ def make_homeserver(self, reactor, clock):
138
153
return hs
139
154
140
155
def prepare (self , reactor , clock , hs ):
141
- self .mock_distributor = Mock ()
142
- self .mock_distributor .declare ("registered_user" )
143
- self .mock_captcha_client = Mock ()
144
156
self .handler = self .hs .get_registration_handler ()
145
157
self .store = self .hs .get_datastore ()
146
158
self .lots_of_users = 100
@@ -174,21 +186,21 @@ def test_if_user_exists(self):
174
186
self .assertEquals (result_user_id , user_id )
175
187
self .assertTrue (result_token is not None )
176
188
189
+ @override_config ({"limit_usage_by_mau" : False })
177
190
def test_mau_limits_when_disabled (self ):
178
- self .hs .config .server .limit_usage_by_mau = False
179
191
# Ensure does not throw exception
180
192
self .get_success (self .get_or_create_user (self .requester , "a" , "display_name" ))
181
193
194
+ @override_config ({"limit_usage_by_mau" : True })
182
195
def test_get_or_create_user_mau_not_blocked (self ):
183
- self .hs .config .server .limit_usage_by_mau = True
184
196
self .store .count_monthly_users = Mock (
185
197
return_value = make_awaitable (self .hs .config .server .max_mau_value - 1 )
186
198
)
187
199
# Ensure does not throw exception
188
200
self .get_success (self .get_or_create_user (self .requester , "c" , "User" ))
189
201
202
+ @override_config ({"limit_usage_by_mau" : True })
190
203
def test_get_or_create_user_mau_blocked (self ):
191
- self .hs .config .server .limit_usage_by_mau = True
192
204
self .store .get_monthly_active_count = Mock (
193
205
return_value = make_awaitable (self .lots_of_users )
194
206
)
@@ -205,8 +217,8 @@ def test_get_or_create_user_mau_blocked(self):
205
217
ResourceLimitError ,
206
218
)
207
219
220
+ @override_config ({"limit_usage_by_mau" : True })
208
221
def test_register_mau_blocked (self ):
209
- self .hs .config .server .limit_usage_by_mau = True
210
222
self .store .get_monthly_active_count = Mock (
211
223
return_value = make_awaitable (self .lots_of_users )
212
224
)
@@ -221,10 +233,10 @@ def test_register_mau_blocked(self):
221
233
self .handler .register_user (localpart = "local_part" ), ResourceLimitError
222
234
)
223
235
236
+ @override_config (
237
+ {"auto_join_rooms" : ["#room:test" ], "auto_join_rooms_for_guests" : False }
238
+ )
224
239
def test_auto_join_rooms_for_guests (self ):
225
- room_alias_str = "#room:test"
226
- self .hs .config .auto_join_rooms = [room_alias_str ]
227
- self .hs .config .auto_join_rooms_for_guests = False
228
240
user_id = self .get_success (
229
241
self .handler .register_user (localpart = "jeff" , make_guest = True ),
230
242
)
@@ -243,34 +255,33 @@ def test_auto_create_auto_join_rooms(self):
243
255
self .assertTrue (room_id ["room_id" ] in rooms )
244
256
self .assertEqual (len (rooms ), 1 )
245
257
258
+ @override_config ({"auto_join_rooms" : []})
246
259
def test_auto_create_auto_join_rooms_with_no_rooms (self ):
247
- self .hs .config .auto_join_rooms = []
248
260
frank = UserID .from_string ("@frank:test" )
249
261
user_id = self .get_success (self .handler .register_user (frank .localpart ))
250
262
self .assertEqual (user_id , frank .to_string ())
251
263
rooms = self .get_success (self .store .get_rooms_for_user (user_id ))
252
264
self .assertEqual (len (rooms ), 0 )
253
265
266
+ @override_config ({"auto_join_rooms" : ["#room:another" ]})
254
267
def test_auto_create_auto_join_where_room_is_another_domain (self ):
255
- self .hs .config .auto_join_rooms = ["#room:another" ]
256
268
frank = UserID .from_string ("@frank:test" )
257
269
user_id = self .get_success (self .handler .register_user (frank .localpart ))
258
270
self .assertEqual (user_id , frank .to_string ())
259
271
rooms = self .get_success (self .store .get_rooms_for_user (user_id ))
260
272
self .assertEqual (len (rooms ), 0 )
261
273
274
+ @override_config (
275
+ {"auto_join_rooms" : ["#room:test" ], "autocreate_auto_join_rooms" : False }
276
+ )
262
277
def test_auto_create_auto_join_where_auto_create_is_false (self ):
263
- self .hs .config .autocreate_auto_join_rooms = False
264
- room_alias_str = "#room:test"
265
- self .hs .config .auto_join_rooms = [room_alias_str ]
266
278
user_id = self .get_success (self .handler .register_user (localpart = "jeff" ))
267
279
rooms = self .get_success (self .store .get_rooms_for_user (user_id ))
268
280
self .assertEqual (len (rooms ), 0 )
269
281
282
+ @override_config ({"auto_join_rooms" : ["#room:test" ]})
270
283
def test_auto_create_auto_join_rooms_when_user_is_not_a_real_user (self ):
271
284
room_alias_str = "#room:test"
272
- self .hs .config .auto_join_rooms = [room_alias_str ]
273
-
274
285
self .store .is_real_user = Mock (return_value = make_awaitable (False ))
275
286
user_id = self .get_success (self .handler .register_user (localpart = "support" ))
276
287
rooms = self .get_success (self .store .get_rooms_for_user (user_id ))
@@ -294,10 +305,8 @@ def test_auto_create_auto_join_rooms_when_user_is_the_first_real_user(self):
294
305
self .assertTrue (room_id ["room_id" ] in rooms )
295
306
self .assertEqual (len (rooms ), 1 )
296
307
308
+ @override_config ({"auto_join_rooms" : ["#room:test" ]})
297
309
def test_auto_create_auto_join_rooms_when_user_is_not_the_first_real_user (self ):
298
- room_alias_str = "#room:test"
299
- self .hs .config .auto_join_rooms = [room_alias_str ]
300
-
301
310
self .store .count_real_users = Mock (return_value = make_awaitable (2 ))
302
311
self .store .is_real_user = Mock (return_value = make_awaitable (True ))
303
312
user_id = self .get_success (self .handler .register_user (localpart = "real" ))
@@ -510,6 +519,17 @@ def test_auto_create_auto_join_room_preset_invalid_permissions(self):
510
519
self .assertEqual (rooms , set ())
511
520
self .assertEqual (invited_rooms , [])
512
521
522
+ @override_config (
523
+ {
524
+ "user_consent" : {
525
+ "block_events_error" : "Error" ,
526
+ "require_at_registration" : True ,
527
+ },
528
+ "form_secret" : "53cr3t" ,
529
+ "public_baseurl" : "http://test" ,
530
+ "auto_join_rooms" : ["#room:test" ],
531
+ },
532
+ )
513
533
def test_auto_create_auto_join_where_no_consent (self ):
514
534
"""Test to ensure that the first user is not auto-joined to a room if
515
535
they have not given general consent.
@@ -521,25 +541,20 @@ def test_auto_create_auto_join_where_no_consent(self):
521
541
# * The server is configured to auto-join to a room
522
542
# (and autocreate if necessary)
523
543
524
- event_creation_handler = self .hs .get_event_creation_handler ()
525
- # (Messing with the internals of event_creation_handler is fragile
526
- # but can't see a better way to do this. One option could be to subclass
527
- # the test with custom config.)
528
- event_creation_handler ._block_events_without_consent_error = "Error"
529
- event_creation_handler ._consent_uri_builder = Mock ()
530
- room_alias_str = "#room:test"
531
- self .hs .config .auto_join_rooms = [room_alias_str ]
532
-
533
544
# When:-
534
- # * the user is registered and post consent actions are called
545
+ # * the user is registered
535
546
user_id = self .get_success (self .handler .register_user (localpart = "jeff" ))
536
- self .get_success (self .handler .post_consent_actions (user_id ))
537
547
538
548
# Then:-
539
549
# * Ensure that they have not been joined to the room
540
550
rooms = self .get_success (self .store .get_rooms_for_user (user_id ))
541
551
self .assertEqual (len (rooms ), 0 )
542
552
553
+ # The user provides consent; ensure they are now in the rooms.
554
+ self .get_success (self .handler .post_consent_actions (user_id ))
555
+ rooms = self .get_success (self .store .get_rooms_for_user (user_id ))
556
+ self .assertEqual (len (rooms ), 1 )
557
+
543
558
def test_register_support_user (self ):
544
559
user_id = self .get_success (
545
560
self .handler .register_user (localpart = "user" , user_type = UserTypes .SUPPORT )
0 commit comments