summary refs log tree commit diff
path: root/tests/server.py
diff options
context:
space:
mode:
authorSean Quah <8349537+squahtx@users.noreply.github.com>2022-05-10 14:06:56 +0100
committerGitHub <noreply@github.com>2022-05-10 14:06:56 +0100
commitdbb12a0b547914024316b6eb510069e900680e42 (patch)
treecd473b0e438a1500cae1ee1240bc3128871fbf40 /tests/server.py
parentAdd ability to cancel disconnected requests to `SynapseRequest` (#12588) (diff)
downloadsynapse-dbb12a0b547914024316b6eb510069e900680e42.tar.xz
Add helper class for testing request cancellation (#12630)
Also expose the `SynapseRequest` from `FakeChannel` in tests, so that
we can call `Request.connectionLost` to simulate a client disconnecting.

Signed-off-by: Sean Quah <seanq@element.io>
Diffstat (limited to 'tests/server.py')
-rw-r--r--tests/server.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/server.py b/tests/server.py
index 8f30e250c8..aaefcfc46c 100644
--- a/tests/server.py
+++ b/tests/server.py
@@ -109,6 +109,17 @@ class FakeChannel:
     _ip: str = "127.0.0.1"
     _producer: Optional[Union[IPullProducer, IPushProducer]] = None
     resource_usage: Optional[ContextResourceUsage] = None
+    _request: Optional[Request] = None
+
+    @property
+    def request(self) -> Request:
+        assert self._request is not None
+        return self._request
+
+    @request.setter
+    def request(self, request: Request) -> None:
+        assert self._request is None
+        self._request = request
 
     @property
     def json_body(self):
@@ -322,6 +333,8 @@ def make_request(
     channel = FakeChannel(site, reactor, ip=client_ip)
 
     req = request(channel, site)
+    channel.request = req
+
     req.content = BytesIO(content)
     # Twisted expects to be at the end of the content when parsing the request.
     req.content.seek(0, SEEK_END)