diff --git a/addons/calendar_sms/security/sms_security.xml b/addons/calendar_sms/security/sms_security.xml index 05e82ec8920..4b6d11ccde9 100644 --- a/addons/calendar_sms/security/sms_security.xml +++ b/addons/calendar_sms/security/sms_security.xml @@ -1,9 +1,10 @@ - SMS Template: system administrator CRUD on calendar event templates + SMS Template: system administrator CUD on calendar event templates [('model_id.model', '=', 'calendar.event')] + diff --git a/addons/crm_sms/security/sms_security.xml b/addons/crm_sms/security/sms_security.xml index f5bf0769b15..b29ed067695 100644 --- a/addons/crm_sms/security/sms_security.xml +++ b/addons/crm_sms/security/sms_security.xml @@ -1,9 +1,10 @@ - SMS Template: sale manager CRUD on opportunity / partner templates + SMS Template: sale manager CUD on opportunity / partner templates [('model_id.model', 'in', ('crm.lead', 'res.partner'))] + diff --git a/addons/event_sms/security/sms_security.xml b/addons/event_sms/security/sms_security.xml index 4c7bfa9d80c..87f028ff232 100644 --- a/addons/event_sms/security/sms_security.xml +++ b/addons/event_sms/security/sms_security.xml @@ -1,9 +1,10 @@ - SMS Template: event manager CRUD on event / registrations templates + SMS Template: event manager CUD on event / registrations templates [('model_id.model', 'in', ('event.event', 'event.registration'))] + diff --git a/addons/hr_presence/security/sms_security.xml b/addons/hr_presence/security/sms_security.xml index 024ec0020a8..e70129a8592 100644 --- a/addons/hr_presence/security/sms_security.xml +++ b/addons/hr_presence/security/sms_security.xml @@ -1,9 +1,10 @@ - SMS Template: hr manager CRUD on employee templates + SMS Template: hr manager CUD on employee templates [('model_id.model', '=', 'hr.employee')] + diff --git a/addons/sms/tests/__init__.py b/addons/sms/tests/__init__.py index 511e649c9e2..609586bec6b 100644 --- a/addons/sms/tests/__init__.py +++ b/addons/sms/tests/__init__.py @@ -2,3 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import common +from . import test_sms_template diff --git a/addons/sms/tests/test_sms_template.py b/addons/sms/tests/test_sms_template.py new file mode 100644 index 00000000000..0f9f1513713 --- /dev/null +++ b/addons/sms/tests/test_sms_template.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.tests.common import TransactionCase, users +from odoo.addons.mail.tests.common import mail_new_test_user +from odoo.tests import tagged +from odoo.exceptions import AccessError + + +@tagged('post_install') +class TestSmsTemplateAccessRights(TransactionCase): + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user_admin = mail_new_test_user(cls.env, login='user_system', groups='base.group_system') + cls.basic_user = mail_new_test_user(cls.env, login='user_employee', groups='base.group_user') + sms_enabled_models = cls.env['ir.model'].search([('is_mail_thread_sms', '=', True), ('transient', '=', False)]) + vals = [] + for model in sms_enabled_models: + vals.append({ + 'name': 'SMS Template ' + model.name, + 'body': 'Body Test', + 'model_id': model.id, + }) + cls.sms_templates = cls.env['sms.template'].create(vals) + + @users('user_employee') + def test_access_rights_user_sms_template(self): + # Check if a member of group_user can only read on sms.template + for sms_template in self.env['sms.template'].browse(self.sms_templates.ids): + self.assertTrue(bool(sms_template.name)) + with self.assertRaises(AccessError): + sms_template.write({'name': 'Update Template'}) + with self.assertRaises(AccessError): + self.env['sms.template'].create({ + 'name': 'New SMS Template ' + sms_template.model_id.name, + 'body': 'Body Test', + 'model_id': sms_template.model_id.id, + }) + with self.assertRaises(AccessError): + sms_template.unlink() + + @users('user_system') + def test_access_rights_manager_sms_template(self): + admin = self.env.ref('base.user_admin') + for sms_template in self.env['sms.template'].browse(self.sms_templates.ids): + self.assertTrue(bool(sms_template.name)) + sms_template.write({'body': 'New body from admin'}) + self.env['sms.template'].create({ + 'name': 'New SMS Template ' + sms_template.model_id.name, + 'body': 'Body Test', + 'model_id': sms_template.model_id.id, + }) + + # check admin is allowed to read all templates since he can be a member of + # other groups applying restrictions based on the model + self.assertTrue(bool(self.env['sms.template'].with_user(admin).browse(sms_template.ids).name)) + + sms_template.unlink() diff --git a/addons/stock_sms/security/sms_security.xml b/addons/stock_sms/security/sms_security.xml index d6a79e98b7d..5416932e921 100644 --- a/addons/stock_sms/security/sms_security.xml +++ b/addons/stock_sms/security/sms_security.xml @@ -2,10 +2,11 @@ - SMS Template: stock manager CRUD on stock picking templates + SMS Template: stock manager CUD on stock picking templates [('model_id.model', '=', 'stock.picking')] +