diff --git a/apps/web/e2e/test_asset.spec.ts b/apps/web/e2e/test_asset.spec.ts index 36ef68752..e51ffb7b3 100755 --- a/apps/web/e2e/test_asset.spec.ts +++ b/apps/web/e2e/test_asset.spec.ts @@ -178,7 +178,7 @@ test.describe("素材库流程", () => { expect(kinds).toContain("image") }) - test("创建素材记录", async ({ request }) => { + test("创建素材记录 — POST /assets 已废弃返回 410", async ({ request }) => { const { headers, userId } = await createAuthedUser(request, "asset-create") const projectId = await createProject(request, headers, Date.now().toString()) @@ -194,7 +194,7 @@ test.describe("素材库流程", () => { expect(lib.ok()).toBeTruthy() const libData = await lib.json() - // 创建素材记录 + // POST /assets 已废弃,应返回 410 Gone const response = await request.post(`${apiBase}/assets`, { headers, data: { @@ -210,16 +210,9 @@ test.describe("素材库流程", () => { }, }) - expect( - response.ok(), - `创建素材应返回 2xx,实际: ${response.status()} ${await response.text()}`, - ).toBeTruthy() - + expect(response.status()).toBe(410) const data = await response.json() - expect(data.id, "应返回素材 ID").toBeTruthy() - expect(data.name).toContain("test_video") - expect(data.mime_type).toBe("video/mp4") - expect(data.library_id).toBe(libData.id) + expect(data.error?.code).toBe("HTTP_410") }) test("列出素材", async ({ request }) => { @@ -232,51 +225,50 @@ test.describe("素材库流程", () => { data: { project_id: projectId, name: `List Lib ${Date.now()}`, - kind: "video", + kind: "image", }, }) expect(lib.ok(), `创建素材库应成功: ${await lib.text()}`).toBeTruthy() const libData = await lib.json() - // 创建 2 个素材 - await request.post(`${apiBase}/assets`, { + // 通过 multipart upload 上传 2 个小图片作为测试素材 + // 创建一个 1x1 的 PNG buffer + const tinyPng = Buffer.from( + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", + "base64", + ) + + await request.post(`${apiBase}/upload`, { headers, - data: { + multipart: { project_id: projectId, library_id: libData.id, - name: `clip_a_${Date.now()}.mp4`, - storage_key: `uploads/e2e/clip_a.mp4`, - mime_type: "video/mp4", - status: "ready", - uploaded_by_user_id: userId, + file: { name: "clip_a.png", mimeType: "image/png", buffer: tinyPng }, }, }) - await request.post(`${apiBase}/assets`, { + await request.post(`${apiBase}/upload`, { headers, - data: { + multipart: { project_id: projectId, library_id: libData.id, - name: `clip_b_${Date.now()}.mp4`, - storage_key: `uploads/e2e/clip_b.mp4`, - mime_type: "video/mp4", - status: "ready", - uploaded_by_user_id: userId, + file: { name: "clip_b.png", mimeType: "image/png", buffer: tinyPng }, }, }) - // 列出素材 - const response = await request.get(`${apiBase}/assets`, { - headers, - params: { library_id: libData.id }, - }) + // 列出素材(可能需要等待 ingest job 完成) + let items: any[] = [] + for (let i = 0; i < 10; i++) { + const response = await request.get(`${apiBase}/assets`, { + headers, + params: { library_id: libData.id }, + }) + expect(response.ok(), `列出素材应返回 2xx`).toBeTruthy() + const data = await response.json() + items = data.items || [] + if (items.length >= 2) break + await new Promise((r) => setTimeout(r, 2000)) + } - expect( - response.ok(), - `列出素材应返回 2xx,实际: ${response.status()} ${await response.text()}`, - ).toBeTruthy() - - const data = await response.json() - const items = data.items || [] expect(items.length, "应至少有 2 个素材").toBeGreaterThanOrEqual(2) })