mirror of
https://gitlab.com/flectra-community/server-ux.git
synced 2024-07-06 18:40:29 +00:00
128 lines
4.6 KiB
Python
128 lines
4.6 KiB
Python
# Copyright 2020 ForgeFlow S.L.
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
from flectra.exceptions import AccessError
|
|
from flectra.tests import common
|
|
|
|
|
|
class TestFilterMultiUser(common.SavepointCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.env = cls.env(
|
|
context=dict(cls.env.context, tracking_disable=True, no_reset_password=True)
|
|
)
|
|
cls.filter_model = cls.env["ir.filters"]
|
|
cls.user_model = cls.env["res.users"]
|
|
|
|
cls.group_user = cls.env.ref("base.group_user")
|
|
cls.group_private = cls.env["res.groups"].create({"name": "Test Group"})
|
|
|
|
cls.user_1 = cls._create_user("user_1", [cls.group_user, cls.group_private])
|
|
cls.user_2 = cls._create_user("user_2", [cls.group_user])
|
|
cls.user_3 = cls._create_user("user_3", [cls.group_user, cls.group_private])
|
|
|
|
@classmethod
|
|
def _create_user(cls, login, groups):
|
|
group_ids = [group.id for group in groups]
|
|
user = cls.user_model.create(
|
|
{
|
|
"name": "Test User",
|
|
"login": login,
|
|
"password": "demo",
|
|
"email": "%s@yourcompany.com" % login,
|
|
"groups_id": [(6, 0, group_ids)],
|
|
}
|
|
)
|
|
return user
|
|
|
|
def test_01_no_multi_user(self):
|
|
test_filter = self.filter_model.create(
|
|
{
|
|
"name": "Test filter",
|
|
"model_id": "ir.filters",
|
|
"user_id": self.user_1.id,
|
|
}
|
|
)
|
|
self.assertTrue(test_filter.with_user(self.user_1).name)
|
|
test_filter.invalidate_cache()
|
|
with self.assertRaises(AccessError):
|
|
self.assertTrue(test_filter.with_user(self.user_2).name)
|
|
|
|
def test_02_multi_user(self):
|
|
test_filter = self.filter_model.create(
|
|
{
|
|
"name": "Test filter",
|
|
"model_id": "ir.filters",
|
|
"user_id": self.user_1.id,
|
|
"manual_user_ids": [(6, 0, (self.user_1 + self.user_2).ids)],
|
|
}
|
|
)
|
|
self.assertTrue(test_filter.with_user(self.user_1).name)
|
|
test_filter.invalidate_cache()
|
|
self.assertTrue(test_filter.with_user(self.user_2).name)
|
|
|
|
def test_03_get_filters(self):
|
|
test_filter_1 = self.filter_model.create(
|
|
{
|
|
"name": "Test filter - specific user",
|
|
"model_id": "ir.filters",
|
|
"manual_user_ids": [(6, 0, (self.user_1 + self.user_2).ids)],
|
|
}
|
|
)
|
|
test_filter_2 = self.filter_model.create(
|
|
{
|
|
"name": "Test filter 2 - Regular",
|
|
"model_id": "ir.filters",
|
|
"user_id": self.user_1.id,
|
|
}
|
|
)
|
|
test_filter_3 = self.filter_model.create(
|
|
{
|
|
"name": "Test filter 3 - Group",
|
|
"model_id": "ir.filters",
|
|
"user_id": self.user_1.id,
|
|
"group_ids": [(6, 0, self.group_private.ids)],
|
|
}
|
|
)
|
|
# User 1:
|
|
res = self.filter_model.with_user(self.user_1).get_filters("ir.filters")
|
|
result = []
|
|
for filter in res:
|
|
result.append(filter.get("id"))
|
|
self.assertIn(test_filter_1.id, result)
|
|
self.assertIn(test_filter_2.id, result)
|
|
self.assertIn(test_filter_3.id, result)
|
|
# User 2:
|
|
res = self.filter_model.with_user(self.user_2).get_filters("ir.filters")
|
|
result = []
|
|
for filter in res:
|
|
result.append(filter.get("id"))
|
|
self.assertIn(test_filter_1.id, result)
|
|
self.assertNotIn(test_filter_2.id, result)
|
|
self.assertNotIn(test_filter_3.id, result)
|
|
# User 3:
|
|
res = self.filter_model.with_user(self.user_3).get_filters("ir.filters")
|
|
result = []
|
|
for filter in res:
|
|
result.append(filter.get("id"))
|
|
self.assertNotIn(test_filter_1.id, result)
|
|
self.assertNotIn(test_filter_2.id, result)
|
|
self.assertIn(test_filter_3.id, result)
|
|
|
|
def test_04_group_filter(self):
|
|
test_filter = self.filter_model.create(
|
|
{
|
|
"name": "Test filter",
|
|
"model_id": "ir.filters",
|
|
"user_id": self.user_1.id,
|
|
"group_ids": [(6, 0, self.group_private.ids)],
|
|
}
|
|
)
|
|
self.assertTrue(test_filter.with_user(self.user_1).name)
|
|
test_filter.invalidate_cache()
|
|
with self.assertRaises(AccessError):
|
|
self.assertTrue(test_filter.with_user(self.user_2).name)
|
|
test_filter.invalidate_cache()
|
|
self.assertTrue(test_filter.with_user(self.user_3).name)
|