def test_format_inline_images_without_content_type(self):
        self.givenTestImage(content_type='')
        input_email = {'body': '<div><img src="http://test-url.png"/></div>'}

        output_email = email_parser.format_inline_images(
            input_email, self.fail_if_called)

        self.assertStartsWith(output_email['body'],
                              '<div><img src="data:image/png;')
    def test_format_inline_images_with_many_img_tags(self):
        self.givenTestImage()
        input_email = {
            'body':
            '<div><img src="http://test-url.png"/><img src="http://test-url.png"/></div>'
        }

        output_email = email_parser.format_inline_images(input_email)

        self.assertHasCount(output_email['body'], 'src="data:', 2)
    def test_format_inline_images_with_img_tag(self):
        self.givenTestImage()
        input_email = {
            'body':
            '<div><h3>test image</h3><img src="http://test-url.png"/></div>'
        }

        output_email = email_parser.format_inline_images(input_email)

        self.assertStartsWith(
            output_email['body'],
            '<div><h3>test image</h3><img src="data:image/png;')
예제 #4
0
    def test_handles_exceptions_when_processing_image(self, mock_pil):
        mock_pil.open.side_effect = throw(IOError())
        handled_errors = []

        def on_error(*args):
            handled_errors.append(args)

        self.givenTestImage()
        input_email = {'body': '<div><h3>test image</h3><img src="http://test-url.png"/></div>'}

        output_email = email_parser.format_inline_images(input_email, on_error)

        self.assertEqual(len(handled_errors), 1)
        self.assertEqual(output_email, input_email)
    def __call__(self, resource_id: str):
        mime_email = email_receive.STORAGE.fetch_text(resource_id)

        email = parse_mime_email(mime_email)
        email = format_attachments(email)
        email = format_inline_images(email)
        server_datastore.store_email(resource_id, email)

        email_receive.STORAGE.delete(resource_id)

        self.log_event(
            events.EMAIL_STORED_FOR_CLIENT,
            {'domain': get_domain(email.get('from', ''))})  # noqa: E501
        return 'OK', 200
예제 #6
0
    def test_format_inline_images_without_img_tags(self):
        input_email = {'body': '<div></div>'}

        output_email = email_parser.format_inline_images(input_email, self.fail_if_called)

        self.assertEqual(output_email, input_email)
예제 #7
0
    def test_format_inline_images_with_img_tag_and_invalid_src_attribute(self):
        input_email = {'body': '<div><img src="foo:invalid"/></div>'}

        output_email = email_parser.format_inline_images(input_email, self.fail_if_called)

        self.assertEqual(output_email, input_email)
    def test_format_inline_images_with_img_tag_without_src_attribute(self):
        input_email = {'body': '<div><img/></div>'}

        output_email = email_parser.format_inline_images(input_email)

        self.assertEqual(output_email, input_email)
예제 #9
0
 def _parse_mime_email(cls, mime_email: str) -> dict:
     email = parse_mime_email(mime_email)
     email = format_attachments(email)
     email = format_inline_images(email)
     return email