\Tests\FeatureJwtCookieMiddlewareTest

认证线中间件(token 解析主链路)

被测对象:JwtCookieMiddleware(AdminAuthMiddleware 共用同一主链路) 守护约定:无凭证 401;有效会话(Redis JWT 验签 + token_key 匹配 + status=1)放行并注入用户; 伪造/失效 token 401;未知 key 401 且清理表内残留;停用用户 401;Bearer 与 Cookie 等价。

Summary

Methods
Properties
Constants
test_guest_request_gets_401_through_router()
test_unknown_token_key_gets_401_and_cleans_stale_db_key()
test_tampered_session_token_is_rejected()
test_stopped_user_with_valid_session_is_rejected()
test_session_without_age_marker_is_rejected()
test_valid_cookie_session_authenticates_and_injects_user()
test_bearer_token_path_is_equivalent()
No public properties found
No constants found
requireRedis()
buildCacheRegistry()
setUp()
tearDown()
No protected properties found
N/A
makeUser()
openSession()
runRequest()
$md5Key
N/A

Properties

$md5Key

$md5Key : string

Type

string

Methods

test_guest_request_gets_401_through_router()

test_guest_request_gets_401_through_router() : void

无凭证请求经真实路由命中中间件返回 401(HTTP 全链路,无 Cookie 不触达控制器)。

test_unknown_token_key_gets_401_and_cleans_stale_db_key()

test_unknown_token_key_gets_401_and_cleans_stale_db_key() : void

未知 token_key(Redis 无会话)返回 401 并清理表内残留。

test_tampered_session_token_is_rejected()

test_tampered_session_token_is_rejected() : void

Redis 会话内是垃圾 token(非有效 JWT)返回 401。

test_stopped_user_with_valid_session_is_rejected()

test_stopped_user_with_valid_session_is_rejected() : void

停用用户即使持有有效会话也返回 401。

test_session_without_age_marker_is_rejected()

test_session_without_age_marker_is_rejected() : void

会话缺少 age 标记(绝对生命周期已超限)返回 401 并清理会话本体。

test_valid_cookie_session_authenticates_and_injects_user()

test_valid_cookie_session_authenticates_and_injects_user() : void

有效 Cookie 会话放行并把用户注入 auth('api')。

test_bearer_token_path_is_equivalent()

test_bearer_token_path_is_equivalent() : void

Bearer 通道与 Cookie 等价(无 Cookie 时按 Authorization 解析同一会话)。

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

setUp()

setUp() : void

tearDown()

tearDown() : void

makeUser()

makeUser(array  $attrs = []) : \App\Models\SysUser

Parameters

array $attrs

Returns

\App\Models\SysUser —

openSession()

openSession(\App\Models\SysUser  $user, ?string  $token = null) : string

建立会话:用户 token_key 指向 md5Key,Redis 存签名 JWT

Parameters

\App\Models\SysUser $user
?string $token

Returns

string —

runRequest()

runRequest(array  $cookies = [], ?string  $bearer = null) : \Illuminate\Http\Response|\Illuminate\Http\JsonResponse

Parameters

array $cookies
?string $bearer

Returns

\Illuminate\Http\Response|\Illuminate\Http\JsonResponse —