import { describe, expect, it } from "vitest"; import { dnsRecordNamesMatch, dnsNameToSubdomainLabel, normalizeDnsRecordName, } from "../src/subdomain.js"; const ZONE = "rkns.top"; describe("normalizeDnsRecordName", () => { it("normalizes short labels to FQDN", () => { expect(normalizeDnsRecordName("de", ZONE)).toBe("de.rkns.top"); expect(normalizeDnsRecordName("mhome", ZONE)).toBe("mhome.rkns.top"); }); it("keeps FQDN unchanged", () => { expect(normalizeDnsRecordName("ihome.rkns.top", ZONE)).toBe( "ihome.rkns.top", ); }); it("maps apex forms to zone name", () => { expect(normalizeDnsRecordName("@", ZONE)).toBe("rkns.top"); expect(normalizeDnsRecordName("rkns.top", ZONE)).toBe("rkns.top"); }); }); describe("dnsRecordNamesMatch", () => { it("matches short label and FQDN for the same host", () => { expect(dnsRecordNamesMatch("de", "de.rkns.top", ZONE)).toBe(true); expect(dnsRecordNamesMatch("mhome", "mhome.rkns.top", ZONE)).toBe(true); }); it("does not match different hosts", () => { expect(dnsRecordNamesMatch("de", "mhome.rkns.top", ZONE)).toBe(false); }); }); describe("dnsNameToSubdomainLabel", () => { it("extracts label from FQDN", () => { expect(dnsNameToSubdomainLabel("de.rkns.top", ZONE)).toBe("de"); }); });