summaryrefslogtreecommitdiff
path: root/src/mailman/rest/tests/test_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rest/tests/test_helpers.py')
-rw-r--r--src/mailman/rest/tests/test_helpers.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/mailman/rest/tests/test_helpers.py b/src/mailman/rest/tests/test_helpers.py
index 982b97ef3..07ae784c8 100644
--- a/src/mailman/rest/tests/test_helpers.py
+++ b/src/mailman/rest/tests/test_helpers.py
@@ -17,11 +17,14 @@
"""Additional tests for helpers."""
+import json
import unittest
from datetime import timedelta
+from email.header import Header
+from email.message import Message
from mailman.rest import helpers
-from mailman.testing.layers import ConfigLayer
+from mailman.testing.layers import ConfigLayer, RESTLayer
class FakeResponse:
@@ -74,3 +77,23 @@ class TestHelpers(unittest.TestCase):
def test_json_encoding_default(self):
resource = dict(interval=Unserializable())
self.assertRaises(TypeError, helpers.etag, resource)
+
+
+class TestJSONEncoder(unittest.TestCase):
+ """Test the JSON ExtendedEncoder."""
+ layer = RESTLayer
+
+ def test_encode_message(self):
+ msg = Message()
+ msg['From'] = 'test@example.com'
+ msg.set_payload('Test content.')
+ result = json.dumps(msg, cls=helpers.ExtendedEncoder)
+ self.assertEqual(
+ result, json.dumps('From: test@example.com\n\nTest content.'))
+
+ def test_encode_header(self):
+ value = 'Contains non-ascii \u00e9 \u00e7 \u00e0'
+ result = json.dumps(
+ Header(value, charset='utf-8'),
+ cls=helpers.ExtendedEncoder)
+ self.assertEqual(result, json.dumps(value))