quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 6s
quality / changes (push) Successful in 10s
quality / docker-check (push) Skipped
quality / web (push) Successful in 1m16s
quality / api (push) Successful in 1m14s
CD / quality (push) Successful in 2m44s
CD / publish (push) Successful in 1m50s
У IP был один extra FQDN; wildcard вида *.mdns.shnt.top не матчился с именем из Cloudflare. Co-authored-by: Cursor <[email protected]>
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
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");
|
|
});
|
|
|
|
it("normalizes nested wildcard relative name to FQDN", () => {
|
|
expect(normalizeDnsRecordName("*.mdns", ZONE)).toBe("*.mdns.rkns.top");
|
|
expect(normalizeDnsRecordName("*.mdns.rkns.top", ZONE)).toBe(
|
|
"*.mdns.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);
|
|
});
|
|
|
|
it("matches nested wildcard relative name and FQDN", () => {
|
|
expect(dnsRecordNamesMatch("*.mdns", "*.mdns.rkns.top", ZONE)).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe("dnsNameToSubdomainLabel", () => {
|
|
it("extracts label from FQDN", () => {
|
|
expect(dnsNameToSubdomainLabel("de.rkns.top", ZONE)).toBe("de");
|
|
});
|
|
|
|
it("keeps nested wildcard relative names", () => {
|
|
expect(dnsNameToSubdomainLabel("*.mdns", ZONE)).toBe("*.mdns");
|
|
expect(dnsNameToSubdomainLabel("*.mdns.rkns.top", ZONE)).toBe("*.mdns");
|
|
});
|
|
});
|