diff options
| author | Barry Warsaw | 2012-03-13 21:03:01 -0700 |
|---|---|---|
| committer | Barry Warsaw | 2012-03-13 21:03:01 -0700 |
| commit | 80ac803cb2816dde0503671fd117ed134680de53 (patch) | |
| tree | ed2d40855f6b45dedf421a7a98bd83d95b6e3b40 /src/mailman/utilities/tests/test_email.py | |
| parent | 07685642934fe934098927a9a9d20c17080f3dab (diff) | |
| download | mailman-80ac803cb2816dde0503671fd117ed134680de53.tar.gz mailman-80ac803cb2816dde0503671fd117ed134680de53.tar.zst mailman-80ac803cb2816dde0503671fd117ed134680de53.zip | |
Diffstat (limited to 'src/mailman/utilities/tests/test_email.py')
| -rw-r--r-- | src/mailman/utilities/tests/test_email.py | 75 |
1 files changed, 72 insertions, 3 deletions
diff --git a/src/mailman/utilities/tests/test_email.py b/src/mailman/utilities/tests/test_email.py index 833d631b5..478322aaf 100644 --- a/src/mailman/utilities/tests/test_email.py +++ b/src/mailman/utilities/tests/test_email.py @@ -15,22 +15,27 @@ # You should have received a copy of the GNU General Public License along with # GNU Mailman. If not, see <http://www.gnu.org/licenses/>. -"""Testing app.bounces functions.""" +"""Testing functions in the email utilities.""" -from __future__ import absolute_import, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals __metaclass__ = type __all__ = [ + 'TestEmail', ] import unittest -from mailman.utilities.email import split_email +from mailman.testing.helpers import ( + specialized_message_from_string as mfs) +from mailman.utilities.email import add_message_hash, split_email class TestEmail(unittest.TestCase): + """Testing functions in the email utilities.""" + def test_normal_split(self): self.assertEqual(split_email('anne@example.com'), ('anne', ['example', 'com'])) @@ -39,3 +44,67 @@ class TestEmail(unittest.TestCase): def test_no_at_split(self): self.assertEqual(split_email('anne'), ('anne', None)) + + def test_adding_the_message_hash(self): + # When the message has a Message-ID header, this will add the + # X-Mailman-Hash-ID header. + msg = mfs("""\ +Message-ID: <aardvark> + +""") + add_message_hash(msg) + self.assertEqual(msg['x-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 + +""") + add_message_hash(msg) + headers = msg.get_all('x-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. + msg = mfs("""\ +X-Message-ID-Hash: abc + +""") + add_message_hash(msg) + headers = msg.get_all('x-message-id-hash') + self.assertEqual(len(headers), 1) + self.assertEqual(headers[0], 'abc') + + def test_angle_brackets_dont_contribute_to_hash(self): + # According to RFC 5322, the [matching] angle brackets do not + # contribute to the hash. + msg = mfs("""\ +Message-ID: aardvark + +""") + add_message_hash(msg) + self.assertEqual(msg['x-message-id-hash'], + '75E2XSUXAFQGWANWEROVQ7JGYMNWHJBT') + + def test_mismatched_angle_brackets_do_contribute_to_hash(self): + # According to RFC 5322, the [matching] angle brackets do not + # contribute to the hash. + msg = mfs("""\ +Message-ID: <aardvark + +""") + add_message_hash(msg) + self.assertEqual(msg['x-message-id-hash'], + 'AOJ545GHRYD2Y3RUFG2EWMPHUABTG4SM') + msg = mfs("""\ +Message-ID: aardvark> + +""") + add_message_hash(msg) + self.assertEqual(msg['x-message-id-hash'], + '5KH3RA7ZM4VM6XOZXA7AST2XN2X4S3WY') |
