Files
pangolin/server/lib/traefik/traefikConfig.test.ts
2025-12-09 10:56:14 -05:00

251 lines
7.4 KiB
TypeScript

import { assertEquals } from "@test/assert";
import { isDomainCoveredByWildcard } from "./TraefikConfigManager";
function runTests() {
console.log("Running wildcard domain coverage tests...");
// Test case 1: Basic wildcard certificate at example.com
const basicWildcardCerts = new Map([
["example.com", { exists: true, wildcard: true }]
]);
// Should match first-level subdomains
assertEquals(
isDomainCoveredByWildcard("level1.example.com", basicWildcardCerts),
true,
"Wildcard cert at example.com should match level1.example.com"
);
assertEquals(
isDomainCoveredByWildcard("api.example.com", basicWildcardCerts),
true,
"Wildcard cert at example.com should match api.example.com"
);
assertEquals(
isDomainCoveredByWildcard("www.example.com", basicWildcardCerts),
true,
"Wildcard cert at example.com should match www.example.com"
);
// Should match the root domain (exact match)
assertEquals(
isDomainCoveredByWildcard("example.com", basicWildcardCerts),
true,
"Wildcard cert at example.com should match example.com itself"
);
// Should NOT match second-level subdomains
assertEquals(
isDomainCoveredByWildcard(
"level2.level1.example.com",
basicWildcardCerts
),
false,
"Wildcard cert at example.com should NOT match level2.level1.example.com"
);
assertEquals(
isDomainCoveredByWildcard(
"deep.nested.subdomain.example.com",
basicWildcardCerts
),
false,
"Wildcard cert at example.com should NOT match deep.nested.subdomain.example.com"
);
// Should NOT match different domains
assertEquals(
isDomainCoveredByWildcard("test.otherdomain.com", basicWildcardCerts),
false,
"Wildcard cert at example.com should NOT match test.otherdomain.com"
);
assertEquals(
isDomainCoveredByWildcard("notexample.com", basicWildcardCerts),
false,
"Wildcard cert at example.com should NOT match notexample.com"
);
// Test case 2: Multiple wildcard certificates
const multipleWildcardCerts = new Map([
["example.com", { exists: true, wildcard: true }],
["test.org", { exists: true, wildcard: true }],
["api.service.net", { exists: true, wildcard: true }]
]);
assertEquals(
isDomainCoveredByWildcard("app.example.com", multipleWildcardCerts),
true,
"Should match subdomain of first wildcard cert"
);
assertEquals(
isDomainCoveredByWildcard("staging.test.org", multipleWildcardCerts),
true,
"Should match subdomain of second wildcard cert"
);
assertEquals(
isDomainCoveredByWildcard("v1.api.service.net", multipleWildcardCerts),
true,
"Should match subdomain of third wildcard cert"
);
assertEquals(
isDomainCoveredByWildcard(
"deep.nested.api.service.net",
multipleWildcardCerts
),
false,
"Should NOT match multi-level subdomain of third wildcard cert"
);
// Test exact domain matches for multiple certs
assertEquals(
isDomainCoveredByWildcard("example.com", multipleWildcardCerts),
true,
"Should match exact domain of first wildcard cert"
);
assertEquals(
isDomainCoveredByWildcard("test.org", multipleWildcardCerts),
true,
"Should match exact domain of second wildcard cert"
);
assertEquals(
isDomainCoveredByWildcard("api.service.net", multipleWildcardCerts),
true,
"Should match exact domain of third wildcard cert"
);
// Test case 3: Non-wildcard certificates (should not match anything)
const nonWildcardCerts = new Map([
["example.com", { exists: true, wildcard: false }],
["specific.domain.com", { exists: true, wildcard: false }]
]);
assertEquals(
isDomainCoveredByWildcard("sub.example.com", nonWildcardCerts),
false,
"Non-wildcard cert should not match subdomains"
);
assertEquals(
isDomainCoveredByWildcard("example.com", nonWildcardCerts),
false,
"Non-wildcard cert should not match even exact domain via this function"
);
// Test case 4: Non-existent certificates (should not match)
const nonExistentCerts = new Map([
["example.com", { exists: false, wildcard: true }],
["missing.com", { exists: false, wildcard: true }]
]);
assertEquals(
isDomainCoveredByWildcard("sub.example.com", nonExistentCerts),
false,
"Non-existent wildcard cert should not match"
);
// Test case 5: Edge cases with special domain names
const specialDomainCerts = new Map([
["localhost", { exists: true, wildcard: true }],
["127-0-0-1.nip.io", { exists: true, wildcard: true }],
["xn--e1afmkfd.xn--p1ai", { exists: true, wildcard: true }] // IDN domain
]);
assertEquals(
isDomainCoveredByWildcard("app.localhost", specialDomainCerts),
true,
"Should match subdomain of localhost wildcard"
);
assertEquals(
isDomainCoveredByWildcard("test.127-0-0-1.nip.io", specialDomainCerts),
true,
"Should match subdomain of nip.io wildcard"
);
assertEquals(
isDomainCoveredByWildcard(
"sub.xn--e1afmkfd.xn--p1ai",
specialDomainCerts
),
true,
"Should match subdomain of IDN wildcard"
);
// Test case 6: Empty input and edge cases
const emptyCerts = new Map();
assertEquals(
isDomainCoveredByWildcard("any.domain.com", emptyCerts),
false,
"Empty certificate map should not match any domain"
);
// Test case 7: Domains with single character components
const singleCharCerts = new Map([
["a.com", { exists: true, wildcard: true }],
["x.y.z", { exists: true, wildcard: true }]
]);
assertEquals(
isDomainCoveredByWildcard("b.a.com", singleCharCerts),
true,
"Should match single character subdomain"
);
assertEquals(
isDomainCoveredByWildcard("w.x.y.z", singleCharCerts),
true,
"Should match single character subdomain of multi-part domain"
);
assertEquals(
isDomainCoveredByWildcard("v.w.x.y.z", singleCharCerts),
false,
"Should NOT match multi-level subdomain of single char domain"
);
// Test case 8: Domains with numbers and hyphens
const numericCerts = new Map([
["api-v2.service-1.com", { exists: true, wildcard: true }],
["123.456.net", { exists: true, wildcard: true }]
]);
assertEquals(
isDomainCoveredByWildcard("staging.api-v2.service-1.com", numericCerts),
true,
"Should match subdomain with hyphens and numbers"
);
assertEquals(
isDomainCoveredByWildcard("test.123.456.net", numericCerts),
true,
"Should match subdomain with numeric components"
);
assertEquals(
isDomainCoveredByWildcard(
"deep.staging.api-v2.service-1.com",
numericCerts
),
false,
"Should NOT match multi-level subdomain with hyphens and numbers"
);
console.log("All wildcard domain coverage tests passed!");
}
// Run all tests
try {
runTests();
} catch (error) {
console.error("Test failed:", error);
process.exit(1);
}