summary refs log tree commit diff
path: root/tests/rest/admin
diff options
context:
space:
mode:
authorreivilibre <oliverw@matrix.org>2022-08-17 18:08:23 +0000
committerGitHub <noreply@github.com>2022-08-17 18:08:23 +0000
commit8bdf2bd31ef003f0e89a588d8977d4f689ef6856 (patch)
treef8f7e3343dfad7d041dd282ad3e0a7712b90b2e0 /tests/rest/admin
parentA first pass at pruning the Synapse README (#13491) (diff)
downloadsynapse-8bdf2bd31ef003f0e89a588d8977d4f689ef6856.tar.xz
Fix a bug in the `/event_reports` Admin API which meant that the total count could be larger than the number of results you can actually query for. (#13525)
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
Diffstat (limited to 'tests/rest/admin')
-rw-r--r--tests/rest/admin/test_event_reports.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/rest/admin/test_event_reports.py b/tests/rest/admin/test_event_reports.py
index fbc490f46d..8a4e5c3f77 100644
--- a/tests/rest/admin/test_event_reports.py
+++ b/tests/rest/admin/test_event_reports.py
@@ -410,6 +410,33 @@ class EventReportsTestCase(unittest.HomeserverTestCase):
             self.assertIn("score", c)
             self.assertIn("reason", c)
 
+    def test_count_correct_despite_table_deletions(self) -> None:
+        """
+        Tests that the count matches the number of rows, even if rows in joined tables
+        are missing.
+        """
+
+        # Delete rows from room_stats_state for one of our rooms.
+        self.get_success(
+            self.hs.get_datastores().main.db_pool.simple_delete(
+                "room_stats_state", {"room_id": self.room_id1}, desc="_"
+            )
+        )
+
+        channel = self.make_request(
+            "GET",
+            self.url,
+            access_token=self.admin_user_tok,
+        )
+
+        self.assertEqual(200, channel.code, msg=channel.json_body)
+        # The 'total' field is 10 because only 10 reports will actually
+        # be retrievable since we deleted the rows in the room_stats_state
+        # table.
+        self.assertEqual(channel.json_body["total"], 10)
+        # This is consistent with the number of rows actually returned.
+        self.assertEqual(len(channel.json_body["event_reports"]), 10)
+
 
 class EventReportDetailTestCase(unittest.HomeserverTestCase):
     servlets = [