[REF] test_mail: reorganize activity tests

Purpose is to separate tests related to access rights (low level), base
activity features and mixin itself. It eases understanding of tests and
prepare future addition of tests.

This commit is linked to task ID 1856417.
This commit is contained in:
Thibault Delavallée
2018-10-02 16:05:17 +02:00
parent db70862ccd
commit d5131fe976
+61 -50
View File
@@ -14,12 +14,11 @@ from odoo.addons.test_mail.models.test_mail_models import MailTestActivity
from odoo.tools import mute_logger
@tests.tagged('mail_activity')
class TestMailActivity(BaseFunctionalTest):
class TestActivityCommon(BaseFunctionalTest):
@classmethod
def setUpClass(cls):
super(TestMailActivity, cls).setUpClass()
super(TestActivityCommon, cls).setUpClass()
cls.test_record = cls.env['mail.test.activity'].with_context(cls._quick_create_ctx).create({'name': 'Test'})
# reset ctx
cls.test_record = cls.test_record.with_context(
@@ -28,6 +27,41 @@ class TestMailActivity(BaseFunctionalTest):
mail_notrack=False
)
@tests.tagged('mail_activity')
class TestActivityRights(TestActivityCommon):
def test_activity_security_user_access(self):
activity = self.test_record.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_employee.id)
activity2 = self.test_record.activity_schedule('test_mail.mail_act_test_todo')
activity2.write({'user_id': self.user_employee.id})
def test_activity_security_user_noaccess(self):
def _employee_crash(*args, **kwargs):
""" If employee is test employee, consider he has no access on document """
recordset = args[0]
if recordset.env.uid == self.user_employee.id:
raise exceptions.AccessError('Hop hop hop Ernest, please step back.')
return DEFAULT
with patch.object(MailTestActivity, 'check_access_rights', autospec=True, side_effect=_employee_crash):
with self.assertRaises(exceptions.UserError):
activity = self.test_record.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_employee.id)
activity2 = self.test_record.activity_schedule('test_mail.mail_act_test_todo')
with self.assertRaises(exceptions.UserError):
activity2.write({'user_id': self.user_employee.id})
@tests.tagged('mail_activity')
class TestActivityFlow(TestActivityCommon):
def test_activity_flow_employee(self):
with self.sudoAs('ernest'):
test_record = self.env['mail.test.activity'].browse(self.test_record.id)
@@ -75,6 +109,30 @@ class TestMailActivity(BaseFunctionalTest):
'res_id': test_record.id,
})
def test_activity_notify_other_user(self):
self.user_admin.notification_type = 'email'
rec = self.test_record.sudo(self.user_employee)
with self.assertNotifications(partner_admin=(1, 'email', 'read')):
activity = rec.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_admin.id)
self.assertEqual(activity.create_user_id, self.user_employee)
self.assertEqual(activity.user_id, self.user_admin)
def test_activity_notify_same_user(self):
self.user_employee.notification_type = 'email'
rec = self.test_record.sudo(self.user_employee)
with self.assertNotifications(partner_employee=(0, 'email', 'read')):
activity = rec.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_employee.id)
self.assertEqual(activity.create_user_id, self.user_employee)
self.assertEqual(activity.user_id, self.user_employee)
@tests.tagged('mail_activity')
class TestActivityMixin(TestActivityCommon):
def test_activity_mixin(self):
self.user_employee.tz = self.user_admin.tz
with self.sudoAs('ernest'):
@@ -176,50 +234,3 @@ class TestMailActivity(BaseFunctionalTest):
user_id=self.user_admin.id,
new_user_id=self.user_employee.id)
self.assertEqual(rec.activity_ids[0].user_id, self.user_employee)
def test_activity_notify_other_user(self):
self.user_admin.notification_type = 'email'
rec = self.test_record.sudo(self.user_employee)
with self.assertNotifications(partner_admin=(1, 'email', 'read')):
activity = rec.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_admin.id)
self.assertEqual(activity.create_user_id, self.user_employee)
self.assertEqual(activity.user_id, self.user_admin)
def test_activity_notify_same_user(self):
self.user_employee.notification_type = 'email'
rec = self.test_record.sudo(self.user_employee)
with self.assertNotifications(partner_employee=(0, 'email', 'read')):
activity = rec.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_employee.id)
self.assertEqual(activity.create_user_id, self.user_employee)
self.assertEqual(activity.user_id, self.user_employee)
def test_activity_security_user_access(self):
activity = self.test_record.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_employee.id)
activity2 = self.test_record.activity_schedule('test_mail.mail_act_test_todo')
activity2.write({'user_id': self.user_employee.id})
def test_activity_security_user_noaccess(self):
def _employee_crash(*args, **kwargs):
""" If employee is test employee, consider he has no access on document """
recordset = args[0]
if recordset.env.uid == self.user_employee.id:
raise exceptions.AccessError('Hop hop hop Ernest, please step back.')
return DEFAULT
with patch.object(MailTestActivity, 'check_access_rights', autospec=True, side_effect=_employee_crash):
with self.assertRaises(exceptions.UserError):
activity = self.test_record.activity_schedule(
'test_mail.mail_act_test_todo',
user_id=self.user_employee.id)
activity2 = self.test_record.activity_schedule('test_mail.mail_act_test_todo')
with self.assertRaises(exceptions.UserError):
activity2.write({'user_id': self.user_employee.id})