Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge pull request #4889 from matrix-org/rav/test_real_config
Browse files Browse the repository at this point in the history
Use a regular HomeServerConfig object for unit tests
  • Loading branch information
richvdh authored Mar 19, 2019
2 parents 7872638 + b5d4856 commit 5cf00c9
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 18 deletions.
1 change: 1 addition & 0 deletions changelog.d/4889.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Use a regular HomeServerConfig object for unit tests rater than a Mock.
5 changes: 4 additions & 1 deletion synapse/config/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,10 @@ def read_config_files(self, config_files, keys_directory=None, generate_keys=Fal
self.invoke_all("generate_files", config)
return

self.invoke_all("read_config", config)
self.parse_config_dict(config)

def parse_config_dict(self, config_dict):
self.invoke_all("read_config", config_dict)


def find_config_files(search_paths):
Expand Down
7 changes: 6 additions & 1 deletion synapse/config/key.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,12 @@
class KeyConfig(Config):

def read_config(self, config):
self.signing_key = self.read_signing_key(config["signing_key_path"])
# the signing key can be specified inline or in a separate file
if "signing_key" in config:
self.signing_key = read_signing_keys([config["signing_key"]])
else:
self.signing_key = self.read_signing_key(config["signing_key_path"])

self.old_signing_keys = self.read_old_signing_keys(
config.get("old_signing_keys", {})
)
Expand Down
11 changes: 9 additions & 2 deletions tests/handlers/test_register.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from synapse.handlers.register import RegistrationHandler
from synapse.types import RoomAlias, UserID, create_requester

from tests.utils import setup_test_homeserver
from tests.utils import default_config, setup_test_homeserver

from .. import unittest

Expand All @@ -40,8 +40,16 @@ def setUp(self):
self.mock_distributor = Mock()
self.mock_distributor.declare("registered_user")
self.mock_captcha_client = Mock()

hs_config = default_config("test")

# some of the tests rely on us having a user consent version
hs_config.user_consent_version = "test_consent_version"
hs_config.max_mau_value = 50

self.hs = yield setup_test_homeserver(
self.addCleanup,
config=hs_config,
expire_access_token=True,
)
self.macaroon_generator = Mock(
Expand All @@ -50,7 +58,6 @@ def setUp(self):
self.hs.get_macaroon_generator = Mock(return_value=self.macaroon_generator)
self.handler = self.hs.get_registration_handler()
self.store = self.hs.get_datastore()
self.hs.config.max_mau_value = 50
self.lots_of_users = 100
self.small_number_of_users = 1

Expand Down
2 changes: 2 additions & 0 deletions tests/push/test_email.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,10 @@ def sendmail(*args, **kwargs):
config.email_smtp_port = 20
config.require_transport_security = False
config.email_smtp_user = None
config.email_smtp_pass = None
config.email_app_name = "Matrix"
config.email_notif_from = "[email protected]"
config.email_riot_base_url = None

hs = self.setup_test_homeserver(config=config, sendmail=sendmail)

Expand Down
3 changes: 2 additions & 1 deletion tests/rest/client/v2_alpha/test_register.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def make_homeserver(self, reactor, clock):
self.hs.config.registrations_require_3pid = []
self.hs.config.auto_join_rooms = []
self.hs.config.enable_registration_captcha = False
self.hs.config.allow_guest_access = True

return self.hs

Expand All @@ -28,7 +29,7 @@ def test_POST_appservice_registration_valid(self):
as_token = "i_am_an_app_service"

appservice = ApplicationService(
as_token, self.hs.config.hostname,
as_token, self.hs.config.server_name,
id="1234",
namespaces={
"users": [{"regex": r"@as_user.*", "exclusive": True}],
Expand Down
7 changes: 5 additions & 2 deletions tests/server_notices/test_resource_limits_server_notices.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@
)

from tests import unittest
from tests.utils import setup_test_homeserver
from tests.utils import default_config, setup_test_homeserver


class TestResourceLimitsServerNotices(unittest.TestCase):
@defer.inlineCallbacks
def setUp(self):
self.hs = yield setup_test_homeserver(self.addCleanup)
hs_config = default_config(name="test")
hs_config.server_notices_mxid = "@server:test"

self.hs = yield setup_test_homeserver(self.addCleanup, config=hs_config)
self.server_notices_sender = self.hs.get_server_notices_sender()

# relying on [1] is far from ideal, but the only case where
Expand Down
26 changes: 15 additions & 11 deletions tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

from synapse.api.constants import EventTypes, RoomVersions
from synapse.api.errors import CodeMessageException, cs_error
from synapse.config.server import ServerConfig
from synapse.config.homeserver import HomeServerConfig
from synapse.federation.transport import server as federation_server
from synapse.http.server import HttpServer
from synapse.server import HomeServer
Expand Down Expand Up @@ -111,14 +111,25 @@ def default_config(name):
"""
Create a reasonable test config.
"""
config = Mock()
config.signing_key = [MockKey()]
config_dict = {
"server_name": name,
"media_store_path": "media",
"uploads_path": "uploads",

# the test signing key is just an arbitrary ed25519 key to keep the config
# parser happy
"signing_key": "ed25519 a_lPym qvioDNmfExFBRPgdTU+wtFYKq4JfwFRv7sYVgWvmgJg",
}

config = HomeServerConfig()
config.parse_config_dict(config_dict)

# TODO: move this stuff into config_dict or get rid of it
config.event_cache_size = 1
config.enable_registration = True
config.enable_registration_captcha = False
config.macaroon_secret_key = "not even a little secret"
config.expire_access_token = False
config.server_name = name
config.trusted_third_party_id_servers = []
config.room_invite_state_types = []
config.password_providers = []
Expand Down Expand Up @@ -176,13 +187,6 @@ def default_config(name):
# background, which upsets the test runner.
config.update_user_directory = False

def is_threepid_reserved(threepid):
return ServerConfig.is_threepid_reserved(
config.mau_limits_reserved_threepids, threepid
)

config.is_threepid_reserved.side_effect = is_threepid_reserved

return config


Expand Down

0 comments on commit 5cf00c9

Please sign in to comment.