From 3d89472339c9d506fa87ad21d57f502ff4b9c342 Mon Sep 17 00:00:00 2001 From: Sean Quah Date: Thu, 28 Apr 2022 16:13:18 +0100 Subject: Expose the `SynapseRequest` from `FakeChannel` for testing disconnection In order to simulate a client disconnection in tests, we would like to call `Request.connectionLost`. Make the `Request` accessible from the `FakeChannel` returned by `make_request`. Signed-off-by: Sean Quah --- tests/server.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/server.py b/tests/server.py index 16559d2588..4ae28590fe 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) -- cgit 1.4.1