# Apifox 测试指南:课程资源分享(v2,已拆分) > 提示:本指南为合并版,现已拆分为: > - 门户端:docs/apifox/课程资源-门户.md > - 管理端:docs/apifox/课程资源-管理.md - baseURL: `http://localhost:8080` - 认证:请求头携带 `Authorization: Bearer ` - 获取 token: - POST `/login`(或当前项目登录接口),Body: `{ "username":"admin", "password":"admin123" }` - 响应中取 `token` 并在后续请求中设置 `Authorization: Bearer {{token}}` ## 测试顺序(本地环境) 1) 登录获取 token - 断言:`code == 200`,`token` 非空 2) 门户查询专业列表(登录即可) - GET `/portal/major/list?pageNum=1&pageSize=20` - 断言:`code == 200`,返回的 `rows` 中包含预置的 10 个专业之一 3) 门户查询课程列表(以“计算机科学与技术”为例) - GET `/portal/course/list?pageNum=1&pageSize=20&majorId=4` - 断言:`code == 200`,`rows` 中包含 `数据结构` 或 `操作系统` 4) 新增资源(文件型,需授予“写权限”) - POST `/manage/courseResource` - Headers: `Authorization: Bearer {{token}}` - Body: ```json { "majorId": 4, "courseId": 4101, "resourceName": "数据结构-资料包-测试", "resourceType": 0, "fileUrl": "https://oss/bucket/ds/test.zip", "fileHash": "sha256:1111222233334444555566667777888899990000aaaabbbbccccddddeeeeffff", "fileSize": 2048000, "description": "测试上传:资料包" } ``` - 断言:`code == 200` - 备注:若返回 400,可能触发唯一约束(hash 重复),修改 `fileHash` 重试。 5) 待审列表(负责人或管理员) - GET `/manage/courseResource/list?pageNum=1&pageSize=10&status=0&majorId=4` - 断言:`rows` 中包含刚新增的资源 6) 审核通过 - PUT `/manage/courseResource/{id}/approve` - 断言:`code == 200` - 7) 门户列表(仅已通过) - GET `/portal/resource/list?pageNum=1&pageSize=10&majorId=4&courseId=4101` - 断言:`rows[0].status == 1`,可见文件 `fileUrl` - 8) 下载计数(门户,需登录) - GET `/portal/resource/{id}/download` - 断言:HTTP 302 跳转(Apifox 显示重定向),随后再次查询详情/列表,`downloadCount` 递增;若未携带 Authorization 头返回 401 9) 下架资源(上传者或负责人) - PUT `/manage/courseResource/{id}/offline` - Body(JSON): ```json { "reason": "内容更新/版权问题/其它" } ``` - 断言:`code == 200`,状态变为 3,后台“回收站/已驳回/已下架”中 `auditReason` 可见 10) 重新上架(进入待审) - PUT `/manage/courseResource/{id}/online` - 断言:`code == 200`,状态变为 0 11) 审核驳回 - PUT `/manage/courseResource/{id}/reject` - Body: `{ "reason": "外链不可达" }` - 断言:`code == 200`,状态变为 2,且 `auditReason` 有值 11B) 回收站详情查看 - 页面:后台 → 课程资源分享 → 回收站 - 操作:点击“查看”,在详情对话框中应高亮显示“原因:auditReason”(状态=已驳回/已下架) 12) 删除资源 - DELETE `/manage/courseResource/{id}` - 断言:上传者删除“待审/驳回/已下架”成功;已通过需先下架或由管理员删除 - 13) 排行榜(门户) - GET `/portal/resource/top?scope=course&courseId=4101&days=7&limit=10` - 断言:`code == 200`,返回数组长度 ≤ 10 ## 角色与权限校验(必读) - 普通用户需授予: - `manage:upload:oss`, `manage:courseResource:add`, `manage:courseResource:edit`, `manage:courseResource:remove`, `manage:courseResource:offline`, `manage:courseResource:online` - 负责人:额外需要 `manage:course:*`, `manage:courseResource:approve`, `manage:courseResource:reject` - 管理员:`manage:*` ## 常见失败与解决 - 401/403:检查 token 是否携带、角色是否具备对应权限 - 400 重复:文件 `fileHash` 或外链 `linkUrl` 已存在;修改后重试 - 409 状态冲突:确认资源当前状态是否允许本次操作(如非待审不可审核) - 400 参数:文件类型/大小校验未通过(仅压缩包 ≤100MB) ## 断言建议 - 所有写操作断言 `code == 200` - 列表接口断言 `rows` 数组存在,`total >= 0` - 审核操作断言 `status` 按预期变化 - 下载后断言 `downloadCount` 自增