server-ux/base_import_security_group/tests/test_base_import_security_group.py
2022-06-29 20:41:04 +02:00

64 lines
2.4 KiB
Python

# Copyright 2017 Onestein (http://www.onestein.eu)
# Copyright 2021 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from flectra.tests import common, tagged
from flectra.tools import mute_logger
@tagged("-at_install", "post_install")
class TestImportSecurityGroup(common.HttpCase):
def setUp(self):
super().setUp()
self.Access = self.env["ir.model.access"]
self.user_test = self.env.ref("base.user_demo")
self.user_admin = self.env.ref("base.user_admin")
self.fields = (
"id",
"name",
"perm_read",
"perm_write",
"perm_create",
"perm_unlink",
)
self.data = [
("access_res_users_test", "res.users test", "1", "0", "0", "0"),
("access_res_users_test2", "res.users test2", "1", "1", "1", "1"),
]
def test_import_button(self):
"""Whether or not the import button is available depending on permissions"""
self.start_tour("/web", "button_import_ok", login="admin")
group = self.env.ref("base_import_security_group.group_import_csv")
group.users -= self.user_admin
self.start_tour("/web", "button_import_ko", login="admin")
def test_access_admin(self):
"""Admin user can import data"""
with mute_logger("flectra.sql_db"):
res = self.Access.with_user(self.user_admin).load(self.fields, self.data)
self.assertEqual(res["ids"], False)
self.assertEqual(len(res["messages"]), 2)
self.assertEqual(
res["messages"][0]["message"],
"Missing required value for the field 'Model' (model_id)",
)
self.assertEqual(
res["messages"][1]["message"],
"Missing required value for the field 'Model' (model_id)",
)
def test_access_demo(self):
"""Demo user cannot import data"""
self.user_test.write({"groups_id": [(4, self.ref("base.group_system"))]})
self.start_tour("/web", "button_import_ko", login="demo")
res2 = self.Access.with_user(self.user_test).load(self.fields, self.data)
self.assertEqual(res2["ids"], None)
self.assertEqual(len(res2["messages"]), 1)
self.assertEqual(
res2["messages"][0]["message"],
"User (ID: %s) is not allowed to import data in "
"model ir.model.access." % self.user_test.id,
)