import assert from "node:assert/strict" import { test } from "node:test" import { createCertificateIssueCheckpoint, readCertificateIssueCheckpoint, certificateIssueStorageKey } from "./certificate-issue-checkpoint" const id = "11111111-1111-4111-8111-111111111111" const target = { serverId: "1", certName: "cert", domainNames: ["test.example"] } test("checkpoint persists ID and immutable target before acceptance", () => { const value = createCertificateIssueCheckpoint(target, id) target.domainNames.push("later.example") assert.deepEqual(value.request.domainNames, ["test.example"]) assert.equal(value.accepted, false); assert.equal(value.job, null) assert.deepEqual(readCertificateIssueCheckpoint(JSON.stringify(value)), value) }) test("malformed and foreign restored observations are rejected", () => { assert.throws(() => readCertificateIssueCheckpoint("bad")) assert.throws(() => readCertificateIssueCheckpoint("{}")) const value = createCertificateIssueCheckpoint({ ...target, domainNames: ["test.example"] }, id) const job = { id, serverId: "2", certName: "cert", domainNames: ["test.example"], status: "done", step: "done", requestedAt: "2026-10-01T00:00:00Z" } assert.throws(() => readCertificateIssueCheckpoint(JSON.stringify({ ...value, accepted: true, job }))) assert.throws(() => readCertificateIssueCheckpoint(JSON.stringify({ ...value, job: { ...job, serverId: "1" } }))) }) test("storage context is isolated per backend and absent checkpoint stays absent", () => { assert.notEqual(certificateIssueStorageKey("https://one.example.test"), certificateIssueStorageKey("https://two.example.test")) assert.equal(readCertificateIssueCheckpoint(null), null) })