From 042910588335f70a5a96689429cd95b64f80d6df Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 16 Jan 2017 11:21:11 +0100 Subject: [PATCH] No tests for reserved domains. fix #995 Conflicts: modoboa/admin/models/domain.py --- modoboa/admin/constants.py | 9 +++++++++ modoboa/admin/management/commands/subcommands/_mx.py | 2 ++ modoboa/admin/models/domain.py | 7 +++++++ modoboa/admin/templates/admin/domains_table.html | 4 +++- modoboa/admin/tests/test_mx.py | 4 ++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/modoboa/admin/constants.py b/modoboa/admin/constants.py index 45704b6d7..944da5e2f 100644 --- a/modoboa/admin/constants.py +++ b/modoboa/admin/constants.py @@ -80,3 +80,12 @@ DNSBL_PROVIDERS = [ "zen.spamhaus.org", "zombie.dnsbl.sorbs.net", ] + +# Do not run tests for these domains. +# https://en.wikipedia.org/wiki/Top-level_domain#Reserved_domains +RESERVED_TLD = [ + "example", + "invalid", + "localhost", + "test" +] diff --git a/modoboa/admin/management/commands/subcommands/_mx.py b/modoboa/admin/management/commands/subcommands/_mx.py index 13c8bfb77..0528f3e12 100644 --- a/modoboa/admin/management/commands/subcommands/_mx.py +++ b/modoboa/admin/management/commands/subcommands/_mx.py @@ -257,4 +257,6 @@ class CheckMXRecords(BaseCommand): options.pop("domain") for domain in domains: + if domain.uses_a_reserved_tld: + continue self.check_domain(domain, **options) diff --git a/modoboa/admin/models/domain.py b/modoboa/admin/models/domain.py index 4094b73ef..290759d32 100644 --- a/modoboa/admin/models/domain.py +++ b/modoboa/admin/models/domain.py @@ -20,6 +20,7 @@ from modoboa.parameters import tools as param_tools from .. import signals from .base import AdminObject +from .. import constants class DomainManager(Manager): @@ -108,6 +109,12 @@ class Domain(AdminObject): def aliases(self): return self.domainalias_set + @property + def uses_a_reserved_tld(self): + """Does this domain use a reserved TLD.""" + tld = self.name.split(".", 1)[-1] + return tld in constants.RESERVED_TLD + @property def just_created(self): """Return true if the domain was created in the latest 24h.""" diff --git a/modoboa/admin/templates/admin/domains_table.html b/modoboa/admin/templates/admin/domains_table.html index 0b3e24e9d..5fee00aae 100644 --- a/modoboa/admin/templates/admin/domains_table.html +++ b/modoboa/admin/templates/admin/domains_table.html @@ -8,7 +8,9 @@ {% if enable_mx_checks or enable_dnsbl_checks %} - {% if domain.awaiting_checks %} + {% if domain.uses_a_reserved_tld %} + {% trans "Disabled" context "checks" %} + {% elif domain.awaiting_checks %} {% trans "Awaiting checks" %} {% else %} {% if enable_mx_checks %} diff --git a/modoboa/admin/tests/test_mx.py b/modoboa/admin/tests/test_mx.py index 8513bcb4a..6e811bf6b 100644 --- a/modoboa/admin/tests/test_mx.py +++ b/modoboa/admin/tests/test_mx.py @@ -72,6 +72,8 @@ class DNSBLTestCase(ModoTestCase): super(DNSBLTestCase, cls).setUpTestData() cls.domain = factories.DomainFactory(name="modoboa.org") factories.DomainFactory(name="pouet.com") # should not exist + cls.domain2 = factories.DomainFactory( + name="test.localhost") # Should not be checked models.DNSBLResult.objects.all().delete() @override_settings(DNSBL_PROVIDERS=["zen.spamhaus.org"]) @@ -84,6 +86,8 @@ class DNSBLTestCase(ModoTestCase): response = self.client.get( reverse("admin:dnsbl_domain_detail", args=[self.domain.pk])) self.assertEqual(response.status_code, 200) + self.assertFalse(self.domain.uses_a_reserved_tld) + self.assertTrue(self.domain2.uses_a_reserved_tld) @override_settings(DNSBL_PROVIDERS=["zen.spamhaus.org"]) def test_management_command_no_dnsbl(self):