import { describe, expect, it } from "vitest"; import { renderWideAreaBridgeZoneText, WIDE_AREA_DISCOVERY_DOMAIN, } from "./widearea-dns.js"; describe("wide-area DNS-SD zone rendering", () => { it("renders a clawdbot.internal zone with bridge PTR/SRV/TXT records", () => { const txt = renderWideAreaBridgeZoneText({ serial: 2025121701, bridgePort: 18790, gatewayPort: 18789, displayName: "Mac Studio (Clawdbot)", tailnetIPv4: "100.123.224.76", tailnetIPv6: "fd7a:115c:a1e0::8801:e04c", hostLabel: "studio-london", instanceLabel: "studio-london", sshPort: 22, cliPath: "/opt/homebrew/bin/clawdbot", }); expect(txt).toContain(`$ORIGIN ${WIDE_AREA_DISCOVERY_DOMAIN}`); expect(txt).toContain(`studio-london IN A 100.123.224.76`); expect(txt).toContain(`studio-london IN AAAA fd7a:115c:a1e0::8801:e04c`); expect(txt).toContain( `_clawdbot-bridge._tcp IN PTR studio-london._clawdbot-bridge._tcp`, ); expect(txt).toContain( `studio-london._clawdbot-bridge._tcp IN SRV 0 0 18790 studio-london`, ); expect(txt).toContain(`displayName=Mac Studio (Clawdbot)`); expect(txt).toContain(`gatewayPort=18789`); expect(txt).toContain(`sshPort=22`); expect(txt).toContain(`cliPath=/opt/homebrew/bin/clawdbot`); }); it("includes tailnetDns when provided", () => { const txt = renderWideAreaBridgeZoneText({ serial: 2025121701, bridgePort: 18790, gatewayPort: 18789, displayName: "Mac Studio (Clawdbot)", tailnetIPv4: "100.123.224.76", tailnetDns: "peters-mac-studio-1.sheep-coho.ts.net", hostLabel: "studio-london", instanceLabel: "studio-london", }); expect(txt).toContain(`tailnetDns=peters-mac-studio-1.sheep-coho.ts.net`); }); });