summaryrefslogtreecommitdiff
path: root/src/mailman/handlers/tests
diff options
context:
space:
mode:
authorBarry Warsaw2016-08-23 22:06:55 -0400
committerBarry Warsaw2016-08-23 22:06:55 -0400
commitdf929b21f9afc917cb515aca613fc925f6c9d1d0 (patch)
tree79240a6f6c097264f08eb7349089c05967683ecf /src/mailman/handlers/tests
parent3667b6dbc4110b12dd625e458dcdc8b3d9da7817 (diff)
downloadmailman-df929b21f9afc917cb515aca613fc925f6c9d1d0.tar.gz
mailman-df929b21f9afc917cb515aca613fc925f6c9d1d0.tar.zst
mailman-df929b21f9afc917cb515aca613fc925f6c9d1d0.zip
Close #273
A mailing list's ``description`` must not contain newlines. Given by Aurélien Bompard.
Diffstat (limited to 'src/mailman/handlers/tests')
-rw-r--r--src/mailman/handlers/tests/test_cook_headers.py33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/mailman/handlers/tests/test_cook_headers.py b/src/mailman/handlers/tests/test_cook_headers.py
index f9def6ca8..8ab301f96 100644
--- a/src/mailman/handlers/tests/test_cook_headers.py
+++ b/src/mailman/handlers/tests/test_cook_headers.py
@@ -21,9 +21,11 @@ import unittest
from mailman.app.lifecycle import create_list
from mailman.handlers import cook_headers
+from mailman.interfaces.mailinglist import ReplyToMunging
from mailman.interfaces.member import DeliveryMode
from mailman.testing.helpers import (
- get_queue_messages, LogFileMark, make_digest_messages, subscribe)
+ LogFileMark, get_queue_messages, make_digest_messages,
+ specialized_message_from_string as mfs, subscribe)
from mailman.testing.layers import ConfigLayer
@@ -33,7 +35,7 @@ class TestCookHeaders(unittest.TestCase):
layer = ConfigLayer
def setUp(self):
- self._mlist = create_list('test@example.com')
+ self._mlist = create_list('ant@example.com')
self._mlist.send_welcome_message = False
def test_process_digest(self):
@@ -56,8 +58,31 @@ class TestCookHeaders(unittest.TestCase):
mark = LogFileMark('mailman.error')
header = cook_headers.uheader(
self._mlist, 'A multiline\ndescription', 'X-Header')
- self.assertEqual(
- header.encode(), 'A multiline [...]')
+ self.assertEqual(header.encode(), 'A multiline [...]')
log_messages = mark.read()
self.assertIn(
'Header X-Header contains a newline, truncating it', log_messages)
+
+ def test_truncate_description(self):
+ # Existing multiline descriptions get truncated with ellipses.
+ self._mlist.description = 'A multiline\ndescription\nalready\nexists'
+ self._mlist.reply_goes_to_list = ReplyToMunging.point_to_list
+ msg = mfs("""\
+From: anne@example.com
+To: ant@example.com
+Subject: A subject
+X-Mailman-Version: X.Y
+
+More things to say.
+""")
+ cook_headers.process(self._mlist, msg, {})
+ self.assertMultiLineEqual(msg.as_string(), """\
+From: anne@example.com
+To: ant@example.com
+Subject: A subject
+X-Mailman-Version: X.Y
+Precedence: list
+Reply-To: "A multiline [...]" <ant@example.com>
+
+More things to say.
+""")