@@ -102,6 +102,68 @@ def test_incoming_fed_query(self):
102102 self .assertEquals ({"room_id" : "!8765asdf:test" , "servers" : ["test" ]}, response )
103103
104104
105+ class TestCreateAlias (unittest .HomeserverTestCase ):
106+ servlets = [
107+ synapse .rest .admin .register_servlets ,
108+ login .register_servlets ,
109+ room .register_servlets ,
110+ directory .register_servlets ,
111+ ]
112+
113+ def prepare (self , reactor , clock , hs ):
114+ self .handler = hs .get_handlers ().directory_handler
115+
116+ # Create user
117+ self .admin_user = self .register_user ("admin" , "pass" , admin = True )
118+ self .admin_user_tok = self .login ("admin" , "pass" )
119+
120+ # Create a test room
121+ self .room_id = self .helper .create_room_as (
122+ self .admin_user , tok = self .admin_user_tok
123+ )
124+
125+ self .test_alias = "#test:test"
126+ self .room_alias = RoomAlias .from_string (self .test_alias )
127+
128+ # Create a test user.
129+ self .test_user = self .register_user ("user" , "pass" , admin = False )
130+ self .test_user_tok = self .login ("user" , "pass" )
131+ self .helper .join (room = self .room_id , user = self .test_user , tok = self .test_user_tok )
132+
133+ def test_create_alias_joined_room (self ):
134+ """A user can create an alias for a room they're in."""
135+ self .get_success (
136+ self .handler .create_association (
137+ create_requester (self .test_user ), self .room_alias , self .room_id ,
138+ )
139+ )
140+
141+ def test_create_alias_other_room (self ):
142+ """A user cannot create an alias for a room they're NOT in."""
143+ other_room_id = self .helper .create_room_as (
144+ self .admin_user , tok = self .admin_user_tok
145+ )
146+
147+ self .get_failure (
148+ self .handler .create_association (
149+ create_requester (self .test_user ), self .room_alias , other_room_id ,
150+ ),
151+ synapse .api .errors .SynapseError ,
152+ )
153+
154+ def test_create_alias_admin (self ):
155+ """An admin can create an alias for a room they're NOT in."""
156+ other_room_id = self .helper .create_room_as (
157+ self .test_user , tok = self .test_user_tok
158+ )
159+
160+ self .get_success (
161+ self .handler .create_association (
162+ create_requester (self .admin_user ), self .room_alias , other_room_id ,
163+ )
164+ )
165+
166+
105167class TestDeleteAlias (unittest .HomeserverTestCase ):
106168 servlets = [
107169 synapse .rest .admin .register_servlets ,
0 commit comments