test(module_registry): P3-1第十三波 模块注册中心单测 62个 #717

Merged
xiaoxia merged 5 commits from feat/p3-1-module-registry-tests into develop 2026-07-22 16:27:20 +08:00
Owner

P3-1 第十三波单元测试

新增

  • tests/unit/test_module_registry.py - 62个测试

覆盖范围

  • ModuleStatus枚举 (3个): 枚举值/str类型/数量
  • QuotaRule (4个): 必填字段/默认描述/自定义描述/float消耗量
  • ModuleCapability (4个): 必填名称/默认值/配额规则/元数据
  • Module数据类 (9个): 必填name/默认version/description/capabilities/dependencies/status/config/完整参数构造
  • Module.activate (4个): registered→active/disabled→active/error保持/已是active
  • Module.disable (4个): registered→disabled/active→disabled/error→disabled/已是disabled
  • ModuleRegistry基础 (8个): 空注册中心/单个注册/重复注册抛错/不存在返回None/注销成功/不存在注销抛错/有依赖者注销抛错/clear
  • 自动激活逻辑 (4个): 无依赖自动激活/依赖全满足自动激活/依赖不满足保持REGISTERED/后注册依赖不自动激活前者
  • 依赖检查 (5个): 模块不存在/无依赖/依赖全满足/依赖未注册/依赖未激活
  • 列表与过滤 (4个): 列出全部/按active过滤/按disabled过滤/按registered过滤
  • 能力发现 (7个): has_capability真/假/非激活不算/get_capability第一个匹配/不存在返回None/get_quota_rules/不存在返回空
  • 已激活能力汇总 (5个): 空/单模块多能力/跳过非激活/跳过无能力/多模块
  • 全局单例 (2个): 存在/同一实例
