From f09d00020a7143e0b5c8e82caff24a070ee60540 Mon Sep 17 00:00:00 2001 From: Alexander Fechler Date: Thu, 6 Jun 2024 17:21:44 +0200 Subject: [PATCH] - postgres incompatibility fixed. - Test for filter_empty_rooms added. --- synapse/storage/databases/main/room.py | 2 +- tests/rest/admin/test_room.py | 39 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/synapse/storage/databases/main/room.py b/synapse/storage/databases/main/room.py index 17060f05a3..a3f094a968 100644 --- a/synapse/storage/databases/main/room.py +++ b/synapse/storage/databases/main/room.py @@ -653,7 +653,7 @@ class RoomWorkerStore(CacheInvalidationWorkerStore): ] if filter_public_rooms is not None: filter_arg = "1" if filter_public_rooms else "0" - filter_.append(f"rooms.is_public = {filter_arg}") + filter_.append(f"rooms.is_public = '{filter_arg}'") if filter_empty_rooms is not None: if filter_empty_rooms: diff --git a/tests/rest/admin/test_room.py b/tests/rest/admin/test_room.py index 96b455ea83..5559ccccdc 100644 --- a/tests/rest/admin/test_room.py +++ b/tests/rest/admin/test_room.py @@ -1833,6 +1833,45 @@ class RoomTestCase(unittest.HomeserverTestCase): self.assertEqual(1, response.json_body["total_rooms"]) self.assertEqual(1, len(response.json_body["rooms"])) + def test_filter_empty_rooms(self) -> None: + self.helper.create_room_as( + self.admin_user, tok=self.admin_user_tok, is_public=True + ) + self.helper.create_room_as( + self.admin_user, tok=self.admin_user_tok, is_public=True + ) + room_id = self.helper.create_room_as( + self.admin_user, tok=self.admin_user_tok, is_public=False + ) + self.helper.leave(room_id, self.admin_user, tok=self.admin_user_tok) + + response = self.make_request( + "GET", + "/_synapse/admin/v1/rooms", + access_token=self.admin_user_tok, + ) + self.assertEqual(200, response.code, msg=response.json_body) + self.assertEqual(3, response.json_body["total_rooms"]) + self.assertEqual(3, len(response.json_body["rooms"])) + + response = self.make_request( + "GET", + "/_synapse/admin/v1/rooms?filter_empty_rooms=false", + access_token=self.admin_user_tok, + ) + self.assertEqual(200, response.code, msg=response.json_body) + self.assertEqual(2, response.json_body["total_rooms"]) + self.assertEqual(2, len(response.json_body["rooms"])) + + response = self.make_request( + "GET", + "/_synapse/admin/v1/rooms?filter_empty_rooms=true", + access_token=self.admin_user_tok, + ) + self.assertEqual(200, response.code, msg=response.json_body) + self.assertEqual(1, response.json_body["total_rooms"]) + self.assertEqual(1, len(response.json_body["rooms"])) + def test_single_room(self) -> None: """Test that a single room can be requested correctly""" # Create two test rooms