diff options
| author | Barry Warsaw | 2014-12-10 21:49:39 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2014-12-10 21:49:39 -0500 |
| commit | 6cdf2ce4c74a41014324afb020997f782e6fbcd3 (patch) | |
| tree | afe516f9fc6dc00ea912c73a6919c3f6340ea833 /src/mailman/core/tests/test_runner.py | |
| parent | 8e51aa72c58ee96ca464d2b28d71d68c84d9f5a9 (diff) | |
| parent | c11cdd249fe3f3a28da4be703b345d925a14c601 (diff) | |
| download | mailman-6cdf2ce4c74a41014324afb020997f782e6fbcd3.tar.gz mailman-6cdf2ce4c74a41014324afb020997f782e6fbcd3.tar.zst mailman-6cdf2ce4c74a41014324afb020997f782e6fbcd3.zip | |
Diffstat (limited to 'src/mailman/core/tests/test_runner.py')
| -rw-r--r-- | src/mailman/core/tests/test_runner.py | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/mailman/core/tests/test_runner.py b/src/mailman/core/tests/test_runner.py index 2875b3b10..1fb8f0b7b 100644 --- a/src/mailman/core/tests/test_runner.py +++ b/src/mailman/core/tests/test_runner.py @@ -31,9 +31,11 @@ from mailman.app.lifecycle import create_list from mailman.config import config from mailman.core.runner import Runner from mailman.interfaces.runner import RunnerCrashEvent +from mailman.runners.virgin import VirginRunner from mailman.testing.helpers import ( - configuration, event_subscribers, get_queue_messages, - make_testable_runner, specialized_message_from_string as mfs) + LogFileMark, configuration, event_subscribers, get_queue_messages, + make_digest_messages, make_testable_runner, + specialized_message_from_string as mfs) from mailman.testing.layers import ConfigLayer @@ -87,3 +89,37 @@ Message-ID: <ant> shunted = get_queue_messages('shunt') self.assertEqual(len(shunted), 1) self.assertEqual(shunted[0].msg['message-id'], '<ant>') + + def test_digest_messages(self): + # In LP: #1130697, the digest runner creates MIME digests using the + # stdlib MIMEMutlipart class, however this class does not have the + # extended attributes we require (e.g. .sender). The fix is to use a + # subclass of MIMEMultipart and our own Message subclass; this adds + # back the required attributes. (LP: #1130696) + # + # Start by creating the raw ingredients for the digests. This also + # runs the digest runner, thus producing the digest messages into the + # virgin queue. + make_digest_messages(self._mlist) + # Run the virgin queue processor, which runs the cook-headers and + # to-outgoing handlers. This should produce no error. + error_log = LogFileMark('mailman.error') + runner = make_testable_runner(VirginRunner, 'virgin') + runner.run() + error_text = error_log.read() + self.assertEqual(len(error_text), 0, error_text) + self.assertEqual(len(get_queue_messages('shunt')), 0) + messages = get_queue_messages('out') + self.assertEqual(len(messages), 2) + # Which one is the MIME digest? + mime_digest = None + for bag in messages: + if bag.msg.get_content_type() == 'multipart/mixed': + assert mime_digest is None, 'Found two MIME digests' + mime_digest = bag.msg + # The cook-headers handler ran. + self.assertIn('x-mailman-version', mime_digest) + self.assertEqual(mime_digest['precedence'], 'list') + # The list's -request address is the original sender. + self.assertEqual(bag.msgdata['original_sender'], + 'test-request@example.com') |
