summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/rules/dmarc.py8
-rw-r--r--src/mailman/rules/tests/test_dmarc.py12
2 files changed, 10 insertions, 10 deletions
diff --git a/src/mailman/rules/dmarc.py b/src/mailman/rules/dmarc.py
index 5a1073970..43bbfc609 100644
--- a/src/mailman/rules/dmarc.py
+++ b/src/mailman/rules/dmarc.py
@@ -28,9 +28,10 @@ from mailman.config import config
from mailman.core.i18n import _
from mailman.interfaces.mailinglist import DMARCMitigateAction
from mailman.interfaces.rules import IRule
+from mailman.utilities import protocols
from mailman.utilities.string import wrap
from public import public
-from urllib import error, request
+from urllib import error
from zope.interface import implementer
@@ -48,12 +49,11 @@ def _get_suffixes(url):
if not url:
return
try:
- d = request.urlopen(url)
+ d = protocols.get(url)
except error.URLError as e:
elog.error('Unable to retrieve data from %s: %s', url, e.reason)
return
- for line in d.readlines():
- line = str(line, encoding='utf-8')
+ for line in d.splitlines():
if not line.strip() or line.startswith('//'):
continue
line = re.sub('\s.*', '', line)
diff --git a/src/mailman/rules/tests/test_dmarc.py b/src/mailman/rules/tests/test_dmarc.py
index 9af3e9347..640dd5cda 100644
--- a/src/mailman/rules/tests/test_dmarc.py
+++ b/src/mailman/rules/tests/test_dmarc.py
@@ -28,12 +28,12 @@ from mailman.rules import dmarc
from mailman.testing.helpers import (
LogFileMark, specialized_message_from_string as mfs)
from mailman.testing.layers import ConfigLayer
+from mailman.utilities.protocols import get as _get
from pkg_resources import resource_filename
from public import public
from unittest import TestCase
from unittest.mock import patch
from urllib.error import URLError
-from urllib.request import urlopen
@public
@@ -101,12 +101,12 @@ def get_org_data():
"""Create a mock to load the organizational domain data from our local
test data.
"""
- def ouropen(url):
+ def ourget(url):
datapath = resource_filename(
'mailman.rules.tests.data', 'org_domain.txt')
org_data_url = 'file:///{}'.format(datapath)
- return urlopen(org_data_url)
- return patch('mailman.rules.dmarc.request.urlopen', ouropen)
+ return _get(org_data_url)
+ return patch('mailman.rules.dmarc.protocols.get', ourget)
class TestDMARCRules(TestCase):
@@ -146,7 +146,7 @@ class TestDMARCRules(TestCase):
def test_no_publicsuffix_dot_org(self):
mark = LogFileMark('mailman.error')
- with patch('mailman.rules.dmarc.request.urlopen',
+ with patch('mailman.rules.dmarc.protocols.get',
side_effect=URLError('no internet')):
domain = dmarc._get_org_dom('ssub.sub.city.kobe.jp')
line = mark.readline()
@@ -182,7 +182,7 @@ To: ant@example.com
""")
mark = LogFileMark('mailman.error')
rule = dmarc.DMARCMitigation()
- with get_dns_resolver():
+ with get_dns_resolver(), get_org_data():
self.assertFalse(rule.check(mlist, msg, {}))
line = mark.readline()
self.assertEqual(