|
@ -2,6 +2,7 @@ |
|
|
# 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 odoo.tests.common import TransactionCase |
|
|
from odoo.tests.common import TransactionCase |
|
|
|
|
|
from mock import patch |
|
|
from requests import get |
|
|
from requests import get |
|
|
from base64 import b64encode |
|
|
from base64 import b64encode |
|
|
from lxml.html.soupparser import fromstring |
|
|
from lxml.html.soupparser import fromstring |
|
@ -13,7 +14,11 @@ class TestMailEmbedImage(TransactionCase): |
|
|
post_install = True |
|
|
post_install = True |
|
|
at_install = False |
|
|
at_install = False |
|
|
|
|
|
|
|
|
def test_mail_embed_image(self): |
|
|
|
|
|
|
|
|
@patch( |
|
|
|
|
|
'odoo.fields.html_sanitize', |
|
|
|
|
|
side_effect=lambda *args, **kwargs: args[0], |
|
|
|
|
|
) |
|
|
|
|
|
def test_mail_embed_image(self, html_sanitize): |
|
|
""" The following are tested here: |
|
|
""" The following are tested here: |
|
|
1) Create an email with no image, send it. |
|
|
1) Create an email with no image, send it. |
|
|
2) Create an email with three images, one base64 content, one http |
|
|
2) Create an email with three images, one base64 content, one http |
|
@ -27,12 +32,13 @@ class TestMailEmbedImage(TransactionCase): |
|
|
image_url = base_url + '/mail_embed_image/static/description/icon.png' |
|
|
image_url = base_url + '/mail_embed_image/static/description/icon.png' |
|
|
image = get(image_url).content |
|
|
image = get(image_url).content |
|
|
body1 = '<div>this is an email</div>' |
|
|
body1 = '<div>this is an email</div>' |
|
|
email1 = model_mail_mail.create({'body': body1}) |
|
|
|
|
|
|
|
|
email1 = model_mail_mail.create({ |
|
|
|
|
|
'body_html': body1, |
|
|
|
|
|
'body': body1, |
|
|
|
|
|
'email_to': 'test@example.com', |
|
|
|
|
|
}) |
|
|
email1.send() |
|
|
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) |
|
|
|
|
|
|
|
|
self.assertEquals(email1.body_html, body1) |
|
|
body2 = """ |
|
|
body2 = """ |
|
|
<div> |
|
|
<div> |
|
|
this is an email |
|
|
this is an email |
|
@ -44,12 +50,12 @@ class TestMailEmbedImage(TransactionCase): |
|
|
image_url, |
|
|
image_url, |
|
|
'/web/image/res.partner/1/image', |
|
|
'/web/image/res.partner/1/image', |
|
|
) |
|
|
) |
|
|
email2 = model_mail_mail.create({'body': body2}) |
|
|
|
|
|
|
|
|
email2 = model_mail_mail.create({ |
|
|
|
|
|
'body_html': body2, |
|
|
|
|
|
'email_to': 'test@example.com', |
|
|
|
|
|
}) |
|
|
email2.send() |
|
|
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) |
|
|
|
|
|
|
|
|
body2final = fromstring(email2.body_html) |
|
|
self.assertEquals(len(body2final.xpath('//img')), 3) |
|
|
self.assertEquals(len(body2final.xpath('//img')), 3) |
|
|
srcs = [x.get('src') for x in body2final.xpath('//img')] |
|
|
srcs = [x.get('src') for x in body2final.xpath('//img')] |
|
|
self.assertIn('base64:', srcs[0]) |
|
|
self.assertIn('base64:', srcs[0]) |
|
|