test(p3-1): 第九波 - auth服务层单测 78个 #712

Merged
xiaoxia merged 2 commits from test/p3-1-wave9-auth-service-tests into develop 2026-07-22 17:10:00 +08:00
Owner

变更内容

Auth 服务层纯逻辑单元测试,78个测试用例。

覆盖模块:

  • PasswordHasher (23个): 哈希/验证/rehash检测,rounds边界,空密码,Unicode支持,不同密码不同哈希
  • PasswordValidator (19个): 所有强度规则(长度/大写/小写/数字/特殊字符),自定义配置,27种特殊字符全覆盖
  • JWTConfig (9个): secret 空值/空白/不安全默认值拦截,自定义配置
  • JWTService (27个): access/refresh token 签发与验证,过期、篡改、错密钥、类型校验、算法切换、Unicode支持

测试结果

  • 78 passed in 3.76s
  • 全量 3319 passed, 8 skipped in 75s
### 变更内容 Auth 服务层纯逻辑单元测试,78个测试用例。 **覆盖模块:** - **PasswordHasher** (23个): 哈希/验证/rehash检测,rounds边界,空密码,Unicode支持,不同密码不同哈希 - **PasswordValidator** (19个): 所有强度规则(长度/大写/小写/数字/特殊字符),自定义配置,27种特殊字符全覆盖 - **JWTConfig** (9个): secret 空值/空白/不安全默认值拦截,自定义配置 - **JWTService** (27个): access/refresh token 签发与验证,过期、篡改、错密钥、类型校验、算法切换、Unicode支持 ### 测试结果 - 78 passed in 3.76s - 全量 3319 passed, 8 skipped in 75s
xiaoxia added 1 commit 2026-07-22 14:19:17 +08:00
test(p3-1): 第九波 - auth服务层单测 78个
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m6s
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 32s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 51s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 35s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 32s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 49s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m27s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 42s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 29s
AI Code Review / AI Code Review (pull_request) Successful in 4m18s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m39s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m8s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m36s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 18m52s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
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
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
60d6e8efa5
覆盖 auth 纯逻辑模块:
- PasswordHasher: 哈希/验证/rehash 检测,边界值,异常处理
- PasswordValidator: 密码强度验证,所有规则组合
- JWTConfig: secret 校验,不安全默认值拦截
- JWTService: access/refresh token 签发与验证,过期、篡改、类型校验

涉及安全的核心逻辑全面覆盖

🚀 预览环境已部署

项目 详情
PR号 #712
预览链接 https://pr-712.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #712 | | 预览链接 | [https://pr-712.preview.xiaoxiajianji.com](https://pr-712.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

代码审查结果 - PR #712

⚠️ 问题(1个需要修改)

  1. tests/unit/test_auth_service.py 第473行:测试名称与断言逻辑严重矛盾,且验证了危险行为
    • 问题描述:测试函数名为 test_additional_claims_not_overwrite_standard(暗示不应覆盖标准字段),但代码中的断言 assert payload["sub"] == "fake_user" 验证了 sub 字段确实被 additional_claims 覆盖了。如果 JWTService 允许通过 additional_claims 覆盖 sub(用户标识),这是一个严重的安全漏洞,攻击者可能通过构造 payload 伪造身份。如果这是预期行为,测试名称具有极大的误导性。
    • 后果:可能导致开发人员误以为系统防止了字段覆盖,从而引入权限绕过漏洞;或者掩盖了当前实现存在的安全隐患。

💡 建议(3个可选)

  1. tests/unit/test_auth_service.py 第453行:避免使用 time.sleep 进行过期测试

    • 具体内容time.sleep(1) 会使测试变慢并依赖系统时钟。建议使用 unittest.mock.patch 替换 time.timejwt 内部的时间函数,使测试瞬间完成且更稳定。
  2. tests/unit/test_auth_service.py 第223行:使用 pytest.mark.parametrize 优化特殊字符测试

    • 具体内容:当前使用 for 循环测试特殊字符,一旦某个字符失败,循环即终止,且无法在 pytest 摘要中清晰看到具体是哪个字符失败。建议改为参数化测试,提高测试报告的可读性。
  3. tests/unit/test_auth_service.py 第447行:增强 Token 篡改测试的健壮性

    • 具体内容:修改 Token 最后一个字符的逻辑 token[-1] 可能会命中 Base64 的填充符 =。虽然目前能触发 InvalidTokenError,但更严谨的做法是修改签名部分的中间字符(如倒数第5个字符),以更准确地模拟签名损坏场景。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 16:32:53 | 模型:

## 代码审查结果 - PR #712 ### ⚠️ 问题(1个需要修改) 1. **tests/unit/test_auth_service.py 第473行**:测试名称与断言逻辑严重矛盾,且验证了危险行为 - **问题描述**:测试函数名为 `test_additional_claims_not_overwrite_standard`(暗示不应覆盖标准字段),但代码中的断言 `assert payload["sub"] == "fake_user"` 验证了 `sub` 字段确实被 `additional_claims` 覆盖了。如果 `JWTService` 允许通过 `additional_claims` 覆盖 `sub`(用户标识),这是一个严重的安全漏洞,攻击者可能通过构造 payload 伪造身份。如果这是预期行为,测试名称具有极大的误导性。 - **后果**:可能导致开发人员误以为系统防止了字段覆盖,从而引入权限绕过漏洞;或者掩盖了当前实现存在的安全隐患。 ### 💡 建议(3个可选) 1. **tests/unit/test_auth_service.py 第453行**:避免使用 `time.sleep` 进行过期测试 - **具体内容**:`time.sleep(1)` 会使测试变慢并依赖系统时钟。建议使用 `unittest.mock.patch` 替换 `time.time` 或 `jwt` 内部的时间函数,使测试瞬间完成且更稳定。 2. **tests/unit/test_auth_service.py 第223行**:使用 `pytest.mark.parametrize` 优化特殊字符测试 - **具体内容**:当前使用 `for` 循环测试特殊字符,一旦某个字符失败,循环即终止,且无法在 pytest 摘要中清晰看到具体是哪个字符失败。建议改为参数化测试,提高测试报告的可读性。 3. **tests/unit/test_auth_service.py 第447行**:增强 Token 篡改测试的健壮性 - **具体内容**:修改 Token 最后一个字符的逻辑 `token[-1]` 可能会命中 Base64 的填充符 `=`。虽然目前能触发 `InvalidTokenError`,但更严谨的做法是修改签名部分的中间字符(如倒数第5个字符),以更准确地模拟签名损坏场景。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 16:32:53 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-22 16:33:43 +08:00
fix(ci): auto-fix lint/format issues
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
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 25s
AI Code Review / AI Code Review (pull_request) Failing after 29s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 41s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 56s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m15s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m4s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 1m52s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m55s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m40s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m43s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 10m27s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 33m43s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 35m46s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 31s
c583aab50c
xiaoxia force-pushed test/p3-1-wave9-auth-service-tests from a0c475ee9f to c583aab50c 2026-07-22 16:33:43 +08:00 Compare
auto-approve-bot approved these changes 2026-07-22 16:35:40 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-22 16:35:40 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia merged commit f6fc9736a5 into develop 2026-07-22 17:10:00 +08:00

🗑️ 预览环境已清理

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

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

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