Skip to content

Commit 7b5af2c

Browse files
committed
feat: api testing
1 parent 2a1c96f commit 7b5af2c

17 files changed

Lines changed: 1306 additions & 303 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ bl quota history # View quota-change histor
135135
# Asset center — browse, download, and manage model-generated assets (requires console login)
136136
bl asset-center list --type IMAGE
137137
bl asset-center get <asset-id> --include-download-url
138-
bl asset-center download --id <asset-id> --out ./image.png
138+
bl asset-center download --id <asset-id>
139139
bl asset-center stats
140140
bl asset-center storage
141141

README.zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ bl quota history # 查看提额历史记录
133133
# 资产中心 — 浏览、下载与管理模型生成资产(需控制台登录)
134134
bl asset-center list --type IMAGE
135135
bl asset-center get <asset-id> --include-download-url
136-
bl asset-center download --id <asset-id> --out ./image.png
136+
bl asset-center download --id <asset-id>
137137
bl asset-center stats
138138
bl asset-center storage
139139

packages/cli/src/commands.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ import {
8686
assetStats,
8787
assetStorage,
8888
assetTransferList,
89-
assetOssSlrStatus,
9089
assetOssSlrAuthorize,
9190
assetOssBind,
9291
assetOssShow,
@@ -186,7 +185,6 @@ export const commands: Record<string, AnyCommand> = {
186185
"asset-center stats": assetStats,
187186
"asset-center storage": assetStorage,
188187
"asset-center transfer list": assetTransferList,
189-
"asset-center oss slr status": assetOssSlrStatus,
190188
"asset-center oss slr authorize": assetOssSlrAuthorize,
191189
"asset-center oss bind": assetOssBind,
192190
"asset-center oss show": assetOssShow,

packages/cli/tests/e2e/asset-center.e2e.test.ts

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ describe("e2e: asset-center", () => {
4040
test("asset-center download --help 正常退出", async () => {
4141
const { stderr, exitCode } = await runCli(["asset-center", "download", "--help"]);
4242
expect(exitCode, stderr).toBe(0);
43-
expect(stderr).toContain("--out");
4443
expect(stderr).toContain("--id");
44+
expect(stderr).not.toContain("--out");
4545
});
4646

4747
test("asset-center stats --help 正常退出", async () => {
@@ -83,16 +83,10 @@ describe.skipIf(!isConsoleE2EReady())("e2e: asset-center(Console)", () => {
8383
expect(stderr).toMatch(/--id|Missing required argument/i);
8484
});
8585

86-
test("asset-center download 缺少 --out 时退出为用法错误 (2)", async () => {
87-
const { stderr, exitCode } = await runCli([
88-
"asset-center",
89-
"download",
90-
"--id",
91-
"asset-001",
92-
"--quiet",
93-
]);
86+
test("asset-center download 缺少 --id 时退出为用法错误 (2)", async () => {
87+
const { stderr, exitCode } = await runCli(["asset-center", "download", "--quiet"]);
9488
expect(exitCode).toBe(2);
95-
expect(stderr).toMatch(/--out|Missing required argument/i);
89+
expect(stderr).toMatch(/--id|Missing required argument/i);
9690
});
9791

9892
test("asset-center oss bind policy=BEFORE_DAYS 缺 --before-days 报错", async () => {
@@ -156,19 +150,19 @@ describe.skipIf(!isConsoleE2EReady())("e2e: asset-center(Console)", () => {
156150
expect(data.api).toContain("getStorageQuota");
157151
});
158152

159-
test("asset-center oss slr status --dry-run 输出请求参数", async () => {
153+
test("asset-center oss slr authorize --dry-run 输出请求参数", async () => {
160154
const { stdout, stderr, exitCode } = await runCli([
161155
"asset-center",
162156
"oss",
163157
"slr",
164-
"status",
158+
"authorize",
165159
"--dry-run",
166160
"--output",
167161
"json",
168162
]);
169163
expect(exitCode, stderr).toBe(0);
170164
const data = parseStdoutJson<{ api?: string }>(stdout);
171-
expect(data.api).toContain("checkOssSLR");
165+
expect(data.api).toContain("createOssSLR");
172166
});
173167

174168
test("【console】asset-center list 真实调用或鉴权失败优雅退出", async () => {

packages/commands/src/commands/asset-center/COMMAND-TREE.md

Lines changed: 20 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ bl asset
4343
4444
└── oss # OSS 转存子组
4545
├── slr
46-
│ ├── status # 检查 SLR 授权状态
47-
│ └── authorize # 创建 SLR 授权
46+
│ └── authorize # 一键 SLR 授权
4847
├── bind # 创建转存策略(绑定 OSS)
4948
├── show # 查看当前转存策略
5049
├── update # 更新转存策略
@@ -79,7 +78,6 @@ bl asset
7978
| `"asset service enable"` | `assetServiceEnable` | 3 |
8079
| `"asset service disable"` | `assetServiceDisable` | 3 |
8180
| `"asset transfer list"` | `assetTransferList` | 3 |
82-
| `"asset oss slr status"` | `assetOssSlrStatus` | 2 |
8381
| `"asset oss slr authorize"` | `assetOssSlrAuthorize` | 2 |
8482
| `"asset oss bind"` | `assetOssBind` | 2 |
8583
| `"asset oss show"` | `assetOssShow` | 2 |
@@ -370,36 +368,19 @@ Overage: ¥0.12/GB/month
370368

371369
### 5.2 Phase 2 命令 — OSS 子组
372370

373-
#### `bl asset oss slr status`
374-
375-
```
376-
Description: Check whether OSS service-linked role is authorized
377-
378-
Usage: bl asset oss slr status
379-
380-
Examples:
381-
bl asset oss slr status
382-
bl asset oss slr status --output json
383-
```
384-
385-
**PRD 映射:** #8 SLR 授权(检查步骤)
386-
387-
---
388-
389371
#### `bl asset oss slr authorize`
390372

391373
```
392-
Description: Create OSS service-linked role authorization
374+
Description: Authorize OSS service-linked role (one-click)
393375
394376
Usage: bl asset oss slr authorize
395377
396378
Examples:
397379
bl asset oss slr authorize
380+
bl asset oss slr authorize --output json
398381
```
399382

400-
行为:已授权则跳过并提示;未授权则调用 create。
401-
402-
**PRD 映射:** #8 SLR 授权(执行步骤)
383+
**PRD 映射:** #8 SLR 一键授权
403384

404385
---
405386

@@ -594,22 +575,22 @@ bl asset stats --sync-failed
594575

595576
## 6. PRD 覆盖矩阵
596577

597-
| PRD # | 功能 | CLI 命令 | Phase | 状态 |
598-
| ----- | ------------- | ------------------------------------ | ----- | ---------------------------------- |
599-
| 1 | 查看资产列表 | `asset list` | 1 | ✅ 可开发 |
600-
| 2 | 查看资产详情 | `asset get` | 1 | ✅ 可开发 |
601-
| 3 | 收藏/取消收藏 | `asset favorite` / `unfavorite` | 1 | ✅ 可开发 |
602-
| 4 | 删除资产 | `asset delete` | 1 | ✅ 可开发 |
603-
| 5 | 批量删除 | `asset delete`(多 `--id` | 1 | ✅ 可开发 |
604-
| 6 | 下载资产 | `asset download` | 1 | ✅ 可开发 |
605-
| 7 | 查看资产统计 | `asset stats` | 1 | ✅ 可开发(转存失败用 workaround) |
606-
| 8 | SLR 授权 | `asset oss slr status` + `authorize` | 2 | ✅ 可开发 |
607-
| 9 | 绑定 OSS | `asset oss bind` | 2 | ✅ 可开发 |
608-
| 10 | 查看 OSS 配置 | `asset oss show` | 2 | ✅ 可开发 |
609-
| 11 | 修改 OSS 配置 | `asset oss update` | 2 | ✅ 可开发 |
610-
| 12 | 解绑 OSS | `asset oss unbind` | 2 | ✅ 可开发 |
611-
| 13 | 查看转存日志 | `asset transfer list` | 3 | ⛔ API 缺失 |
612-
| 14 | 查看容量信息 | `asset storage` | 1 | ✅ 可开发 |
578+
| PRD # | 功能 | CLI 命令 | Phase | 状态 |
579+
| ----- | ------------- | ------------------------------- | ----- | ---------------------------------- |
580+
| 1 | 查看资产列表 | `asset list` | 1 | ✅ 可开发 |
581+
| 2 | 查看资产详情 | `asset get` | 1 | ✅ 可开发 |
582+
| 3 | 收藏/取消收藏 | `asset favorite` / `unfavorite` | 1 | ✅ 可开发 |
583+
| 4 | 删除资产 | `asset delete` | 1 | ✅ 可开发 |
584+
| 5 | 批量删除 | `asset delete`(多 `--id`| 1 | ✅ 可开发 |
585+
| 6 | 下载资产 | `asset download` | 1 | ✅ 可开发 |
586+
| 7 | 查看资产统计 | `asset stats` | 1 | ✅ 可开发(转存失败用 workaround) |
587+
| 8 | SLR 授权 | `asset oss slr authorize` | 2 | ✅ 可开发 |
588+
| 9 | 绑定 OSS | `asset oss bind` | 2 | ✅ 可开发 |
589+
| 10 | 查看 OSS 配置 | `asset oss show` | 2 | ✅ 可开发 |
590+
| 11 | 修改 OSS 配置 | `asset oss update` | 2 | ✅ 可开发 |
591+
| 12 | 解绑 OSS | `asset oss unbind` | 2 | ✅ 可开发 |
592+
| 13 | 查看转存日志 | `asset transfer list` | 3 | ⛔ API 缺失 |
593+
| 14 | 查看容量信息 | `asset storage` | 1 | ✅ 可开发 |
613594

614595
---
615596

@@ -650,7 +631,6 @@ bl asset download --id asset-001 --out ./image.png
650631
### 7.4 OSS 转存配置
651632

652633
```bash
653-
bl asset oss slr status
654634
bl asset oss slr authorize
655635
bl asset oss regions list
656636
bl asset oss buckets list --region cn-hangzhou

packages/commands/src/commands/asset-center/DESIGN.md

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,14 @@
6767

6868
### 2.3 OSS 转存
6969

70-
| PRD # | 能力 | CLI 命令 | API Action | 备注 |
71-
| ----- | ------------- | -------------------------------------------------------- | ------------------------------ | ----------------------------- |
72-
| 8 | SLR 授权 | `bl asset oss slr status` / `bl asset oss slr authorize` | `checkOssSLR` / `createOssSLR` | 授权前先查状态 |
73-
| 9 | 绑定 OSS | `bl asset oss bind` | `createAssetTransferPolicy` | 配置 bucket / path / 转存策略 |
74-
| 10 | 查看 OSS 配置 | `bl asset oss show` | `getAssetTransferPolicy` | |
75-
| 11 | 修改 OSS 配置 | `bl asset oss update` | `updateAssetTransferPolicy` |`--policy-id` |
76-
| 12 | 解绑 OSS | `bl asset oss unbind` | `deleteAssetTransferPolicy` | |
77-
| 13 | 查看转存日志 | `bl asset transfer list`(待定) | **文档缺失** | 见 §6 风险项 |
70+
| PRD # | 能力 | CLI 命令 | API Action | 备注 |
71+
| ----- | ------------- | -------------------------------- | --------------------------- | ----------------------------- |
72+
| 8 | SLR 授权 | `bl asset oss slr authorize` | `createOssSLR` | 一键授权,直接调用 create |
73+
| 9 | 绑定 OSS | `bl asset oss bind` | `createAssetTransferPolicy` | 配置 bucket / path / 转存策略 |
74+
| 10 | 查看 OSS 配置 | `bl asset oss show` | `getAssetTransferPolicy` | |
75+
| 11 | 修改 OSS 配置 | `bl asset oss update` | `updateAssetTransferPolicy` |`--policy-id` |
76+
| 12 | 解绑 OSS | `bl asset oss unbind` | `deleteAssetTransferPolicy` | |
77+
| 13 | 查看转存日志 | `bl asset transfer list`(待定) | **文档缺失** | 见 §6 风险项 |
7878

7979
**辅助命令(绑定 UX,API 已有):**
8080

@@ -141,7 +141,6 @@ asset-center/
141141
├── models-list.ts # 可选 P1
142142
├── service-status.ts # 可选 P1
143143
└── oss/
144-
├── slr-status.ts
145144
├── slr-authorize.ts
146145
├── bind.ts
147146
├── show.ts
@@ -364,11 +363,7 @@ CLI 用法:`--id asset-001 --id asset-002` 或多次重复。实现时在 `val
364363

365364
### 5.8 `bl asset oss slr authorize`
366365

367-
流程:
368-
369-
1. 调用 `checkOssSLR`
370-
2.`authorized === true`,text 输出 "Already authorized." 并 exit 0
371-
3. 否则调用 `createOssSLR`
366+
直接调用 `createOssSLR`,一键完成 SLR 授权。
372367

373368
---
374369

@@ -456,7 +451,7 @@ asset list | get | favorite | unfavorite | delete | restore | download | stats |
456451
### Phase 2 — OSS 转存(P1)
457452

458453
```
459-
asset oss slr status | authorize
454+
asset oss slr authorize
460455
asset oss bind | show | update | unbind
461456
asset oss regions | buckets | folders list
462457
asset models list | service status
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Asset Center 命令测试报告 — Phase 2
2+
3+
- **测试时间**: 2026-07-10 09:07:09 (UTC)
4+
- **Workspace**: `llm-0xvms4kqhbqjlg8s`
5+
- **测试 IMAGE**: `asset_98175cbf83294f7b8ada86657623dcf3`
6+
- **测试 VIDEO**: `asset_df026105d2274ff9b8c824058fa23d60`
7+
- **策略**: 可逆写操作(favorite/unfavorite 往返);download 到 /tmp 后删除;其余只读
8+
- **汇总**: 16 通过 / 0 失败 / 16 总计
9+
10+
> Phase 1 报告见同目录 [TEST-REPORT.md](./TEST-REPORT.md)(24 项 dry-run + 只读基础验证)
11+
12+
## Phase 2 测试结果
13+
14+
| # | 分类 | 命令 | 模式 | 状态 | Exit | 耗时 | 结果摘要 |
15+
| --- | ---- | ------------------------------------------ | -------- | ------- | ---- | ------- | -------------------------------------------------------------------------------------------------------- |
16+
| 1 | 下载 | `asset-center download (IMAGE)` | 真实调用 | ✅ PASS | 0 | 20045ms | saved /tmp/asset-center-test-asset_98175cbf83294f7b8ada86657623dcf3.png (1449847 bytes, reported 1.4 MB) |
17+
| 2 | 查询 | `asset-center get --include-download-url` | 真实调用 | ✅ PASS | 0 | 21226ms | download_url present |
18+
| 3 | 查询 | `asset-center list --include-download-url` | 真实调用 | ✅ PASS | 0 | 19057ms | items contain download_url |
19+
| 4 | 查询 | `asset-center list --next-token` | 真实调用 | ✅ PASS | 0 | 19584ms | page2=3 items, overlap=0, has_pre=true |
20+
| 5 | 统计 | `asset-center stats --type IMAGE` | 真实调用 | ✅ PASS | 0 | 18830ms | image=7, total=7 |
21+
| 6 | 统计 | `asset-center stats --sync-failed` | 真实调用 | ✅ PASS | 0 | 19084ms | total=27, sync_failed=0 |
22+
| 7 | 查询 | `asset-center list --recycle-bin` | 真实调用 | ✅ PASS | 0 | 19314ms | 0 soft-deleted item(s) |
23+
| 8 | 输出 | `asset-center list (text)` | 真实调用 | ✅ PASS | 0 | 17840ms | 4 lines table output |
24+
| 9 | 收藏 | `asset-center favorite (真实)` | 真实调用 | ✅ PASS | 0 | 22082ms | affected=1 |
25+
| 10 | 收藏 | `get 验证 favorited=true` | 真实调用 | ✅ PASS | 0 | 18865ms | favorited=true ✓ |
26+
| 11 | 查询 | `list --favorited 含测试资产` | 真实调用 | ✅ PASS | 0 | 22120ms | found in favorited list |
27+
| 12 | 收藏 | `asset-center unfavorite (真实)` | 真实调用 | ✅ PASS | 0 | 22133ms | affected=1 |
28+
| 13 | 收藏 | `get 验证 favorited=false (恢复)` | 真实调用 | ✅ PASS | 0 | 27797ms | favorited=false ✓ |
29+
| 14 | 收藏 | `favorite 批量 (--id x2)` | 真实调用 | ✅ PASS | 0 | 22947ms | affected=2 |
30+
| 15 | 收藏 | `unfavorite 批量 (--id x2)` | 真实调用 | ✅ PASS | 0 | 15385ms | affected=2 |
31+
| 16 | 边界 | `get 不存在的 asset-id` | 真实调用 | ✅ PASS | 1 | 12207ms | exit 1, 服务端错误原样透传: "资产不存在" |
32+
33+
## 边界行为说明
34+
35+
查询不存在的 `asset-id` 时,服务端返回业务错误 **「资产不存在」**,CLI 按约定 **原样透传**(exit code 1),不会替换为本地文案。这与 AGENTS.md 错误处理边界一致。

0 commit comments

Comments
 (0)