This commit remove required alias on res.users model. It also removes the inheritance of mail.alias.mixin. The field alias_id is kept and allow people to use aliases on users if they want. However there is no default void alias created for each user anymore. Default from of mail.message does not use user alias anymore. Indeed this creates issues with aliases not being correctly configured and can be confusing compared to private channels. Using user aliases is therefore now done manually instead of being a default behavior.
127 lines
5.1 KiB
Python
127 lines
5.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import api
|
|
from odoo.tests import common
|
|
|
|
|
|
class TestMail(common.SavepointCase):
|
|
|
|
@classmethod
|
|
def _init_mock_build_email(cls):
|
|
cls._mails_args = []
|
|
cls._mails = []
|
|
|
|
def format_and_process(self, template, to='groups@example.com, other@gmail.com', subject='Frogs',
|
|
extra='', email_from='Sylvie Lelitre <test.sylvie.lelitre@agrolait.com>',
|
|
cc='', msg_id='<1198923581.41972151344608186760.JavaMail@agrolait.com>',
|
|
model=None, target_model='mail.channel', target_field='name'):
|
|
self.assertFalse(self.env[target_model].search([(target_field, '=', subject)]))
|
|
mail = template.format(to=to, subject=subject, cc=cc, extra=extra, email_from=email_from, msg_id=msg_id)
|
|
self.env['mail.thread'].with_context(mail_channel_noautofollow=True).message_process(model, mail)
|
|
return self.env[target_model].search([(target_field, '=', subject)])
|
|
|
|
def setUp(self):
|
|
super(TestMail, self).setUp()
|
|
self._mails_args[:] = []
|
|
self._mails[:] = []
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestMail, cls).setUpClass()
|
|
|
|
def build_email(self, *args, **kwargs):
|
|
cls._mails_args.append(args)
|
|
cls._mails.append(kwargs)
|
|
return build_email.origin(self, *args, **kwargs)
|
|
|
|
@api.model
|
|
def send_email(self, message, *args, **kwargs):
|
|
return message['Message-Id']
|
|
|
|
@api.multi
|
|
def mail_group_message_get_recipient_values(self, notif_message=None, recipient_ids=None):
|
|
return self.env['mail.thread'].message_get_recipient_values(notif_message=notif_message, recipient_ids=recipient_ids)
|
|
|
|
cls.env['ir.mail_server']._patch_method('build_email', build_email)
|
|
cls.env['ir.mail_server']._patch_method('send_email', send_email)
|
|
cls.env['mail.channel']._patch_method('message_get_recipient_values', mail_group_message_get_recipient_values)
|
|
|
|
# User groups
|
|
user_group_employee = cls.env.ref('base.group_user')
|
|
user_group_portal = cls.env.ref('base.group_portal')
|
|
user_group_public = cls.env.ref('base.group_public')
|
|
|
|
# User Data: employee, noone
|
|
Users = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True})
|
|
cls.user_employee = Users.create({
|
|
'name': 'Ernest Employee',
|
|
'login': 'ernest',
|
|
'email': 'e.e@example.com',
|
|
'signature': '--\nErnest',
|
|
'notify_email': 'always',
|
|
'groups_id': [(6, 0, [user_group_employee.id])]})
|
|
cls.user_public = Users.create({
|
|
'name': 'Bert Tartignole',
|
|
'login': 'bert',
|
|
'email': 'b.t@example.com',
|
|
'signature': 'SignBert',
|
|
'notify_email': 'always',
|
|
'groups_id': [(6, 0, [user_group_public.id])]})
|
|
cls.user_portal = Users.create({
|
|
'name': 'Chell Gladys',
|
|
'login': 'chell',
|
|
'email': 'chell@gladys.portal',
|
|
'signature': 'SignChell',
|
|
'notify_email': 'always',
|
|
'groups_id': [(6, 0, [user_group_portal.id])]})
|
|
cls.user_admin = cls.env.user
|
|
|
|
# Test Data for Partners
|
|
cls.partner_1 = cls.env['res.partner'].create({
|
|
'name': 'Valid Lelitre',
|
|
'email': 'valid.lelitre@agrolait.com',
|
|
'notify_email': 'always'})
|
|
cls.partner_2 = cls.env['res.partner'].create({
|
|
'name': 'Valid Poilvache',
|
|
'email': 'valid.other@gmail.com',
|
|
'notify_email': 'always'})
|
|
|
|
# Create test groups without followers and messages by default
|
|
TestMailGroup = cls.env['mail.channel'].with_context({
|
|
'mail_create_nolog': True,
|
|
'mail_create_nosubscribe': True,
|
|
'mail_channel_noautofollow': True,
|
|
})
|
|
# Pigs: base group for tests
|
|
cls.group_pigs = TestMailGroup.create({
|
|
'name': 'Pigs',
|
|
'description': 'Fans of Pigs, unite !',
|
|
'public': 'groups',
|
|
'group_public_id': user_group_employee.id,
|
|
'alias_name': 'pigs',
|
|
'alias_contact': 'followers'}
|
|
).with_context({'mail_create_nosubscribe': False})
|
|
# Jobs: public group
|
|
cls.group_public = TestMailGroup.create({
|
|
'name': 'Jobs',
|
|
'description': 'NotFalse',
|
|
'public': 'public',
|
|
'alias_name': 'public',
|
|
'alias_contact': 'everyone'}
|
|
).with_context({'mail_create_nosubscribe': False})
|
|
|
|
# remove default followers
|
|
cls.env['mail.followers'].search([
|
|
('res_model', '=', 'mail.channel'),
|
|
('res_id', 'in', (cls.group_pigs | cls.group_public).ids)]).unlink()
|
|
|
|
cls._init_mock_build_email()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
# Remove mocks
|
|
cls.env['ir.mail_server']._revert_method('build_email')
|
|
cls.env['ir.mail_server']._revert_method('send_email')
|
|
cls.env['mail.channel']._revert_method('message_get_recipient_values')
|
|
super(TestMail, cls).tearDownClass()
|