Something went wrong. Try again.
Something went wrong. Try again.
2.6 kB · 49 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import { afterEach, describe, expect, it } from "vitest";import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";import { join } from "node:path";import { writeBridgeConfig } from "../../bridge/bridgeConfigFile";import { parseBridgeConfig } from "../../shared/bridgeConfig";import { makeTempRepo, type TempRepo } from "../helpers/tempRepo";
let repo: TempRepo;afterEach(() => repo?.cleanup());const token = "ab12".repeat(8);const bridge = { endpoint: "ws://127.0.0.1:4567/ext", token };
describe("writeBridgeConfig", () => { it("writes a bridge.json the extension's own parser accepts", () => { repo = makeTempRepo({ git: false }); const path = writeBridgeConfig(repo.dir, bridge, "test-qian"); expect(path).toBe(join(repo.dir, "bridge.json")); expect(parseBridgeConfig(readFileSync(path, "utf8"))).toEqual({ ok: true, config: { url: "ws://127.0.0.1:4567/ext", token, profile: "test-qian" } }); }); it("keeps the token private to the user (mode 600)", () => { repo = makeTempRepo({ git: false }); expect(statSync(writeBridgeConfig(repo.dir, bridge, "p")).mode & 0o777).toBe(0o600); }); it("replaces an older file without leaving temporary files behind", () => { repo = makeTempRepo({ git: false }); writeBridgeConfig(repo.dir, bridge, "p"); writeBridgeConfig(repo.dir, { endpoint: "ws://127.0.0.1:9999/ext", token: "cd34".repeat(8) }, "p"); expect(JSON.parse(readFileSync(join(repo.dir, "bridge.json"), "utf8")).url).toBe("ws://127.0.0.1:9999/ext"); expect(readdirSync(repo.dir)).toEqual(["bridge.json"]); }); it("refuses a bridge address the extension would refuse, and writes nothing", () => { repo = makeTempRepo({ git: false }); expect(() => writeBridgeConfig(repo.dir, { endpoint: "ws://example.com:1/ext", token }, "p")).toThrowError(/host must be 127\.0\.0\.1/); expect(existsSync(join(repo.dir, "bridge.json"))).toBe(false); }); it("never puts the token in an error message", () => { repo = makeTempRepo({ git: false }); expect(() => writeBridgeConfig(repo.dir, { endpoint: bridge.endpoint, token: "NOT-HEX-SECRET" }, "p")).toThrowError(/token: must be 32 hex/); try { writeBridgeConfig(repo.dir, { endpoint: bridge.endpoint, token: "NOT-HEX-SECRET" }, "p"); } catch (e) { expect(String((e as Error).message)).not.toContain("NOT-HEX-SECRET"); } }); it("fails clearly when the folder does not exist", () => { repo = makeTempRepo({ git: false }); expect(() => writeBridgeConfig(join(repo.dir, "nope"), bridge, "p")).toThrowError(/nope/); });});