mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 10:06:05 -04:00
Fix inconsistencies in event validation for m.room.create
events (#13087)
* Extend the auth rule checks for `m.room.create` events ... and move them up to the top of the function. Since the no auth_events are allowed for m.room.create events, we may as well get the m.room.create event checks out of the way first. * Add a test for create events with prev_events
This commit is contained in:
parent
d3d84685ce
commit
e16ea87d0f
3 changed files with 88 additions and 25 deletions
|
@ -109,6 +109,47 @@ class EventAuthTestCase(unittest.TestCase):
|
|||
)
|
||||
)
|
||||
|
||||
def test_create_event_with_prev_events(self):
|
||||
"""A create event with prev_events should be rejected
|
||||
|
||||
https://spec.matrix.org/v1.3/rooms/v9/#authorization-rules
|
||||
1: If type is m.room.create:
|
||||
1. If it has any previous events, reject.
|
||||
"""
|
||||
creator = f"@creator:{TEST_DOMAIN}"
|
||||
|
||||
# we make both a good event and a bad event, to check that we are rejecting
|
||||
# the bad event for the reason we think we are.
|
||||
good_event = make_event_from_dict(
|
||||
{
|
||||
"room_id": TEST_ROOM_ID,
|
||||
"type": "m.room.create",
|
||||
"state_key": "",
|
||||
"sender": creator,
|
||||
"content": {
|
||||
"creator": creator,
|
||||
"room_version": RoomVersions.V9.identifier,
|
||||
},
|
||||
"auth_events": [],
|
||||
"prev_events": [],
|
||||
},
|
||||
room_version=RoomVersions.V9,
|
||||
)
|
||||
bad_event = make_event_from_dict(
|
||||
{**good_event.get_dict(), "prev_events": ["$fakeevent"]},
|
||||
room_version=RoomVersions.V9,
|
||||
)
|
||||
|
||||
event_store = _StubEventSourceStore()
|
||||
|
||||
get_awaitable_result(
|
||||
event_auth.check_state_independent_auth_rules(event_store, good_event)
|
||||
)
|
||||
with self.assertRaises(AuthError):
|
||||
get_awaitable_result(
|
||||
event_auth.check_state_independent_auth_rules(event_store, bad_event)
|
||||
)
|
||||
|
||||
def test_random_users_cannot_send_state_before_first_pl(self):
|
||||
"""
|
||||
Check that, before the first PL lands, the creator is the only user
|
||||
|
@ -564,8 +605,8 @@ class EventAuthTestCase(unittest.TestCase):
|
|||
|
||||
|
||||
# helpers for making events
|
||||
|
||||
TEST_ROOM_ID = "!test:room"
|
||||
TEST_DOMAIN = "example.com"
|
||||
TEST_ROOM_ID = f"!test_room:{TEST_DOMAIN}"
|
||||
|
||||
|
||||
def _create_event(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue