This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / web / src / lib / api / knot.test.ts
1.0 kB 26 lines
1import { describe, expect, it, vi } from "vitest"; 2import * as knot from "./knot"; 3import { ClientResponseError, createBobbinClient, type BobbinContext } from "./client"; 4 5const jsonResponse = (body: unknown, init: ResponseInit = {}): Response => 6 new Response(JSON.stringify(body), { 7 status: 200, 8 headers: { "content-type": "application/json" }, 9 ...init 10 }); 11 12const makeCtx = (fetchMock: typeof globalThis.fetch): BobbinContext => 13 createBobbinClient({ serviceUrl: "https://bobbin.test", fetch: fetchMock }); 14 15describe("knot.archive (binary passthrough)", () => { 16 it("throws ClientResponseError on a non-2xx archive response", async () => { 17 const fetchMock = vi 18 .fn<typeof globalThis.fetch>() 19 .mockResolvedValue(jsonResponse({ error: "UpstreamGone" }, { status: 502 })); 20 const err = await knot 21 .archive(makeCtx(fetchMock), { repo: "did:plc:x/r", ref: "main" }) 22 .catch((e: unknown) => e); 23 expect(err).toBeInstanceOf(ClientResponseError); 24 expect((err as ClientResponseError).status).toBe(502); 25 }); 26});