Add tests

pull/8292/head
Andrew Morgan 2020-09-11 12:23:22 +01:00
parent 833883ee8a
commit 8690c86c15
1 changed files with 54 additions and 12 deletions

View File

@ -12,18 +12,24 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from synapse.events.third_party_rules import PublicRoomsManager
from synapse.rest import admin from synapse.rest import admin
from synapse.rest.client.v1 import login, room from synapse.rest.client.v1 import login, room
from synapse.types import Requester
from tests import unittest from tests import unittest
class ThirdPartyRulesTestModule: class ThirdPartyRulesTestModule:
def __init__(self, config): def __init__(self, config, *args, **kwargs):
pass pass
def check_event_allowed(self, event, context): async def on_create_room(
self, requester: Requester, config: dict, is_requester_admin: bool
):
return True
async def check_event_allowed(self, event, context):
if event.type == "foo.bar.forbidden": if event.type == "foo.bar.forbidden":
return False return False
else: else:
@ -51,29 +57,65 @@ class ThirdPartyRulesTestCase(unittest.HomeserverTestCase):
self.hs = self.setup_test_homeserver(config=config) self.hs = self.setup_test_homeserver(config=config)
return self.hs return self.hs
def prepare(self, reactor, clock, homeserver):
# Create a user and room to play with during the tests
self.user_id = self.register_user("kermit", "monkey")
self.tok = self.login("kermit", "monkey")
self.room_id = self.helper.create_room_as(self.user_id, tok=self.tok)
def test_third_party_rules(self): def test_third_party_rules(self):
"""Tests that a forbidden event is forbidden from being sent, but an allowed one """Tests that a forbidden event is forbidden from being sent, but an allowed one
can be sent. can be sent.
""" """
user_id = self.register_user("kermit", "monkey")
tok = self.login("kermit", "monkey")
room_id = self.helper.create_room_as(user_id, tok=tok)
request, channel = self.make_request( request, channel = self.make_request(
"PUT", "PUT",
"/_matrix/client/r0/rooms/%s/send/foo.bar.allowed/1" % room_id, "/_matrix/client/r0/rooms/%s/send/foo.bar.allowed/1" % self.room_id,
{}, {},
access_token=tok, access_token=self.tok,
) )
self.render(request) self.render(request)
self.assertEquals(channel.result["code"], b"200", channel.result) self.assertEquals(channel.result["code"], b"200", channel.result)
request, channel = self.make_request( request, channel = self.make_request(
"PUT", "PUT",
"/_matrix/client/r0/rooms/%s/send/foo.bar.forbidden/1" % room_id, "/_matrix/client/r0/rooms/%s/send/foo.bar.forbidden/1" % self.room_id,
{}, {},
access_token=tok, access_token=self.tok,
) )
self.render(request) self.render(request)
self.assertEquals(channel.result["code"], b"403", channel.result) self.assertEquals(channel.result["code"], b"403", channel.result)
def test_public_rooms_manager(self):
"""Tests that a room can be added and removed from the public rooms list,
as well as have its public rooms directory state queried.
"""
public_rooms_manager = PublicRoomsManager(self.hs)
# The room should not currently be in the public rooms directory
is_in_public_rooms = self.get_success(
public_rooms_manager.room_is_in_public_directory(self.room_id)
)
self.assertFalse(is_in_public_rooms)
# Let's try adding it to the public rooms directory
self.get_success(
public_rooms_manager.add_room_to_public_directory(self.room_id)
)
# And checking whether it's in there...
is_in_public_rooms = self.get_success(
public_rooms_manager.room_is_in_public_directory(self.room_id)
)
self.assertTrue(is_in_public_rooms)
# Let's remove it again
self.get_success(
public_rooms_manager.remove_room_from_public_directory(self.room_id)
)
# Should be gone
is_in_public_rooms = self.get_success(
public_rooms_manager.room_is_in_public_directory(self.room_id)
)
self.assertFalse(is_in_public_rooms)