import { describe, expect, it } from "vitest"; import { validateDnsRecord, ValidationError } from "../src/validators.js"; function assertValidName(name: string): void { expect(() => validateDnsRecord("A", name, "1.2.3.4", 1, false), ).not.toThrow(); } function assertInvalidName(name: string): void { expect(() => validateDnsRecord("A", name, "1.2.3.4", 1, false)).toThrow( ValidationError, ); expect(() => validateDnsRecord("A", name, "1.2.3.4", 1, false)).toThrow( `invalid record name: ${name}`, ); } describe("validateDnsRecord name", () => { it("accepts apex and zone wildcard", () => { assertValidName("@"); assertValidName("*"); }); it("accepts regular labels and FQDN", () => { assertValidName("ndns"); assertValidName("ndns.shnt.top"); }); it("accepts nested wildcard relative name and FQDN", () => { assertValidName("*.ndns"); assertValidName("*.ndns.shnt.top"); assertValidName("*.mdns"); assertValidName("*.mdns.rkns.top"); }); it("rejects wildcard not as leftmost label", () => { assertInvalidName("foo.*.bar"); assertInvalidName("ndns.*"); }); });