Public errors now emit code, safe message, and request_id while keeping the legacy error field. Raw SQL, paths, tokens, and XSS payloads are stripped; the frontend branches on code instead of substring matching. Co-authored-by: Cursor <cursoragent@cursor.com>
2.0 KiB
2.0 KiB
HTTP/SSE 错误信封 H1–H3 测试报告
一、 测试背景 (Background)
H0 盘点公开路由存在纯文本 err.Error()、JSON {error,message} 与 SSE error_info 三套错误体。本波 additive 统一信封,不改状态码。
二、 测试目标 (Test Objectives)
- H1:
code/message/request_id/error双写;SQL/路径/token/XSS 不出现在响应。 - H2:前端优先
code;未知 code 不靠 substring。 - H3:去掉「无权访问该项目」文本匹配;不改状态码故无 ADR。
三、 测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|---|---|
| 分支 | feature/http-error-envelope |
| Go | go test -short ./internal/httpx ./internal/stream ./internal/server |
| 前端 | npx tsx --test src/api/projectSettingsError.test.ts |
四、 预期结果 (Expected Results)
信封 golden 负例 PASS;server 短测 PASS;前端解析 code 优先于 error。
五、 实际测试结果与判定 (Actual Results & Evaluation)
5.1 httpx + SSE
- 测试输入 (Input):
TestWriteSanitizesInternalAndKeepsLegacyCode;TestClassifyError_DoesNotLeakSQL - 实际输出 (Actual Output):
ok httpx;ok stream - 评价判定 (Evaluation / Verdict):PASS
- 性能与耗时 (Duration & Latency):<10ms
5.2 server 回归
- 测试输入 (Input):
go test -short ./internal/server - 实际输出 (Actual Output):
ok 10.069s - 评价判定 (Evaluation / Verdict):PASS
- 性能与耗时 (Duration & Latency):10s
5.3 前端
- 测试输入 (Input):
projectSettingsError.test.ts - 实际输出 (Actual Output):5 tests pass
- 评价判定 (Evaluation / Verdict):PASS
- 性能与耗时 (Duration & Latency):113ms
六、 自动化测试套件汇总 (Test Suite Execution)
上述均 PASS。未改 HTTP 状态码,无 ADR。
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
H1–H3 完成。error 字段仍作稳定 code 别名以兼容旧客户端。下一步 PI typed-result。