Restore named project snapshots

This commit is contained in:
2026-07-25 22:41:24 +02:00
parent 7c670fece3
commit 384a5769ab
25 changed files with 1315 additions and 206 deletions
+37
View File
@@ -242,4 +242,41 @@ describe("project snapshot repository", () => {
context.close();
}
});
it("verifies stored payload integrity before preparing a restore", () => {
const context = createTestDatabase();
try {
const repository = new ProjectSnapshotRepository(context.db);
const snapshot = repository.createNamed({
projectId: "project-1",
expectedRevision: 0,
name: "Freigabe",
});
assert.ok(snapshot);
const prepared = repository.prepareRestore(
"project-1",
snapshot.id
);
assert.ok(prepared);
assert.equal(
prepared.command.payload.targetState.project.id,
"project-1"
);
context.db
.update(projectSnapshots)
.set({ payloadJson: `${JSON.stringify({})}\n` })
.where(eq(projectSnapshots.id, snapshot.id))
.run();
assert.throws(
() => repository.prepareRestore("project-1", snapshot.id),
/checksum verification failed/
);
assert.equal(
repository.prepareRestore("project-1", "missing"),
null
);
} finally {
context.close();
}
});
});