\Tests\FeaturePermissionAuthMiddlewareTest

权限中间件 fail-closed

被测对象:PermissionAuthMiddleware::handle(权限码解析失败时的拒绝路径) 守护约定:解析不到权限码一律 403(fail-closed,防新增路由映射失败静默开放); 超管仍直接放行;未登录返回 401。

Summary

Methods
Properties
Constants
test_unresolvable_route_is_rejected()
test_super_admin_is_bypassed()
test_guest_gets_401()
No public properties found
No constants found
requireRedis()
buildCacheRegistry()
tearDown()
No protected properties found
N/A
middleware()
user()
No private properties found
N/A

Methods

test_unresolvable_route_is_rejected()

test_unresolvable_route_is_rejected() : void

验证解析不到权限码的路由被 403 拒绝(fail-closed,不再静默放行)。

test_super_admin_is_bypassed()

test_super_admin_is_bypassed() : void

验证超管仍直接放行(fail-closed 不影响超管)。

test_guest_gets_401()

test_guest_gets_401() : void

验证未登录请求返回 401。

requireRedis()

requireRedis() : void

Redis 依赖探针:直连 Redis 的测试(限流/会话/验证码)在无 Redis 环境(如 CI) 跳过而非失败——其余用例不受影响。CI 可设 TEST_REQUIRE_REDIS=1 强制模式: Redis 不可达即失败而非跳过,安全回归套件不允许静默消失。

buildCacheRegistry()

buildCacheRegistry(array  $items) : void

建缓存注册表最小 schema(td_sys_cache)并灌入注册项。

测试跑 sqlite :memory:,生产迁移含 PostgreSQL 专属 DDL 跑不通(DataScopeServiceTest 同因自建 schema); 而 CacheManager::registry() 现已从数据库表读取——凡走注册表的测试(remember/get/key/失效推导) 必须在 setUp 先调用本方法,否则注册表为空、remember 未登记名会走「自动登记」路径。

Parameters

array $items

tearDown()

tearDown() : void

middleware()

middleware() : \App\Http\Middleware\PermissionAuthMiddleware

构造被测中间件(缓存服务 mock 化——fail-closed 路径不应触达缓存校验)

Returns

\App\Http\Middleware\PermissionAuthMiddleware —

user()

user(bool  $super) : \App\Models\SysUser

Parameters

bool $super

Returns

\App\Models\SysUser —