mirror of
https://github.com/OCA/knowledge.git
synced 2025-12-18 19:32:19 -06:00
[IMP] document_page_access_group: Users compatibility
TT48786
This commit is contained in:
committed by
Bhavesh Heliconia
parent
a6e2e785f8
commit
f57f6b6fe2
37
document_page_access_group/tests/common.py
Normal file
37
document_page_access_group/tests/common.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
from odoo.tests import new_test_user
|
||||
|
||||
from odoo.addons.base.tests.common import BaseCommon
|
||||
|
||||
|
||||
class TestDocumentPageAccessGroupBase(BaseCommon):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.group = cls.env["res.groups"].create({"name": "Test group"})
|
||||
cls.user = new_test_user(
|
||||
cls.env, login="test-user", groups="document_knowledge.group_document_user"
|
||||
)
|
||||
cls.manager_user = new_test_user(
|
||||
cls.env,
|
||||
login="test-manager-user",
|
||||
groups="document_knowledge.group_document_user",
|
||||
)
|
||||
cls.manager_user.write({"groups_id": [(4, cls.group.id)]})
|
||||
cls.public_page = cls.env["document.page"].create(
|
||||
{"name": "Public Page", "type": "content"}
|
||||
)
|
||||
cls.knowledge_page = cls.env["document.page"].create(
|
||||
{
|
||||
"name": "Knowledge Page",
|
||||
"type": "content",
|
||||
"groups_id": [(6, 0, [cls.group.id])],
|
||||
}
|
||||
)
|
||||
cls.user_page = cls.env["document.page"].create(
|
||||
{
|
||||
"name": "User Page (basic user)",
|
||||
"type": "content",
|
||||
"user_ids": [(6, 0, [cls.user.id])],
|
||||
}
|
||||
)
|
||||
@@ -1,29 +1,25 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tests import common
|
||||
from odoo.tests.common import users
|
||||
|
||||
from .common import TestDocumentPageAccessGroupBase
|
||||
|
||||
|
||||
class TestDocumentPageAccessGroup(common.TransactionCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.document_user_group = self.browse_ref(
|
||||
"document_knowledge.group_document_user"
|
||||
).id
|
||||
self.test_group = self.browse_ref("base.group_erp_manager").id
|
||||
self.user_id = self.env["res.users"].create(
|
||||
{
|
||||
"name": "user",
|
||||
"login": "user_login",
|
||||
"email": "user_email",
|
||||
"groups_id": [(4, self.document_user_group)],
|
||||
}
|
||||
)
|
||||
self.page = self.env["document.page"].create(
|
||||
{"name": "Page 1", "type": "content"}
|
||||
)
|
||||
|
||||
def test_page_access(self):
|
||||
self.assertIsNone(self.page.with_user(self.user_id).check_access_rule("read"))
|
||||
self.page.write({"groups_id": [(4, self.test_group)]})
|
||||
class TestDocumentPageAccessGroup(TestDocumentPageAccessGroupBase):
|
||||
def test_page_access_constrains(self):
|
||||
with self.assertRaises(UserError):
|
||||
self.page.with_user(self.user_id).check_access_rule("read")
|
||||
self.knowledge_page.write({"user_ids": [(6, 0, [self.user.id])]})
|
||||
|
||||
@users("test-user")
|
||||
def test_page_access_01(self):
|
||||
pages = self.env["document.page"].search([])
|
||||
self.assertIn(self.public_page, pages)
|
||||
self.assertNotIn(self.knowledge_page, pages)
|
||||
self.assertIn(self.user_page, pages)
|
||||
|
||||
@users("test-manager-user")
|
||||
def test_page_access_02(self):
|
||||
pages = self.env["document.page"].search([])
|
||||
self.assertIn(self.public_page, pages)
|
||||
self.assertIn(self.knowledge_page, pages)
|
||||
self.assertNotIn(self.user_page, pages)
|
||||
|
||||
Reference in New Issue
Block a user