Files
projectbrain-Public/scripts/deployment-proof-state.test.mjs
T

28 lines
1.5 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { compareDeploymentCommits, isRunningContainer } from "./deployment-proof-state.mjs";
test("missing identities cannot be reported as current", () => {
for (const value of ["unknown", "", undefined, "not-a-sha"]) {
assert.equal(compareDeploymentCommits(value, value), "unknown");
assert.equal(compareDeploymentCommits("9deb553", value), "unknown");
}
});
test("known revisions compare exactly", () => {
assert.equal(compareDeploymentCommits("9deb553", "9DEB553"), "current");
assert.equal(compareDeploymentCommits("9deb553", "a415d3f"), "stale");
});
test("frontend evidence must belong to its own running container", () => {
const output = "projectbrain-frontend Exited 1\nother Up 1 hour 0.0.0.0:1209->80/tcp";
assert.equal(isRunningContainer(output, "projectbrain-frontend", "1209->80/tcp"), false);
});
test("reject similarly named or unhealthy containers", () => {
for (const row of ["projectbrain-api-old Up 1 hour", "projectbrain-api Up 1 hour (unhealthy)", "projectbrain-api Up 2 seconds (health: starting)"]) {
assert.equal(isRunningContainer(row, "projectbrain-api"), false);
}
});
test("accept exact running containers with matching ports", () => {
assert.equal(isRunningContainer("projectbrain-frontend Up 1 hour (healthy) 0.0.0.0:1209->80/tcp\r\n", "projectbrain-frontend", "1209->80/tcp"), true);
assert.equal(isRunningContainer("projectbrain-api Up 1 hour", "projectbrain-api"), true);
});