用途:为项目提供测试受认证路由的模式,使用基于 Cookie 的 JWT 认证(非 Bearer 头),认证由 Keycloak 提供(realm: yourRealm),Cookie 名为 refresh_token,JWT 使用 config.ini 中的密钥签名。
主要能力与用法:
- 推荐方式 test-auth-route.js,自动完成认证:从 Keycloak 获取 refresh token(用户名 testuser,密码 testpassword),用 config.ini 的 JWT 密钥签名,生成 refresh_token Cookie 并发起请求,最后输出可手动复现的 curl 命令。示例:node scripts/test-auth-route.js http://localhost:3000/blog-api/api/endpoint;POST 示例:node scripts/test-auth-route.js http://localhost:3000/blog-api/777/submit POST '{"responses":{"4577":"13295"},"submissionID":5,"stepInstanceId":"11"}'。
- 手动 curl:复制脚本输出的 curl 命令,使用 -b "refresh_token=<TOKEN>" 携带 Cookie。
- 模拟认证(仅开发):在服务 .env 中设置 MOCK_AUTH=true、MOCK_USER_ID、MOCK_USER_ROLES,请求时带 X-Mock-Auth、X-Mock-User、X-Mock-Roles 头。仅在 NODE_ENV 为 development 或 test 且路由挂载 mockAuth 中间件时生效,生产环境永不生效。
适用场景:测试新 API 端点、变更后验证路由、调试认证问题、测试 POST/PUT/DELETE、验证请求响应数据、表单提交、工作流启动与步骤完成、带查询参数的 GET、文件上传等。
限制与注意:脚本输出较冗长,需在输出中查找实际响应;测试前需确认服务、端口、路由前缀(见各服务 src/app.ts)并拼接完整 URL;常见错误包括 401(令牌过期、Cookie 格式错误、JWT 密钥不匹配、Keycloak 未运行)、403(角色或权限不足)、404(URL 或前缀错误、路由未注册)、500(数据库、字段、校验或应用错误)。可用 docker exec -i local-mysql mysql -u root -ppassword1 blog_dev 验证数据库变更。相关技能:database-verification、error-tracking、workflow-builder、notification-sender。具体配置与凭据以实际项目为准。