1import { cmdVault } from "./vault.ts";2import { setJsonMode } from "../lib/fmt.ts";34Deno.test("vault policy flags forward rules and read passwords from files without printing them", async () => {5 const directory = await Deno.makeTempDir();6 const previousFetch = globalThis.fetch;7 const previousLog = console.log;8 const bodies: Record<string, unknown>[] = [];9 const output: string[] = [];10 await Deno.writeTextFile(`${directory}/password`, "private-visitor-password\n");11 globalThis.fetch = ((_input, init) => {12 bodies.push(JSON.parse(String(init?.body)));13 return Promise.resolve(14 Response.json({15 name: "reviews",16 hasDefaultPassword: true,17 requirePassword: true,18 maxTtl: 14,19 }),20 );21 }) as typeof fetch;22 console.log = (...args) => {23 output.push(args.map(String).join(" "));24 };25 setJsonMode(true);26 try {27 await cmdVault(28 { server: "https://test.invalid", token: "test-token", defaultVault: "reviews" },29 ["update", "reviews"],30 {31 description: "Private reviews",32 defaultTtl: "7d",33 maxTtl: "14d",34 requirePassword: true,35 defaultPasswordFile: `${directory}/password`,36 },37 );38 const policy = bodies[0];39 if (40 policy.maxTtl !== 14 || policy.defaultTtl !== 7 || policy.requirePassword !== true ||41 policy.defaultPassword !== "private-visitor-password"42 ) throw new Error("incorrect vault policy payload");43 if (output.join().includes("private-visitor-password")) throw new Error("password was printed");44 await cmdVault({ server: "https://test.invalid", token: "test-token" }, ["update", "reviews"], {45 maxTtl: "none",46 requirePassword: false,47 clearDefaultPassword: true,48 });49 if (50 bodies[1].maxTtl !== null || bodies[1].requirePassword !== false ||51 bodies[1].defaultPassword !== null52 ) {53 throw new Error("explicit policy clearing was not preserved");54 }55 } finally {56 globalThis.fetch = previousFetch;57 console.log = previousLog;58 setJsonMode(false);59 await Deno.remove(directory, { recursive: true });60 }61});