"""采样确认的详情编辑必须能通过岗位矩阵独立授权。""" import unittest from unittest.mock import patch from flask import Flask, session from routes import auth class SpotConfirmationPermissionTest(unittest.TestCase): def setUp(self): self.app = Flask(__name__) self.app.secret_key = 'test' def test_matrix_exposes_edit_separately_from_view_and_import(self): features = {item['id'] for item in auth.PAGE_FEATURES['spot_confirmation']} self.assertEqual(features, {'view', 'edit', 'import', 'delete'}) def test_position_grant_and_user_deny_use_same_runtime_permission(self): for position_value, user_value, expected in ( (1, None, True), (0, None, False), (1, 0, False), (None, None, False) ): with self.subTest(position=position_value, user=user_value): def query(sql, params=None): if 'FROM user_permissions' in sql: return [] if user_value is None else [{'permission': user_value}] if 'FROM position_operation_permissions' in sql: self.assertEqual(params[0], 'procurement_follower') self.assertIn('spot_confirmation', params) self.assertIn('edit', params) return [] if position_value is None else [{'permission': position_value}] return [] with self.app.test_request_context(), \ patch.object(auth, 'query', side_effect=query), \ patch.object(auth, 'ensure_position_permissions'), \ patch.object(auth, 'user_position_code', return_value='procurement_follower'): session.update(user_id=23, role='viewer') self.assertEqual(auth.operation_required('spot_confirmation', 'edit'), expected)