diff options
author | reivilibre <oliverw@matrix.org> | 2022-09-07 11:03:32 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 12:03:32 +0100 |
commit | d3d9ca156e323fe194b1bcb1af1628f65a2f3c1c (patch) | |
tree | 74e19b799192c8be69179e27ceadda7a8beac18c /tests/rest | |
parent | Rename the `EventFormatVersions` enum values so that they line up with room v... (diff) | |
download | synapse-d3d9ca156e323fe194b1bcb1af1628f65a2f3c1c.tar.xz |
Cancel the processing of key query requests when they time out. (#13680)
Diffstat (limited to 'tests/rest')
-rw-r--r-- | tests/rest/client/test_keys.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/rest/client/test_keys.py b/tests/rest/client/test_keys.py index bbc8e74243..741fecea77 100644 --- a/tests/rest/client/test_keys.py +++ b/tests/rest/client/test_keys.py @@ -19,6 +19,7 @@ from synapse.rest import admin from synapse.rest.client import keys, login from tests import unittest +from tests.http.server._base import make_request_with_cancellation_test class KeyQueryTestCase(unittest.HomeserverTestCase): @@ -89,3 +90,31 @@ class KeyQueryTestCase(unittest.HomeserverTestCase): Codes.BAD_JSON, channel.result, ) + + def test_key_query_cancellation(self) -> None: + """ + Tests that /keys/query is cancellable and does not swallow the + CancelledError. + """ + self.register_user("alice", "wonderland") + alice_token = self.login("alice", "wonderland") + + bob = self.register_user("bob", "uncle") + + channel = make_request_with_cancellation_test( + "test_key_query_cancellation", + self.reactor, + self.site, + "POST", + "/_matrix/client/r0/keys/query", + { + "device_keys": { + # Empty list means we request keys for all bob's devices + bob: [], + }, + }, + token=alice_token, + ) + + self.assertEqual(200, channel.code, msg=channel.result["body"]) + self.assertIn(bob, channel.json_body["device_keys"]) |