summaryrefslogtreecommitdiff
path: root/src/mailman/chains/tests/test_headers.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/chains/tests/test_headers.py')
-rw-r--r--src/mailman/chains/tests/test_headers.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mailman/chains/tests/test_headers.py b/src/mailman/chains/tests/test_headers.py
index b74b8ebc9..3da7a2435 100644
--- a/src/mailman/chains/tests/test_headers.py
+++ b/src/mailman/chains/tests/test_headers.py
@@ -19,6 +19,7 @@
import unittest
+from email.header import Header
from mailman.app.lifecycle import create_list
from mailman.chains.headers import HeaderMatchRule, make_link
from mailman.config import config
@@ -209,6 +210,35 @@ This is junk
self.assertIsInstance(event, HoldEvent)
self.assertEqual(event.chain, config.chains['hold'])
+ def test_get_all_returns_non_string(self):
+ # Test case where msg.get_all() returns header instance.
+ msg = mfs("""\
+From: anne@example.com
+To: test@example.com
+Subject: =?unknown-8bit?q?Become_smarter_now_=96_Increase__your_brain...?=
+Message-ID: <ant>
+
+body
+
+""")
+ # XXX In the wild we have seen a message instance in which the subject
+ # header value is an email.header.Header instance rather than a
+ # string. We don't know how to recreate that here so we cheat.
+ msg['Subject'] = Header(
+ 'Become_smarter_now \x96 Increase your brain...', 'utf-8')
+ msgdata = {}
+ header_matches = IHeaderMatchList(self._mlist)
+ header_matches.append('Subject', '=\?utf', 'hold')
+ # This event subscriber records the event that occurs when the message
+ # is processed by the owner chain.
+ events = []
+ with event_subscribers(events.append):
+ process(self._mlist, msg, msgdata, start_chain='header-match')
+ self.assertEqual(len(events), 1)
+ event = events[0]
+ self.assertIsInstance(event, HoldEvent)
+ self.assertEqual(event.chain, config.chains['hold'])
+
@configuration('antispam', header_checks="""
Foo: foo
""", jump_chain='hold')