You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.6 KiB

  1. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
  2. import socket
  3. from odoo.addons.mail.tests.common import TestMail
  4. from odoo.addons.mail.tests.test_mail_gateway import MAIL_TEMPLATE
  5. from odoo.tools import mute_logger
  6. class TestFetchmailNotifyErrorToSender(TestMail):
  7. def setUp(self):
  8. super(TestFetchmailNotifyErrorToSender, self).setUp()
  9. self.fetchmail_server = self.env['fetchmail.server'].create({
  10. 'name': 'Test Fetchmail Server',
  11. 'type': 'imap',
  12. 'error_notice_template_id': self.env.ref('%s.%s' % (
  13. 'fetchmail_notify_error_to_sender',
  14. 'email_template_error_notice',
  15. )).id
  16. })
  17. def format_and_process_with_context(
  18. self, template, to_email='groups@example.com, other@gmail.com',
  19. subject='Frogs', extra='',
  20. email_from='Sylvie Lelitre <test.sylvie.lelitre@agrolait.com>',
  21. cc_email='',
  22. msg_id='<1198923581.41972151344608186760.JavaMail@agrolait.com>',
  23. model=None, target_model='mail.test', target_field='name', ctx=False,
  24. ):
  25. self.assertFalse(self.env[target_model].search([
  26. (target_field, '=', subject),
  27. ]))
  28. mail = template.format(
  29. to=to_email,
  30. subject=subject,
  31. cc=cc_email,
  32. extra=extra,
  33. email_from=email_from,
  34. msg_id=msg_id,
  35. )
  36. self.env['mail.thread'].with_context(ctx or {}).message_process(
  37. model,
  38. mail,
  39. )
  40. return self.env[target_model].search([(target_field, '=', subject)])
  41. @mute_logger('odoo.addons.mail.models.mail_thread', 'odoo.models')
  42. def test_message_process(self):
  43. email_from = 'valid.lelitre@agrolait.com'
  44. count_return_mails_before = self.env['mail.mail'].search_count([
  45. ('email_to', '=', email_from),
  46. ])
  47. with self.assertRaises(ValueError):
  48. self.format_and_process_with_context(
  49. MAIL_TEMPLATE,
  50. email_from=email_from,
  51. to_email='noone@example.com',
  52. subject='spam',
  53. extra='In-Reply-To: <12321321-openerp-%d-mail.test@%s>' % (
  54. self.test_public.id,
  55. socket.gethostname(),
  56. ),
  57. ctx={
  58. 'fetchmail_server_id': self.fetchmail_server.id,
  59. }
  60. )
  61. count_return_mails_after = self.env['mail.mail'].search_count([
  62. ('email_to', '=', email_from),
  63. ])
  64. self.assertEqual(
  65. count_return_mails_after,
  66. count_return_mails_before + 1,
  67. )