docs: record issue 42 API key lifecycle

ila
2026-08-24 14:50:25 +08:00
parent 9134d168e2
commit 71cf8fd56b
+17
@@ -416,3 +416,20 @@ go test ./internal/core/apikey -count=1
```
`CHORUS_DSN` 与 `CHORUS_MIGRATE_URL` 必须指向同一个明确创建的可丢弃库。测试会重置目标库结构,严禁指向 `chorus`、当前开发库、共享库或生产库。#41 已在本机 MySQL 8.4.8 独立库完成迁移 up/down/up、非空数据 down 拒绝、仓储创建/读取/改名/撤销和事务回滚验证。
<!-- issue-42:start -->
## #42 Portal API Key 验证
普通回归和前端产物构建:
```powershell
go test ./...
go vet ./...
go -C admin test ./...
pnpm --dir portal/web build
```
涉及真实仓储与 Handler 的验证必须使用显式命名、可丢弃的 MySQL 8 隔离库,不得指向当前开发库、共享库或生产库。#42 已在独立库覆盖 CSRF、创建后仅一次返回完整 token、数据库 hash、刷新不回显、非法有效期、跨用户 404、停用用户 403、改名和幂等撤销。
浏览器 E2E 使用 `portal/web/e2e/fixture` 的合成用户和独立库,在 375、768、1024、1440 四种视口执行创建、一次展示、关闭后清除、刷新不可恢复、改名和撤销,并检查无外部请求、无页面横向溢出和至少 44px 的操作目标。测试截图只能在完整 token 已从 DOM 清除后生成。
<!-- issue-42:end -->