test(shopfloor): fp.tablet.session.event is append-only
Owner reads. Technician cannot read. Owner cannot write or unlink. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,3 +4,4 @@ from . import test_landing_kanban
|
|||||||
from . import test_tablet_pin
|
from . import test_tablet_pin
|
||||||
from . import test_tablet_lock_payload
|
from . import test_tablet_lock_payload
|
||||||
from . import test_kiosk_user_acl
|
from . import test_kiosk_user_acl
|
||||||
|
from . import test_tablet_session_event_model
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
from odoo.tests.common import TransactionCase, tagged
|
||||||
|
from odoo.exceptions import AccessError
|
||||||
|
|
||||||
|
|
||||||
|
@tagged('-at_install', 'post_install', 'fp_tablet')
|
||||||
|
class TestTabletSessionEventAppendOnly(TransactionCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
Users = self.env['res.users'].with_context(no_reset_password=True)
|
||||||
|
self.owner = Users.create({
|
||||||
|
'login': 'audit_owner', 'name': 'Audit Owner',
|
||||||
|
'email': 'audit_owner@example.com',
|
||||||
|
'group_ids': [(6, 0, [
|
||||||
|
self.env.ref('fusion_plating.group_fp_owner').id
|
||||||
|
])],
|
||||||
|
})
|
||||||
|
self.tech = Users.create({
|
||||||
|
'login': 'audit_tech', 'name': 'Audit Tech',
|
||||||
|
'email': 'audit_tech@example.com',
|
||||||
|
'group_ids': [(6, 0, [
|
||||||
|
self.env.ref('fusion_plating.group_fp_technician').id
|
||||||
|
])],
|
||||||
|
})
|
||||||
|
|
||||||
|
def test_owner_can_read(self):
|
||||||
|
event = self.env['fp.tablet.session.event'].sudo().create({
|
||||||
|
'event_type': 'unlock',
|
||||||
|
'user_id': self.tech.id,
|
||||||
|
})
|
||||||
|
# Owner reads via their own user
|
||||||
|
e = self.env['fp.tablet.session.event'].with_user(self.owner).browse(event.id)
|
||||||
|
self.assertEqual(e.user_id, self.tech)
|
||||||
|
|
||||||
|
def test_technician_cannot_read(self):
|
||||||
|
event = self.env['fp.tablet.session.event'].sudo().create({
|
||||||
|
'event_type': 'unlock',
|
||||||
|
'user_id': self.tech.id,
|
||||||
|
})
|
||||||
|
with self.assertRaises(AccessError):
|
||||||
|
self.env['fp.tablet.session.event'].with_user(self.tech).browse(event.id).event_type
|
||||||
|
|
||||||
|
def test_owner_cannot_write(self):
|
||||||
|
event = self.env['fp.tablet.session.event'].sudo().create({
|
||||||
|
'event_type': 'unlock',
|
||||||
|
'user_id': self.tech.id,
|
||||||
|
})
|
||||||
|
with self.assertRaises(AccessError):
|
||||||
|
self.env['fp.tablet.session.event'].with_user(self.owner).browse(event.id).write({
|
||||||
|
'event_type': 'failed_unlock',
|
||||||
|
})
|
||||||
|
|
||||||
|
def test_owner_cannot_unlink(self):
|
||||||
|
event = self.env['fp.tablet.session.event'].sudo().create({
|
||||||
|
'event_type': 'unlock',
|
||||||
|
'user_id': self.tech.id,
|
||||||
|
})
|
||||||
|
with self.assertRaises(AccessError):
|
||||||
|
self.env['fp.tablet.session.event'].with_user(self.owner).browse(event.id).unlink()
|
||||||
Reference in New Issue
Block a user