Files
pikasTech-HWLAB/scripts/src/dev-deploy-apply.test.mjs
T
2026-05-22 14:19:12 +08:00

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"
);
});