测试与质量门禁
本地检查
先启动 PostgreSQL 并执行 migration:
make db-migrate
然后运行完整检查:
cargo fmt --check
cargo check --all-targets
cargo test --all-targets
cargo clippy --all-targets -- -D warnings
mdbook test docs
mdbook build docs
git diff --check
数据库测试
- 集成测试使用
DATABASE_URL指向专用测试数据库。 - CI 在 PostgreSQL 18 服务上先运行 migration,再执行测试。
- migration 必须验证空数据库首次应用和重复执行时没有待执行项。
- 测试不得依赖个人数据库中已有的数据。
HTTP 测试
Router 由 library crate 构建,测试直接发送 HTTP request 并断言状态码、 Content-Type 和响应体。只有验证真实监听、端口冲突或外部协议时才启动服务 进程。
身份集成测试必须使用真实 PostgreSQL,并至少覆盖:
- 注册、字段规范化、重复和并发重复邮箱;
- Argon2id 参数及数据库中不出现明文密码;
- 登录错误一致性和成功后的 Session ID 轮换;
- 注册后 Profile、多设备 Session 和当前设备退出;
- 闲置与绝对过期、未知或损坏 Cookie;
- Cookie 的
HttpOnly、SameSite、Path和环境化Secure。
CI
CI workflow 对 pull request 和 main push 执行 Rust、migration 和集成测试。
Developer Guide workflow 验证 mdBook;只有 main 的成功构建可以部署
GitHub Pages。