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.
63 lines
2.7 KiB
63 lines
2.7 KiB
# Copyright 2021 Open Source Integrators
|
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class TestUserRoleCompany(TransactionCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
# COMPANIES
|
|
self.Company = self.env["res.company"]
|
|
self.company1 = self.env.ref("base.main_company")
|
|
self.company2 = self.Company.create({"name": "company2"})
|
|
# GROUPS for roles
|
|
self.groupA = self.env.ref("base.group_user")
|
|
self.groupB = self.env.ref("base.group_system")
|
|
self.groupC = self.env.ref("base.group_partner_manager")
|
|
# ROLES
|
|
self.Role = self.env["res.users.role"]
|
|
self.roleA = self.Role.create({"name": "ROLE All Companies"})
|
|
self.roleA.implied_ids |= self.groupA
|
|
self.roleB = self.Role.create({"name": "ROLE Company 1"})
|
|
self.roleB.implied_ids |= self.groupB
|
|
self.roleC = self.Role.create({"name": "ROLE Company 1 and 2"})
|
|
self.roleC.implied_ids |= self.groupC
|
|
# USER
|
|
# ==Role=== ==Company== C1 C2 C1+C2
|
|
# Role A Yes Yes Yes
|
|
# Role B Company1 Yes
|
|
# Role C Company1 Yes Yes
|
|
# Role C Company2 Yes Yes
|
|
self.User = self.env["res.users"]
|
|
user_vals = {
|
|
"name": "ROLES TEST USER",
|
|
"login": "test_user",
|
|
"company_ids": [(6, 0, [self.company1.id, self.company2.id])],
|
|
"role_line_ids": [
|
|
(0, 0, {"role_id": self.roleA.id}),
|
|
(0, 0, {"role_id": self.roleB.id, "company_id": self.company1.id}),
|
|
(0, 0, {"role_id": self.roleC.id, "company_id": self.company1.id}),
|
|
(0, 0, {"role_id": self.roleC.id, "company_id": self.company2.id}),
|
|
],
|
|
}
|
|
self.test_user = self.User.create(user_vals)
|
|
|
|
def test_110_company_1(self):
|
|
"Company 1 selected: Roles A, B and C are enabled"
|
|
self.test_user.set_groups_from_roles(company_id=self.company1.id)
|
|
expected = self.groupA | self.groupB | self.groupC
|
|
found = self.test_user.groups_id.filtered(lambda x: x in expected)
|
|
self.assertEqual(expected, found)
|
|
|
|
def test_120_company_2(self):
|
|
"Company 2 selected: Roles A and C are enabled"
|
|
self.test_user.set_groups_from_roles(company_id=self.company2.id)
|
|
enabled = self.test_user.groups_id
|
|
expected = self.groupA | self.groupC
|
|
found = enabled.filtered(lambda x: x in expected)
|
|
self.assertEqual(expected, found)
|
|
|
|
not_expected = self.groupB
|
|
found = enabled.filtered(lambda x: x in not_expected)
|
|
self.assertFalse(found)
|