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

Fix wrapping of legacy check_registration_for_spam #10238

Merged
merged 3 commits into from
Jun 23, 2021
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Test
  • Loading branch information
babolivier committed Jun 23, 2021
commit f7cfbc03dbdbfa3a6626863669e57d110b9c06c9
76 changes: 76 additions & 0 deletions tests/handlers/test_register.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from synapse.api.auth import Auth
from synapse.api.constants import UserTypes
from synapse.api.errors import Codes, ResourceLimitError, SynapseError
from synapse.events.spamcheck import load_legacy_spam_checkers
from synapse.spam_checker_api import RegistrationBehaviour
from synapse.types import RoomAlias, UserID, create_requester

Expand Down Expand Up @@ -79,6 +80,39 @@ async def check_registration_for_spam(
return RegistrationBehaviour.ALLOW


class TestLegacyRegistrationSpamChecker:
def __init__(self, config, api):
pass

async def check_registration_for_spam(
self,
email_threepid,
username,
request_info,
):
pass


class LegacyAllowAll(TestLegacyRegistrationSpamChecker):
async def check_registration_for_spam(
self,
email_threepid,
username,
request_info,
):
return RegistrationBehaviour.ALLOW


class LegacyDenyAll(TestLegacyRegistrationSpamChecker):
async def check_registration_for_spam(
self,
email_threepid,
username,
request_info,
):
return RegistrationBehaviour.DENY


class RegistrationTestCase(unittest.HomeserverTestCase):
"""Tests the RegistrationHandler."""

Expand All @@ -95,6 +129,8 @@ def make_homeserver(self, reactor, clock):

hs = self.setup_test_homeserver(config=hs_config)

load_legacy_spam_checkers(hs)

module_api = hs.get_module_api()
for module, config in hs.config.modules.loaded_modules:
module(config=config, api=module_api)
Expand Down Expand Up @@ -535,6 +571,46 @@ def test_spam_checker_deny(self):
"""A spam checker can deny registration, which results in an error."""
self.get_failure(self.handler.register_user(localpart="user"), SynapseError)

@override_config(
{
"spam_checker": [
{
"module": TestSpamChecker.__module__ + ".LegacyAllowAll",
}
]
}
)
def test_spam_checker_legacy_allow(self):
"""Tests that a legacy spam checker implementing the legacy 3-arg version of the
check_registration_for_spam callback is correctly called.

In this test and the following one we test both success and failure to make sure
any failure comes from the spam checker (and not something else failing in the
call stack) and any success comes from the spam checker (and not because a
misconfiguration prevented it from being loaded).
"""
self.get_success(self.handler.register_user(localpart="user"))

@override_config(
{
"spam_checker": [
{
"module": TestSpamChecker.__module__ + ".LegacyDenyAll",
}
]
}
)
def test_spam_checker_legacy_deny(self):
"""Tests that a legacy spam checker implementing the legacy 3-arg version of the
check_registration_for_spam callback is correctly called.

In this test and the previous one we test both success and failure to make sure
any failure comes from the spam checker (and not something else failing in the
call stack) and any success comes from the spam checker (and not because a
misconfiguration prevented it from being loaded).
"""
self.get_failure(self.handler.register_user(localpart="user"), SynapseError)

@override_config(
{
"modules": [
Expand Down