\Tests\UnitPermissionAuthTest

权限码推断纯逻辑

被测对象:PermissionAuthMiddleware::resolvePermissionFromRoute(静态方法,只依赖 Request) 守护约定:moduleMap 命中 + CRUD 方法映射;子资源专属码(角色/用户任职/个人范围/个人权限); org/tree 映射公司模块;files/batch 按 action 语义分流,锁定映射防回退。

Summary

Methods
Properties
Constants
test_module_map_hit_and_crud_mapping()
test_role_assignment_sub_resource()
test_user_roles_assign_code()
test_user_depts_assign_code()
test_user_scope_assign_code()
test_user_permissions_assign_code()
test_dept_posts_catalog_method_aware()
test_post_scope_maps_to_post_module()
test_post_crud_standard_mapping()
test_org_tree_maps_to_company_module()
test_non_admin_path_returns_null()
test_head_maps_to_read()
test_files_batch_action_aware()
test_files_sub_resource_mapping()
test_job_center_module_map()
test_job_center_special_codes()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
infer()
No private properties found
N/A

Methods

test_module_map_hit_and_crud_mapping()

test_module_map_hit_and_crud_mapping() : void

moduleMap 命中 + 标准 CRUD 方法映射

test_role_assignment_sub_resource()

test_role_assignment_sub_resource() : void

roles/{role}/menus|permissions 子资源:分配本质是改角色,按方法区分 read/update

test_user_roles_assign_code()

test_user_roles_assign_code() : void

users/{user}/roles 是直授专属码

test_user_depts_assign_code()

test_user_depts_assign_code() : void

users/{user}/depts 任职同步:写→sys:user:dept:assign 专属码,读→sys:user:read

test_user_scope_assign_code()

test_user_scope_assign_code() : void

users/{user}/scope 个人数据范围:写→sys:user:scope:assign 专属码,读→sys:user:read

test_user_permissions_assign_code()

test_user_permissions_assign_code() : void

users/{user}/permissions 个人权限:写→sys:user:permission:assign 专属码,读→sys:user:read

test_dept_posts_catalog_method_aware()

test_dept_posts_catalog_method_aware() : void

depts/{dept}/posts 部门岗位目录(岗位侧):只读 GET→sys:post:read(覆盖式同步 PUT 已随组织维护还原清单式移除)

test_post_scope_maps_to_post_module()

test_post_scope_maps_to_post_module() : void

posts/{post}/scope 岗位数据范围(岗位实体化):写→sys:post:update,读→sys:post:read

test_post_crud_standard_mapping()

test_post_crud_standard_mapping() : void

posts 标准 CRUD(岗位实体化后 menus|permissions 子资源已随权限收敛删除,无子资源映射)

test_org_tree_maps_to_company_module()

test_org_tree_maps_to_company_module() : void

org/tree 场景:moduleMap 已将 org 映射到公司模块, 推断与路由上的显式 permission:sys:company:read 一致(非超管不再被误判 403)。 该用例锁定映射,防止有人误删 moduleMap 的 org 项回退到不存在的 sys:org:read。

test_non_admin_path_returns_null()

test_non_admin_path_returns_null() : void

非 admin 前缀路径不推断

test_head_maps_to_read()

test_head_maps_to_read() : void

HEAD 与 GET 同语义映射 read(授权用户的 HEAD 请求不应被 fail-closed 误拒)

test_files_batch_action_aware()

test_files_batch_action_aware() : void

files/batch 批量操作按 action 语义分流: trash/缺省/未知=delete(Controller 默认 trash)、restore/move=update、copy=create。 锁定映射防回退——否则 POST 统一推断 create,有 create 无 delete 权限可绕过回收站门禁。

test_files_sub_resource_mapping()

test_files_sub_resource_mapping() : void

files 单文件子路由与标准 CRUD:rename/move/restore→update、copy→create、download/show→read、destroy→delete

test_job_center_module_map()

test_job_center_module_map() : void

队列中心模块映射:job-types→sys:jobtype、job-workers→sys:jobworker、 job-center(监控统计)→sys:log(与日志家族共用只读码);队列日志走 logs 资源默认推断 → sys:log。锁定映射防回退。

test_job_center_special_codes()

test_job_center_special_codes() : void

队列日志专属码与队列中心专属码:重投/取消挂日志家族,清理共用 sys:log:update

infer()

infer(string  $method, string  $path, array  $params = []) : ?string

按 method/path 推断权限码(null 表示不推断)

Parameters

string $method
string $path
array $params

Returns

?string —