## P3-1 第十三波单元测试 ### 新增 - `tests/unit/test_module_registry.py` - 62个测试 ### 覆盖范围 - **ModuleStatus枚举** (3个): 枚举值/str类型/数量 - **QuotaRule** (4个): 必填字段/默认描述/自定义描述/float消耗量 - **ModuleCapability** (4个): 必填名称/默认值/配额规则/元数据 - **Module数据类** (9个): 必填name/默认version/description/capabilities/dependencies/status/config/完整参数构造 - **Module.activate** (4个): registered→active/disabled→active/error保持/已是active - **Module.disable** (4个): registered→disabled/active→disabled/error→disabled/已是disabled - **ModuleRegistry基础** (8个): 空注册中心/单个注册/重复注册抛错/不存在返回None/注销成功/不存在注销抛错/有依赖者注销抛错/clear - **自动激活逻辑** (4个): 无依赖自动激活/依赖全满足自动激活/依赖不满足保持REGISTERED/后注册依赖不自动激活前者 - **依赖检查** (5个): 模块不存在/无依赖/依赖全满足/依赖未注册/依赖未激活 - **列表与过滤** (4个): 列出全部/按active过滤/按disabled过滤/按registered过滤 - **能力发现** (7个): has_capability真/假/非激活不算/get_capability第一个匹配/不存在返回None/get_quota_rules/不存在返回空 - **已激活能力汇总** (5个): 空/单模块多能力/跳过非激活/跳过无能力/多模块 - **全局单例** (2个): 存在/同一实例
xiaoxia added 4 commits 2026-07-22 14:35:27 +08:00
test(p3-1): 第十波 - url_security 安全模块单测 72个
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 10s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 46s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 32s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 30s
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 / Frontend Lint (pull_request) Successful in 56s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m19s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 48s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 49s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m12s
AI Code Review / AI Code Review (pull_request) Successful in 5m35s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
911478495a
覆盖 url_security.py 核心安全逻辑:
- validate_url_safety: scheme/端口/主机名/URL长度 等基础校验
- SSRF防护: 内网IP/回环/链路本地/组播/未指定/保留地址
- 内网主机名防护: localhost/.local/.internal/metadata
- 可信域名白名单: 精确匹配+子域名匹配
- is_url_safe 便捷函数
- 文件魔数校验: PNG/JPEG/GIF/WEBP/BMP/WAV/MP3/OGG/FLAC
- safe_download_file / safe_download_bytes (mock网络)
- 大小限制 / MIME类型白名单 / Content-Length预检
test(pagination): 补充通用分页器52个单元测试
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 24s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 47s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 26s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 25s
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 / Frontend Lint (pull_request) Successful in 41s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 46s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 50s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 37s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 5m59s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m6s
AI Code Review / AI Code Review (pull_request) Successful in 3m20s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
a9bc314fed
覆盖 PaginationParams 默认值/校验/offset/limit、
PaginationMeta.from_params 边界场景、
PaginatedResponse.create 工厂方法、
paginate 内存分页函数
test(storage): 补充SharedStorageService 55个单元测试
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 21s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m29s
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 / Validate - Type Check (mypy) (pull_request) Successful in 27s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 49s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 41s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 54s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m39s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 52s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m16s
AI Code Review / AI Code Review (pull_request) Successful in 5m2s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 8m51s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
92b8044cb3
覆盖 _normalize_storage_key/URL解码、_is_local_generated_url、
get_url、create_direct_upload_post/policy+HMAC签名验证、
get_download_url fallback、未配置OSS错误处理、
bucket操作调用验证、单例模式、endpoint https前缀处理
test(module_registry): 补充模块注册中心62个单元测试
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 36s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 23s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m0s
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 / Frontend Lint (pull_request) Successful in 57s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m4s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m59s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m8s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 50s
AI Code Review / AI Code Review (pull_request) Successful in 8m41s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 10m45s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
bb83549cc0
覆盖 ModuleStatus枚举/QuotaRule/ModuleCapability/Module数据类、
Module.activate/disable状态转换、ModuleRegistry注册注销/
自动激活/依赖检查/能力发现/状态过滤/全局单例

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #717 | | 预览链接 | [https://pr-717.preview.xiaoxiajianji.com](https://pr-717.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-22 15:08:42 +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) Successful in 44s
AI Code Review / AI Code Review (pull_request) Successful in 4m10s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web 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 / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (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
CI/CD Pipeline / Unit Tests (pull_request) Successful in 16s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m5s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 29m4s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 35m59s
PR Automation / Auto Approve on CI Green (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 29s
c0b40f974e
auto-approve-bot approved these changes 2026-07-22 15:40:34 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
Collaborator

代码审查结果 - PR #717

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

💡 建议(1个可选)

  1. tests/unit/test_module_registry.py (TestModuleRegistryCapabilities.test_get_capability_returns_first_match):测试用例隐式依赖了模块注册的顺序(即 mod1 先于 mod2)来断言返回结果。虽然 Python 3.7+ 的字典保持插入顺序,但依赖实现细节(如内部存储结构)进行“优先级”测试会降低测试的鲁棒性。建议明确验证“先注册的模块优先”这一业务逻辑,或者在断言中增加对 result 所属模块的校验,而不仅仅是校验描述属性。

格式检查通过 | 逻辑审查通过 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 15:43:21 | 模型:

## 代码审查结果 - PR #717 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(1个可选) 1. **tests/unit/test_module_registry.py (TestModuleRegistryCapabilities.test_get_capability_returns_first_match)**:测试用例隐式依赖了模块注册的顺序(即 `mod1` 先于 `mod2`)来断言返回结果。虽然 Python 3.7+ 的字典保持插入顺序,但依赖实现细节(如内部存储结构)进行“优先级”测试会降低测试的鲁棒性。建议明确验证“先注册的模块优先”这一业务逻辑,或者在断言中增加对 `result` 所属模块的校验,而不仅仅是校验描述属性。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 15:43:21 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 876c3a2aaa into develop 2026-07-22 16:27:20 +08:00

🗑️ 预览环境已清理

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

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

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