1
0
Fork 1
mirror of https://github.com/coddingtonbear/django-mailbox.git synced 2026-07-09 22:38:19 +02:00
django-mailbox/django_mailbox/tests/test_message_flattening.py

117 lines
3.9 KiB
Python
Raw Normal View History

2016-05-14 22:06:32 -07:00
import copy
from unittest import mock
2016-05-14 22:06:32 -07:00
from django_mailbox import models, utils
2013-07-25 23:45:39 -07:00
from django_mailbox.models import Message
from django_mailbox.tests.base import EmailMessageTestCase
__all__ = ['TestMessageFlattening']
class TestMessageFlattening(EmailMessageTestCase):
def test_quopri_message_is_properly_rehydrated(self):
incoming_email_object = self._get_email_object(
'message_with_many_multiparts.eml',
)
# Note: this is identical to the above, but it appears that
# while reading-in an e-mail message, we do alter it slightly
expected_email_object = self._get_email_object(
'message_with_many_multiparts.eml',
)
models.TEXT_STORED_MIMETYPES = ['text/plain']
msg = self.mailbox.process_incoming_message(incoming_email_object)
actual_email_object = msg.get_email_object()
self.assertEqual(
actual_email_object,
expected_email_object,
)
def test_base64_message_is_properly_rehydrated(self):
incoming_email_object = self._get_email_object(
'message_with_attachment.eml',
)
# Note: this is identical to the above, but it appears that
# while reading-in an e-mail message, we do alter it slightly
expected_email_object = self._get_email_object(
'message_with_attachment.eml',
)
msg = self.mailbox.process_incoming_message(incoming_email_object)
actual_email_object = msg.get_email_object()
self.assertEqual(
actual_email_object,
expected_email_object,
)
def test_message_handles_rehydration_problems(self):
incoming_email_object = self._get_email_object(
'message_with_defective_attachment_association.eml',
)
expected_email_object = self._get_email_object(
'message_with_defective_attachment_association_result.eml',
)
# Note: this is identical to the above, but it appears that
# while reading-in an e-mail message, we do alter it slightly
message = Message()
message.body = incoming_email_object.as_string()
msg = self.mailbox.process_incoming_message(incoming_email_object)
del msg._email_object # Cache flush
2013-07-25 23:45:39 -07:00
actual_email_object = msg.get_email_object()
self.assertEqual(
actual_email_object,
expected_email_object,
)
def test_message_content_type_stripping(self):
incoming_email_object = self._get_email_object(
'message_with_many_multiparts.eml',
)
expected_email_object = self._get_email_object(
'message_with_many_multiparts_stripped_html.eml',
)
2016-05-14 22:06:32 -07:00
default_settings = utils.get_settings()
2013-07-25 23:45:39 -07:00
2016-05-14 22:06:32 -07:00
with mock.patch('django_mailbox.utils.get_settings') as get_settings:
altered = copy.deepcopy(default_settings)
altered['strip_unallowed_mimetypes'] = True
altered['allowed_mimetypes'] = ['text/plain']
get_settings.return_value = altered
msg = self.mailbox.process_incoming_message(incoming_email_object)
2013-07-25 23:45:39 -07:00
del msg._email_object # Cache flush
2013-07-25 23:45:39 -07:00
actual_email_object = msg.get_email_object()
self.assertEqual(
actual_email_object,
expected_email_object,
)
def test_message_processing_unknown_encoding(self):
incoming_email_object = self._get_email_object(
'message_with_invalid_encoding.eml',
)
msg = self.mailbox.process_incoming_message(incoming_email_object)
expected_text = (
"We offer loans to private individuals and corporate "
"organizations at 2% interest rate. Interested serious "
"applicants should apply via email with details of their "
"requirements.\n\nWarm Regards,\nLoan Team"
)
actual_text = msg.text
self.assertEqual(actual_text, expected_text)