39 lines
1.8 KiB
Python
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()
|