Files
Agent-System/.doc/test-reports/2026-09-28-auth-register-internal-test-report.md
T

4.9 KiB
Raw Blame History

注册 INTERNAL(标准角色缺失)测试报告

一、 测试背景 (Background)

test 环境(:8081)注册新用户返回 INTERNAL / 「请求无法完成」。dev(:8080)新用户名可成功,但重复用户名同样是 INTERNAL。根因是 test 库缺 role-guest(FK 23503),以及用户名唯一冲突被当成基础设施错误。

二、 测试目标 (Test Objectives)

  • test 补种标准角色后,新用户名注册返回 200
  • 重复用户名在新代码下返回 400,error 为「用户名已存在」
  • 既有注册成功路径(审核中)不回归
  • 不替换 rc 制品 bin/agent-server-test

三、 测试方案与环境 (Test Plan & Environment)

  • OS: Linux;worktree fix/auth-register-internal-2026-09-28,基线 4ba60c2c9d7eaf3e3e824475c0f3a44e10641190
  • 单测:go test 内存库与冲突分类(不连 5433/5434)
  • 实库:test localpg :5434 / agent_system_test。合入前手工执行 00077 Up(当时 goose 仍为 76);合入 9141741b 后 ./scripts/launch-single.sh test(未 --build)重启,日志 goose: successfully migrated database to version: 77
  • 运行中的 :8081 仍是 rc 单二进制,不含本次 Go 改动
  • NOT REQUIRED:产品 PI 全链路。依据:IAM 注册与迁移,不改工作流模板或提示词

证据目录:assets/2026-09-28-auth-register-internal/

四、 预期结果 (Expected Results)

用例 预期
test 缺 role-guest 时注册 修复前 INTERNAL;补种后 200
新代码重复用户名 400,error 含「已存在」,code=VALIDATION
当前 rc 二进制重复用户名 仍 INTERNAL(制品未换)
dev 新用户名 200

五、 实际测试结果与判定 (Actual Results & Evaluation)

1. 修复前复现

  • 输入:POST /api/v1/auth/register 用户名 diag_user_0928
  • 实际输出:dev {"status":"active",...,"user_id":75};test {"code":"INTERNAL","message":"请求无法完成","request_id":"req_diag_repro_002","error":"INTERNAL"}。dev 重复同一用户名:request_id=req_f0a8c723ed8e6c4a,同样 INTERNAL
  • 评价:PASS(复现)
  • 耗时:约 150ms

2. 补种后 test 注册

  • 输入:00077 Up(INSERT 0 4 角色);POST :8081/api/v1/auth/register 用户名 regfix_0928a,X-Request-ID: req_regfix_fresh_0928
  • 实际输出:HTTP 200 {"status":"active","message":"注册成功,已激活,请返回登录","user_id":43}。role-guest/director/engineer/tech-lead 的 is_system=t。探测用户与 dev 上的 diag_user_0928、regfix_dev_0928a 已删除
  • 评价:PASS
  • 耗时:注册请求 < 1s

3. 当前 test 二进制的重复用户名

  • 输入:再次注册 regfix_0928a,X-Request-ID: req_regfix_dup_0928
  • 实际输出:{"code":"INTERNAL","message":"请求无法完成","request_id":"req_regfix_dup_0928","error":"INTERNAL"}
  • 评价:符合预期(rc 制品尚无 ErrUsernameExists)。400 行为由单测覆盖,随下次含本提交的 test 制品生效
  • 耗时:< 1s

4. dev 新用户名对照

  • 输入:POST :8080 用户名 regfix_dev_0928a
  • 实际输出:{"status":"active","message":"注册成功,已激活,请返回登录","user_id":79}(随后删除)
  • 评价:PASS

六、 自动化测试套件汇总 (Test Suite Execution)

ok  chat-agent-system/internal/auth    0.087s
    TestIsUsernameConflict PASS(23505 用户名约束为真,23503 与其它唯一约束为假)
    TestErrUsernameExistsIsNotInfrastructureShaped PASS
ok  chat-agent-system/internal/server  0.349s
    TestAuthHandlers_RegisterAndApproval PASS
    TestAuthHandlers_RegisterDuplicateUsername PASS(400 / VALIDATION / error 含「已存在」)

TestPgStore_CreateUserDuplicateUsername 在未设置 TEST_DATABASE_URL 时 Skip,不连共享库。

5. 合入后重启 test

  • 输入:./scripts/launch-single.sh test(不 --build,沿用 rc 二进制);再 POST :8081/api/v1/auth/register 用户名 regfix_0928b,X-Request-ID: req_regfix_after_restart
  • 实际输出:.tmp/launch/server-test.log 含 OK 00077_2026-09-28-reseed-standard-roles.sql 与 goose: successfully migrated database to version: 77。goose_db_version 最新为 77。HTTP 200 {"status":"active","message":"注册成功,已激活,请返回登录","user_id":45}。该用户已删除
  • 评价:PASS
  • 耗时:重启至健康检查约 12s

七、 测试结论与后续优化建议 (Conclusion & Next Steps)

test 注册失败已解除:标准角色已补种,goose 77,重启后的 :8081 注册返回 200。重复用户名的 400 在本提交单测通过;正在运行的 rc 二进制仍会把重复用户名报成 INTERNAL,随下次包含本提交的 test 制品生效。不要为这条 400 替换当前 rc 二进制。