87 lines
3.1 KiB
Python
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)]}
|
|
)
|