fixup! [MIG] mail_outbound_static: Migration to 15.0
This commit is contained in:
parent
b7bfb6d15f
commit
44e34aa1c0
@ -3,28 +3,27 @@
|
||||
|
||||
import logging
|
||||
import os
|
||||
import threading
|
||||
from email import message_from_string
|
||||
|
||||
from mock import MagicMock
|
||||
|
||||
import odoo.tools as tools
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
from odoo.addons.base.tests.common import MockSmtplibCase
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TestIrMailServer(TransactionCase):
|
||||
class TestIrMailServer(TransactionCase, MockSmtplibCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.email_from = "derp@example.com"
|
||||
cls.email_from_another = "another@example.com"
|
||||
cls.Model = cls.env["ir.mail_server"]
|
||||
cls.IrMailServer = cls.env["ir.mail_server"]
|
||||
cls.parameter_model = cls.env["ir.config_parameter"]
|
||||
cls._delete_mail_servers()
|
||||
cls.Model.create(
|
||||
cls.IrMailServer.create(
|
||||
{
|
||||
"name": "localhost",
|
||||
"smtp_host": "localhost",
|
||||
@ -40,14 +39,14 @@ class TestIrMailServer(TransactionCase):
|
||||
@classmethod
|
||||
def _delete_mail_servers(cls):
|
||||
"""Delete all available mail servers"""
|
||||
all_mail_servers = cls.Model.search([])
|
||||
all_mail_servers = cls.IrMailServer.search([])
|
||||
if all_mail_servers:
|
||||
all_mail_servers.unlink()
|
||||
|
||||
def _init_mail_server_domain_whilelist_based(self):
|
||||
self._delete_mail_servers()
|
||||
self.assertFalse(self.Model.search([]))
|
||||
self.mail_server_domainone = self.Model.create(
|
||||
self.assertFalse(self.IrMailServer.search([]))
|
||||
self.mail_server_domainone = self.IrMailServer.create(
|
||||
{
|
||||
"name": "sandbox domainone",
|
||||
"smtp_host": "localhost",
|
||||
@ -55,7 +54,7 @@ class TestIrMailServer(TransactionCase):
|
||||
"domain_whitelist": "domainone.com",
|
||||
}
|
||||
)
|
||||
self.mail_server_domaintwo = self.Model.create(
|
||||
self.mail_server_domaintwo = self.IrMailServer.create(
|
||||
{
|
||||
"name": "sandbox domaintwo",
|
||||
"smtp_host": "localhost",
|
||||
@ -63,7 +62,7 @@ class TestIrMailServer(TransactionCase):
|
||||
"domain_whitelist": "domaintwo.com",
|
||||
}
|
||||
)
|
||||
self.mail_server_domainthree = self.Model.create(
|
||||
self.mail_server_domainthree = self.IrMailServer.create(
|
||||
{
|
||||
"name": "sandbox domainthree",
|
||||
"smtp_host": "localhost",
|
||||
@ -76,27 +75,47 @@ class TestIrMailServer(TransactionCase):
|
||||
_logger.warn(reason)
|
||||
self.skipTest(reason)
|
||||
|
||||
def _send_mail(self, message=None, mail_server_id=None, smtp_server=None):
|
||||
if message is None:
|
||||
message = self.message
|
||||
connect = MagicMock()
|
||||
thread = threading.currentThread()
|
||||
thread.testing = False
|
||||
try:
|
||||
self.Model._patch_method("connect", connect)
|
||||
try:
|
||||
self.Model.send_email(message, mail_server_id, smtp_server)
|
||||
finally:
|
||||
self.Model._revert_method("connect")
|
||||
finally:
|
||||
thread.testing = True
|
||||
send_from, send_to, message_string = connect().sendmail.call_args[0]
|
||||
return message_from_string(message_string)
|
||||
def _send_mail(
|
||||
self,
|
||||
message,
|
||||
mail_server_id=None,
|
||||
smtp_server=None,
|
||||
smtp_port=None,
|
||||
smtp_user=None,
|
||||
smtp_password=None,
|
||||
smtp_encryption=None,
|
||||
smtp_ssl_certificate=None,
|
||||
smtp_ssl_private_key=None,
|
||||
smtp_debug=False,
|
||||
smtp_session=None,
|
||||
):
|
||||
smtp = smtp_session
|
||||
if not smtp:
|
||||
smtp = self.IrMailServer.connect(
|
||||
smtp_server,
|
||||
smtp_port,
|
||||
smtp_user,
|
||||
smtp_password,
|
||||
smtp_encryption,
|
||||
smtp_from=message["From"],
|
||||
ssl_certificate=smtp_ssl_certificate,
|
||||
ssl_private_key=smtp_ssl_private_key,
|
||||
smtp_debug=smtp_debug,
|
||||
mail_server_id=mail_server_id,
|
||||
)
|
||||
|
||||
send_from, send_to, message_string = self.IrMailServer._prepare_email_message(
|
||||
message, smtp
|
||||
)
|
||||
self.IrMailServer.send_email(message)
|
||||
return message_string
|
||||
|
||||
def test_send_email_injects_from_no_canonical(self):
|
||||
"""It should inject the FROM header correctly when no canonical name."""
|
||||
self.message.replace_header("From", "test@example.com")
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], self.email_from)
|
||||
|
||||
def test_send_email_injects_from_with_canonical(self):
|
||||
@ -114,8 +133,12 @@ class TestIrMailServer(TransactionCase):
|
||||
# Remove mail.bounce.alias to test Return-Path
|
||||
bounce_parameter.unlink()
|
||||
# Also check passing mail_server_id
|
||||
mail_server_id = self.Model.sudo().search([], order="sequence", limit=1)[0].id
|
||||
message = self._send_mail(mail_server_id=mail_server_id)
|
||||
mail_server_id = (
|
||||
self.IrMailServer.sudo().search([], order="sequence", limit=1)[0].id
|
||||
)
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message, mail_server_id=mail_server_id)
|
||||
self.assertEqual(message["From"], '"{}" <{}>'.format(user, self.email_from))
|
||||
self.assertEqual(
|
||||
message["Return-Path"], '"{}" <{}>'.format(user, self.email_from)
|
||||
@ -128,11 +151,13 @@ class TestIrMailServer(TransactionCase):
|
||||
expected_mail_server = self.mail_server_domainone
|
||||
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], email_from)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever(domain)
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever(domain)
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertEqual(
|
||||
used_mail_server,
|
||||
expected_mail_server,
|
||||
@ -147,11 +172,13 @@ class TestIrMailServer(TransactionCase):
|
||||
expected_mail_server = self.mail_server_domaintwo
|
||||
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], email_from)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever(domain)
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever(domain)
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertEqual(
|
||||
used_mail_server,
|
||||
expected_mail_server,
|
||||
@ -166,13 +193,15 @@ class TestIrMailServer(TransactionCase):
|
||||
expected_mail_server = self.mail_server_domainone
|
||||
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(
|
||||
message["From"], "Mitchell Admin <%s>" % expected_mail_server.smtp_from
|
||||
)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever(domain)
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever(domain)
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertEqual(
|
||||
used_mail_server,
|
||||
expected_mail_server,
|
||||
@ -186,7 +215,7 @@ class TestIrMailServer(TransactionCase):
|
||||
email_from = "Mitchell Admin <admin@%s>" % domain
|
||||
|
||||
self._delete_mail_servers()
|
||||
self.assertFalse(self.Model.search([]))
|
||||
self.assertFalse(self.IrMailServer.search([]))
|
||||
# Find config values
|
||||
config_smtp_from = tools.config.get("smtp_from")
|
||||
config_smtp_domain_whitelist = tools.config.get("smtp_domain_whitelist")
|
||||
@ -197,11 +226,13 @@ class TestIrMailServer(TransactionCase):
|
||||
)
|
||||
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], "Mitchell Admin <%s>" % config_smtp_from)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever("example.com")
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever("example.com")
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertFalse(
|
||||
used_mail_server, "using this mail server %s" % (used_mail_server.name)
|
||||
)
|
||||
@ -223,13 +254,15 @@ class TestIrMailServer(TransactionCase):
|
||||
email_from = "Mitchell Admin <admin@%s>" % domain
|
||||
|
||||
self._delete_mail_servers()
|
||||
self.assertFalse(self.Model.search([]))
|
||||
self.assertFalse(self.IrMailServer.search([]))
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], email_from)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever(domain)
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever(domain)
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertFalse(used_mail_server)
|
||||
|
||||
def test_06_from_outgoing_server_no_name_from(self):
|
||||
@ -239,11 +272,13 @@ class TestIrMailServer(TransactionCase):
|
||||
expected_mail_server = self.mail_server_domainone
|
||||
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], expected_mail_server.smtp_from)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever(domain)
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever(domain)
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertEqual(
|
||||
used_mail_server,
|
||||
expected_mail_server,
|
||||
@ -258,11 +293,13 @@ class TestIrMailServer(TransactionCase):
|
||||
expected_mail_server = self.mail_server_domainthree
|
||||
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], email_from)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever(domain)
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever(domain)
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertEqual(
|
||||
used_mail_server,
|
||||
expected_mail_server,
|
||||
@ -277,11 +314,13 @@ class TestIrMailServer(TransactionCase):
|
||||
expected_mail_server = self.mail_server_domainthree
|
||||
|
||||
self.message.replace_header("From", email_from)
|
||||
message = self._send_mail()
|
||||
# A mail server is configured for the email
|
||||
with self.mock_smtplib_connection():
|
||||
message = self._send_mail(self.message)
|
||||
self.assertEqual(message["From"], email_from)
|
||||
|
||||
used_mail_server = self.Model._get_mail_sever(domain)
|
||||
used_mail_server = self.Model.browse(used_mail_server)
|
||||
used_mail_server = self.IrMailServer._get_mail_sever(domain)
|
||||
used_mail_server = self.IrMailServer.browse(used_mail_server)
|
||||
self.assertEqual(
|
||||
used_mail_server,
|
||||
expected_mail_server,
|
||||
|
Loading…
Reference in New Issue
Block a user