quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 8s
quality / changes (push) Successful in 12s
quality / docker-check (push) Skipped
quality / web (push) Successful in 1m9s
quality / api (push) Successful in 1m3s
CD / quality (push) Successful in 2m29s
CD / publish (push) Successful in 1m49s
Co-authored-by: Cursor <[email protected]>
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
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.*");
|
|
});
|
|
});
|