Browse Source

fixup! fixup! fixup! fixup! [ADD] mail_embed_image module

pull/404/head
George Daramouskas 5 years ago
parent
commit
f92a807960
No known key found for this signature in database GPG Key ID: 5B4EF742F8CD859C
  1. 1
      mail_embed_image/models/ir_mail_server.py
  2. 62
      mail_embed_image/tests/test_mail_embed_image.py

1
mail_embed_image/models/ir_mail_server.py

@ -6,7 +6,6 @@ import uuid
from odoo import models from odoo import models
from odoo.addons.base.ir.ir_mail_server import encode_header_param from odoo.addons.base.ir.ir_mail_server import encode_header_param
from lxml.html.soupparser import fromstring from lxml.html.soupparser import fromstring
from lxml import etree
from lxml.etree import tostring from lxml.etree import tostring
from base64 import b64encode from base64 import b64encode
from email.mime.image import MIMEImage from email.mime.image import MIMEImage

62
mail_embed_image/tests/test_mail_embed_image.py

@ -1,8 +1,11 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright 2019 Therp BV <https://therp.nl> # Copyright 2019 Therp BV <https://therp.nl>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from openerp.tests.common import TransactionCase
from lxml import etree
from odoo.tests.common import TransactionCase
from requests import get
from base64 import b64encode
from lxml.html.soupparser import fromstring
from odoo.addons.base.ir.ir_mail_server import encode_header_param
class TestMailEmbedImage(TransactionCase): class TestMailEmbedImage(TransactionCase):
@ -11,15 +14,46 @@ class TestMailEmbedImage(TransactionCase):
at_install = False at_install = False
def test_mail_embed_image(self): def test_mail_embed_image(self):
server = self.env['ir.mail_server']
root = etree.Element('div')
etree.SubElement(root, 'img')
etree.SubElement(root, 'img')
body = etree.tostring(root)
message = server.build_email(
'test@example.com',
'test@example.com',
'subject',
body,
)
# TODO assertions
""" The following are tested here:
1) Create an email with no image, send it.
2) Create an email with three images, one base64 content, one http
full url and one of the format `/web/image/.*`
We assert that nothing has changed on 1) and only the `/web/image/.*`
has changed in 2)
"""
model_mail_mail = self.env['mail.mail']
base_url = self.env['ir.config_parameter'].get_param('web.base.url')
image_url = base_url + '/mail_embed_image/static/description/icon.png'
image = get(image_url).content
body1 = '<div>this is an email</div>'
email1 = model_mail_mail.create({'body': body1})
email1.send()
message_body = self.env.cr.execute(
"SELECT body FROM mail_message WHERE message_id = %s LIMIT 1",
(email1.message_id, ))
self.assertEquals(message_body, body1)
body2 = """
<div>
this is an email
<img src="base64: %s"></img>
<img src="%s"></img>
<img src="%s"></img>
</div>""" % (
b64encode(image),
image_url,
'/web/image/res.partner/1/image',
)
email2 = model_mail_mail.create({'body': body2})
email2.send()
message_body = self.env.cr.execute(
"SELECT body FROM mail_message WHERE message_id = %s LIMIT 1",
(email1.message_id, ))
body2final = fromstring(message_body)
self.assertEquals(len(body2final.xpath('//img')), 3)
srcs = [x.get('src') for x in body2final.xpath('//img')]
self.assertIn('base64:', srcs[0])
self.assertIn('http:', srcs[1])
self.assertIn('cid:', srcs[2])
cid = srcs[2][3:]
self.assertEquals(email2.attachment_ids.name, encode_header_param(cid))
Loading…
Cancel
Save