Files
odoo_source/addons/project/tests/test_project_update_access_rights.py
T
Xavier BOL (xbo) 82b992fb89 [FW][FIX] project: remove uneccessary read access for portal user
Before this commit, the portal user can read the `project.update`
and `project.milestone` records but there is no reason to grant this
access for those models.

This commit removes the read access for thoses models since we don't
show the data in its portal.

X-original-commit: f0331531826974ddaab5dff28739115c37a351c0
Forward-port-of: #88546
Forward-port-of: #88509
Part-of: odoo/odoo#88819
2022-04-14 19:56:03 +02:00

97 lines
4.7 KiB
Python

# -*- coding: utf-8 -*-
from odoo.exceptions import AccessError
from odoo.tests import tagged
from odoo.tests.common import users
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.project.tests.test_project_base import TestProjectCommon
@tagged('-at_install', 'post_install')
class TestProjectUpdateAccessRights(TestProjectCommon):
@classmethod
def setUpClass(cls):
super(TestProjectUpdateAccessRights, cls).setUpClass()
cls.project_update_1 = cls.env['project.update'].create({
'name': "Test Project Update",
'project_id': cls.project_pigs.id,
'status': 'on_track',
})
cls.project_milestone = cls.env['project.milestone'].create({
'name': 'Test Projec Milestone',
'project_id': cls.project_pigs.id,
})
cls.base_user = mail_new_test_user(cls.env, 'Base user', groups='base.group_user')
cls.project_user = mail_new_test_user(cls.env, 'Project user', groups='project.group_project_user')
cls.project_manager = mail_new_test_user(cls.env, 'Project admin', groups='project.group_project_manager')
cls.portal_user = mail_new_test_user(cls.env, 'Portal user', groups='base.group_portal')
@users('Project user', 'Project admin', 'Base user')
def test_project_update_user_can_read(self):
self.project_update_1.with_user(self.env.user).name
@users('Base user')
def test_project_update_user_no_write(self):
with self.assertRaises(AccessError, msg="%s should not be able to write in the project update" % self.env.user.name):
self.project_update_1.with_user(self.env.user).name = "Test write"
@users('Project admin')
def test_project_update_admin_can_write(self):
self.project_update_1.with_user(self.env.user).name = "Test write"
@users('Base user')
def test_project_update_user_no_unlink(self):
with self.assertRaises(AccessError, msg="%s should not be able to unlink in the project update" % self.env.user.name):
self.project_update_1.with_user(self.env.user).unlink()
@users('Project admin')
def test_project_update_admin_unlink(self):
self.project_update_1.with_user(self.env.user).unlink()
@users('Portal user')
def test_project_update_portal_user_no_read(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to read in the project update"):
self.project_update_1.with_user(self.env.user).name
@users('Portal user')
def test_project_update_portal_user_no_write(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to write in the project update"):
self.project_update_1.with_user(self.env.user).name = 'Test write'
@users('Portal user')
def test_project_update_portal_user_no_create(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to create in the project update model"):
self.env['project.update'].with_user(self.env.user).create({
'name': 'Test Create with portal user',
'project_id': self.project_pigs.id,
'state': 'on_track',
})
@users('Portal user')
def test_project_update_portal_user_no_unlink(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to unlink in the project update"):
self.project_update_1.with_user(self.env.user).unlink()
@users('Portal user')
def test_project_milestone_portal_user_no_read(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to read in the project update"):
self.project_milestone.with_user(self.env.user).name
@users('Portal user')
def test_project_milestone_portal_user_no_write(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to write in the project update"):
self.project_milestone.with_user(self.env.user).name = 'Test write'
@users('Portal user')
def test_project_milestone_portal_user_no_create(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to create in the project update model"):
self.env['project.update'].with_user(self.env.user).create({
'name': 'Test Create with portal user',
'project_id': self.project_pigs.id,
})
@users('Portal user')
def test_project_milestone_portal_user_no_unlink(self):
with self.assertRaises(AccessError, msg=f"{self.env.user.name} should not be able to unlink in the project update"):
self.project_milestone.with_user(self.env.user).unlink()