import { describe, expect, it } from "vitest"; import { formatPairingInstructions } from "./pairing.js"; const QR = "\u001b[47m\u001b[30m \n ████ \n \u001b[0m"; const URL = "https://app.paseo.sh/#offer=pairing-offer"; describe("formatPairingInstructions", () => { it("prints the QR and an unmodified pairing-link line when the terminal is wide enough", () => { const output = formatPairingInstructions({ qr: QR, url: URL, columns: 7 }); expect(output).toContain(QR); expect(output.split("\n")).toContain(URL); expect(output).toContain( "Treat this pairing link like a password. Anyone with it can access this daemon.", ); }); it("does not print a QR that would reach the terminal edge", () => { const output = formatPairingInstructions({ qr: QR, url: URL, columns: 6 }); expect(output).not.toContain(QR); expect(output).toContain("Resize the terminal to at least 7 columns"); expect(output.split("\n")).toContain(URL); }); it("does not risk printing a QR when terminal width is unknown", () => { const output = formatPairingInstructions({ qr: QR, url: URL }); expect(output).not.toContain(QR); expect(output).toContain("terminal width could not be detected"); expect(output.split("\n")).toContain(URL); }); it("redacts a password in a printed connection URI", () => { const output = formatPairingInstructions({ qr: null, url: URL, connectionUri: "relay://relay.paseo.sh:443/srv_test?key=public&password=private-value", }); expect(output).toContain( "relay://relay.paseo.sh:443/srv_test?key=public&password=%5Bredacted%5D", ); expect(output).not.toContain("private-value"); }); });