← Files Biological Sequence & Alignment ViewerARCHIVED FILE
src/persistent/recovery-adapter.test.ts
2.35 KB · Sep 30, 2026 · 23:01 UTC
import { describe, expect, it } from "vitest";
import {
createSequenceScientificRecoveryMetadata,
parseSequenceScientificRecoveryMetadata,
SEQUENCE_SCIENTIFIC_RECOVERY_META_KEY,
} from "./recovery-adapter";
describe("persistent Sequence viewer recovery", () => {
it("creates host-recoverable metadata without source paths or capabilities", () => {
const metadata = createSequenceScientificRecoveryMetadata({
logicalSessionId: "11111111-1111-4111-8111-111111111111",
recoveryReference: "sealed-sequence-reference-1",
});
expect(metadata).toEqual({
family: "sequence",
logicalSessionId: "11111111-1111-4111-8111-111111111111",
recoveryReference: "sealed-sequence-reference-1",
resourceUri: "ui://sequence-viewer/viewer",
});
expect(JSON.stringify(metadata)).not.toMatch(
/(?:file:|workspaceRoot|handleId|bearer|destinationGrant|sourcePath)/u,
);
});
it("restores only exact Sequence-family historical metadata", () => {
const metadata = createSequenceScientificRecoveryMetadata({
logicalSessionId: "logical-sequence-1",
recoveryReference: "opaque-sequence-reference",
});
expect(
parseSequenceScientificRecoveryMetadata({
[SEQUENCE_SCIENTIFIC_RECOVERY_META_KEY]: metadata,
}),
).toEqual(metadata);
for (const invalid of [
{ ...metadata, family: "structure" },
{ ...metadata, family: "slide" },
{ ...metadata, resourceUri: "ui://structure-viewer/viewer" },
{ ...metadata, recoveryReference: "/private/source.fa" },
{ ...metadata, recoveryReference: "../source.fa" },
{ ...metadata, sourcePath: "/private/source.fa" },
]) {
expect(
parseSequenceScientificRecoveryMetadata({
[SEQUENCE_SCIENTIFIC_RECOVERY_META_KEY]: invalid,
}),
).toBeNull();
}
});
it("retains the distinct strong recovery reference minted by the host", () => {
const logicalSessionId = "11111111-1111-4111-8111-111111111111";
const recoveryReference = "host-sealed-072209bb7b154276b8ba";
expect(
createSequenceScientificRecoveryMetadata({
logicalSessionId,
recoveryReference,
threadId: "thread-1",
}),
).toMatchObject({
logicalSessionId,
recoveryReference,
threadId: "thread-1",
});
expect(recoveryReference).not.toBe(logicalSessionId);
});
});
SHA-256: f86d43587da2e9ede04cd489f47816cf1f1aa058edf8e06f45ed43d56f72d534