From ca73e0c8f59322d1052eaa7ff8bb7a42536dc384 Mon Sep 17 00:00:00 2001 From: David Robertson Date: Mon, 30 Jan 2023 19:19:59 +0000 Subject: [PATCH] Also test that bad values are rejected by event auth --- tests/test_event_auth.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/test_event_auth.py b/tests/test_event_auth.py index f4d9fba0a14c..61ab21857ef7 100644 --- a/tests/test_event_auth.py +++ b/tests/test_event_auth.py @@ -13,7 +13,7 @@ # limitations under the License. import unittest -from typing import Collection, Dict, Iterable, List, Optional +from typing import Any, Collection, Dict, Iterable, List, Optional from parameterized import parameterized @@ -728,6 +728,32 @@ def test_room_v10_rejects_string_power_levels(self) -> None: pl_event.room_version, pl_event2, {("fake_type", "fake_key"): pl_event} ) + def test_room_v10_rejects_other_non_integer_power_levels(self) -> None: + def create_event(pl_event_content: Dict[str, Any]) -> EventBase: + return make_event_from_dict( + { + "room_id": TEST_ROOM_ID, + **_maybe_get_event_id_dict_for_room_version(RoomVersions.V10), + "type": "m.room.power_levels", + "sender": "@test:test.com", + "state_key": "", + "content": pl_event_content, + "signatures": {"test.com": {"ed25519:0": "some9signature"}}, + }, + room_version=RoomVersions.V10, + ) + + contents: Iterable[Dict[str, Any]] = [ + {"notifications": {"room": None}}, + {"users": {"@alice:wonderland": []}}, + {"users_default": {}}, + ] + for content in contents: + event = create_event(content) + with self.assertRaises(SynapseError) as e: + event_auth._check_power_levels(event.room_version, event, {}) + print(e.exception) + # helpers for making events TEST_DOMAIN = "example.com"