mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-04 09:14:55 -04:00
Delete room endpoint (#9889)
Support the delete of a room through DELETE request and mark previous request as deprecated through documentation. Signed-off-by: Thibault Ferrante <thibault.ferrante@pm.me>
This commit is contained in:
parent
802560211a
commit
0085dc5abc
5 changed files with 128 additions and 64 deletions
|
@ -17,6 +17,8 @@ import urllib.parse
|
|||
from typing import List, Optional
|
||||
from unittest.mock import Mock
|
||||
|
||||
from parameterized import parameterized_class
|
||||
|
||||
import synapse.rest.admin
|
||||
from synapse.api.constants import EventTypes, Membership
|
||||
from synapse.api.errors import Codes
|
||||
|
@ -144,6 +146,13 @@ class ShutdownRoomTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
|
||||
|
||||
@parameterized_class(
|
||||
("method", "url_template"),
|
||||
[
|
||||
("POST", "/_synapse/admin/v1/rooms/%s/delete"),
|
||||
("DELETE", "/_synapse/admin/v1/rooms/%s"),
|
||||
],
|
||||
)
|
||||
class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
||||
servlets = [
|
||||
synapse.rest.admin.register_servlets,
|
||||
|
@ -175,7 +184,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
self.room_id = self.helper.create_room_as(
|
||||
self.other_user, tok=self.other_user_tok
|
||||
)
|
||||
self.url = "/_synapse/admin/v1/rooms/%s/delete" % self.room_id
|
||||
self.url = self.url_template % self.room_id
|
||||
|
||||
def test_requester_is_no_admin(self):
|
||||
"""
|
||||
|
@ -183,7 +192,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
"""
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url,
|
||||
json.dumps({}),
|
||||
access_token=self.other_user_tok,
|
||||
|
@ -196,10 +205,10 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
"""
|
||||
Check that unknown rooms/server return error 404.
|
||||
"""
|
||||
url = "/_synapse/admin/v1/rooms/!unknown:test/delete"
|
||||
url = self.url_template % "!unknown:test"
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
url,
|
||||
json.dumps({}),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -212,10 +221,10 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
"""
|
||||
Check that invalid room names, return an error 400.
|
||||
"""
|
||||
url = "/_synapse/admin/v1/rooms/invalidroom/delete"
|
||||
url = self.url_template % "invalidroom"
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
url,
|
||||
json.dumps({}),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -234,7 +243,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
body = json.dumps({"new_room_user_id": "@unknown:test"})
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url,
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -253,7 +262,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
body = json.dumps({"new_room_user_id": "@not:exist.bla"})
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url,
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -272,7 +281,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
body = json.dumps({"block": "NotBool"})
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url,
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -288,7 +297,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
body = json.dumps({"purge": "NotBool"})
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url,
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -314,7 +323,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
body = json.dumps({"block": True, "purge": True})
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url.encode("ascii"),
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -347,7 +356,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
body = json.dumps({"block": False, "purge": True})
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url.encode("ascii"),
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -381,7 +390,7 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
body = json.dumps({"block": False, "purge": False})
|
||||
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
self.method,
|
||||
self.url.encode("ascii"),
|
||||
content=body.encode(encoding="utf_8"),
|
||||
access_token=self.admin_user_tok,
|
||||
|
@ -426,10 +435,9 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
self._is_member(room_id=self.room_id, user_id=self.other_user)
|
||||
|
||||
# Test that the admin can still send shutdown
|
||||
url = "/_synapse/admin/v1/rooms/%s/delete" % self.room_id
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
url.encode("ascii"),
|
||||
self.method,
|
||||
self.url,
|
||||
json.dumps({"new_room_user_id": self.admin_user}),
|
||||
access_token=self.admin_user_tok,
|
||||
)
|
||||
|
@ -473,10 +481,9 @@ class DeleteRoomTestCase(unittest.HomeserverTestCase):
|
|||
self._is_member(room_id=self.room_id, user_id=self.other_user)
|
||||
|
||||
# Test that the admin can still send shutdown
|
||||
url = "/_synapse/admin/v1/rooms/%s/delete" % self.room_id
|
||||
channel = self.make_request(
|
||||
"POST",
|
||||
url.encode("ascii"),
|
||||
self.method,
|
||||
self.url,
|
||||
json.dumps({"new_room_user_id": self.admin_user}),
|
||||
access_token=self.admin_user_tok,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue