55from synapse .config import ConfigError
66from synapse .config ._base import RootConfig
77from synapse .config .api import ApiConfig
8- from synapse .types .state import StateFilter
98
109DEFAULT_PREJOIN_STATE_PAIRS = {
1110 ("m.room.join_rules" , "" ),
@@ -38,7 +37,11 @@ def test_disable_default_event_types(self) -> None:
3837 disable_default_event_types: true
3938 """
4039 )
41- self .assertEqual (config .room_prejoin_state , StateFilter .none ())
40+ # MSC4311: m.room.create is always included even when defaults are disabled
41+ self .assertEqual (
42+ set (config .room_prejoin_state .concrete_types ()),
43+ {("m.room.create" , "" )},
44+ )
4245
4346 def test_event_without_state_key (self ) -> None :
4447 config = self .read_config (
@@ -50,7 +53,11 @@ def test_event_without_state_key(self) -> None:
5053 """
5154 )
5255 self .assertEqual (config .room_prejoin_state .wildcard_types (), ["foo" ])
53- self .assertEqual (config .room_prejoin_state .concrete_types (), [])
56+ # MSC4311: m.room.create is always included
57+ self .assertEqual (
58+ set (config .room_prejoin_state .concrete_types ()),
59+ {("m.room.create" , "" )},
60+ )
5461
5562 def test_event_with_specific_state_key (self ) -> None :
5663 config = self .read_config (
@@ -62,9 +69,10 @@ def test_event_with_specific_state_key(self) -> None:
6269 """
6370 )
6471 self .assertFalse (config .room_prejoin_state .has_wildcards ())
72+ # MSC4311: m.room.create is always included
6573 self .assertEqual (
6674 set (config .room_prejoin_state .concrete_types ()),
67- {("foo" , "bar" )},
75+ {("foo" , "bar" ), ( "m.room.create" , "" ) },
6876 )
6977
7078 def test_repeated_event_with_specific_state_key (self ) -> None :
@@ -78,9 +86,10 @@ def test_repeated_event_with_specific_state_key(self) -> None:
7886 """
7987 )
8088 self .assertFalse (config .room_prejoin_state .has_wildcards ())
89+ # MSC4311: m.room.create is always included
8190 self .assertEqual (
8291 set (config .room_prejoin_state .concrete_types ()),
83- {("foo" , "bar" ), ("foo" , "baz" )},
92+ {("foo" , "bar" ), ("foo" , "baz" ), ( "m.room.create" , "" ) },
8493 )
8594
8695 def test_no_specific_state_key_overrides_specific_state_key (self ) -> None :
@@ -94,7 +103,11 @@ def test_no_specific_state_key_overrides_specific_state_key(self) -> None:
94103 """
95104 )
96105 self .assertEqual (config .room_prejoin_state .wildcard_types (), ["foo" ])
97- self .assertEqual (config .room_prejoin_state .concrete_types (), [])
106+ # MSC4311: m.room.create is always included
107+ self .assertEqual (
108+ set (config .room_prejoin_state .concrete_types ()),
109+ {("m.room.create" , "" )},
110+ )
98111
99112 config = self .read_config (
100113 """
@@ -106,7 +119,11 @@ def test_no_specific_state_key_overrides_specific_state_key(self) -> None:
106119 """
107120 )
108121 self .assertEqual (config .room_prejoin_state .wildcard_types (), ["foo" ])
109- self .assertEqual (config .room_prejoin_state .concrete_types (), [])
122+ # MSC4311: m.room.create is always included
123+ self .assertEqual (
124+ set (config .room_prejoin_state .concrete_types ()),
125+ {("m.room.create" , "" )},
126+ )
110127
111128 def test_bad_event_type_entry_raises (self ) -> None :
112129 with self .assertRaises (ConfigError ):
0 commit comments