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

  1. # Copyright 2022 Tecnativa - Víctor Martínez
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
  3. from lxml import etree
  4. from odoo.tests import common, new_test_user
  5. class TestPartnerCategorySecurity(common.SavepointCase):
  6. @classmethod
  7. def setUpClass(cls):
  8. super().setUpClass()
  9. cls.basic_user = new_test_user(
  10. cls.env,
  11. login="Test basic user",
  12. )
  13. cls.partner_category_user = new_test_user(
  14. cls.env,
  15. login="Test partner category user",
  16. groups="partner_category_security.group_partner_category_user",
  17. )
  18. cls.partner_category_manager = new_test_user(
  19. cls.env,
  20. login="Test partner category manager",
  21. groups="partner_category_security.group_partner_category_manager",
  22. )
  23. cls.partner_model = cls.env["res.partner"]
  24. cls.partner_category_model = cls.env["res.partner.category"]
  25. def test_check_access_rights_basic_user(self):
  26. model = self.partner_category_model.with_user(self.basic_user)
  27. self.assertTrue(model.check_access_rights("read", False))
  28. self.assertFalse(model.check_access_rights("write", False))
  29. self.assertFalse(model.check_access_rights("create", False))
  30. self.assertFalse(model.check_access_rights("unlink", False))
  31. def test_check_access_rights_partner_category_user(self):
  32. model = self.partner_category_model.with_user(self.partner_category_user)
  33. self.assertTrue(model.check_access_rights("read", False))
  34. self.assertFalse(model.check_access_rights("write", False))
  35. self.assertFalse(model.check_access_rights("create", False))
  36. self.assertFalse(model.check_access_rights("unlink", False))
  37. def test_check_access_rights_partner_category_manager(self):
  38. model = self.partner_category_model.with_user(self.partner_category_manager)
  39. self.assertTrue(model.check_access_rights("read", False))
  40. self.assertTrue(model.check_access_rights("write", False))
  41. self.assertTrue(model.check_access_rights("create", False))
  42. self.assertTrue(model.check_access_rights("unlink", False))
  43. def test_partner_model_fields_view_get(self):
  44. res = self.partner_model.with_user(self.basic_user).fields_view_get(
  45. view_type="form"
  46. )
  47. node = etree.XML(res["arch"]).xpath("//field[@name='category_id']")[0]
  48. self.assertTrue(res["fields"]["category_id"]["readonly"])
  49. self.assertEqual(node.get("readonly"), "1")
  50. self.assertEqual(node.get("force_save"), "1")
  51. res = self.partner_model.with_user(self.partner_category_user).fields_view_get(
  52. view_type="form"
  53. )
  54. self.assertFalse(res["fields"]["category_id"]["readonly"])
  55. res = self.partner_model.with_user(
  56. self.partner_category_manager
  57. ).fields_view_get(view_type="form")
  58. self.assertFalse(res["fields"]["category_id"]["readonly"])