Rocky_Mountain_Vending/lib/manuals-tenant.test.ts

90 lines
2.2 KiB
TypeScript

import assert from "node:assert/strict"
import test from "node:test"
import {
canonicalizeTenantDomain,
manualVisibleForTenant,
resolveManualsTenantDomain,
tenantDomainVariants,
} from "@/lib/manuals-tenant"
test("canonicalizeTenantDomain strips protocol, port, path, and casing", () => {
assert.equal(
canonicalizeTenantDomain("HTTPS://RMV.AbundancePartners.App:443/manuals"),
"rmv.abundancepartners.app"
)
assert.equal(canonicalizeTenantDomain(""), "")
assert.equal(canonicalizeTenantDomain(undefined), "")
})
test("tenantDomainVariants includes root and www aliases", () => {
assert.deepEqual(tenantDomainVariants("rmv.abundancepartners.app"), [
"rmv.abundancepartners.app",
"www.rmv.abundancepartners.app",
])
assert.deepEqual(tenantDomainVariants("www.rockymountainvending.com"), [
"www.rockymountainvending.com",
"rockymountainvending.com",
])
})
test("manualVisibleForTenant matches sourceDomain and siteVisibility aliases", () => {
assert.equal(
manualVisibleForTenant(
{
sourceDomain: "rmv.abundancepartners.app",
},
"https://rmv.abundancepartners.app/manuals"
),
true
)
assert.equal(
manualVisibleForTenant(
{
siteVisibility: ["www.rockymountainvending.com"],
},
"rockymountainvending.com"
),
true
)
assert.equal(
manualVisibleForTenant(
{
sourceDomain: "quickfreshvending.com",
siteVisibility: ["quickfreshvending.com"],
},
"rmv.abundancepartners.app"
),
false
)
})
test("resolveManualsTenantDomain prioritizes request host then env overrides", () => {
assert.equal(
resolveManualsTenantDomain({
requestHost: "rmv.abundancepartners.app",
envTenantDomain: "fallback.example",
envSiteDomain: "another.example",
}),
"rmv.abundancepartners.app"
)
assert.equal(
resolveManualsTenantDomain({
requestHost: "",
envTenantDomain: "tenant.example",
envSiteDomain: "site.example",
}),
"tenant.example"
)
assert.equal(
resolveManualsTenantDomain({
requestHost: "",
envTenantDomain: "",
envSiteDomain: "site.example",
}),
"site.example"
)
})