diff options
| author | Barry Warsaw | 2016-12-30 16:57:28 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2016-12-30 16:57:28 -0500 |
| commit | a032ef77d134a61503a50442cbcba19eac23a0b4 (patch) | |
| tree | 22d400ff6ba4e47f3a992154e22badd4d3918561 /src/mailman/rules/tests/test_dmarc.py | |
| parent | f308782d733373246ba3b3bb42d1d6e68695f8f3 (diff) | |
| download | mailman-a032ef77d134a61503a50442cbcba19eac23a0b4.tar.gz mailman-a032ef77d134a61503a50442cbcba19eac23a0b4.tar.zst mailman-a032ef77d134a61503a50442cbcba19eac23a0b4.zip | |
Diffstat (limited to 'src/mailman/rules/tests/test_dmarc.py')
| -rw-r--r-- | src/mailman/rules/tests/test_dmarc.py | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/mailman/rules/tests/test_dmarc.py b/src/mailman/rules/tests/test_dmarc.py index 16cf947cc..a486ad57a 100644 --- a/src/mailman/rules/tests/test_dmarc.py +++ b/src/mailman/rules/tests/test_dmarc.py @@ -18,13 +18,15 @@ """Provides support for mocking dnspython calls from dmarc rules and some organizational domain tests.""" +from contextlib import ExitStack from dns.rdatatype import TXT from dns.resolver import NXDOMAIN, NoAnswer from mailman.rules import dmarc from mailman.testing.helpers import LogFileMark from mailman.testing.layers import ConfigLayer from public import public -from unittest import TestCase, mock +from unittest import TestCase +from unittest.mock import patch from urllib.error import URLError @@ -82,7 +84,7 @@ def get_dns_resolver(): raise NXDOMAIN self.response = Answer() return self - patcher = mock.patch('dns.resolver.Resolver', Resolver) + patcher = patch('dns.resolver.Resolver', Resolver) return patcher @@ -92,34 +94,41 @@ class TestDMARCRules(TestCase): layer = ConfigLayer def setUp(self): - pass + self.resources = ExitStack() + self.addCleanup(self.resources.close) + # Make sure every test has a clean cache. + self.cache = {} + self.resources.enter_context( + patch('mailman.rules.dmarc.s_dict', self.cache)) def test_no_url(self): - dmarc.s_dict = {} dmarc._get_suffixes(None) - self.assertEqual(dmarc.s_dict, dict()) + self.assertEqual(len(self.cache), 0) def test_no_data_for_domain(self): self.assertEqual( - dmarc._get_org_dom('sub.dom.example.nxtld'), 'example.nxtld') + dmarc._get_org_dom('sub.dom.example.nxtld'), + 'example.nxtld') def test_domain_with_wild_card(self): self.assertEqual( - dmarc._get_org_dom('ssub.sub.foo.kobe.jp'), 'sub.foo.kobe.jp') + dmarc._get_org_dom('ssub.sub.foo.kobe.jp'), + 'sub.foo.kobe.jp') def test_exception_to_wild_card(self): self.assertEqual( - dmarc._get_org_dom('ssub.sub.city.kobe.jp'), 'city.kobe.jp') + dmarc._get_org_dom('ssub.sub.city.kobe.jp'), + 'city.kobe.jp') def test_no_publicsuffix_dot_org(self): mark = LogFileMark('mailman.error') - with mock.patch('mailman.rules.dmarc.request.urlopen', - side_effect=URLError('no internet')): + with patch('mailman.rules.dmarc.request.urlopen', + side_effect=URLError('no internet')): domain = dmarc._get_org_dom('ssub.sub.city.kobe.jp') - self.assertEqual(domain, 'kobe.jp') line = mark.readline() self.assertEqual( line[-95:], 'Unable to retrieve data from ' 'https://publicsuffix.org/list/public_suffix_list.dat: ' 'no internet\n') + self.assertEqual(domain, 'kobe.jp') |
