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

# 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"])