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

Commit 3dc1871

Browse files
authored
Merge pull request #8757 from matrix-org/rav/pass_site_to_make_request
Pass a Site into `make_request`
2 parents f125895 + c3e3552 commit 3dc1871

17 files changed

Lines changed: 228 additions & 88 deletions

changelog.d/8757.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Refactor test utilities for injecting HTTP requests.

tests/app/test_frontend_proxy.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
from synapse.app.generic_worker import GenericWorkerServer
1717

18+
from tests.server import make_request, render
1819
from tests.unittest import HomeserverTestCase
1920

2021

@@ -55,10 +56,10 @@ def test_listen_http_with_presence_enabled(self):
5556
# Grab the resource from the site that was told to listen
5657
self.assertEqual(len(self.reactor.tcpServers), 1)
5758
site = self.reactor.tcpServers[0][1]
58-
self.resource = site.resource.children[b"_matrix"].children[b"client"]
59+
resource = site.resource.children[b"_matrix"].children[b"client"]
5960

60-
request, channel = self.make_request("PUT", "presence/a/status")
61-
self.render(request)
61+
request, channel = make_request(self.reactor, site, "PUT", "presence/a/status")
62+
render(request, resource, self.reactor)
6263

6364
# 400 + unrecognised, because nothing is registered
6465
self.assertEqual(channel.code, 400)
@@ -77,10 +78,10 @@ def test_listen_http_with_presence_disabled(self):
7778
# Grab the resource from the site that was told to listen
7879
self.assertEqual(len(self.reactor.tcpServers), 1)
7980
site = self.reactor.tcpServers[0][1]
80-
self.resource = site.resource.children[b"_matrix"].children[b"client"]
81+
resource = site.resource.children[b"_matrix"].children[b"client"]
8182

82-
request, channel = self.make_request("PUT", "presence/a/status")
83-
self.render(request)
83+
request, channel = make_request(self.reactor, site, "PUT", "presence/a/status")
84+
render(request, resource, self.reactor)
8485

8586
# 401, because the stub servlet still checks authentication
8687
self.assertEqual(channel.code, 401)

tests/app/test_openid_listener.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from synapse.app.homeserver import SynapseHomeServer
2121
from synapse.config.server import parse_listener_def
2222

23+
from tests.server import make_request, render
2324
from tests.unittest import HomeserverTestCase
2425

2526

@@ -66,16 +67,16 @@ def test_openid_listener(self, names, expectation):
6667
# Grab the resource from the site that was told to listen
6768
site = self.reactor.tcpServers[0][1]
6869
try:
69-
self.resource = site.resource.children[b"_matrix"].children[b"federation"]
70+
resource = site.resource.children[b"_matrix"].children[b"federation"]
7071
except KeyError:
7172
if expectation == "no_resource":
7273
return
7374
raise
7475

