forked from MirrorHub/synapse
109 lines
4.2 KiB
Python
109 lines
4.2 KiB
Python
|
import synapse
|
||
|
from synapse.api.constants import EventTypes, RoomEncryptionAlgorithms
|
||
|
from synapse.rest.client import login, room
|
||
|
|
||
|
from tests import unittest
|
||
|
from tests.unittest import override_config
|
||
|
|
||
|
|
||
|
class EncryptedByDefaultTestCase(unittest.HomeserverTestCase):
|
||
|
servlets = [
|
||
|
login.register_servlets,
|
||
|
synapse.rest.admin.register_servlets_for_client_rest_resource,
|
||
|
room.register_servlets,
|
||
|
]
|
||
|
|
||
|
@override_config({"encryption_enabled_by_default_for_room_type": "all"})
|
||
|
def test_encrypted_by_default_config_option_all(self):
|
||
|
"""Tests that invite-only and non-invite-only rooms have encryption enabled by
|
||
|
default when the config option encryption_enabled_by_default_for_room_type is "all".
|
||
|
"""
|
||
|
# Create a user
|
||
|
user = self.register_user("user", "pass")
|
||
|
user_token = self.login(user, "pass")
|
||
|
|
||
|
# Create an invite-only room as that user
|
||
|
room_id = self.helper.create_room_as(user, is_public=False, tok=user_token)
|
||
|
|
||
|
# Check that the room has an encryption state event
|
||
|
event_content = self.helper.get_state(
|
||
|
room_id=room_id,
|
||
|
event_type=EventTypes.RoomEncryption,
|
||
|
tok=user_token,
|
||
|
)
|
||
|
self.assertEqual(event_content, {"algorithm": RoomEncryptionAlgorithms.DEFAULT})
|
||
|
|
||
|
# Create a non invite-only room as that user
|
||
|
room_id = self.helper.create_room_as(user, is_public=True, tok=user_token)
|
||
|
|
||
|
# Check that the room has an encryption state event
|
||
|
event_content = self.helper.get_state(
|
||
|
room_id=room_id,
|
||
|
event_type=EventTypes.RoomEncryption,
|
||
|
tok=user_token,
|
||
|
)
|
||
|
self.assertEqual(event_content, {"algorithm": RoomEncryptionAlgorithms.DEFAULT})
|
||
|
|
||
|
@override_config({"encryption_enabled_by_default_for_room_type": "invite"})
|
||
|
def test_encrypted_by_default_config_option_invite(self):
|
||
|
"""Tests that only new, invite-only rooms have encryption enabled by default when
|
||
|
the config option encryption_enabled_by_default_for_room_type is "invite".
|
||
|
"""
|
||
|
# Create a user
|
||
|
user = self.register_user("user", "pass")
|
||
|
user_token = self.login(user, "pass")
|
||
|
|
||
|
# Create an invite-only room as that user
|
||
|
room_id = self.helper.create_room_as(user, is_public=False, tok=user_token)
|
||
|
|
||
|
# Check that the room has an encryption state event
|
||
|
event_content = self.helper.get_state(
|
||
|
room_id=room_id,
|
||
|
event_type=EventTypes.RoomEncryption,
|
||
|
tok=user_token,
|
||
|
)
|
||
|
self.assertEqual(event_content, {"algorithm": RoomEncryptionAlgorithms.DEFAULT})
|
||
|
|
||
|
# Create a non invite-only room as that user
|
||
|
room_id = self.helper.create_room_as(user, is_public=True, tok=user_token)
|
||
|
|
||
|
# Check that the room does not have an encryption state event
|
||
|
self.helper.get_state(
|
||
|
room_id=room_id,
|
||
|
event_type=EventTypes.RoomEncryption,
|
||
|
tok=user_token,
|
||
|
expect_code=404,
|
||
|
)
|
||
|
|
||
|
@override_config({"encryption_enabled_by_default_for_room_type": "off"})
|
||
|
def test_encrypted_by_default_config_option_off(self):
|
||
|
"""Tests that neither new invite-only nor non-invite-only rooms have encryption
|
||
|
enabled by default when the config option
|
||
|
encryption_enabled_by_default_for_room_type is "off".
|
||
|
"""
|
||
|
# Create a user
|
||
|
user = self.register_user("user", "pass")
|
||
|
user_token = self.login(user, "pass")
|
||
|
|
||
|
# Create an invite-only room as that user
|
||
|
room_id = self.helper.create_room_as(user, is_public=False, tok=user_token)
|
||
|
|
||
|
# Check that the room does not have an encryption state event
|
||
|
self.helper.get_state(
|
||
|
room_id=room_id,
|
||
|
event_type=EventTypes.RoomEncryption,
|
||
|
tok=user_token,
|
||
|
expect_code=404,
|
||
|
)
|
||
|
|
||
|
# Create a non invite-only room as that user
|
||
|
room_id = self.helper.create_room_as(user, is_public=True, tok=user_token)
|
||
|
|
||
|
# Check that the room does not have an encryption state event
|
||
|
self.helper.get_state(
|
||
|
room_id=room_id,
|
||
|
event_type=EventTypes.RoomEncryption,
|
||
|
tok=user_token,
|
||
|
expect_code=404,
|
||
|
)
|