Spaces:
Configuration error
Configuration error
| import { afterEach, describe, expect, it, vi } from "vitest"; | |
| import type { ResolvedGoogleChatAccount } from "./accounts.js"; | |
| import { downloadGoogleChatMedia } from "./api.js"; | |
| vi.mock("./auth.js", () => ({ | |
| getGoogleChatAccessToken: vi.fn().mockResolvedValue("token"), | |
| })); | |
| const account = { | |
| accountId: "default", | |
| enabled: true, | |
| credentialSource: "inline", | |
| config: {}, | |
| } as ResolvedGoogleChatAccount; | |
| describe("downloadGoogleChatMedia", () => { | |
| afterEach(() => { | |
| vi.unstubAllGlobals(); | |
| }); | |
| it("rejects when content-length exceeds max bytes", async () => { | |
| const body = new ReadableStream({ | |
| start(controller) { | |
| controller.enqueue(new Uint8Array([1, 2, 3])); | |
| controller.close(); | |
| }, | |
| }); | |
| const response = new Response(body, { | |
| status: 200, | |
| headers: { "content-length": "50", "content-type": "application/octet-stream" }, | |
| }); | |
| vi.stubGlobal("fetch", vi.fn().mockResolvedValue(response)); | |
| await expect( | |
| downloadGoogleChatMedia({ account, resourceName: "media/123", maxBytes: 10 }), | |
| ).rejects.toThrow(/max bytes/i); | |
| }); | |
| it("rejects when streamed payload exceeds max bytes", async () => { | |
| const chunks = [new Uint8Array(6), new Uint8Array(6)]; | |
| let index = 0; | |
| const body = new ReadableStream({ | |
| pull(controller) { | |
| if (index < chunks.length) { | |
| controller.enqueue(chunks[index++]); | |
| } else { | |
| controller.close(); | |
| } | |
| }, | |
| }); | |
| const response = new Response(body, { | |
| status: 200, | |
| headers: { "content-type": "application/octet-stream" }, | |
| }); | |
| vi.stubGlobal("fetch", vi.fn().mockResolvedValue(response)); | |
| await expect( | |
| downloadGoogleChatMedia({ account, resourceName: "media/123", maxBytes: 10 }), | |
| ).rejects.toThrow(/max bytes/i); | |
| }); | |
| }); | |