clone

push a directory of html from the terminal and get a four-character url back. a deno cli on cloudflare

feat/site-feedback
nzip / cli / lib / api_test.ts
api_test.ts 2.1K
1import { commitTargetFor, resolveCliTarget } from "./api.ts";2import type { Config } from "./config.ts";34const unrestricted: Config = {5 server: "https://example.com",6 token: "test",7};89const restricted: Config = {10 ...unrestricted,11 allowVaults: ["home"],12};1314function assertEquals(actual: unknown, expected: unknown): void {15 if (JSON.stringify(actual) !== JSON.stringify(expected)) {16 throw new Error(`expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);17 }18}1920function assertThrows(fn: () => unknown, message: string): void {21 try {22 fn();23 } catch (error) {24 if (error instanceof Error && error.message.includes(message)) return;25 throw error;26 }27 throw new Error(`expected error containing ${JSON.stringify(message)}`);28}2930Deno.test("raw addresses remain available without allowVaults", () => {31 assertEquals(resolveCliTarget("2a3f", unrestricted), "2a3f");32 assertEquals(commitTargetFor("2a3f", unrestricted), { address: 0x2a3f });33});3435Deno.test("resolveCliTarget accepts a raw address in an allowed authenticated vault", () => {36 assertEquals(37 resolveCliTarget("2a3f", { ...restricted, allowVaults: ["home"] }, [38 { slot: 2, name: "home" },39 ]),40 "2a3f",41 );42});4344Deno.test("resolveCliTarget refuses a raw address in a disallowed authenticated vault", () => {45 assertThrows(46 () => resolveCliTarget("2a3f", restricted, [{ slot: 2, name: "work" }]),47 'vault "work" is not allowed',48 );49});5051Deno.test("resolveCliTarget refuses a raw address without authenticated slot metadata", () => {52 assertThrows(53 () => resolveCliTarget("2a3f", restricted),54 "authenticated status did not identify vault slot 0x2",55 );56});5758Deno.test("commitTargetFor accepts a validated raw address when allowVaults is set", () => {59 assertEquals(commitTargetFor("2a3f", restricted, [{ slot: 2, name: "home" }]), {60 address: 0x2a3f,61 });62});6364Deno.test("allowVaults still accepts an allowed named target", () => {65 assertEquals(resolveCliTarget("home:demo", restricted), "home:demo");66 assertEquals(commitTargetFor("home:demo", restricted), {67 vault: "home",68 alias: "demo",69 });70});