test(wave211): 密码重置UseCase单测 +25测 #1181

Merged
xiaoxia merged 1 commits from test/wave211-password-reset into develop 2026-07-30 07:45:04 +08:00
Owner

概述

密码重置 Use Case 单元测试补全。

覆盖范围

RequestPasswordResetUseCase

  • 成功请求(发送邮件+生成令牌)
  • 用户不存在时返回成功(安全考虑,不暴露用户存在性)
  • 空邮箱/邮箱规范化
  • 自定义令牌过期时间
  • 邮件发送失败不暴露错误
  • 邮件服务异常不向外传播
  • 用户名/display_name fallback
  • 令牌唯一性
  • 通用异常处理

ResetPasswordUseCase

  • 成功重置(哈希新密码+清除令牌)
  • 空token/空密码
  • 无效token/过期token
  • naive datetime 处理
  • 弱密码拒绝
  • 无过期时间时仍可重置
  • 成功后清除令牌防止重复使用

共计 25 个测试用例

测试统计

  • 25 passed
  • 0 failed
## 概述 密码重置 Use Case 单元测试补全。 ## 覆盖范围 ### RequestPasswordResetUseCase - 成功请求(发送邮件+生成令牌) - 用户不存在时返回成功(安全考虑,不暴露用户存在性) - 空邮箱/邮箱规范化 - 自定义令牌过期时间 - 邮件发送失败不暴露错误 - 邮件服务异常不向外传播 - 用户名/display_name fallback - 令牌唯一性 - 通用异常处理 ### ResetPasswordUseCase - 成功重置(哈希新密码+清除令牌) - 空token/空密码 - 无效token/过期token - naive datetime 处理 - 弱密码拒绝 - 无过期时间时仍可重置 - 成功后清除令牌防止重复使用 共计 **25 个测试用例**。 ## 测试统计 - 25 passed - 0 failed
xiaoxia added 1 commit 2026-07-30 07:26:02 +08:00
test(wave211): 密码重置UseCase单测 +25测
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 38s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m9s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m17s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 1m4s
AI Code Review / AI Code Review (pull_request) Successful in 1m42s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m42s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m2s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m23s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m34s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m23s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m53s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 5m54s
CI/CD Pipeline / CI Gate (pull_request) Successful in 44s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 25s
89e5419ddc
覆盖范围:
- RequestPasswordResetUseCase: 成功/用户不存在(安全)/空邮箱/邮箱规范化/自定义过期时间/邮件失败不暴露/异常处理
- ResetPasswordUseCase: 成功/空token/空密码/无效token/过期token/弱密码/无过期时间/token清除
- 请求数据类规范化

25 test cases
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:0 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

良好实践

  1. 测试覆盖度提升:新增了多个边界条件测试用例,如 test_request_naive_datetime_treated_as_utc(处理无时区时间)、test_request_email_exception_does_not_propagate(异常处理)、test_request_username_uses_display_name_fallback(字段回退逻辑),显著增强了代码健壮性验证。
  2. Mock 配置规范化:在 mock_user_repo fixture 中显式设置默认返回值为 None,避免了测试中意外的 Mock 默认行为(如返回新的 Mock 对象)导致的误判。
  3. 断言精确性:在验证邮件发送时,使用 call_args.kwargs 精确检查关键字参数(如 to_email, reset_url),比单纯检查调用次数更可靠。
  4. 代码可读性:使用 _make_user 辅助函数和清晰的注释分隔测试区域,使测试代码结构清晰,易于维护。
  5. 安全性测试:保留了“用户不存在返回成功”和“邮件发送失败不影响结果”的测试用例,确保了业务逻辑在安全性(防枚举)和用户体验方面的正确实现。

格式检查通过 | 逻辑审查通过 | 性能无明显问题


🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 23:33:13 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:0 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 无 ### ✅ 良好实践 1. **测试覆盖度提升**:新增了多个边界条件测试用例,如 `test_request_naive_datetime_treated_as_utc`(处理无时区时间)、`test_request_email_exception_does_not_propagate`(异常处理)、`test_request_username_uses_display_name_fallback`(字段回退逻辑),显著增强了代码健壮性验证。 2. **Mock 配置规范化**:在 `mock_user_repo` fixture 中显式设置默认返回值为 `None`,避免了测试中意外的 Mock 默认行为(如返回新的 Mock 对象)导致的误判。 3. **断言精确性**:在验证邮件发送时,使用 `call_args.kwargs` 精确检查关键字参数(如 `to_email`, `reset_url`),比单纯检查调用次数更可靠。 4. **代码可读性**:使用 `_make_user` 辅助函数和清晰的注释分隔测试区域,使测试代码结构清晰,易于维护。 5. **安全性测试**:保留了“用户不存在返回成功”和“邮件发送失败不影响结果”的测试用例,确保了业务逻辑在安全性(防枚举)和用户体验方面的正确实现。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 23:33:13 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 35b38ed48c into develop 2026-07-30 07:45:04 +08:00

🗑️ 预览环境已清理

PR #1181 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #1181 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.