remove the stubbing out of `request.process`, so that `requestReceived` also renders the request via the appropriate resource. Replace render() with a stub for now.tags/v1.24.0rc1
@@ -68,15 +68,15 @@ class MediaRepoShardTestCase(BaseMultiWorkerStreamTestCase): | |||
the media which the caller should respond to. | |||
""" | |||
resource = hs.get_media_repository_resource().children[b"download"] | |||
request, channel = make_request( | |||
_, channel = make_request( | |||
self.reactor, | |||
FakeSite(resource), | |||
"GET", | |||
"/{}/{}".format(target, media_id), | |||
shorthand=False, | |||
access_token=self.access_token, | |||
await_result=False, | |||
) | |||
request.render(resource) | |||
self.pump() | |||
clients = self.reactor.tcpClients | |||
@@ -231,8 +231,6 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase): | |||
shorthand=False, | |||
access_token=admin_user_tok, | |||
) | |||
request.render(self.download_resource) | |||
self.pump(1.0) | |||
# Should be quarantined | |||
self.assertEqual( | |||
@@ -301,8 +299,6 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase): | |||
shorthand=False, | |||
access_token=non_admin_user_tok, | |||
) | |||
request.render(self.download_resource) | |||
self.pump(1.0) | |||
# Should be successful | |||
self.assertEqual(200, int(channel.code), msg=channel.result["body"]) | |||
@@ -478,8 +474,6 @@ class QuarantineMediaTestCase(unittest.HomeserverTestCase): | |||
shorthand=False, | |||
access_token=non_admin_user_tok, | |||
) | |||
request.render(self.download_resource) | |||
self.pump(1.0) | |||
# Shouldn't be quarantined | |||
self.assertEqual( | |||
@@ -133,8 +133,6 @@ class DeleteMediaByIDTestCase(unittest.HomeserverTestCase): | |||
shorthand=False, | |||
access_token=self.admin_user_tok, | |||
) | |||
request.render(download_resource) | |||
self.pump(1.0) | |||
# Should be successful | |||
self.assertEqual( | |||
@@ -172,8 +170,6 @@ class DeleteMediaByIDTestCase(unittest.HomeserverTestCase): | |||
shorthand=False, | |||
access_token=self.admin_user_tok, | |||
) | |||
request.render(download_resource) | |||
self.pump(1.0) | |||
self.assertEqual( | |||
404, | |||
channel.code, | |||
@@ -548,8 +544,6 @@ class DeleteMediaByDateSizeTestCase(unittest.HomeserverTestCase): | |||
shorthand=False, | |||
access_token=self.admin_user_tok, | |||
) | |||
request.render(download_resource) | |||
self.pump(1.0) | |||
if expect_success: | |||
self.assertEqual( | |||
@@ -310,7 +310,7 @@ class RestHelper: | |||
""" | |||
image_length = len(image_data) | |||
path = "/_matrix/media/r0/upload?filename=%s" % (filename,) | |||
request, channel = make_request( | |||
_, channel = make_request( | |||
self.hs.get_reactor(), | |||
FakeSite(resource), | |||
"POST", | |||
@@ -319,8 +319,6 @@ class RestHelper: | |||
access_token=tok, | |||
custom_headers=[(b"Content-Length", str(image_length))], | |||
) | |||
request.render(resource) | |||
self.hs.get_reactor().pump([100]) | |||
assert channel.code == expect_code, "Expected: %d, got: %d, resp: %r" % ( | |||
expect_code, | |||
@@ -263,8 +263,6 @@ class PasswordResetTestCase(unittest.HomeserverTestCase): | |||
path, | |||
shorthand=False, | |||
) | |||
request.render(self.submit_token_resource) | |||
self.pump() | |||
self.assertEquals(200, channel.code, channel.result) | |||
@@ -288,8 +286,6 @@ class PasswordResetTestCase(unittest.HomeserverTestCase): | |||
shorthand=False, | |||
content_is_form=True, | |||
) | |||
request.render(self.submit_token_resource) | |||
self.pump() | |||
self.assertEquals(200, channel.code, channel.result) | |||
def _get_link_from_email(self): | |||
@@ -234,8 +234,8 @@ class MediaRepoTests(unittest.HomeserverTestCase): | |||
"GET", | |||
self.media_id, | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.download_resource) | |||
self.pump() | |||
# We've made one fetch, to example.com, using the media URL, and asking | |||
@@ -330,8 +330,8 @@ class MediaRepoTests(unittest.HomeserverTestCase): | |||
"GET", | |||
self.media_id + params, | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.thumbnail_resource) | |||
self.pump() | |||
headers = { | |||
@@ -359,7 +359,6 @@ class MediaRepoTests(unittest.HomeserverTestCase): | |||
channel.json_body, | |||
{ | |||
"errcode": "M_NOT_FOUND", | |||
"error": "Not found [b'example.com', b'12345?width=32&height=32&method=%s']" | |||
% method, | |||
"error": "Not found [b'example.com', b'12345']", | |||
}, | |||
) |
@@ -140,9 +140,11 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
self.lookups["matrix.org"] = [(IPv4Address, "10.1.2.3")] | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://matrix.org", shorthand=False, | |||
"GET", | |||
"preview_url?url=http://matrix.org", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -165,8 +167,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://matrix.org", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
# Check the cache response has the same content | |||
self.assertEqual(channel.code, 200) | |||
@@ -183,8 +183,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://matrix.org", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
# Check the cache response has the same content | |||
self.assertEqual(channel.code, 200) | |||
@@ -204,9 +202,11 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
) | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://matrix.org", shorthand=False, | |||
"GET", | |||
"preview_url?url=http://matrix.org", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -237,9 +237,11 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
) | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://matrix.org", shorthand=False | |||
"GET", | |||
"preview_url?url=http://matrix.org", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -270,9 +272,11 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
) | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://matrix.org", shorthand=False | |||
"GET", | |||
"preview_url?url=http://matrix.org", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -301,9 +305,11 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
self.lookups["example.com"] = [(IPv4Address, "10.1.2.3")] | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
"GET", | |||
"preview_url?url=http://example.com", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -331,8 +337,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
# No requests made. | |||
self.assertEqual(len(self.reactor.tcpClients), 0) | |||
@@ -354,8 +358,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
self.assertEqual(channel.code, 502) | |||
self.assertEqual( | |||
@@ -373,8 +375,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://192.168.1.1", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
# No requests made. | |||
self.assertEqual(len(self.reactor.tcpClients), 0) | |||
@@ -394,8 +394,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://1.1.1.2", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
self.assertEqual(channel.code, 403) | |||
self.assertEqual( | |||
@@ -414,9 +412,11 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
self.lookups["example.com"] = [(IPv4Address, "1.1.1.1")] | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
"GET", | |||
"preview_url?url=http://example.com", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -451,8 +451,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
self.assertEqual(channel.code, 502) | |||
self.assertEqual( | |||
channel.json_body, | |||
@@ -473,8 +471,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
# No requests made. | |||
self.assertEqual(len(self.reactor.tcpClients), 0) | |||
@@ -496,8 +492,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
self.assertEqual(channel.code, 502) | |||
self.assertEqual( | |||
@@ -515,8 +509,6 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
request, channel = self.make_request( | |||
"OPTIONS", "preview_url?url=http://example.com", shorthand=False | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
self.assertEqual(channel.code, 200) | |||
self.assertEqual(channel.json_body, {}) | |||
@@ -528,9 +520,11 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
# Build and make a request to the server | |||
request, channel = self.make_request( | |||
"GET", "preview_url?url=http://example.com", shorthand=False | |||
"GET", | |||
"preview_url?url=http://example.com", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
# Extract Synapse's tcp client | |||
@@ -603,8 +597,8 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
"GET", | |||
"preview_url?url=http://twitter.com/matrixdotorg/status/12345", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -668,8 +662,8 @@ class URLPreviewTests(unittest.HomeserverTestCase): | |||
"GET", | |||
"preview_url?url=http://twitter.com/matrixdotorg/status/12345", | |||
shorthand=False, | |||
await_result=False, | |||
) | |||
request.render(self.preview_url) | |||
self.pump() | |||
client = self.reactor.tcpClients[0][2].buildProtocol(None) | |||
@@ -171,16 +171,18 @@ def make_request( | |||
shorthand=True, | |||
federation_auth_origin=None, | |||
content_is_form=False, | |||
await_result: bool = True, | |||
custom_headers: Optional[ | |||
Iterable[Tuple[Union[bytes, str], Union[bytes, str]]] | |||
] = None, | |||
): | |||
""" | |||
Make a web request using the given method and path, feed it the | |||
content, and return the Request and the Channel underneath. | |||
Make a web request using the given method, path and content, and render it | |||
Returns the Request and the Channel underneath. | |||
Args: | |||
site: The twisted Site to associate with the Channel | |||
site: The twisted Site to use to render the request | |||
method (bytes/unicode): The HTTP request method ("verb"). | |||
path (bytes/unicode): The HTTP path, suitably URL encoded (e.g. | |||
@@ -196,6 +198,10 @@ def make_request( | |||
custom_headers: (name, value) pairs to add as request headers | |||
await_result: whether to wait for the request to complete rendering. If true, | |||
will pump the reactor until the the renderer tells the channel the request | |||
is finished. | |||
Returns: | |||
Tuple[synapse.http.site.SynapseRequest, channel] | |||
""" | |||
@@ -225,11 +231,9 @@ def make_request( | |||
channel = FakeChannel(site, reactor) | |||
req = request(channel) | |||
req.process = lambda: b"" | |||
req.content = BytesIO(content) | |||
# Twisted expects to be at the end of the content when parsing the request. | |||
req.content.seek(SEEK_END) | |||
req.postpath = list(map(unquote, path[1:].split(b"/"))) | |||
if access_token: | |||
req.requestHeaders.addRawHeader( | |||
@@ -257,12 +261,14 @@ def make_request( | |||
req.requestReceived(method, path, b"1.1") | |||
if await_result: | |||
channel.await_result() | |||
return req, channel | |||
def render(request, resource, clock): | |||
request.render(resource) | |||
request._channel.await_result() | |||
pass | |||
@implementer(IReactorPluggableNameResolver) | |||
@@ -377,6 +377,7 @@ class HomeserverTestCase(TestCase): | |||
shorthand: bool = True, | |||
federation_auth_origin: str = None, | |||
content_is_form: bool = False, | |||
await_result: bool = True, | |||
) -> Tuple[SynapseRequest, FakeChannel]: | |||
... | |||
@@ -391,6 +392,7 @@ class HomeserverTestCase(TestCase): | |||
shorthand: bool = True, | |||
federation_auth_origin: str = None, | |||
content_is_form: bool = False, | |||
await_result: bool = True, | |||
) -> Tuple[T, FakeChannel]: | |||
... | |||
@@ -404,6 +406,7 @@ class HomeserverTestCase(TestCase): | |||
shorthand: bool = True, | |||
federation_auth_origin: str = None, | |||
content_is_form: bool = False, | |||
await_result: bool = True, | |||
) -> Tuple[T, FakeChannel]: | |||
""" | |||
Create a SynapseRequest at the path using the method and containing the | |||
@@ -422,6 +425,10 @@ class HomeserverTestCase(TestCase): | |||
content_is_form: Whether the content is URL encoded form data. Adds the | |||
'Content-Type': 'application/x-www-form-urlencoded' header. | |||
await_result: whether to wait for the request to complete rendering. If | |||
true (the default), will pump the test reactor until the the renderer | |||
tells the channel the request is finished. | |||
Returns: | |||
Tuple[synapse.http.site.SynapseRequest, channel] | |||
""" | |||
@@ -436,6 +443,7 @@ class HomeserverTestCase(TestCase): | |||
shorthand, | |||
federation_auth_origin, | |||
content_is_form, | |||
await_result, | |||
) | |||
def render(self, request): | |||