Files
Odoo-18.0-20251222/maintenance_security/tests/test_maintenance_security.py
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

71 lines
2.7 KiB
Python

# Copyright 2023-2025 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests import new_test_user
from odoo.tests.common import users
from odoo.addons.base.tests.common import BaseCommon
class TestMaintenanceSecurity(BaseCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user = new_test_user(
cls.env,
login="test-basic-user",
)
cls.manager = new_test_user(
cls.env,
login="test-maintenance-user",
groups="maintenance.group_equipment_manager",
)
cls.category = cls.env["maintenance.equipment.category"].create(
{"name": "Test category"}
)
cls.equipment = cls.env["maintenance.equipment"].create(
{
"name": "Test equipment",
"category_id": cls.category.id,
}
)
cls.maintenance_menus = [
cls.env.ref("maintenance.menu_maintenance_title"),
cls.env.ref("maintenance.menu_m_dashboard"),
cls.env.ref("maintenance.menu_m_request"),
cls.env.ref("maintenance.menu_m_request_form"),
cls.env.ref("maintenance.menu_m_request_calendar"),
cls.env.ref("maintenance.menu_equipment_form"),
]
def test_maintenance_equipment_full(self):
mt_mat_assign = self.env.ref("maintenance.mt_mat_assign")
# Change to manager (with mt_mat_assign subtype)
self.equipment.write({"owner_user_id": self.manager.id})
self.assertNotIn(
self.user.partner_id,
self.equipment.message_follower_ids.mapped("partner_id"),
)
follower = self.equipment.message_follower_ids.filtered(
lambda x: x.partner_id == self.manager.partner_id
)
self.assertIn(mt_mat_assign, follower.subtype_ids)
# Change to user (without mt_mat_assign subtype)
self.equipment.write({"owner_user_id": self.user.id})
follower = self.equipment.message_follower_ids.filtered(
lambda x: x.partner_id == self.user.partner_id
)
self.assertNotIn(mt_mat_assign, follower.subtype_ids)
@users("test-basic-user")
def test_ir_ui_menu_user(self):
items = self.env["ir.ui.menu"]._visible_menu_ids()
for maintenance_menu in self.maintenance_menus:
self.assertFalse(maintenance_menu.id in items)
@users("test-maintenance-user")
def test_ir_ui_menu_manager(self):
items = self.env["ir.ui.menu"]._visible_menu_ids()
for maintenance_menu in self.maintenance_menus:
self.assertTrue(maintenance_menu.id in items)