dy-dashboard/tests/test_position_permission_matrix.py
2026-10-28 11:14:17 +08:00

39 lines
1.8 KiB
Python

"""角色与岗位权限矩阵分离及岗位继承。"""
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
AUTH = (ROOT / 'routes' / 'auth.py').read_text(encoding='utf-8')
APP = (ROOT / 'static' / 'js' / 'app.js').read_text(encoding='utf-8')
MODEL = (ROOT / 'services' / 'permission_model.py').read_text(encoding='utf-8')
FIELD = (ROOT / 'services' / 'field_perms.py').read_text(encoding='utf-8')
class PositionPermissionMatrixTest(unittest.TestCase):
def test_role_registry_only_contains_three_system_roles(self):
roles_block = AUTH[AUTH.index('def permission_roles'):AUTH.index('def permission_save')]
for role in ('super_admin', 'admin', 'viewer'):
self.assertIn("'id': '" + role + "'", roles_block)
for legacy in ('procurement_planner', 'procurement_follower', 'product_developer', 'operator'):
self.assertNotIn("'id': '" + legacy + "'", roles_block)
def test_position_permission_storage_and_migration_exist(self):
self.assertIn('CREATE TABLE IF NOT EXISTS position_operation_permissions', MODEL)
self.assertIn('INSERT IGNORE INTO position_operation_permissions', MODEL)
self.assertIn("@auth_bp.route('/api/permissions/position-operations/save'", AUTH)
def test_runtime_priority_includes_position(self):
self.assertIn('position_operation_permissions', AUTH)
self.assertIn('岗位权限', AUTH)
self.assertIn('position_perm', FIELD)
def test_position_matrix_is_rendered_separately(self):
self.assertIn('岗位权限矩阵', APP)
self.assertIn('renderPermPositionOverview', APP)
self.assertIn('/api/permissions/positions', APP)
self.assertIn('/api/permissions/position-operations', APP)
if __name__ == '__main__':
unittest.main()