You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.9 KiB
65 lines
2.9 KiB
# Copyright 2022 Tecnativa - Víctor Martínez
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
from lxml import etree
|
|
|
|
from odoo.tests import common, new_test_user
|
|
|
|
|
|
class TestPartnerCategorySecurity(common.SavepointCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.basic_user = new_test_user(
|
|
cls.env,
|
|
login="Test basic user",
|
|
)
|
|
cls.partner_category_user = new_test_user(
|
|
cls.env,
|
|
login="Test partner category user",
|
|
groups="partner_category_security.group_partner_category_user",
|
|
)
|
|
cls.partner_category_manager = new_test_user(
|
|
cls.env,
|
|
login="Test partner category manager",
|
|
groups="partner_category_security.group_partner_category_manager",
|
|
)
|
|
cls.partner_model = cls.env["res.partner"]
|
|
cls.partner_category_model = cls.env["res.partner.category"]
|
|
|
|
def test_check_access_rights_basic_user(self):
|
|
model = self.partner_category_model.with_user(self.basic_user)
|
|
self.assertTrue(model.check_access_rights("read", False))
|
|
self.assertFalse(model.check_access_rights("write", False))
|
|
self.assertFalse(model.check_access_rights("create", False))
|
|
self.assertFalse(model.check_access_rights("unlink", False))
|
|
|
|
def test_check_access_rights_partner_category_user(self):
|
|
model = self.partner_category_model.with_user(self.partner_category_user)
|
|
self.assertTrue(model.check_access_rights("read", False))
|
|
self.assertFalse(model.check_access_rights("write", False))
|
|
self.assertFalse(model.check_access_rights("create", False))
|
|
self.assertFalse(model.check_access_rights("unlink", False))
|
|
|
|
def test_check_access_rights_partner_category_manager(self):
|
|
model = self.partner_category_model.with_user(self.partner_category_manager)
|
|
self.assertTrue(model.check_access_rights("read", False))
|
|
self.assertTrue(model.check_access_rights("write", False))
|
|
self.assertTrue(model.check_access_rights("create", False))
|
|
self.assertTrue(model.check_access_rights("unlink", False))
|
|
|
|
def test_partner_model_fields_view_get(self):
|
|
res = self.partner_model.with_user(self.basic_user).fields_view_get(
|
|
view_type="form"
|
|
)
|
|
node = etree.XML(res["arch"]).xpath("//field[@name='category_id']")[0]
|
|
self.assertTrue(res["fields"]["category_id"]["readonly"])
|
|
self.assertEqual(node.get("readonly"), "1")
|
|
self.assertEqual(node.get("force_save"), "1")
|
|
res = self.partner_model.with_user(self.partner_category_user).fields_view_get(
|
|
view_type="form"
|
|
)
|
|
self.assertFalse(res["fields"]["category_id"]["readonly"])
|
|
res = self.partner_model.with_user(
|
|
self.partner_category_manager
|
|
).fields_view_get(view_type="form")
|
|
self.assertFalse(res["fields"]["category_id"]["readonly"])
|