Add tests

This commit is contained in:
Erik Johnston 2019-03-21 10:51:21 +00:00
parent 3ecec5ede2
commit 5c6f61f81c

View File

@ -20,7 +20,7 @@ import json
from mock import Mock from mock import Mock
from synapse.api.constants import UserTypes from synapse.api.constants import UserTypes
from synapse.rest.client.v1 import admin, login from synapse.rest.client.v1 import admin, login, room
from tests import unittest from tests import unittest
@ -353,3 +353,68 @@ class UserRegisterTestCase(unittest.HomeserverTestCase):
self.assertEqual(400, int(channel.result["code"]), msg=channel.result["body"]) self.assertEqual(400, int(channel.result["code"]), msg=channel.result["body"])
self.assertEqual('Invalid user type', channel.json_body["error"]) self.assertEqual('Invalid user type', channel.json_body["error"])
class ShutdownRoomTestCase(unittest.HomeserverTestCase):
servlets = [
admin.register_servlets,
login.register_servlets,
room.register_servlets,
]
def prepare(self, reactor, clock, hs):
self.event_creation_handler = hs.get_event_creation_handler()
hs.config.user_consent_version = "1"
self._consent_uri_builder = Mock()
self._consent_uri_builder.build_user_consent_uri.return_value = (
"http://example.com"
)
self.store = hs.get_datastore()
@unittest.DEBUG
def test_shutdown_room_conset(self):
admin_user = self.register_user("admin", "pass", admin=True)
admin_user_tok = self.login("admin", "pass")
other_user = self.register_user("user", "pass")
other_user_token = self.login("user", "pass")
room_id = self.helper.create_room_as(other_user, tok=other_user_token)
# Assert one user in room
users_in_room = self.get_success(
self.store.get_users_in_room(room_id),
)
self.assertEqual([other_user], users_in_room)
# Enable require consent to send events
self.event_creation_handler._block_events_without_consent_error = "Error"
self.event_creation_handler._consent_uri_builder = self._consent_uri_builder
# Assert that the user is getting consent error
self.helper.send(room_id, body="foo", tok=other_user_token, expect_code=403)
# Mark the admin user as having consented
self.get_success(
self.store.user_set_consent_version(admin_user, "1"),
)
# Test that the admin can still send shutdown
url = "admin/shutdown_room/" + room_id
request, channel = self.make_request(
"POST",
url.encode('ascii'),
json.dumps({"new_room_user_id": admin_user}),
access_token=admin_user_tok,
)
self.render(request)
self.assertEqual(200, int(channel.result["code"]), msg=channel.result["body"])
# Assert there is now no longer anyone in the room
users_in_room = self.get_success(
self.store.get_users_in_room(room_id),
)
self.assertEqual([], users_in_room)