79 lines · 2.7 KB · TypeScript
RawDownload
import { assert, expect, it } from "@effect/vitest"; import {  buildPairingUrl,  formatHeadlessServeOutput,  renderTerminalQrCode,  resolveHeadlessConnectionHost,  resolveHeadlessConnectionString,  resolveListeningPort,} from "./startupAccess.ts"; it("prefers localhost when no explicit host is configured", () => {  expect(resolveHeadlessConnectionHost(undefined)).toBe("localhost");  expect(resolveHeadlessConnectionString(undefined, 3773)).toBe("http://localhost:3773");}); it("keeps explicit bind hosts in the connection string", () => {  expect(resolveHeadlessConnectionString("127.0.0.1", 3773)).toBe("http://127.0.0.1:3773");  expect(resolveHeadlessConnectionString("::1", 3773)).toBe("http://[::1]:3773");}); it("resolves wildcard hosts to a concrete external interface when one is available", () => {  const connectionString = resolveHeadlessConnectionString("0.0.0.0", 3773, {    en0: [      {        address: "192.168.1.42",        netmask: "255.255.255.0",        family: "IPv4",        mac: "00:00:00:00:00:00",        internal: false,        cidr: "192.168.1.42/24",      },    ],    lo0: [      {        address: "127.0.0.1",        netmask: "255.0.0.0",        family: "IPv4",        mac: "00:00:00:00:00:00",        internal: true,        cidr: "127.0.0.1/8",      },    ],  });   expect(connectionString).toBe("http://192.168.1.42:3773");}); it("prefers the actual bound port when an http server address is available", () => {  expect(resolveListeningPort({ port: 4123 }, 3773)).toBe(4123);  expect(resolveListeningPort("pipe", 3773)).toBe(3773);  expect(resolveListeningPort(null, 3773)).toBe(3773);}); it("builds a pairing URL that embeds the token in the hash", () => {  expect(buildPairingUrl("http://192.168.1.42:3773", "PAIRCODE")).toBe(    "http://192.168.1.42:3773/pair#token=PAIRCODE",  );}); it("renders terminal QR codes as a multi-line unicode block grid", () => {  const qrCode = renderTerminalQrCode("http://192.168.1.42:3773/pair#token=PAIRCODE");   assert.isTrue(qrCode.includes("█"));  assert.isTrue(qrCode.split("\n").length > 10);}); it("formats headless serve output with the connection string, token, pairing url, and qr code", () => {  const output = formatHeadlessServeOutput({    connectionString: "http://192.168.1.42:3773",    token: "PAIRCODE",    pairingUrl: "http://192.168.1.42:3773/pair#token=PAIRCODE",  });   expect(output).toContain("Connection string: http://192.168.1.42:3773");  expect(output).toContain("Token: PAIRCODE");  expect(output).toContain("Pairing URL: http://192.168.1.42:3773/pair#token=PAIRCODE");  assert.isTrue(output.includes("█") || output.includes("▀") || output.includes("▄"));});