summaryrefslogtreecommitdiff
path: root/src/mailman/utilities/tests/test_email.py
diff options
context:
space:
mode:
authorBarry Warsaw2015-06-14 22:03:15 -0400
committerBarry Warsaw2015-06-14 22:03:15 -0400
commitd444540c4afc13c60199e51cbceb0ab24fc77aa3 (patch)
tree3ddc26f545a6b45e266d1decea8f17a71ce45c08 /src/mailman/utilities/tests/test_email.py
parent955abee5c16a4a35f270c54cb8d658c4445b4b18 (diff)
downloadmailman-d444540c4afc13c60199e51cbceb0ab24fc77aa3.tar.gz
mailman-d444540c4afc13c60199e51cbceb0ab24fc77aa3.tar.zst
mailman-d444540c4afc13c60199e51cbceb0ab24fc77aa3.zip
Diffstat (limited to 'src/mailman/utilities/tests/test_email.py')
-rw-r--r--src/mailman/utilities/tests/test_email.py71
1 files changed, 62 insertions, 9 deletions
diff --git a/src/mailman/utilities/tests/test_email.py b/src/mailman/utilities/tests/test_email.py
index 580a49805..44fa7d492 100644
--- a/src/mailman/utilities/tests/test_email.py
+++ b/src/mailman/utilities/tests/test_email.py
@@ -19,14 +19,18 @@
__all__ = [
'TestEmail',
+ 'TestMessageIDHash',
]
import unittest
+from mailman.interfaces.messages import IMessageStore
from mailman.testing.helpers import (
specialized_message_from_string as mfs)
+from mailman.testing.layers import ConfigLayer
from mailman.utilities.email import add_message_hash, split_email
+from zope.component import getUtility
@@ -50,30 +54,30 @@ Message-ID: <aardvark>
""")
add_message_hash(msg)
- self.assertEqual(msg['x-message-id-hash'],
+ self.assertEqual(msg['message-id-hash'],
'75E2XSUXAFQGWANWEROVQ7JGYMNWHJBT')
def test_remove_hash_headers_first(self):
# Any existing X-Mailman-Hash-ID header is removed first.
msg = mfs("""\
Message-ID: <aardvark>
-X-Message-ID-Hash: abc
+Message-ID-Hash: abc
""")
add_message_hash(msg)
- headers = msg.get_all('x-message-id-hash')
+ headers = msg.get_all('message-id-hash')
self.assertEqual(len(headers), 1)
self.assertEqual(headers[0], '75E2XSUXAFQGWANWEROVQ7JGYMNWHJBT')
def test_hash_header_left_alone_if_no_message_id(self):
# If the original message has no Message-ID header, then any existing
- # X-Message-ID-Hash headers are left intact.
+ # Message-ID-Hash headers are left intact.
msg = mfs("""\
-X-Message-ID-Hash: abc
+Message-ID-Hash: abc
""")
add_message_hash(msg)
- headers = msg.get_all('x-message-id-hash')
+ headers = msg.get_all('message-id-hash')
self.assertEqual(len(headers), 1)
self.assertEqual(headers[0], 'abc')
@@ -85,7 +89,7 @@ Message-ID: aardvark
""")
add_message_hash(msg)
- self.assertEqual(msg['x-message-id-hash'],
+ self.assertEqual(msg['message-id-hash'],
'75E2XSUXAFQGWANWEROVQ7JGYMNWHJBT')
def test_mismatched_angle_brackets_do_contribute_to_hash(self):
@@ -96,12 +100,61 @@ Message-ID: <aardvark
""")
add_message_hash(msg)
- self.assertEqual(msg['x-message-id-hash'],
+ self.assertEqual(msg['message-id-hash'],
'AOJ545GHRYD2Y3RUFG2EWMPHUABTG4SM')
msg = mfs("""\
Message-ID: aardvark>
""")
add_message_hash(msg)
- self.assertEqual(msg['x-message-id-hash'],
+ self.assertEqual(msg['message-id-hash'],
'5KH3RA7ZM4VM6XOZXA7AST2XN2X4S3WY')
+
+ def test_return_value(self):
+ msg = mfs("""\
+Message-ID: aardvark>
+
+""")
+ hash32 = add_message_hash(msg)
+ self.assertEqual(hash32, '5KH3RA7ZM4VM6XOZXA7AST2XN2X4S3WY')
+
+
+
+class TestMessageIDHash(unittest.TestCase):
+
+ layer = ConfigLayer
+
+ def setUp(self):
+ self._store = getUtility(IMessageStore)
+
+ def test_message_id_hash_backward_compatibility(self):
+ msg = mfs("""\
+Message-ID: <ant>
+
+""")
+ self._store.add(msg)
+ stored_msg = self._store.get_message_by_id('<ant>')
+ self.assertEqual(stored_msg['message-id-hash'],
+ 'MS6QLWERIJLGCRF44J7USBFDELMNT2BW')
+ # For backward compatibility with the old spec.
+ self.assertEqual(stored_msg['x-message-id-hash'],
+ 'MS6QLWERIJLGCRF44J7USBFDELMNT2BW')
+
+ def test_message_id_hash_gets_replaced_backward_compatibility(self):
+ msg = mfs("""\
+Message-ID: <ant>
+Message-ID-Hash: abc
+X-Message-ID-Hash: abc
+
+""")
+ self._store.add(msg)
+ stored_msg = self._store.get_message_by_id('<ant>')
+ message_id_hashes = stored_msg.get_all('message-id-hash')
+ self.assertEqual(len(message_id_hashes), 1)
+ self.assertEqual(message_id_hashes[0],
+ 'MS6QLWERIJLGCRF44J7USBFDELMNT2BW')
+ # For backward compatibility with the old spec.
+ x_message_id_hashes = stored_msg.get_all('x-message-id-hash')
+ self.assertEqual(len(x_message_id_hashes), 1)
+ self.assertEqual(x_message_id_hashes[0],
+ 'MS6QLWERIJLGCRF44J7USBFDELMNT2BW')