Exemplo n.º 1
0
    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})
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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='*****@*****.**')
Exemplo n.º 6
0
    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,
        })
Exemplo n.º 7
0
    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')
Exemplo n.º 8
0
    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,
                })
Exemplo n.º 9
0
    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([])
Exemplo n.º 10
0
    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')
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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()
Exemplo n.º 13
0
    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)
Exemplo n.º 14
0
    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]])
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
    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,
        })