456f618685
Co-authored-by: HWLAB Code Queue <code-queue@pikastech.local>
89 lines
3.0 KiB
JavaScript
89 lines
3.0 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { decideDevTemplateJobReplacement, resolveApplySourceCommit } from "./dev-deploy-apply.mjs";
|
|
|
|
test("allowlisted suspended template Job image change plans replacement", () => {
|
|
const decision = decideDevTemplateJobReplacement({
|
|
jobName: "hwlab-agent-worker-template",
|
|
jobNamespace: "hwlab-dev",
|
|
desiredSuspended: true,
|
|
liveExists: true,
|
|
liveSuspended: true,
|
|
oldImages: [
|
|
{
|
|
name: "hwlab-agent-worker",
|
|
serviceId: "hwlab-agent-worker",
|
|
image: "127.0.0.1:5000/hwlab/hwlab-agent-worker:old1234"
|
|
}
|
|
],
|
|
newImages: [
|
|
{
|
|
name: "hwlab-agent-worker",
|
|
serviceId: "hwlab-agent-worker",
|
|
image: "127.0.0.1:5000/hwlab/hwlab-agent-worker:new5678"
|
|
}
|
|
]
|
|
});
|
|
|
|
assert.equal(decision.replace, true);
|
|
assert.equal(decision.result, "planned");
|
|
assert.equal(decision.namespace, "hwlab-dev");
|
|
assert.equal(decision.jobName, "hwlab-agent-worker-template");
|
|
assert.equal(decision.oldImage, "127.0.0.1:5000/hwlab/hwlab-agent-worker:old1234");
|
|
assert.equal(decision.newImage, "127.0.0.1:5000/hwlab/hwlab-agent-worker:new5678");
|
|
});
|
|
|
|
test("matching allowlisted suspended template Job image does not replace", () => {
|
|
const image = "127.0.0.1:5000/hwlab/hwlab-cli:73b379f";
|
|
const decision = decideDevTemplateJobReplacement({
|
|
jobName: "hwlab-cli-template",
|
|
jobNamespace: "hwlab-dev",
|
|
desiredSuspended: true,
|
|
liveExists: true,
|
|
liveSuspended: true,
|
|
oldImages: [{ name: "hwlab-cli", serviceId: "hwlab-cli", image }],
|
|
newImages: [{ name: "hwlab-cli", serviceId: "hwlab-cli", image }]
|
|
});
|
|
|
|
assert.equal(decision.replace, false);
|
|
assert.equal(decision.result, "not_needed");
|
|
});
|
|
|
|
test("replacement policy refuses non-allowlisted or active Jobs", () => {
|
|
const ignored = decideDevTemplateJobReplacement({
|
|
jobName: "some-other-job",
|
|
jobNamespace: "hwlab-dev",
|
|
desiredSuspended: true,
|
|
liveExists: true,
|
|
liveSuspended: true,
|
|
oldImages: [{ name: "worker", serviceId: "worker", image: "image:old" }],
|
|
newImages: [{ name: "worker", serviceId: "worker", image: "image:new" }]
|
|
});
|
|
assert.equal(ignored.replace, false);
|
|
assert.equal(ignored.result, "ignored");
|
|
|
|
const active = decideDevTemplateJobReplacement({
|
|
jobName: "hwlab-cli-template",
|
|
jobNamespace: "hwlab-dev",
|
|
desiredSuspended: true,
|
|
liveExists: true,
|
|
liveSuspended: false,
|
|
oldImages: [{ name: "hwlab-cli", serviceId: "hwlab-cli", image: "image:old" }],
|
|
newImages: [{ name: "hwlab-cli", serviceId: "hwlab-cli", image: "image:new" }]
|
|
});
|
|
assert.equal(active.replace, false);
|
|
assert.equal(active.result, "blocked");
|
|
});
|
|
|
|
test("apply source commit follows deploy/catalog artifact identity", () => {
|
|
assert.equal(
|
|
resolveApplySourceCommit({ commitId: "73b379f" }, { commitId: "73b379f" }, "cb35ada68606"),
|
|
"73b379f"
|
|
);
|
|
assert.equal(
|
|
resolveApplySourceCommit({ commitId: "73b379f" }, { commitId: "deadbee" }, "cb35ada68606"),
|
|
"cb35ada68606"
|
|
);
|
|
});
|