测试: 订阅管理 API + 查重上传错误处理 单元测试 (63用例) #83

Merged
xiaoxia merged 2 commits from test/subscription-duplication-tests into develop 2026-06-28 20:07:56 +08:00
Owner

测试覆盖

1. 订阅管理 API 测试 (test_subscription_api.py) — 26 用例

覆盖 5 个端点:

  • GET /current — 当前订阅信息(free/pro 用户、周期日期、创建时间)
  • GET /billing-records — 账单记录(当前返回空列表)
  • POST /change-plan — 变更套餐(升级 standard/pro/enterprise、同套餐拒绝、无效套餐/周期 400、缺少字段 422、frozen dataclass 不可变验证)
  • POST /cancel — 取消订阅(Pro 用户成功、免费用户 400、frozen dataclass 不可变验证)
  • POST /toggle-auto-renew — 切换自动续费(开启/关闭、缺少字段 422、非法类型 422)
  • 辅助函数_get_plan_name_get_plan_pricePLAN_QUOTAS 硬编码验证

2. 查重上传错误处理测试 (test_duplication_upload_error_handling.py) — 37 用例

验证 PR#82 修复(P1 安全修复):

  • MIME 类型验证 — 7 种合法视频格式通过、图片/PDF/文本/ZIP 拒绝(415)、缺失 Content-Type(400)、带参数 Content-Type 解析、415 消息不泄露内部实现
  • 文件大小限制 — 超大文件 413 检测
  • 错误信息不泄露 — 文件读取失败返回通用消息、OSS 上传失败返回 503 通用消息、错误响应无堆栈/无内部路径/无数据库信息/无 API 密钥
  • 正常流程 — 成功上传、文件存储到 OSS、文件名清理、webm 格式、响应包含记录 ID
  • 边界情况 — 缺失文件名、空文件
  • _validate_video_mime_type 函数 — 基础类型返回、参数去除、大小写不敏感、全量白名单、空/None 400、无效 415、消息安全性

测试方法

  • 使用 FastAPI TestClient + dependency_overrides
  • Mock User 实体、UserRepository、DuplicationRepository、StorageService
  • 全部 63 用例本地 pytest 验证通过

关联

  • PR #78: 订阅后端 API 重写
  • PR #82: 查重上传错误信息泄露修复
## 测试覆盖 ### 1. 订阅管理 API 测试 (`test_subscription_api.py`) — 26 用例 覆盖 5 个端点: - **GET /current** — 当前订阅信息(free/pro 用户、周期日期、创建时间) - **GET /billing-records** — 账单记录(当前返回空列表) - **POST /change-plan** — 变更套餐(升级 standard/pro/enterprise、同套餐拒绝、无效套餐/周期 400、缺少字段 422、frozen dataclass 不可变验证) - **POST /cancel** — 取消订阅(Pro 用户成功、免费用户 400、frozen dataclass 不可变验证) - **POST /toggle-auto-renew** — 切换自动续费(开启/关闭、缺少字段 422、非法类型 422) - **辅助函数** — `_get_plan_name`、`_get_plan_price`、`PLAN_QUOTAS` 硬编码验证 ### 2. 查重上传错误处理测试 (`test_duplication_upload_error_handling.py`) — 37 用例 验证 PR#82 修复(P1 安全修复): - **MIME 类型验证** — 7 种合法视频格式通过、图片/PDF/文本/ZIP 拒绝(415)、缺失 Content-Type(400)、带参数 Content-Type 解析、415 消息不泄露内部实现 - **文件大小限制** — 超大文件 413 检测 - **错误信息不泄露** — 文件读取失败返回通用消息、OSS 上传失败返回 503 通用消息、错误响应无堆栈/无内部路径/无数据库信息/无 API 密钥 - **正常流程** — 成功上传、文件存储到 OSS、文件名清理、webm 格式、响应包含记录 ID - **边界情况** — 缺失文件名、空文件 - **`_validate_video_mime_type` 函数** — 基础类型返回、参数去除、大小写不敏感、全量白名单、空/None 400、无效 415、消息安全性 ### 测试方法 - 使用 FastAPI TestClient + dependency_overrides - Mock User 实体、UserRepository、DuplicationRepository、StorageService - 全部 63 用例本地 pytest 验证通过 ### 关联 - PR #78: 订阅后端 API 重写 - PR #82: 查重上传错误信息泄露修复
xiaoxia added 2 commits 2026-06-28 18:42:52 +08:00
feat: 查重上传错误处理单元测试 (37用例)
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
e3aacb7505
xiaoxia merged commit 949f243639 into develop 2026-06-28 20:07:56 +08:00
Sign in to join this conversation.