import { describe, expect, it, vi } from "vitest"; import { resolveRepoViewFromParams } from "#lib/server/repo.ts"; import type { Fetch } from "#lib/fetch.ts"; const OWNER_DID = "did:plc:kelp"; const json = (body: unknown): Response => new Response(JSON.stringify(body), { headers: { "content-type": "application/json" } }); const event = (handle: string) => { const fetchMock = vi.fn().mockImplementation(async (input) => { const target = String(input); if (target.includes("resolveMiniDoc")) { return json({ did: OWNER_DID, handle: "handle.invalid" }); } if (target.includes("getRepoByName")) { return json({ uri: "at://did:plc:reef/org.tangled.repo.manifest/self", value: { $type: "org.tangled.repo.manifest", declaration: { owner: OWNER_DID, name: "reef" }, createdAt: "2026-10-01T00:00:00Z" } }); } return json({}); }); return { url: new URL(`http://web.test/${handle}/reef`), params: { handle, repo: "reef" }, fetch: fetchMock }; }; describe("resolveRepoViewFromParams", () => { it("accepts DID as handle param", async () => { const { doc, view } = await resolveRepoViewFromParams(event(OWNER_DID) as never); expect(doc.did).toBe(OWNER_DID); expect(view.uri).toBe("at://did:plc:reef/org.tangled.repo.manifest/self"); }); it("404 on BS instead of tryna resolve as actors", async () => { const bare = event("bareword"); await expect(resolveRepoViewFromParams(bare as never)).rejects.toMatchObject({ status: 404 }); expect(bare.fetch).not.toHaveBeenCalled(); }); });