def setUp(self): super(TestHrHolidaysBase, self).setUp() # Test users to use through the various tests self.user_hruser = mail_new_test_user(self.env, login='******', groups='base.group_user,hr_holidays.group_hr_holidays_user') self.user_hruser_id = self.user_hruser.id self.user_hrmanager = mail_new_test_user(self.env, login='******', groups='base.group_user,hr_holidays.group_hr_holidays_manager') self.user_hrmanager_id = self.user_hrmanager.id self.user_employee = mail_new_test_user(self.env, login='******', groups='base.group_user') self.user_employee_id = self.user_employee.id self.user_hrmanager_2 = mail_new_test_user(self.env, login='******', groups='base.group_user,hr_holidays.group_hr_holidays_manager') self.user_hrmanager_2_id = self.user_hrmanager_2.id # Hr Data Department = self.env['hr.department'].with_context(tracking_disable=True) self.hr_dept = Department.create({ 'name': 'Human Resources', }) self.rd_dept = Department.create({ 'name': 'Research and devlopment', }) self.employee_emp = self.env['hr.employee'].create({ 'name': 'David Employee', 'user_id': self.user_employee_id, 'department_id': self.rd_dept.id, }) self.employee_emp_id = self.employee_emp.id self.employee_hruser = self.env['hr.employee'].create({ 'name': 'Armande HrUser', 'user_id': self.user_hruser_id, 'department_id': self.rd_dept.id, }) self.employee_hruser_id = self.employee_hruser.id self.employee_hrmanager = self.env['hr.employee'].create({ 'name': 'Bastien HrManager', 'user_id': self.user_hrmanager_id, 'department_id': self.hr_dept.id, }) self.employee_hrmanager_id = self.employee_hrmanager.id self.employee_hrmanager_2_id = self.env['hr.employee'].create({ 'name': 'Florence HrManager', 'user_id': self.user_hrmanager_2_id, 'parent_id': self.employee_hrmanager_id, }).id self.rd_dept.write({'manager_id': self.employee_hruser_id})
def setUp(self): super(TestMassMailPerformanceBase, self).setUp() self.user_employee = mail_new_test_user( self.env, login='******', groups='base.group_user', name='Ernest Employee', notification_type='inbox') self.user_marketing = mail_new_test_user( self.env, login='******', groups='base.group_user,mass_mailing.group_mass_mailing_user', name='Martial Marketing', signature='--\nMartial') # patch registry to simulate a ready environment self.patch(self.env.registry, 'ready', True)
def test_body_responsive(self): """ Testing mail mailing responsive mail body """ test_user = mail_new_test_user( self.env, login='******', groups='mass_mailing.group_mass_mailing_user,base.group_partner_manager' # TDE FIXME: check if really necessary for mass mailing ) test_record = self.env['res.partner'].create({'name': 'Mass Mail Partner'}) mass_mail_record = self.env['mail.mass_mailing'].sudo(test_user).create({ 'name': 'Test', 'state': 'draft', 'mailing_model_id': self.env.ref('base.model_res_partner').id, }) composer = self.env['mail.compose.message'].sudo(test_user).with_context({ 'default_composition_mode': 'mass_mail', 'default_model': 'res.partner', 'default_res_id': test_record.id, }).create({ 'subject': 'Mass Mail Responsive', 'body': 'I am Responsive body', 'mass_mailing_id': mass_mail_record.id }) mail_values = composer.get_mail_values([test_record.id]) body_html = str(mail_values[test_record.id]['body_html']) self.assertIn('<!DOCTYPE html>', body_html) self.assertIn('<head>', body_html) self.assertIn('viewport', body_html) self.assertIn('@media', body_html) self.assertIn('I am Responsive body', body_html)
def setUpClass(cls): super(TestMailResend, cls).setUpClass() #Two users cls.user1 = mail_new_test_user(cls.env, login='******', groups='base.group_public', name='Employee 1', email='e1') # invalid email cls.user2 = mail_new_test_user(cls.env, login='******', groups='base.group_portal', name='Employee 2', email='*****@*****.**') #Two partner cls.partner1 = cls.env['res.partner'].with_context( common.BaseFunctionalTest._test_context).create({ 'name': 'Partner 1', 'email': 'p1' # invalid email }) cls.partner2 = cls.env['res.partner'].with_context( common.BaseFunctionalTest._test_context).create({ 'name': 'Partner 2', 'email': '*****@*****.**' }) @api.model def send_email(self, message, *args, **kwargs): assert '@' in message['To'], self.NO_VALID_RECIPIENT return message['Message-Id'] cls.bus_update_failure = [] def sendone(self, channel, message): if 'type' in message and message['type'] == 'mail_failure': cls.bus_update_failure.append((channel, message)) cls.env['ir.mail_server']._patch_method('send_email', send_email) cls.env['bus.bus']._patch_method('sendone', sendone) cls.partners = cls.env['res.partner'].concat(cls.user1.partner_id, cls.user2.partner_id, cls.partner1, cls.partner2) cls.invalid_email_partners = cls.env['res.partner'].concat( cls.user1.partner_id, cls.partner1)
def setUp(self): super(TestHrCommon, self).setUp() self.res_users_hr_officer = mail_new_test_user( self.env, login='******', groups='base.group_user,hr.group_hr_user', name='HR Officer', email='*****@*****.**')
def setUpClass(cls): super(TestMessageAccess, cls).setUpClass() cls.user_public = mail_new_test_user(cls.env, login='******', groups='base.group_public', name='Bert Tartignole') cls.user_portal = mail_new_test_user(cls.env, login='******', groups='base.group_portal', name='Chell Gladys') Channel = cls.env['mail.channel'].with_context( common.BaseFunctionalTest._test_context) # Pigs: base group for tests cls.group_pigs = Channel.create({ 'name': 'Pigs', 'public': 'groups', 'group_public_id': cls.env.ref('base.group_user').id }) # Jobs: public group cls.group_public = Channel.create({ 'name': 'Jobs', 'description': 'NotFalse', 'public': 'public' }) # Private: private gtroup cls.group_private = Channel.create({ 'name': 'Private', 'public': 'private' }) cls.message = cls.env['mail.message'].create({ 'body': 'My Body', 'model': 'mail.channel', 'res_id': cls.group_private.id, })
def test_post_portal_crash(self): portal_user = mail_new_test_user(self.env, login='******', groups='base.group_portal', name='Chell Gladys') with self.assertRaises(AccessError): self.test_record.sudo(portal_user).message_post( body='<p>Test</p>', subject='Subject', message_type='comment', subtype='mt_comment')
def test_activity_flow_portal(self): portal_user = mail_new_test_user(self.env, login='******', groups='base.group_portal', name='Chell Gladys') with self.sudoAs('chell'): test_record = self.env['mail.test.activity'].browse(self.test_record.id) with self.assertRaises(exceptions.AccessError): self.env['mail.activity'].create({ 'summary': 'Test Activity', 'activity_type_id': self.env.ref('mail.mail_activity_data_email').id, 'res_model_id': self.env['ir.model']._get(test_record._name).id, 'res_id': test_record.id, })
def setUp(self): super(TestBLAccessRights, self).setUp() self.bl_rec = self.env['mail.blacklist'].create([ { 'email': 'Not A Stark <*****@*****.**>' }, ]) self.user_portal = mail_new_test_user(self.env, login='******', groups='base.group_portal') self.bl_previous = self.env['mail.blacklist'].search([])
def setUpClass(cls): super(MassMailingCase, cls).setUpClass() # be sure for some common data cls.user_employee.write({ 'login': '******', }) cls.user_marketing = mail_new_test_user( cls.env, login='******', groups='base.group_user,mass_mailing.group_mass_mailing_user', name='Martial Marketing', signature='--\nMartial')
def test_followers_subtypes_default_internal(self): user_portal = mail_new_test_user(self.env, login='******', groups='base.group_portal', name='Chell Gladys') test_record = self.test_record.sudo(self.user_employee) test_record.message_subscribe(partner_ids=[user_portal.partner_id.id]) self.assertEqual(test_record.message_partner_ids, user_portal.partner_id) follower = self.env['mail.followers'].search([ ('res_model', '=', 'mail.test.simple'), ('res_id', '=', test_record.id), ('partner_id', '=', user_portal.partner_id.id) ]) self.assertEqual(follower.subtype_ids, self.default_group_subtypes_portal)
def test_set_message_done_portal(self): user_portal = mail_new_test_user(self.env, login='******', groups='base.group_portal', name='Chell Gladys', notification_type='inbox') self.partner_portal = user_portal.partner_id with self.assertNotifications(partner_employee=(1, 'inbox', 'unread'), partner_portal=(1, 'inbox', 'read')): message = self.test_record.message_post( body='Test', message_type='comment', subtype='mail.mt_comment', partner_ids=[ self.user_employee.partner_id.id, user_portal.partner_id.id ]) message.sudo(user_portal).set_message_done()
def test_message_process_partner_find(self): """ Finding the partner based on email, based on partner / user / follower """ self.alias.write({'alias_force_thread_id': self.test_record.id}) from_1 = self.env['res.partner'].create({ 'name': 'Brice Denisse', 'email': '*****@*****.**' }) self.format_and_process( MAIL_TEMPLATE, msg_id='<1>', email_from='Brice Denisse <*****@*****.**>') self.assertEqual(self.test_record.message_ids[0].author_id, from_1) self.test_record.message_unsubscribe([from_1.id]) from_2 = mail_new_test_user(self.env, login='******', groups='base.group_user', name='Brice Denisse', email='*****@*****.**') self.format_and_process( MAIL_TEMPLATE, msg_id='<2>', email_from='Brice Denisse <*****@*****.**>') self.assertEqual(self.test_record.message_ids[0].author_id, from_2.partner_id) self.test_record.message_unsubscribe([from_2.partner_id.id]) from_3 = self.env['res.partner'].create({ 'name': 'Brice Denisse', 'email': '*****@*****.**' }) self.test_record.message_subscribe([from_3.id]) self.format_and_process( MAIL_TEMPLATE, msg_id='<3>', email_from='Brice Denisse <*****@*****.**>') self.assertEqual(self.test_record.message_ids[0].author_id, from_3)
def test_post_portal_ok(self): portal_user = mail_new_test_user(self.env, login='******', groups='base.group_portal', name='Chell Gladys') with patch.object(MailTestSimple, 'check_access_rights', return_value=True): self.test_record.message_subscribe( (self.partner_1 | self.user_employee.partner_id).ids) new_msg = self.test_record.sudo(portal_user).message_post( body='<p>Test</p>', subject='Subject', message_type='comment', subtype='mt_comment') self.assertEqual(new_msg.sudo().needaction_partner_ids, (self.partner_1 | self.user_employee.partner_id)) self.assertEmails(portal_user.partner_id, [[self.partner_1], [self.user_employee.partner_id]])
def test_message_compose_portal_ok(self): portal_user = mail_new_test_user(self.env, login='******', groups='base.group_portal', name='Chell Gladys') with patch.object(MailTestSimple, 'check_access_rights', return_value=True): ComposerPortal = self.env['mail.compose.message'].sudo(portal_user) ComposerPortal.with_context({ 'default_composition_mode': 'comment', 'default_model': self.test_record._name, 'default_res_id': self.test_record.id, }).create({ 'subject': 'Subject', 'body': '<p>Body text</p>', 'partner_ids': [] }).send_mail() self.assertEqual(self.test_record.message_ids[0].body, '<p>Body text</p>') self.assertEqual(self.test_record.message_ids[0].author_id, portal_user.partner_id) ComposerPortal.with_context({ 'default_composition_mode': 'comment', 'default_parent_id': self.test_record.message_ids.ids[0], }).create({ 'subject': 'Subject', 'body': '<p>Body text 2</p>' }).send_mail() self.assertEqual(self.test_record.message_ids[0].body, '<p>Body text 2</p>') self.assertEqual(self.test_record.message_ids[0].author_id, portal_user.partner_id)
def setUpClass(cls): super(AdvancedFollowersTest, cls).setUpClass() cls.user_portal = mail_new_test_user(cls.env, login='******', groups='base.group_portal', name='Chell Gladys') cls.partner_portal = cls.user_portal.partner_id cls.test_track = cls.env['mail.test.track'].sudo( cls.user_employee).create({ 'name': 'Test', }) Subtype = cls.env['mail.message.subtype'] # clean demo data to avoid interferences Subtype.search([('res_model', 'in', ['mail.test', 'mail.test.track'])]).unlink() # mail.test.track subtypes (aka: task records) cls.sub_track_1 = Subtype.create({ 'name': 'Track (with child relation) 1', 'default': False, 'res_model': 'mail.test.track' }) cls.sub_track_2 = Subtype.create({ 'name': 'Track (with child relation) 2', 'default': False, 'res_model': 'mail.test.track' }) cls.sub_track_nodef = Subtype.create({ 'name': 'Generic Track subtype', 'default': False, 'internal': False, 'res_model': 'mail.test.track' }) cls.sub_track_def = Subtype.create({ 'name': 'Default track subtype', 'default': True, 'internal': False, 'res_model': 'mail.test.track' }) # mail.test subtypes (aka: project records) cls.umb_nodef = Subtype.create({ 'name': 'Umbrella NoDefault', 'default': False, 'res_model': 'mail.test' }) cls.umb_def = Subtype.create({ 'name': 'Umbrella Default', 'default': True, 'res_model': 'mail.test' }) cls.umb_def_int = Subtype.create({ 'name': 'Umbrella Default', 'default': True, 'internal': True, 'res_model': 'mail.test' }) # -> subtypes for auto subscription from umbrella to sub records cls.umb_autosub_def = Subtype.create({ 'name': 'Umbrella AutoSub (default)', 'default': True, 'res_model': 'mail.test', 'parent_id': cls.sub_track_1.id, 'relation_field': 'umbrella_id' }) cls.umb_autosub_nodef = Subtype.create({ 'name': 'Umbrella AutoSub 2', 'default': False, 'res_model': 'mail.test', 'parent_id': cls.sub_track_2.id, 'relation_field': 'umbrella_id' }) # generic subtypes cls.sub_comment = cls.env.ref('mail.mt_comment') cls.sub_generic_int_nodef = Subtype.create({ 'name': 'Generic internal subtype', 'default': False, 'internal': True, }) cls.sub_generic_int_def = Subtype.create({ 'name': 'Generic internal subtype (default)', 'default': True, 'internal': True, })