diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2020-05-14 12:38:17 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-14 12:38:17 -0400 |
commit | fef3ff5cc42e91cc31d61094c4db2638532a53a4 (patch) | |
tree | af189cbb4e783ae9811b95ec4ad4a06f704d89c6 /tests/test_event_auth.py | |
parent | Workaround for failure to wrap reason in Failure (#7473) (diff) | |
download | synapse-fef3ff5cc42e91cc31d61094c4db2638532a53a4.tar.xz |
Enforce MSC2209: auth rules for notifications in power level event (#7502)
In a new room version, the "notifications" key of power level events are subject to restricted auth rules.
Diffstat (limited to '')
-rw-r--r-- | tests/test_event_auth.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/test_event_auth.py b/tests/test_event_auth.py index 6c2351cf55..f2def601fb 100644 --- a/tests/test_event_auth.py +++ b/tests/test_event_auth.py @@ -165,6 +165,39 @@ class EventAuthTestCase(unittest.TestCase): do_sig_check=False, ) + def test_msc2209(self): + """ + Notifications power levels get checked due to MSC2209. + """ + creator = "@creator:example.com" + pleb = "@joiner:example.com" + + auth_events = { + ("m.room.create", ""): _create_event(creator), + ("m.room.member", creator): _join_event(creator), + ("m.room.power_levels", ""): _power_levels_event( + creator, {"state_default": "30", "users": {pleb: "30"}} + ), + ("m.room.member", pleb): _join_event(pleb), + } + + # pleb should be able to modify the notifications power level. + event_auth.check( + RoomVersions.V1, + _power_levels_event(pleb, {"notifications": {"room": 100}}), + auth_events, + do_sig_check=False, + ) + + # But an MSC2209 room rejects this change. + with self.assertRaises(AuthError): + event_auth.check( + RoomVersions.MSC2209_DEV, + _power_levels_event(pleb, {"notifications": {"room": 100}}), + auth_events, + do_sig_check=False, + ) + # helpers for making events |