Files
public/access_restricted/tests/test_allow_implied.py

87 lines
3.1 KiB
Python

from odoo.exceptions import AccessError
from odoo.tests.common import TransactionCase
GROUP = "base.group_multi_currency"
class TestAllowImplied(TransactionCase):
def _get_classified_groups(self, config):
groups = config._get_classified_fields()["group"]
return [g[0] for g in groups]
def setUp(self):
super().setUp()
self.group = self.env.ref(GROUP)
self.demo_user = self.env["res.users"].create({
"name": "Test Demo User",
"login": "test_demo_allow_implied",
"groups_id": [(6, 0, [self.env.ref("base.group_user").id])],
})
def test_base(self):
demo_user = self.demo_user
group_system = self.env.ref("base.group_system")
demo_user.write({"group_ids": [(3, self.group.id)]})
self.group.write({"users": [(3, demo_user.id)]})
self.assertFalse(self.env["res.users"].with_user(demo_user.id).has_group(GROUP))
demo_user.write({"group_ids": [(4, group_system.id)]})
test_config_settings = (
self.env["res.config.settings"]
.with_user(demo_user.id)
.create({"group_test_access_restricted": True})
)
self.assertFalse(self.env["res.users"].with_user(demo_user.id).has_group(GROUP))
# check that the field is readonly
self.assertTrue(
test_config_settings.fields_get()["group_test_access_restricted"][
"readonly"
]
)
# check that test group hasn't got appended to classified
self.assertNotIn(
"self.group", self._get_classified_groups(test_config_settings)
)
group_allow = self.env.ref(
"access_restricted.group_allow_add_implied_from_settings"
)
demo_user.write({"group_ids": [(4, group_allow.id)]})
# check that now the field is not readonly
self.assertFalse(
test_config_settings.fields_get()["group_test_access_restricted"][
"readonly"
]
)
# check that now the group is in classified
self.assertIn(
"group_test_access_restricted",
self._get_classified_groups(test_config_settings),
)
self.assertFalse(self.env["res.users"].with_user(demo_user.id).has_group(GROUP))
test_config_settings.with_user(demo_user.id).execute()
self.assertTrue(self.env["res.users"].with_user(demo_user.id).has_group(GROUP))
def test_assert_raises(self):
demo_user = self.demo_user
group_system = self.env.ref("base.group_system")
demo_user.write({"group_ids": [(3, self.group.id)]})
self.group.write({"users": [(3, demo_user.id)]})
self.assertFalse(self.env["res.users"].with_user(demo_user.id).has_group(GROUP))
demo_user.write({"group_ids": [(4, group_system.id)]})
self.assertFalse(self.env["res.users"].with_user(demo_user.id).has_group(GROUP))
# check that there is no access to put test group into implied_ids anyways
with self.assertRaises(AccessError):
group_system.with_user(demo_user.id).write(
{"implied_ids": [(4, self.group.id)]}
)