Files
cloudflare-domain-manager/packages/shared/test/subdomain.test.ts
T
DenozordecandCursor 0d567379fa
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
fix(services): разрешить несколько доп. FQDN на IP включая wildcard
У IP был один extra FQDN; wildcard вида *.mdns.shnt.top не матчился с именем из Cloudflare.

Co-authored-by: Cursor <[email protected]>
2026-08-31 12:40:27 +07:00

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");
});
});