48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
readDevM3CardinalityInputs,
|
|
validateDevM3Cardinality
|
|
} from "./validate-dev-m3-cardinality.mjs";
|
|
|
|
const baseline = await readDevM3CardinalityInputs();
|
|
|
|
function clone(value) {
|
|
return JSON.parse(JSON.stringify(value));
|
|
}
|
|
|
|
function cloneInputs() {
|
|
return clone(baseline);
|
|
}
|
|
|
|
function assertRejected(inputs, pattern) {
|
|
assert.throws(() => validateDevM3Cardinality(inputs), pattern);
|
|
}
|
|
|
|
test("accepts the checked-in DEV deploy service mappings", () => {
|
|
validateDevM3Cardinality(cloneInputs());
|
|
});
|
|
|
|
test("rejects duplicate deploy service IDs", () => {
|
|
const inputs = cloneInputs();
|
|
inputs.deploy.services.push({ ...inputs.deploy.services[0] });
|
|
|
|
assertRejected(inputs, /serviceId must be unique/u);
|
|
});
|
|
|
|
test("rejects k3s mappings for undeclared services", () => {
|
|
const inputs = cloneInputs();
|
|
inputs.deploy.k3s.serviceMappings[0].serviceId = "hwlab-missing";
|
|
|
|
assertRejected(inputs, /references a declared service/u);
|
|
});
|
|
|
|
test("rejects missing v02 boot script declarations", () => {
|
|
const inputs = cloneInputs();
|
|
const serviceId = inputs.deploy.lanes.v02.envReuseServices[0];
|
|
delete inputs.deploy.lanes.v02.bootScripts[serviceId];
|
|
|
|
assertRejected(inputs, new RegExp(`bootScripts\\.${serviceId} is required`, "u"));
|
|
});
|