IanShaw027
7c3d5cadd5
fix(admin): 代码审查修复 - 输入验证和测试完善
根据 Codex 代码审查报告,修复所有 P0 和 P1 优先级问题。
## P0 紧急修复
### 1. 修复集成测试编译错误
- 更新 group_repo_integration_test.go 中所有 ListWithFilters 调用
- 添加缺失的 search 参数(传入空字符串)
- 修复 4 处旧签名调用,避免 CI 编译失败
### 2. 添加统一的 search 参数输入验证
为所有 admin handler 添加一致的输入验证逻辑:
- group_handler.go: 添加 TrimSpace + 长度限制
- proxy_handler.go: 添加 TrimSpace + 长度限制
- redeem_handler.go: 添加 TrimSpace + 长度限制
- user_handler.go: 添加 TrimSpace + 长度限制
验证规则:
- TrimSpace() 去除首尾空格
- 最大长度 100 字符(防止 DoS 攻击)
- 超长输入自动截断
## P1 改进
### 3. 补充 search 功能的单元测试
新增 admin_service_group_test.go 中的测试:
- TestAdminService_ListGroups_WithSearch
- search 参数正常传递到 repository 层
- search 为空字符串时的行为
- search 与其他过滤条件组合使用
新增 admin_service_search_test.go 文件:
- 为其他 admin API 添加 search 测试覆盖
- 统一的测试模式和断言
### 4. 补充 search 功能的集成测试
新增 group_repo_integration_test.go 测试场景:
- TestListWithFilters_Search
- 搜索 name 字段匹配
- 搜索 description 字段匹配
- 搜索不存在内容(返回空)
- 大小写不敏感测试
- 特殊字符转义测试(%、_)
- 与其他过滤条件组合
## 测试结果
- ✅ 编译检查通过
- ✅ 单元测试全部通过 (3/3)
- ✅ 集成测试编译通过
- ✅ 所有 service 测试通过
## 影响范围
修改文件: 8 个
代码变更: +234 行 / -8 行
## 相关 Issue
解决代码审查中的安全性和稳定性问题:
- 防止 DoS 攻击(超长搜索字符串)
- 修复测试编译错误(CI 阻塞问题)
- 提升测试覆盖率
2026-01-09 19:43:19 +08:00
..
2026-01-04 19:28:20 +08:00
2026-01-09 19:26:32 +08:00
2026-01-04 19:28:20 +08:00
2026-01-03 06:37:08 -08:00
2026-01-03 06:37:08 -08:00
2026-01-04 19:28:20 +08:00
2026-01-04 19:28:20 +08:00
2026-01-08 23:07:00 +08:00
2025-12-25 17:15:01 +08:00
2025-12-26 16:47:44 +08:00
2025-12-26 16:47:44 +08:00
2026-01-03 06:36:35 -08:00
2026-01-04 22:10:32 +08:00
2026-01-04 21:06:12 +08:00
2026-01-03 10:52:24 +08:00
2026-01-01 04:01:51 +08:00
2026-01-03 06:32:51 -08:00
2026-01-03 06:32:51 -08:00
2025-12-31 23:42:01 +08:00
2025-12-31 23:42:01 +08:00
2025-12-25 17:15:01 +08:00
2025-12-26 16:47:44 +08:00
2025-12-26 16:47:44 +08:00
2026-01-05 22:24:24 +08:00
2025-12-31 23:42:01 +08:00
2026-01-04 19:28:20 +08:00
2026-01-08 23:25:05 +08:00
2026-01-08 23:07:00 +08:00
2025-12-30 16:41:45 +08:00
2026-01-08 23:47:29 +08:00
2025-12-26 00:11:03 -08:00
2025-12-31 08:50:12 +08:00
2026-01-07 23:15:20 +08:00
2026-01-07 23:15:20 +08:00
2026-01-09 19:43:19 +08:00
2026-01-09 18:58:06 +08:00
2026-01-04 11:43:58 +08:00
2026-01-04 21:06:12 +08:00
2026-01-05 13:54:43 +08:00
2025-12-25 17:15:01 +08:00
2025-12-26 16:47:44 +08:00
2025-12-26 16:47:44 +08:00
2026-01-03 06:36:35 -08:00
2025-12-31 23:42:01 +08:00
2025-12-31 18:24:39 -08:00
2026-01-05 14:07:33 +08:00
2026-01-03 06:36:35 -08:00
2025-12-31 08:50:12 +08:00
2025-12-26 16:45:40 +08:00
2026-01-07 23:15:20 +08:00
2026-01-07 23:15:20 +08:00
2026-01-04 21:06:12 +08:00
2026-01-06 11:36:38 +08:00
2025-12-29 19:23:49 +08:00
2026-01-08 21:20:12 +08:00
2025-12-26 16:47:44 +08:00
2025-12-26 16:47:44 +08:00
2025-12-26 16:47:44 +08:00
2025-12-29 19:23:49 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 23:42:01 +08:00
2025-12-31 23:42:01 +08:00
2025-12-31 14:51:58 +08:00
2025-12-31 15:52:02 +08:00
2025-12-29 10:03:27 +08:00
2026-01-04 19:28:20 +08:00
2025-12-30 17:13:32 +08:00
2026-01-03 06:34:00 -08:00
2026-01-03 06:36:35 -08:00
2026-01-03 10:52:24 +08:00
2025-12-25 16:01:17 +08:00
2025-12-25 17:15:01 +08:00
2026-01-04 19:28:20 +08:00
2026-01-07 22:49:46 +08:00
2026-01-01 19:09:06 +08:00
2026-01-05 19:03:54 +08:00
2026-01-05 18:48:49 +08:00
2025-12-31 22:48:35 +08:00
2025-12-31 22:48:35 +08:00
2026-01-07 23:15:20 +08:00