You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

109 lines
4.2 KiB

  1. import synapse
  2. from synapse.api.constants import EventTypes, RoomEncryptionAlgorithms
  3. from synapse.rest.client import login, room
  4. from tests import unittest
  5. from tests.unittest import override_config
  6. class EncryptedByDefaultTestCase(unittest.HomeserverTestCase):
  7. servlets = [
  8. login.register_servlets,
  9. synapse.rest.admin.register_servlets_for_client_rest_resource,
  10. room.register_servlets,
  11. ]
  12. @override_config({"encryption_enabled_by_default_for_room_type": "all"})
  13. def test_encrypted_by_default_config_option_all(self) -> None:
  14. """Tests that invite-only and non-invite-only rooms have encryption enabled by
  15. default when the config option encryption_enabled_by_default_for_room_type is "all".
  16. """
  17. # Create a user
  18. user = self.register_user("user", "pass")
  19. user_token = self.login(user, "pass")
  20. # Create an invite-only room as that user
  21. room_id = self.helper.create_room_as(user, is_public=False, tok=user_token)
  22. # Check that the room has an encryption state event
  23. event_content = self.helper.get_state(
  24. room_id=room_id,
  25. event_type=EventTypes.RoomEncryption,
  26. tok=user_token,
  27. )
  28. self.assertEqual(event_content, {"algorithm": RoomEncryptionAlgorithms.DEFAULT})
  29. # Create a non invite-only room as that user
  30. room_id = self.helper.create_room_as(user, is_public=True, tok=user_token)
  31. # Check that the room has an encryption state event
  32. event_content = self.helper.get_state(
  33. room_id=room_id,
  34. event_type=EventTypes.RoomEncryption,
  35. tok=user_token,
  36. )
  37. self.assertEqual(event_content, {"algorithm": RoomEncryptionAlgorithms.DEFAULT})
  38. @override_config({"encryption_enabled_by_default_for_room_type": "invite"})
  39. def test_encrypted_by_default_config_option_invite(self) -> None:
  40. """Tests that only new, invite-only rooms have encryption enabled by default when
  41. the config option encryption_enabled_by_default_for_room_type is "invite".
  42. """
  43. # Create a user
  44. user = self.register_user("user", "pass")
  45. user_token = self.login(user, "pass")
  46. # Create an invite-only room as that user
  47. room_id = self.helper.create_room_as(user, is_public=False, tok=user_token)
  48. # Check that the room has an encryption state event
  49. event_content = self.helper.get_state(
  50. room_id=room_id,
  51. event_type=EventTypes.RoomEncryption,
  52. tok=user_token,
  53. )
  54. self.assertEqual(event_content, {"algorithm": RoomEncryptionAlgorithms.DEFAULT})
  55. # Create a non invite-only room as that user
  56. room_id = self.helper.create_room_as(user, is_public=True, tok=user_token)
  57. # Check that the room does not have an encryption state event
  58. self.helper.get_state(
  59. room_id=room_id,
  60. event_type=EventTypes.RoomEncryption,
  61. tok=user_token,
  62. expect_code=404,
  63. )
  64. @override_config({"encryption_enabled_by_default_for_room_type": "off"})
  65. def test_encrypted_by_default_config_option_off(self) -> None:
  66. """Tests that neither new invite-only nor non-invite-only rooms have encryption
  67. enabled by default when the config option
  68. encryption_enabled_by_default_for_room_type is "off".
  69. """
  70. # Create a user
  71. user = self.register_user("user", "pass")
  72. user_token = self.login(user, "pass")
  73. # Create an invite-only room as that user
  74. room_id = self.helper.create_room_as(user, is_public=False, tok=user_token)
  75. # Check that the room does not have an encryption state event
  76. self.helper.get_state(
  77. room_id=room_id,
  78. event_type=EventTypes.RoomEncryption,
  79. tok=user_token,
  80. expect_code=404,
  81. )
  82. # Create a non invite-only room as that user
  83. room_id = self.helper.create_room_as(user, is_public=True, tok=user_token)
  84. # Check that the room does not have an encryption state event
  85. self.helper.get_state(
  86. room_id=room_id,
  87. event_type=EventTypes.RoomEncryption,
  88. tok=user_token,
  89. expect_code=404,
  90. )