75-
request, channel = self.make_request(
76-
"GET", "/_matrix/federation/v1/openid/userinfo"
76+
request, channel = make_request(
77+
self.reactor, site, "GET", "/_matrix/federation/v1/openid/userinfo"
7778
)
78-
self.render(request)
79+
render(request, resource, self.reactor)
7980

8081
self.assertEqual(channel.code, 401)
8182

@@ -115,15 +116,15 @@ def test_openid_listener(self, names, expectation):
115116
# Grab the resource from the site that was told to listen
116117
site = self.reactor.tcpServers[0][1]
117118
try:
118-
self.resource = site.resource.children[b"_matrix"].children[b"federation"]
119+
resource = site.resource.children[b"_matrix"].children[b"federation"]
119120
except KeyError:
120121
if expectation == "no_resource":
121122
return
122123
raise
123124

124-
request, channel = self.make_request(
125-
"GET", "/_matrix/federation/v1/openid/userinfo"
125+
request, channel = make_request(
126+
self.reactor, site, "GET", "/_matrix/federation/v1/openid/userinfo"
126127
)
127-
self.render(request)
128+
render(request, resource, self.reactor)
128129

129130
self.assertEqual(channel.code, 401)

tests/http/test_additional_resource.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from synapse.http.additional_resource import AdditionalResource
1818
from synapse.http.server import respond_with_json
1919

20+
from tests.server import FakeSite, make_request, render
2021
from tests.unittest import HomeserverTestCase
2122

2223

@@ -43,20 +44,20 @@ class AdditionalResourceTests(HomeserverTestCase):
4344

4445
def test_async(self):
4546
handler = _AsyncTestCustomEndpoint({}, None).handle_request
46-
self.resource = AdditionalResource(self.hs, handler)
47+
resource = AdditionalResource(self.hs, handler)
4748

48-
request, channel = self.make_request("GET", "/")
49-
self.render(request)
49+
request, channel = make_request(self.reactor, FakeSite(resource), "GET", "/")
50+
render(request, resource, self.reactor)
5051

5152
self.assertEqual(request.code, 200)
5253
self.assertEqual(channel.json_body, {"some_key": "some_value_async"})
5354

5455
def test_sync(self):
5556
handler = _SyncTestCustomEndpoint({}, None).handle_request
56-
self.resource = AdditionalResource(self.hs, handler)
57+
resource = AdditionalResource(self.hs, handler)
5758

58-
request, channel = self.make_request("GET", "/")
59-
self.render(request)
59+
request, channel = make_request(self.reactor, FakeSite(resource), "GET", "/")
60+
render(request, resource, self.reactor)
6061

6162
self.assertEqual(request.code, 200)
6263
self.assertEqual(channel.json_body, {"some_key": "some_value_sync"})

tests/replication/test_client_reader_shard.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from tests.replication._base import BaseMultiWorkerStreamTestCase
2222
from tests.rest.client.v2_alpha.test_auth import DummyRecaptchaChecker
23-
from tests.server import FakeChannel
23+
from tests.server import FakeChannel, make_request
2424

2525
logger = logging.getLogger(__name__)
2626

@@ -46,8 +46,11 @@ def test_register_single_worker(self):
4646
"""Test that registration works when using a single client reader worker.
4747
"""
4848
worker_hs = self.make_worker_hs("synapse.app.client_reader")
49+
site = self._hs_to_site[worker_hs]
4950

50-
request_1, channel_1 = self.make_request(
51+
request_1, channel_1 = make_request(
52+
self.reactor,
53+
site,
5154
"POST",
5255
"register",
5356
{"username": "user", "type": "m.login.password", "password": "bar"},
@@ -59,8 +62,12 @@ def test_register_single_worker(self):
5962
session = channel_1.json_body["session"]
6063

6164
# also complete the dummy auth
62-
request_2, channel_2 = self.make_request(
63-
"POST", "register", {"auth": {"session": session, "type": "m.login.dummy"}}
65+
request_2, channel_2 = make_request(
66+
self.reactor,
67+
site,
68+
"POST",
69+
"register",
70+
{"auth": {"session": session, "type": "m.login.dummy"}},
6471
) # type: SynapseRequest, FakeChannel
6572
self.render_on_worker(worker_hs, request_2)
6673
self.assertEqual(request_2.code, 200)
@@ -74,7 +81,10 @@ def test_register_multi_worker(self):
7481
worker_hs_1 = self.make_worker_hs("synapse.app.client_reader")
7582
worker_hs_2 = self.make_worker_hs("synapse.app.client_reader")
7683

77-
request_1, channel_1 = self.make_request(
84+
site_1 = self._hs_to_site[worker_hs_1]
85+
request_1, channel_1 = make_request(
86+
self.reactor,
87+
site_1,
7888
"POST",
7989
"register",
8090
{"username": "user", "type": "m.login.password", "password": "bar"},
@@ -86,8 +96,13 @@ def test_register_multi_worker(self):
8696
session = channel_1.json_body["session"]
8797

8898
# also complete the dummy auth
89-
request_2, channel_2 = self.make_request(
90-
"POST", "register", {"auth": {"session": session, "type": "m.login.dummy"}}
99+
site_2 = self._hs_to_site[worker_hs_2]
100+
request_2, channel_2 = make_request(
101+
self.reactor,
102+
site_2,
103+
"POST",
104+
"register",
105+
{"auth": {"session": session, "type": "m.login.dummy"}},
91106
) # type: SynapseRequest, FakeChannel
92107
self.render_on_worker(worker_hs_2, request_2)
93108
self.assertEqual(request_2.code, 200)

tests/replication/test_multi_media_repo.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
from tests.http import TestServerTLSConnectionFactory, get_test_ca_cert_file
3030
from tests.replication._base import BaseMultiWorkerStreamTestCase
31-
from tests.server import FakeChannel, FakeTransport
31+
from tests.server import FakeChannel, FakeSite, FakeTransport, make_request
3232

3333
logger = logging.getLogger(__name__)
3434

@@ -67,14 +67,16 @@ def _get_media_req(
6767
The channel for the *client* request and the *outbound* request for
6868
the media which the caller should respond to.
6969
"""
70-
71-
request, channel = self.make_request(
70+
resource = hs.get_media_repository_resource().children[b"download"]
71+
request, channel = make_request(
72+
self.reactor,
73+
FakeSite(resource),
7274
"GET",
7375
"/{}/{}".format(target, media_id),
7476
shorthand=False,
7577
access_token=self.access_token,
7678
)
77-
request.render(hs.get_media_repository_resource().children[b"download"])
79+
request.render(resource)
7880
self.pump()
7981

8082
clients = self.reactor.tcpClients

tests/replication/test_sharded_event_persister.py

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from synapse.rest.client.v2_alpha import sync
2323

2424
from tests.replication._base import BaseMultiWorkerStreamTestCase
25+
from tests.server import make_request
2526
from tests.utils import USE_POSTGRES_FOR_TESTS
2627

2728
logger = logging.getLogger(__name__)
@@ -148,6 +149,7 @@ def test_vector_clock_token(self):
148149
sync_hs = self.make_worker_hs(
149150
"synapse.app.generic_worker", {"worker_name": "sync"},
150151
)
152+
sync_hs_site = self._hs_to_site[sync_hs]
151153

152154
# Specially selected room IDs that get persisted on different workers.
153155
room_id1 = "!foo:test"
@@ -178,7 +180,9 @@ def test_vector_clock_token(self):
178180
)
179181

180182
# Do an initial sync so that we're up to date.
181-
request, channel = self.make_request("GET", "/sync", access_token=access_token)
183+
request, channel = make_request(
184+
self.reactor, sync_hs_site, "GET", "/sync", access_token=access_token
185+
)
182186
self.render_on_worker(sync_hs, request)
183187
next_batch = channel.json_body["next_batch"]
184188

@@ -203,8 +207,12 @@ def test_vector_clock_token(self):
203207

204208
# Check that syncing still gets the new event, despite the gap in the
205209
# stream IDs.
206-
request, channel = self.make_request(
207-
"GET", "/sync?since={}".format(next_batch), access_token=access_token
210+
request, channel = make_request(
211+
self.reactor,
212+
sync_hs_site,
213+
"GET",
214+
"/sync?since={}".format(next_batch),
215+
access_token=access_token,
208216
)
209217
self.render_on_worker(sync_hs, request)
210218

@@ -230,7 +238,9 @@ def test_vector_clock_token(self):
230238
response = self.helper.send(room_id2, body="Hi!", tok=self.other_access_token)
231239
first_event_in_room2 = response["event_id"]
232240

233-
request, channel = self.make_request(
241+
request, channel = make_request(
242+
self.reactor,
243+
sync_hs_site,
234244
"GET",
235245
"/sync?since={}".format(vector_clock_token),
236246
access_token=access_token,
@@ -254,8 +264,12 @@ def test_vector_clock_token(self):
254264
self.helper.send(room_id1, body="Hi again!", tok=self.other_access_token)
255265
self.helper.send(room_id2, body="Hi again!", tok=self.other_access_token)
256266

257-
request, channel = self.make_request(
258-
"GET", "/sync?since={}".format(next_batch), access_token=access_token
267+
request, channel = make_request(
268+
self.reactor,
269+
sync_hs_site,
270+
"GET",
271+
"/sync?since={}".format(next_batch),
272+
access_token=access_token,
259273
)
260274
self.render_on_worker(sync_hs, request)
261275

@@ -269,7 +283,9 @@ def test_vector_clock_token(self):
269283
# Paginating back in the first room should not produce any results, as
270284
# no events have happened in it. This tests that we are correctly
271285
# filtering results based on the vector clock portion.
272-
request, channel = self.make_request(
286+
request, channel = make_request(
287+
self.reactor,
288+
sync_hs_site,
273289
"GET",
274290
"/rooms/{}/messages?from={}&to={}&dir=b".format(
275291
room_id1, prev_batch1, vector_clock_token
@@ -281,7 +297,9 @@ def test_vector_clock_token(self):
281297

282298
# Paginating back on the second room should produce the first event
283299
# again. This tests that pagination isn't completely broken.
284-
request, channel = self.make_request(
300+
request, channel = make_request(
301+
self.reactor,
302+
sync_hs_site,
285303
"GET",
286304
"/rooms/{}/messages?from={}&to={}&dir=b".format(
287305
room_id2, prev_batch2, vector_clock_token
@@ -295,7 +313,9 @@ def test_vector_clock_token(self):
295313
)
296314

297315
# Paginating forwards should give the same results
298-
request, channel = self.make_request(
316+
request, channel = make_request(
317+
self.reactor,
318+
sync_hs_site,
299319
"GET",
300320
"/rooms/{}/messages?from={}&to={}&dir=f".format(
301321
room_id1, vector_clock_token, prev_batch1
@@ -305,7 +325,9 @@ def test_vector_clock_token(self):
305325
self.render_on_worker(sync_hs, request)
306326
self.assertListEqual([], channel.json_body["chunk"])
307327

308-
request, channel = self.make_request(
328+
request, channel = make_request(
329+
self.reactor,
330+
sync_hs_site,
309331
"GET",
310332
"/rooms/{}/messages?from={}&to={}&dir=f".format(
311333
room_id2, vector_clock_token, prev_batch2,

tests/rest/admin/test_admin.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from synapse.rest.client.v2_alpha import groups
3131

3232
from tests import unittest
33+
from tests.server import FakeSite, make_request
3334

3435

3536
class VersionTestCase(unittest.HomeserverTestCase):
@@ -222,8 +223,13 @@ def write_to(r):
222223

223224
def _ensure_quarantined(self, admin_user_tok, server_and_media_id):
224225
"""Ensure a piece of media is quarantined when trying to access it."""
225-
request, channel = self.make_request(
226-
"GET", server_and_media_id, shorthand=False, access_token=admin_user_tok,
226+
request, channel = make_request(
227+
self.reactor,
228+
FakeSite(self.download_resource),
229+
"GET",
230+
server_and_media_id,
231+
shorthand=False,
232+
access_token=admin_user_tok,
227233
)
228234
request.render(self.download_resource)
229235
self.pump(1.0)
@@ -287,7 +293,9 @@ def test_quarantine_media_by_id(self):
287293
server_name, media_id = server_name_and_media_id.split("/")
288294

289295
# Attempt to access the media
290-
request, channel = self.make_request(
296+
request, channel = make_request(
297+
self.reactor,
298+
FakeSite(self.download_resource),
291299
"GET",
292300
server_name_and_media_id,
293301
shorthand=False,
@@ -462,7 +470,9 @@ def test_cannot_quarantine_safe_media(self):
462470
self._ensure_quarantined(admin_user_tok, server_and_media_id_1)
463471

464472
# Attempt to access each piece of media
465-
request, channel = self.make_request(
473+
request, channel = make_request(
474+
self.reactor,
475+
FakeSite(self.download_resource),
466476
"GET",
467477
server_and_media_id_2,
468478
shorthand=False,

0 commit comments

Comments
 (0)