Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit cef0021

Browse files
authored
Allow for make_awaitable's return value to be re-used. (#8261)
1 parent 68cdb37 commit cef0021

12 files changed

+56
-70
lines changed

changelog.d/8261.misc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Simplify tests that mock asynchronous functions.

tests/federation/test_complexity.py

+10-20
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,9 @@ def test_join_too_large(self):
7777
fed_transport = self.hs.get_federation_transport_client()
7878

7979
# Mock out some things, because we don't want to test the whole join
80-
fed_transport.client.get_json = Mock(
81-
side_effect=lambda *args, **kwargs: make_awaitable({"v1": 9999})
82-
)
80+
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
8381
handler.federation_handler.do_invite_join = Mock(
84-
side_effect=lambda *args, **kwargs: make_awaitable(("", 1))
82+
return_value=make_awaitable(("", 1))
8583
)
8684

8785
d = handler._remote_join(
@@ -110,11 +108,9 @@ def test_join_too_large_admin(self):
110108
fed_transport = self.hs.get_federation_transport_client()
111109

112110
# Mock out some things, because we don't want to test the whole join
113-
fed_transport.client.get_json = Mock(
114-
side_effect=lambda *args, **kwargs: make_awaitable({"v1": 9999})
115-
)
111+
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
116112
handler.federation_handler.do_invite_join = Mock(
117-
side_effect=lambda *args, **kwargs: make_awaitable(("", 1))
113+
return_value=make_awaitable(("", 1))
118114
)
119115

120116
d = handler._remote_join(
@@ -150,11 +146,9 @@ def test_join_too_large_once_joined(self):
150146
fed_transport = self.hs.get_federation_transport_client()
151147

152148
# Mock out some things, because we don't want to test the whole join
153-
fed_transport.client.get_json = Mock(
154-
side_effect=lambda *args, **kwargs: make_awaitable(None)
155-
)
149+
fed_transport.client.get_json = Mock(return_value=make_awaitable(None))
156150
handler.federation_handler.do_invite_join = Mock(
157-
side_effect=lambda *args, **kwargs: make_awaitable(("", 1))
151+
return_value=make_awaitable(("", 1))
158152
)
159153

160154
# Artificially raise the complexity
@@ -208,11 +202,9 @@ def test_join_too_large_no_admin(self):
208202
fed_transport = self.hs.get_federation_transport_client()
209203

210204
# Mock out some things, because we don't want to test the whole join
211-
fed_transport.client.get_json = Mock(
212-
side_effect=lambda *args, **kwargs: make_awaitable({"v1": 9999})
213-
)
205+
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
214206
handler.federation_handler.do_invite_join = Mock(
215-
side_effect=lambda *args, **kwargs: make_awaitable(("", 1))
207+
return_value=make_awaitable(("", 1))
216208
)
217209

218210
d = handler._remote_join(
@@ -240,11 +232,9 @@ def test_join_too_large_admin(self):
240232
fed_transport = self.hs.get_federation_transport_client()
241233

242234
# Mock out some things, because we don't want to test the whole join
243-
fed_transport.client.get_json = Mock(
244-
side_effect=lambda *args, **kwargs: make_awaitable({"v1": 9999})
245-
)
235+
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
246236
handler.federation_handler.do_invite_join = Mock(
247-
side_effect=lambda *args, **kwargs: make_awaitable(("", 1))
237+
return_value=make_awaitable(("", 1))
248238
)
249239

250240
d = handler._remote_join(

tests/federation/test_federation_sender.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class FederationSenderReceiptsTestCases(HomeserverTestCase):
3434
def make_homeserver(self, reactor, clock):
3535
mock_state_handler = Mock(spec=["get_current_hosts_in_room"])
3636
# Ensure a new Awaitable is created for each call.
37-
mock_state_handler.get_current_hosts_in_room.side_effect = lambda room_Id: make_awaitable(
37+
mock_state_handler.get_current_hosts_in_room.return_value = make_awaitable(
3838
["test", "host2"]
3939
)
4040
return self.setup_test_homeserver(

tests/handlers/test_auth.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def test_mau_limits_disabled(self):
143143
def test_mau_limits_exceeded_large(self):
144144
self.auth_blocking._limit_usage_by_mau = True
145145
self.hs.get_datastore().get_monthly_active_count = Mock(
146-
side_effect=lambda: make_awaitable(self.large_number_of_users)
146+
return_value=make_awaitable(self.large_number_of_users)
147147
)
148148

149149
with self.assertRaises(ResourceLimitError):
@@ -154,7 +154,7 @@ def test_mau_limits_exceeded_large(self):
154154
)
155155

156156
self.hs.get_datastore().get_monthly_active_count = Mock(
157-
side_effect=lambda: make_awaitable(self.large_number_of_users)
157+
return_value=make_awaitable(self.large_number_of_users)
158158
)
159159
with self.assertRaises(ResourceLimitError):
160160
yield defer.ensureDeferred(
@@ -169,7 +169,7 @@ def test_mau_limits_parity(self):
169169

170170
# If not in monthly active cohort
171171
self.hs.get_datastore().get_monthly_active_count = Mock(
172-
side_effect=lambda: make_awaitable(self.auth_blocking._max_mau_value)
172+
return_value=make_awaitable(self.auth_blocking._max_mau_value)
173173
)
174174
with self.assertRaises(ResourceLimitError):
175175
yield defer.ensureDeferred(
@@ -179,7 +179,7 @@ def test_mau_limits_parity(self):
179179
)
180180

181181
self.hs.get_datastore().get_monthly_active_count = Mock(
182-
side_effect=lambda: make_awaitable(self.auth_blocking._max_mau_value)
182+
return_value=make_awaitable(self.auth_blocking._max_mau_value)
183183
)
184184
with self.assertRaises(ResourceLimitError):
185185
yield defer.ensureDeferred(
@@ -189,21 +189,21 @@ def test_mau_limits_parity(self):
189189
)
190190
# If in monthly active cohort
191191
self.hs.get_datastore().user_last_seen_monthly_active = Mock(
192-
side_effect=lambda user_id: make_awaitable(self.hs.get_clock().time_msec())
192+
return_value=make_awaitable(self.hs.get_clock().time_msec())
193193
)
194194
self.hs.get_datastore().get_monthly_active_count = Mock(
195-
side_effect=lambda: make_awaitable(self.auth_blocking._max_mau_value)
195+
return_value=make_awaitable(self.auth_blocking._max_mau_value)
196196
)
197197
yield defer.ensureDeferred(
198198
self.auth_handler.get_access_token_for_user_id(
199199
"user_a", device_id=None, valid_until_ms=None
200200
)
201201
)
202202
self.hs.get_datastore().user_last_seen_monthly_active = Mock(
203-
side_effect=lambda user_id: make_awaitable(self.hs.get_clock().time_msec())
203+
return_value=make_awaitable(self.hs.get_clock().time_msec())
204204
)
205205
self.hs.get_datastore().get_monthly_active_count = Mock(
206-
side_effect=lambda: make_awaitable(self.auth_blocking._max_mau_value)
206+
return_value=make_awaitable(self.auth_blocking._max_mau_value)
207207
)
208208
yield defer.ensureDeferred(
209209
self.auth_handler.validate_short_term_login_token_and_get_user_id(
@@ -216,7 +216,7 @@ def test_mau_limits_not_exceeded(self):
216216
self.auth_blocking._limit_usage_by_mau = True
217217

218218
self.hs.get_datastore().get_monthly_active_count = Mock(
219-
side_effect=lambda: make_awaitable(self.small_number_of_users)
219+
return_value=make_awaitable(self.small_number_of_users)
220220
)
221221
# Ensure does not raise exception
222222
yield defer.ensureDeferred(
@@ -226,7 +226,7 @@ def test_mau_limits_not_exceeded(self):
226226
)
227227

228228
self.hs.get_datastore().get_monthly_active_count = Mock(
229-
side_effect=lambda: make_awaitable(self.small_number_of_users)
229+
return_value=make_awaitable(self.small_number_of_users)
230230
)
231231
yield defer.ensureDeferred(
232232
self.auth_handler.validate_short_term_login_token_and_get_user_id(

tests/handlers/test_register.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -100,23 +100,23 @@ def test_mau_limits_when_disabled(self):
100100
def test_get_or_create_user_mau_not_blocked(self):
101101
self.hs.config.limit_usage_by_mau = True
102102
self.store.count_monthly_users = Mock(
103-
side_effect=lambda: make_awaitable(self.hs.config.max_mau_value - 1)
103+
return_value=make_awaitable(self.hs.config.max_mau_value - 1)
104104
)
105105
# Ensure does not throw exception
106106
self.get_success(self.get_or_create_user(self.requester, "c", "User"))
107107

108108
def test_get_or_create_user_mau_blocked(self):
109109
self.hs.config.limit_usage_by_mau = True
110110
self.store.get_monthly_active_count = Mock(
111-
side_effect=lambda: make_awaitable(self.lots_of_users)
111+
return_value=make_awaitable(self.lots_of_users)
112112
)
113113
self.get_failure(
114114
self.get_or_create_user(self.requester, "b", "display_name"),
115115
ResourceLimitError,
116116
)
117117

118118
self.store.get_monthly_active_count = Mock(
119-
side_effect=lambda: make_awaitable(self.hs.config.max_mau_value)
119+
return_value=make_awaitable(self.hs.config.max_mau_value)
120120
)
121121
self.get_failure(
122122
self.get_or_create_user(self.requester, "b", "display_name"),
@@ -126,14 +126,14 @@ def test_get_or_create_user_mau_blocked(self):
126126
def test_register_mau_blocked(self):
127127
self.hs.config.limit_usage_by_mau = True
128128
self.store.get_monthly_active_count = Mock(
129-
side_effect=lambda: make_awaitable(self.lots_of_users)
129+
return_value=make_awaitable(self.lots_of_users)
130130
)
131131
self.get_failure(
132132
self.handler.register_user(localpart="local_part"), ResourceLimitError
133133
)
134134

135135
self.store.get_monthly_active_count = Mock(
136-
side_effect=lambda: make_awaitable(self.hs.config.max_mau_value)
136+
return_value=make_awaitable(self.hs.config.max_mau_value)
137137
)
138138
self.get_failure(
139139
self.handler.register_user(localpart="local_part"), ResourceLimitError

tests/handlers/test_typing.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def prepare(self, reactor, clock, hs):
116116
retry_timings_res
117117
)
118118

119-
self.datastore.get_device_updates_by_remote.side_effect = lambda destination, from_stream_id, limit: make_awaitable(
119+
self.datastore.get_device_updates_by_remote.return_value = make_awaitable(
120120
(0, [])
121121
)
122122

tests/replication/test_federation_sender_shard.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def test_send_event_single_sender(self):
4545
new event.
4646
"""
4747
mock_client = Mock(spec=["put_json"])
48-
mock_client.put_json.side_effect = lambda *_, **__: make_awaitable({})
48+
mock_client.put_json.return_value = make_awaitable({})
4949

5050
self.make_worker_hs(
5151
"synapse.app.federation_sender",
@@ -73,7 +73,7 @@ def test_send_event_sharded(self):
7373
new events.
7474
"""
7575
mock_client1 = Mock(spec=["put_json"])
76-
mock_client1.put_json.side_effect = lambda *_, **__: make_awaitable({})
76+
mock_client1.put_json.return_value = make_awaitable({})
7777
self.make_worker_hs(
7878
"synapse.app.federation_sender",
7979
{
@@ -85,7 +85,7 @@ def test_send_event_sharded(self):
8585
)
8686

8787
mock_client2 = Mock(spec=["put_json"])
88-
mock_client2.put_json.side_effect = lambda *_, **__: make_awaitable({})
88+
mock_client2.put_json.return_value = make_awaitable({})
8989
self.make_worker_hs(
9090
"synapse.app.federation_sender",
9191
{
@@ -136,7 +136,7 @@ def test_send_typing_sharded(self):
136136
new typing EDUs.
137137
"""
138138
mock_client1 = Mock(spec=["put_json"])
139-
mock_client1.put_json.side_effect = lambda *_, **__: make_awaitable({})
139+
mock_client1.put_json.return_value = make_awaitable({})
140140
self.make_worker_hs(
141141
"synapse.app.federation_sender",
142142
{
@@ -148,7 +148,7 @@ def test_send_typing_sharded(self):
148148
)
149149

150150
mock_client2 = Mock(spec=["put_json"])
151-
mock_client2.put_json.side_effect = lambda *_, **__: make_awaitable({})
151+
mock_client2.put_json.return_value = make_awaitable({})
152152
self.make_worker_hs(
153153
"synapse.app.federation_sender",
154154
{

tests/rest/admin/test_user.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ def test_register_mau_limit_reached(self):
337337

338338
# Set monthly active users to the limit
339339
store.get_monthly_active_count = Mock(
340-
side_effect=lambda: make_awaitable(self.hs.config.max_mau_value)
340+
return_value=make_awaitable(self.hs.config.max_mau_value)
341341
)
342342
# Check that the blocking of monthly active users is working as expected
343343
# The registration of a new user fails due to the limit
@@ -591,7 +591,7 @@ def test_create_user_mau_limit_reached_active_admin(self):
591591

592592
# Set monthly active users to the limit
593593
self.store.get_monthly_active_count = Mock(
594-
side_effect=lambda: make_awaitable(self.hs.config.max_mau_value)
594+
return_value=make_awaitable(self.hs.config.max_mau_value)
595595
)
596596
# Check that the blocking of monthly active users is working as expected
597597
# The registration of a new user fails due to the limit
@@ -631,7 +631,7 @@ def test_create_user_mau_limit_reached_passive_admin(self):
631631

632632
# Set monthly active users to the limit
633633
self.store.get_monthly_active_count = Mock(
634-
side_effect=lambda: make_awaitable(self.hs.config.max_mau_value)
634+
return_value=make_awaitable(self.hs.config.max_mau_value)
635635
)
636636
# Check that the blocking of monthly active users is working as expected
637637
# The registration of a new user fails due to the limit

tests/server_notices/test_resource_limits_server_notices.py

+5-9
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def prepare(self, reactor, clock, hs):
6767
raise Exception("Failed to find reference to ResourceLimitsServerNotices")
6868

6969
self._rlsn._store.user_last_seen_monthly_active = Mock(
70-
side_effect=lambda user_id: make_awaitable(1000)
70+
return_value=make_awaitable(1000)
7171
)
7272
self._rlsn._server_notices_manager.send_notice = Mock(
7373
return_value=defer.succeed(Mock())
@@ -80,9 +80,7 @@ def prepare(self, reactor, clock, hs):
8080
return_value=defer.succeed("!something:localhost")
8181
)
8282
self._rlsn._store.add_tag_to_room = Mock(return_value=defer.succeed(None))
83-
self._rlsn._store.get_tags_for_room = Mock(
84-
side_effect=lambda user_id, room_id: make_awaitable({})
85-
)
83+
self._rlsn._store.get_tags_for_room = Mock(return_value=make_awaitable({}))
8684

8785
@override_config({"hs_disabled": True})
8886
def test_maybe_send_server_notice_disabled_hs(self):
@@ -158,7 +156,7 @@ def test_maybe_send_server_notice_to_user_not_in_mau_cohort(self):
158156
"""
159157
self._rlsn._auth.check_auth_blocking = Mock(return_value=defer.succeed(None))
160158
self._rlsn._store.user_last_seen_monthly_active = Mock(
161-
side_effect=lambda user_id: make_awaitable(None)
159+
return_value=make_awaitable(None)
162160
)
163161
self.get_success(self._rlsn.maybe_send_server_notice_to_user(self.user_id))
164162

@@ -261,12 +259,10 @@ def prepare(self, reactor, clock, hs):
261259
self.user_id = "@user_id:test"
262260

263261
def test_server_notice_only_sent_once(self):
264-
self.store.get_monthly_active_count = Mock(
265-
side_effect=lambda: make_awaitable(1000)
266-
)
262+
self.store.get_monthly_active_count = Mock(return_value=make_awaitable(1000))
267263

268264
self.store.user_last_seen_monthly_active = Mock(
269-
side_effect=lambda user_id: make_awaitable(1000)
265+
return_value=make_awaitable(1000)
270266
)
271267

272268
# Call the function multiple times to ensure we only send the notice once

tests/storage/test_client_ips.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def test_adding_monthly_active_user_when_full(self):
154154
user_id = "@user:server"
155155

156156
self.store.get_monthly_active_count = Mock(
157-
side_effect=lambda: make_awaitable(lots_of_users)
157+
return_value=make_awaitable(lots_of_users)
158158
)
159159
self.get_success(
160160
self.store.insert_client_ip(

tests/storage/test_monthly_active_users.py

+4-12
Original file line numberDiff line numberDiff line change
@@ -231,19 +231,15 @@ def test_populate_monthly_users_is_guest(self):
231231
)
232232
self.get_success(d)
233233

234-
self.store.upsert_monthly_active_user = Mock(
235-
side_effect=lambda user_id: make_awaitable(None)
236-
)
234+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
237235

238236
d = self.store.populate_monthly_active_users(user_id)
239237
self.get_success(d)
240238

241239
self.store.upsert_monthly_active_user.assert_not_called()
242240

243241
def test_populate_monthly_users_should_update(self):
244-
self.store.upsert_monthly_active_user = Mock(
245-
side_effect=lambda user_id: make_awaitable(None)
246-
)
242+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
247243

248244
self.store.is_trial_user = Mock(return_value=defer.succeed(False))
249245

@@ -256,9 +252,7 @@ def test_populate_monthly_users_should_update(self):
256252
self.store.upsert_monthly_active_user.assert_called_once()
257253

258254
def test_populate_monthly_users_should_not_update(self):
259-
self.store.upsert_monthly_active_user = Mock(
260-
side_effect=lambda user_id: make_awaitable(None)
261-
)
255+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
262256

263257
self.store.is_trial_user = Mock(return_value=defer.succeed(False))
264258
self.store.user_last_seen_monthly_active = Mock(
@@ -344,9 +338,7 @@ def test_track_monthly_users_without_cap(self):
344338

345339
@override_config({"limit_usage_by_mau": False, "mau_stats_only": False})
346340
def test_no_users_when_not_tracking(self):
347-
self.store.upsert_monthly_active_user = Mock(
348-
side_effect=lambda user_id: make_awaitable(None)
349-
)
341+
self.store.upsert_monthly_active_user = Mock(return_value=make_awaitable(None))
350342

351343
self.get_success(self.store.populate_monthly_active_users("@user:sever"))
352344

0 commit comments

Comments
 (0)