123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- # Copyright 2020 The Matrix.org Foundation C.I.C.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- import logging
- from synapse.rest.client import register
- from tests.replication._base import BaseMultiWorkerStreamTestCase
- from tests.server import make_request
- logger = logging.getLogger(__name__)
- class ClientReaderTestCase(BaseMultiWorkerStreamTestCase):
- """Test using one or more client readers for registration."""
- servlets = [register.register_servlets]
- def _get_worker_hs_config(self) -> dict:
- config = self.default_config()
- config["worker_app"] = "synapse.app.client_reader"
- config["worker_replication_host"] = "testserv"
- config["worker_replication_http_port"] = "8765"
- return config
- def test_register_single_worker(self):
- """Test that registration works when using a single client reader worker."""
- worker_hs = self.make_worker_hs("synapse.app.client_reader")
- site = self._hs_to_site[worker_hs]
- channel_1 = make_request(
- self.reactor,
- site,
- "POST",
- "register",
- {"username": "user", "type": "m.login.password", "password": "bar"},
- )
- self.assertEqual(channel_1.code, 401)
- # Grab the session
- session = channel_1.json_body["session"]
- # also complete the dummy auth
- channel_2 = make_request(
- self.reactor,
- site,
- "POST",
- "register",
- {"auth": {"session": session, "type": "m.login.dummy"}},
- )
- self.assertEqual(channel_2.code, 200)
- # We're given a registered user.
- self.assertEqual(channel_2.json_body["user_id"], "@user:test")
- def test_register_multi_worker(self):
- """Test that registration works when using multiple client reader workers."""
- worker_hs_1 = self.make_worker_hs("synapse.app.client_reader")
- worker_hs_2 = self.make_worker_hs("synapse.app.client_reader")
- site_1 = self._hs_to_site[worker_hs_1]
- channel_1 = make_request(
- self.reactor,
- site_1,
- "POST",
- "register",
- {"username": "user", "type": "m.login.password", "password": "bar"},
- )
- self.assertEqual(channel_1.code, 401)
- # Grab the session
- session = channel_1.json_body["session"]
- # also complete the dummy auth
- site_2 = self._hs_to_site[worker_hs_2]
- channel_2 = make_request(
- self.reactor,
- site_2,
- "POST",
- "register",
- {"auth": {"session": session, "type": "m.login.dummy"}},
- )
- self.assertEqual(channel_2.code, 200)
- # We're given a registered user.
- self.assertEqual(channel_2.json_body["user_id"], "@user:test")
|