14
14
from typing import Any , Iterable , Optional , Tuple
15
15
from unittest import mock
16
16
17
+ from synapse .api .constants import EventContentFields , RoomTypes
17
18
from synapse .api .errors import AuthError
18
19
from synapse .handlers .space_summary import _child_events_comparison_key
19
20
from synapse .rest import admin
@@ -97,9 +98,21 @@ def prepare(self, reactor, clock, hs: HomeServer):
97
98
self .hs = hs
98
99
self .handler = self .hs .get_space_summary_handler ()
99
100
101
+ # Create a user.
100
102
self .user = self .register_user ("user" , "pass" )
101
103
self .token = self .login ("user" , "pass" )
102
104
105
+ # Create a space and a child room.
106
+ self .space = self .helper .create_room_as (
107
+ self .user ,
108
+ tok = self .token ,
109
+ extra_content = {
110
+ "creation_content" : {EventContentFields .ROOM_TYPE : RoomTypes .SPACE }
111
+ },
112
+ )
113
+ self .room = self .helper .create_room_as (self .user , tok = self .token )
114
+ self ._add_child (self .space , self .room , self .token )
115
+
103
116
def _add_child (self , space_id : str , room_id : str , token : str ) -> None :
104
117
"""Add a child room to a space."""
105
118
self .helper .send_state (
@@ -128,43 +141,32 @@ def _assert_events(
128
141
129
142
def test_simple_space (self ):
130
143
"""Test a simple space with a single room."""
131
- space = self .helper .create_room_as (self .user , tok = self .token )
132
- room = self .helper .create_room_as (self .user , tok = self .token )
133
- self ._add_child (space , room , self .token )
134
-
135
- result = self .get_success (self .handler .get_space_summary (self .user , space ))
144
+ result = self .get_success (self .handler .get_space_summary (self .user , self .space ))
136
145
# The result should have the space and the room in it, along with a link
137
146
# from space -> room.
138
- self ._assert_rooms (result , [space , room ])
139
- self ._assert_events (result , [(space , room )])
147
+ self ._assert_rooms (result , [self . space , self . room ])
148
+ self ._assert_events (result , [(self . space , self . room )])
140
149
141
150
def test_visibility (self ):
142
151
"""A user not in a space cannot inspect it."""
143
- space = self .helper .create_room_as (self .user , tok = self .token )
144
- room = self .helper .create_room_as (self .user , tok = self .token )
145
- self ._add_child (space , room , self .token )
146
-
147
152
user2 = self .register_user ("user2" , "pass" )
148
153
token2 = self .login ("user2" , "pass" )
149
154
150
155
# The user cannot see the space.
151
- self .get_failure (self .handler .get_space_summary (user2 , space ), AuthError )
156
+ self .get_failure (self .handler .get_space_summary (user2 , self . space ), AuthError )
152
157
153
158
# Joining the room causes it to be visible.
154
- self .helper .join (space , user2 , tok = token2 )
155
- result = self .get_success (self .handler .get_space_summary (user2 , space ))
159
+ self .helper .join (self . space , user2 , tok = token2 )
160
+ result = self .get_success (self .handler .get_space_summary (user2 , self . space ))
156
161
157
162
# The result should only have the space, but includes the link to the room.
158
- self ._assert_rooms (result , [space ])
159
- self ._assert_events (result , [(space , room )])
163
+ self ._assert_rooms (result , [self . space ])
164
+ self ._assert_events (result , [(self . space , self . room )])
160
165
161
166
def test_world_readable (self ):
162
167
"""A world-readable room is visible to everyone."""
163
- space = self .helper .create_room_as (self .user , tok = self .token )
164
- room = self .helper .create_room_as (self .user , tok = self .token )
165
- self ._add_child (space , room , self .token )
166
168
self .helper .send_state (
167
- space ,
169
+ self . space ,
168
170
event_type = "m.room.history_visibility" ,
169
171
body = {"history_visibility" : "world_readable" },
170
172
tok = self .token ,
@@ -173,6 +175,6 @@ def test_world_readable(self):
173
175
user2 = self .register_user ("user2" , "pass" )
174
176
175
177
# The space should be visible, as well as the link to the room.
176
- result = self .get_success (self .handler .get_space_summary (user2 , space ))
177
- self ._assert_rooms (result , [space ])
178
- self ._assert_events (result , [(space , room )])
178
+ result = self .get_success (self .handler .get_space_summary (user2 , self . space ))
179
+ self ._assert_rooms (result , [self . space ])
180
+ self ._assert_events (result , [(self . space , self . room )])
0 commit comments