|
@@ -654,6 +654,57 @@ class ModuleApiTestCase(HomeserverTestCase):
|
|
|
|
|
|
self.assertEqual(room_id, reference_room_id)
|
|
|
|
|
|
+ def test_create_room(self) -> None:
|
|
|
+ """Test that modules can create a room."""
|
|
|
+ # First test user validation (i.e. user is local).
|
|
|
+ self.get_failure(
|
|
|
+ self.module_api.create_room(
|
|
|
+ user_id=f"@user:{self.module_api.server_name}abc",
|
|
|
+ config={},
|
|
|
+ ratelimit=False,
|
|
|
+ ),
|
|
|
+ RuntimeError,
|
|
|
+ )
|
|
|
+
|
|
|
+ # Now do the happy path.
|
|
|
+ user_id = self.register_user("user", "password")
|
|
|
+ access_token = self.login(user_id, "password")
|
|
|
+
|
|
|
+ room_id, room_alias = self.get_success(
|
|
|
+ self.module_api.create_room(
|
|
|
+ user_id=user_id, config={"room_alias_name": "foo-bar"}, ratelimit=False
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
+ # Check room creator.
|
|
|
+ channel = self.make_request(
|
|
|
+ "GET",
|
|
|
+ f"/_matrix/client/v3/rooms/{room_id}/state/m.room.create",
|
|
|
+ access_token=access_token,
|
|
|
+ )
|
|
|
+ self.assertEqual(channel.code, 200, channel.result)
|
|
|
+ self.assertEqual(channel.json_body["creator"], user_id)
|
|
|
+
|
|
|
+ # Check room alias.
|
|
|
+ self.assertEquals(room_alias, f"#foo-bar:{self.module_api.server_name}")
|
|
|
+
|
|
|
+ # Let's try a room with no alias.
|
|
|
+ room_id, room_alias = self.get_success(
|
|
|
+ self.module_api.create_room(user_id=user_id, config={}, ratelimit=False)
|
|
|
+ )
|
|
|
+
|
|
|
+ # Check room creator.
|
|
|
+ channel = self.make_request(
|
|
|
+ "GET",
|
|
|
+ f"/_matrix/client/v3/rooms/{room_id}/state/m.room.create",
|
|
|
+ access_token=access_token,
|
|
|
+ )
|
|
|
+ self.assertEqual(channel.code, 200, channel.result)
|
|
|
+ self.assertEqual(channel.json_body["creator"], user_id)
|
|
|
+
|
|
|
+ # Check room alias.
|
|
|
+ self.assertIsNone(room_alias)
|
|
|
+
|
|
|
|
|
|
class ModuleApiWorkerTestCase(BaseMultiWorkerStreamTestCase):
|
|
|
"""For testing ModuleApi functionality in a multi-worker setup"""
|