Allow sending a membership event to unban a user (#10807)

* Allow membership event to unban user

Signed-off-by: Aaron Raimist <aaron@raim.ist>
This commit is contained in:
Aaron Raimist 2021-09-21 05:23:34 -05:00 committed by GitHub
parent f455b0e420
commit 6a751ff5e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 99 additions and 2 deletions

View file

@ -26,7 +26,7 @@ from twisted.internet import defer
import synapse.rest.admin
from synapse.api.constants import EventContentFields, EventTypes, Membership
from synapse.api.errors import HttpResponseException
from synapse.api.errors import Codes, HttpResponseException
from synapse.handlers.pagination import PurgeStatus
from synapse.rest import admin
from synapse.rest.client import account, directory, login, profile, room, sync
@ -377,6 +377,91 @@ class RoomPermissionsTestCase(RoomBase):
expect_code=403,
)
# tests the "from banned" line from the table in https://spec.matrix.org/unstable/client-server-api/#mroommember
def test_member_event_from_ban(self):
room = self.created_rmid
self.helper.invite(room=room, src=self.rmcreator_id, targ=self.user_id)
self.helper.join(room=room, user=self.user_id)
other = "@burgundy:red"
# User cannot ban other since they do not have required power level
self.helper.change_membership(
room=room,
src=self.user_id,
targ=other,
membership=Membership.BAN,
expect_code=403, # expect failure
expect_errcode=Codes.FORBIDDEN,
)
# Admin bans other
self.helper.change_membership(
room=room,
src=self.rmcreator_id,
targ=other,
membership=Membership.BAN,
expect_code=200,
)
# from ban to invite: Must never happen.
self.helper.change_membership(
room=room,
src=self.rmcreator_id,
targ=other,
membership=Membership.INVITE,
expect_code=403, # expect failure
expect_errcode=Codes.BAD_STATE,
)
# from ban to join: Must never happen.
self.helper.change_membership(
room=room,
src=other,
targ=other,
membership=Membership.JOIN,
expect_code=403, # expect failure
expect_errcode=Codes.BAD_STATE,
)
# from ban to ban: No change.
self.helper.change_membership(
room=room,
src=self.rmcreator_id,
targ=other,
membership=Membership.BAN,
expect_code=200,
)
# from ban to knock: Must never happen.
self.helper.change_membership(
room=room,
src=self.rmcreator_id,
targ=other,
membership=Membership.KNOCK,
expect_code=403, # expect failure
expect_errcode=Codes.BAD_STATE,
)
# User cannot unban other since they do not have required power level
self.helper.change_membership(
room=room,
src=self.user_id,
targ=other,
membership=Membership.LEAVE,
expect_code=403, # expect failure
expect_errcode=Codes.FORBIDDEN,
)
# from ban to leave: User was unbanned.
self.helper.change_membership(
room=room,
src=self.rmcreator_id,
targ=other,
membership=Membership.LEAVE,
expect_code=200,
)
class RoomsMemberListTestCase(RoomBase):
"""Tests /rooms/$room_id/members/list REST events."""