mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-20 00:52:02 +01:00
Merge pull request #265 from matrix-org/erikj/check_room_exists
Check room exists when authenticating an event
This commit is contained in:
commit
91cb3b630d
2 changed files with 37 additions and 8 deletions
|
@ -65,6 +65,14 @@ class Auth(object):
|
||||||
# FIXME
|
# FIXME
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
creation_event = auth_events.get((EventTypes.Create, ""), None)
|
||||||
|
|
||||||
|
if not creation_event:
|
||||||
|
raise SynapseError(
|
||||||
|
403,
|
||||||
|
"Room %r does not exist" % (event.room_id,)
|
||||||
|
)
|
||||||
|
|
||||||
# FIXME: Temp hack
|
# FIXME: Temp hack
|
||||||
if event.type == EventTypes.Aliases:
|
if event.type == EventTypes.Aliases:
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -204,8 +204,8 @@ class StateTestCase(unittest.TestCase):
|
||||||
nodes={
|
nodes={
|
||||||
"START": DictObj(
|
"START": DictObj(
|
||||||
type=EventTypes.Create,
|
type=EventTypes.Create,
|
||||||
state_key="creator",
|
state_key="",
|
||||||
content={"membership": "@user_id:example.com"},
|
content={"creator": "@user_id:example.com"},
|
||||||
depth=1,
|
depth=1,
|
||||||
),
|
),
|
||||||
"A": DictObj(
|
"A": DictObj(
|
||||||
|
@ -259,8 +259,8 @@ class StateTestCase(unittest.TestCase):
|
||||||
nodes={
|
nodes={
|
||||||
"START": DictObj(
|
"START": DictObj(
|
||||||
type=EventTypes.Create,
|
type=EventTypes.Create,
|
||||||
state_key="creator",
|
state_key="",
|
||||||
content={"membership": "@user_id:example.com"},
|
content={"creator": "@user_id:example.com"},
|
||||||
depth=1,
|
depth=1,
|
||||||
),
|
),
|
||||||
"A": DictObj(
|
"A": DictObj(
|
||||||
|
@ -432,13 +432,19 @@ class StateTestCase(unittest.TestCase):
|
||||||
def test_resolve_message_conflict(self):
|
def test_resolve_message_conflict(self):
|
||||||
event = create_event(type="test_message", name="event")
|
event = create_event(type="test_message", name="event")
|
||||||
|
|
||||||
|
creation = create_event(
|
||||||
|
type=EventTypes.Create, state_key=""
|
||||||
|
)
|
||||||
|
|
||||||
old_state_1 = [
|
old_state_1 = [
|
||||||
|
creation,
|
||||||
create_event(type="test1", state_key="1"),
|
create_event(type="test1", state_key="1"),
|
||||||
create_event(type="test1", state_key="2"),
|
create_event(type="test1", state_key="2"),
|
||||||
create_event(type="test2", state_key=""),
|
create_event(type="test2", state_key=""),
|
||||||
]
|
]
|
||||||
|
|
||||||
old_state_2 = [
|
old_state_2 = [
|
||||||
|
creation,
|
||||||
create_event(type="test1", state_key="1"),
|
create_event(type="test1", state_key="1"),
|
||||||
create_event(type="test3", state_key="2"),
|
create_event(type="test3", state_key="2"),
|
||||||
create_event(type="test4", state_key=""),
|
create_event(type="test4", state_key=""),
|
||||||
|
@ -446,7 +452,7 @@ class StateTestCase(unittest.TestCase):
|
||||||
|
|
||||||
context = yield self._get_context(event, old_state_1, old_state_2)
|
context = yield self._get_context(event, old_state_1, old_state_2)
|
||||||
|
|
||||||
self.assertEqual(len(context.current_state), 5)
|
self.assertEqual(len(context.current_state), 6)
|
||||||
|
|
||||||
self.assertIsNone(context.state_group)
|
self.assertIsNone(context.state_group)
|
||||||
|
|
||||||
|
@ -454,13 +460,19 @@ class StateTestCase(unittest.TestCase):
|
||||||
def test_resolve_state_conflict(self):
|
def test_resolve_state_conflict(self):
|
||||||
event = create_event(type="test4", state_key="", name="event")
|
event = create_event(type="test4", state_key="", name="event")
|
||||||
|
|
||||||
|
creation = create_event(
|
||||||
|
type=EventTypes.Create, state_key=""
|
||||||
|
)
|
||||||
|
|
||||||
old_state_1 = [
|
old_state_1 = [
|
||||||
|
creation,
|
||||||
create_event(type="test1", state_key="1"),
|
create_event(type="test1", state_key="1"),
|
||||||
create_event(type="test1", state_key="2"),
|
create_event(type="test1", state_key="2"),
|
||||||
create_event(type="test2", state_key=""),
|
create_event(type="test2", state_key=""),
|
||||||
]
|
]
|
||||||
|
|
||||||
old_state_2 = [
|
old_state_2 = [
|
||||||
|
creation,
|
||||||
create_event(type="test1", state_key="1"),
|
create_event(type="test1", state_key="1"),
|
||||||
create_event(type="test3", state_key="2"),
|
create_event(type="test3", state_key="2"),
|
||||||
create_event(type="test4", state_key=""),
|
create_event(type="test4", state_key=""),
|
||||||
|
@ -468,7 +480,7 @@ class StateTestCase(unittest.TestCase):
|
||||||
|
|
||||||
context = yield self._get_context(event, old_state_1, old_state_2)
|
context = yield self._get_context(event, old_state_1, old_state_2)
|
||||||
|
|
||||||
self.assertEqual(len(context.current_state), 5)
|
self.assertEqual(len(context.current_state), 6)
|
||||||
|
|
||||||
self.assertIsNone(context.state_group)
|
self.assertIsNone(context.state_group)
|
||||||
|
|
||||||
|
@ -484,36 +496,45 @@ class StateTestCase(unittest.TestCase):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
creation = create_event(
|
||||||
|
type=EventTypes.Create, state_key="",
|
||||||
|
content={"creator": "@foo:bar"}
|
||||||
|
)
|
||||||
|
|
||||||
old_state_1 = [
|
old_state_1 = [
|
||||||
|
creation,
|
||||||
member_event,
|
member_event,
|
||||||
create_event(type="test1", state_key="1", depth=1),
|
create_event(type="test1", state_key="1", depth=1),
|
||||||
]
|
]
|
||||||
|
|
||||||
old_state_2 = [
|
old_state_2 = [
|
||||||
|
creation,
|
||||||
member_event,
|
member_event,
|
||||||
create_event(type="test1", state_key="1", depth=2),
|
create_event(type="test1", state_key="1", depth=2),
|
||||||
]
|
]
|
||||||
|
|
||||||
context = yield self._get_context(event, old_state_1, old_state_2)
|
context = yield self._get_context(event, old_state_1, old_state_2)
|
||||||
|
|
||||||
self.assertEqual(old_state_2[1], context.current_state[("test1", "1")])
|
self.assertEqual(old_state_2[2], context.current_state[("test1", "1")])
|
||||||
|
|
||||||
# Reverse the depth to make sure we are actually using the depths
|
# Reverse the depth to make sure we are actually using the depths
|
||||||
# during state resolution.
|
# during state resolution.
|
||||||
|
|
||||||
old_state_1 = [
|
old_state_1 = [
|
||||||
|
creation,
|
||||||
member_event,
|
member_event,
|
||||||
create_event(type="test1", state_key="1", depth=2),
|
create_event(type="test1", state_key="1", depth=2),
|
||||||
]
|
]
|
||||||
|
|
||||||
old_state_2 = [
|
old_state_2 = [
|
||||||
|
creation,
|
||||||
member_event,
|
member_event,
|
||||||
create_event(type="test1", state_key="1", depth=1),
|
create_event(type="test1", state_key="1", depth=1),
|
||||||
]
|
]
|
||||||
|
|
||||||
context = yield self._get_context(event, old_state_1, old_state_2)
|
context = yield self._get_context(event, old_state_1, old_state_2)
|
||||||
|
|
||||||
self.assertEqual(old_state_1[1], context.current_state[("test1", "1")])
|
self.assertEqual(old_state_1[2], context.current_state[("test1", "1")])
|
||||||
|
|
||||||
def _get_context(self, event, old_state_1, old_state_2):
|
def _get_context(self, event, old_state_1, old_state_2):
|
||||||
group_name_1 = "group_name_1"
|
group_name_1 = "group_name_1"
|
||||||
|
|
Loading…
Reference in a new issue