用途:该技能用于编写、添加或修复 td-sync Admin API 的集成测试,测试文件为 internal/api/admin_integration_test.go,使用 internal/api/testharness_test.go 中的 TestHarness。测试运行在随机端口的真实 HTTP 服务器上,并使用隔离的临时数据库。
主要能力:核心方法包括 newTestHarness(t, ...func(*Config)) *TestHarness(启动真实服务器、隔离数据库、自动清理)、h.Do(method, path, token, body) *http.Response(真实请求,调用方需关闭 body)、h.DoJSON(method, path, token, body, &out) *http.Response(请求并解析 JSON,4xx/5xx 时 fatal)。状态构建器支持链式调用 WithUser、WithAdmin、WithProject、WithMember、WithEvents、WithSnapshot、WithAuthEvents、WithRateLimitEvents,最后用 Done() 获取 *TestState;顺序要求先建用户再建项目,再建成员/事件/快照。状态访问器包括 state.UserToken、UserID、AdminToken、ProjectID、Harness。断言辅助包括 AssertStatus、AssertErrorResponse、ReadJSON、AssertPaginated、AssertCORSHeaders、AssertNoCORSHeaders 以及 h.AssertRequiresAdminScope。
使用方式:测试需始终加 t.Parallel(),测试名前缀为 TestIntegration_,可通过 opts 覆盖 Config。管理员作用域分为 admin:read:server、admin:read:projects、admin:read:events、admin:read:snapshots、admin:export,分别对应不同端点。运行命令为 go test -v -run TestIntegration ./internal/api/。
适用场景:需要验证 Admin API 的事件、项目、用户、快照、导出、CORS 与权限控制等行为时使用。
限制与注意事项:首个创建的用户会自动成为管理员,测试非管理员拒绝场景时需用 h.CreateUser("first@test.com") 消耗该名额;CORS 测试需手动使用 http.NewRequest,因为 Do 不支持自定义请求头;详细 API 参考见 references/harness-api.md。