Restore named project snapshots
This commit is contained in:
@@ -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();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user