@sixb/core 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.js +22 -22
- package/dist/agents/index.js +34 -34
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/streams/index.js +2 -2
- package/dist/agents/streams/internal.js +2 -2
- package/dist/auth/errors.d.ts +12 -0
- package/dist/auth/errors.d.ts.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +7 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/strategy.d.ts +2 -0
- package/dist/auth/strategy.d.ts.map +1 -1
- package/dist/auth/strategy.js +4 -2
- package/dist/auth/strategy.js.map +1 -1
- package/dist/auth/types.d.ts +8 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.js +2 -2
- package/dist/bootstrap/index.js +37 -37
- package/dist/{chunk-693f3zn8.js → chunk-1jvq82rp.js} +3 -3
- package/dist/{chunk-0321g649.js → chunk-2jntasmh.js} +13 -2
- package/dist/{chunk-0321g649.js.map → chunk-2jntasmh.js.map} +3 -3
- package/dist/{chunk-cvrbhvtr.js → chunk-2tz5vnvz.js} +28 -28
- package/dist/{chunk-cvrbhvtr.js.map → chunk-2tz5vnvz.js.map} +1 -1
- package/dist/{chunk-898y24dd.js → chunk-3c90jvfj.js} +2 -2
- package/dist/{chunk-vn3yh259.js → chunk-4gmng3vf.js} +1 -1
- package/dist/{chunk-91wthfwe.js → chunk-4jph1t3v.js} +7 -7
- package/dist/{chunk-znw0zvy4.js → chunk-4wn7bxxa.js} +25 -7
- package/dist/chunk-4wn7bxxa.js.map +12 -0
- package/dist/{chunk-3qpcrcj8.js → chunk-6aawea28.js} +2 -4
- package/dist/chunk-6aawea28.js.map +10 -0
- package/dist/{chunk-rzkr70gr.js → chunk-6fsr7y93.js} +5 -1
- package/dist/{chunk-rzkr70gr.js.map → chunk-6fsr7y93.js.map} +3 -3
- package/dist/{chunk-y487ywrv.js → chunk-6q7c68yx.js} +4 -4
- package/dist/{chunk-ypj2wqtj.js → chunk-70jmg2zx.js} +2 -2
- package/dist/{chunk-s24qbp32.js → chunk-7jc21943.js} +3 -3
- package/dist/{chunk-rzcjp5m2.js → chunk-8fjmqjyx.js} +1 -1
- package/dist/{chunk-m8zkvep1.js → chunk-8w27xf9e.js} +1 -1
- package/dist/{chunk-z9h698s8.js → chunk-a4g5yjm0.js} +1 -1
- package/dist/{chunk-gmt22nxx.js → chunk-adbve9zt.js} +1 -1
- package/dist/{chunk-mf6hwpzh.js → chunk-dqkd3kdj.js} +41 -23
- package/dist/{chunk-mf6hwpzh.js.map → chunk-dqkd3kdj.js.map} +3 -3
- package/dist/{chunk-gbcrz0gr.js → chunk-ex8s8wsk.js} +6 -6
- package/dist/{chunk-4tnrzqqh.js → chunk-fj1dvp37.js} +1 -1
- package/dist/{chunk-gc226ten.js → chunk-fjw417jf.js} +127 -69
- package/dist/{chunk-gc226ten.js.map → chunk-fjw417jf.js.map} +4 -4
- package/dist/{chunk-ht4a7mjg.js → chunk-g4rbm4a6.js} +42 -8
- package/dist/{chunk-ht4a7mjg.js.map → chunk-g4rbm4a6.js.map} +3 -3
- package/dist/{chunk-qma80ych.js → chunk-hn2r7z41.js} +3 -2
- package/dist/chunk-hn2r7z41.js.map +11 -0
- package/dist/{chunk-bdhfn0ww.js → chunk-kkqwzy6h.js} +1 -1
- package/dist/{chunk-bep5rrdq.js → chunk-mmac1mp6.js} +2 -2
- package/dist/{chunk-w9bp61e7.js → chunk-n5t4mq6z.js} +5 -5
- package/dist/{chunk-n33e8dz8.js → chunk-p0nbkys4.js} +1 -1
- package/dist/{chunk-04h4t2b5.js → chunk-py2dw8cw.js} +3 -3
- package/dist/{chunk-jhyc777j.js → chunk-q3grgzp1.js} +2 -2
- package/dist/{chunk-9pfw47qx.js → chunk-qne45xqq.js} +53 -48
- package/dist/{chunk-9pfw47qx.js.map → chunk-qne45xqq.js.map} +7 -7
- package/dist/{chunk-cbn96bve.js → chunk-r5sc1d2b.js} +2 -2
- package/dist/{chunk-y6vnvayj.js → chunk-vjcd8d27.js} +1 -1
- package/dist/{chunk-jmwy25mf.js → chunk-wd34wnsy.js} +6 -6
- package/dist/{chunk-63fp9x3q.js → chunk-wem5vqjw.js} +7 -7
- package/dist/{chunk-darm7eeg.js → chunk-xr7y35yj.js} +3 -3
- package/dist/{chunk-a69fkrtr.js → chunk-y0zmae99.js} +5 -5
- package/dist/{chunk-xgptywp0.js → chunk-y2aq6ag9.js} +1 -1
- package/dist/{chunk-2hbhn1ff.js → chunk-yfppyaty.js} +1 -1
- package/dist/{chunk-rqtdtm43.js → chunk-z708gemf.js} +129 -70
- package/dist/{chunk-rqtdtm43.js.map → chunk-z708gemf.js.map} +5 -5
- package/dist/deploy/define.d.ts +4 -0
- package/dist/deploy/define.d.ts.map +1 -0
- package/dist/deploy/index.d.ts +3 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +10 -0
- package/dist/deploy/index.js.map +10 -0
- package/dist/deploy/internal.d.ts +3 -0
- package/dist/deploy/internal.d.ts.map +1 -0
- package/dist/deploy/internal.js +244 -0
- package/dist/deploy/internal.js.map +11 -0
- package/dist/deploy/services.d.ts +8 -0
- package/dist/deploy/services.d.ts.map +1 -0
- package/dist/deploy/types.d.ts +309 -0
- package/dist/deploy/types.d.ts.map +1 -0
- package/dist/deploy/validation.d.ts +7 -0
- package/dist/deploy/validation.d.ts.map +1 -0
- package/dist/error-reporting/internal.js +3 -3
- package/dist/errors/catalog.d.ts +4 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.js +1 -1
- package/dist/events/index.js +3 -3
- package/dist/execution/agent.js +33 -33
- package/dist/execution/primitive.js +29 -29
- package/dist/execution/request.js +31 -31
- package/dist/execution/request.js.map +1 -1
- package/dist/index.js +49 -49
- package/dist/index.js.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts +2 -0
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/maintenance/types.d.ts +8 -2
- package/dist/maintenance/types.d.ts.map +1 -1
- package/dist/materialization/dataset-watermark.d.ts +6 -1
- package/dist/materialization/dataset-watermark.d.ts.map +1 -1
- package/dist/materialization/index.js +1 -1
- package/dist/materialization/model.d.ts +6 -0
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/index.js +18 -18
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/finish-run.d.ts.map +1 -1
- package/dist/materializer/projections/replace.d.ts.map +1 -1
- package/dist/materializer/projections/source-materialization.d.ts +6 -2
- package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
- package/dist/models/execution/index.js +14 -14
- package/dist/objects/index.js +21 -21
- package/dist/objects/query/index.js +15 -15
- package/dist/pipelines/index.js +19 -19
- package/dist/projections/internal.js +16 -16
- package/dist/projections/types.d.ts +1 -1
- package/dist/projections/types.d.ts.map +1 -1
- package/dist/queues/in-memory.d.ts +1 -1
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/runtime/internal.js +19 -19
- package/dist/shares/internal.js +14 -14
- package/dist/shares/internal.js.map +1 -1
- package/dist/storage/action-runs/failure.js +2 -2
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/auth/errors.d.ts +1 -1
- package/dist/storage/auth/errors.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts +2 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +15 -7
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/file-upload-sessions/provider.js +5 -5
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +29 -29
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.js +1 -1
- package/dist/storage/ontology/in-memory/sources.d.ts +6 -3
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/index.d.ts +1 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +16 -3
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +8 -4
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/sources.d.ts +36 -8
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts +3 -1
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/index.d.ts +1 -1
- package/dist/storage/projection-runs/index.d.ts.map +1 -1
- package/dist/storage/projection-runs/lifecycle.d.ts +12 -0
- package/dist/storage/projection-runs/lifecycle.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.js +10 -4
- package/dist/storage/projection-runs/provider.js.map +1 -1
- package/dist/storage/projection-runs/types.d.ts +32 -1
- package/dist/storage/projection-runs/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +5 -5
- package/dist/syncs/index.js +20 -20
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.js +381 -171
- package/dist/testing/index.js.map +5 -5
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +15 -15
- package/dist/webhooks/internal.js.map +1 -1
- package/dist/workers/index.js +1 -1
- package/dist/workflows/index.js +34 -34
- package/package.json +13 -1
- package/src/auth/errors.ts +23 -0
- package/src/auth/index.ts +1 -1
- package/src/auth/runtime.ts +56 -22
- package/src/auth/strategy.ts +2 -0
- package/src/auth/types.ts +8 -0
- package/src/deploy/define.ts +6 -0
- package/src/deploy/index.ts +41 -0
- package/src/deploy/internal.ts +7 -0
- package/src/deploy/services.ts +51 -0
- package/src/deploy/types.ts +338 -0
- package/src/deploy/validation.ts +261 -0
- package/src/errors/catalog.ts +4 -0
- package/src/maintenance/ontology-maintenance.ts +32 -2
- package/src/maintenance/types.ts +8 -2
- package/src/materialization/dataset-watermark.ts +6 -4
- package/src/materialization/model.ts +7 -0
- package/src/materializer/README.md +26 -6
- package/src/materializer/projections/finish-run.ts +129 -26
- package/src/materializer/projections/replace.ts +67 -49
- package/src/materializer/projections/source-materialization.ts +11 -6
- package/src/projections/types.ts +1 -0
- package/src/storage/auth/errors.ts +0 -1
- package/src/storage/auth/in-memory/auth-storage.ts +44 -65
- package/src/storage/auth/types.ts +15 -7
- package/src/storage/index.ts +6 -1
- package/src/storage/ontology/in-memory/sources.ts +119 -55
- package/src/storage/ontology/index.ts +4 -1
- package/src/storage/ontology/provider.ts +64 -7
- package/src/storage/ontology/sources.ts +42 -8
- package/src/storage/projection-runs/in-memory.ts +41 -2
- package/src/storage/projection-runs/index.ts +2 -0
- package/src/storage/projection-runs/lifecycle.ts +61 -4
- package/src/storage/projection-runs/types.ts +41 -1
- package/src/testing/auth-storage-contract.ts +104 -130
- package/src/testing/ontology-storage-contract.ts +141 -15
- package/src/testing/projection-run-storage-contract.ts +174 -1
- package/dist/chunk-3qpcrcj8.js.map +0 -10
- package/dist/chunk-qma80ych.js.map +0 -11
- package/dist/chunk-znw0zvy4.js.map +0 -12
- /package/dist/{chunk-693f3zn8.js.map → chunk-1jvq82rp.js.map} +0 -0
- /package/dist/{chunk-898y24dd.js.map → chunk-3c90jvfj.js.map} +0 -0
- /package/dist/{chunk-vn3yh259.js.map → chunk-4gmng3vf.js.map} +0 -0
- /package/dist/{chunk-91wthfwe.js.map → chunk-4jph1t3v.js.map} +0 -0
- /package/dist/{chunk-y487ywrv.js.map → chunk-6q7c68yx.js.map} +0 -0
- /package/dist/{chunk-ypj2wqtj.js.map → chunk-70jmg2zx.js.map} +0 -0
- /package/dist/{chunk-s24qbp32.js.map → chunk-7jc21943.js.map} +0 -0
- /package/dist/{chunk-rzcjp5m2.js.map → chunk-8fjmqjyx.js.map} +0 -0
- /package/dist/{chunk-m8zkvep1.js.map → chunk-8w27xf9e.js.map} +0 -0
- /package/dist/{chunk-z9h698s8.js.map → chunk-a4g5yjm0.js.map} +0 -0
- /package/dist/{chunk-gmt22nxx.js.map → chunk-adbve9zt.js.map} +0 -0
- /package/dist/{chunk-gbcrz0gr.js.map → chunk-ex8s8wsk.js.map} +0 -0
- /package/dist/{chunk-4tnrzqqh.js.map → chunk-fj1dvp37.js.map} +0 -0
- /package/dist/{chunk-bdhfn0ww.js.map → chunk-kkqwzy6h.js.map} +0 -0
- /package/dist/{chunk-bep5rrdq.js.map → chunk-mmac1mp6.js.map} +0 -0
- /package/dist/{chunk-w9bp61e7.js.map → chunk-n5t4mq6z.js.map} +0 -0
- /package/dist/{chunk-n33e8dz8.js.map → chunk-p0nbkys4.js.map} +0 -0
- /package/dist/{chunk-04h4t2b5.js.map → chunk-py2dw8cw.js.map} +0 -0
- /package/dist/{chunk-jhyc777j.js.map → chunk-q3grgzp1.js.map} +0 -0
- /package/dist/{chunk-cbn96bve.js.map → chunk-r5sc1d2b.js.map} +0 -0
- /package/dist/{chunk-y6vnvayj.js.map → chunk-vjcd8d27.js.map} +0 -0
- /package/dist/{chunk-jmwy25mf.js.map → chunk-wd34wnsy.js.map} +0 -0
- /package/dist/{chunk-63fp9x3q.js.map → chunk-wem5vqjw.js.map} +0 -0
- /package/dist/{chunk-darm7eeg.js.map → chunk-xr7y35yj.js.map} +0 -0
- /package/dist/{chunk-a69fkrtr.js.map → chunk-y0zmae99.js.map} +0 -0
- /package/dist/{chunk-xgptywp0.js.map → chunk-y2aq6ag9.js.map} +0 -0
- /package/dist/{chunk-2hbhn1ff.js.map → chunk-yfppyaty.js.map} +0 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"import { describe, expect, test } from \"bun:test\"\nimport type { Storage } from \"../storage/types\"\nimport { workflowAgentStepActorId } from \"../workflows/agent-step-identity\"\nimport { createTestAgentExecution } from \"./agent-execution\"\nimport type { AiStorageContractSuiteOptions } from \"./ai-cost-storage-contract\"\nimport { createTestWorkflowExecution } from \"./workflow-execution\"\n\nexport type AiModelCallGroupsContractStorage = Required<\n Pick<Storage, \"agents\" | \"aiUsage\" | \"aiCosts\" | \"executions\" | \"workflowRuns\">\n>\n\nconst projectId = \"model-call-groups\"\nconst range = {\n projectId,\n from: new Date(\"2026-09-01T00:00:00Z\"),\n to: new Date(\"2026-09-02T00:00:00Z\"),\n}\n\n/** Regression: grouping the raw-call page instead of the full filtered set breaks these totals. */\nexport function runAiModelCallGroupsContractSuite<T extends AiModelCallGroupsContractStorage>(\n name: string,\n options: AiStorageContractSuiteOptions<T>\n): void {\n describe(name, () => {\n test(\"attributes direct calls and retries to requests, actions, and workflows\", async () => {\n // Removal proof: return undefined from directModelCallAttribution and run this suite.\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n const expected = [\n { kind: \"request\", requestId: \"request\" },\n { kind: \"action\", actionId: \"summarize\", actionRunId: \"action\" },\n { kind: \"workflow\", workflowId: \"summarize\", workflowRunId: \"workflow\" },\n ] as const\n for (const attribution of expected) {\n const kind = attribution.kind\n const primitive = {\n kind: kind === \"action\" ? (\"action\" as const) : (\"workflow\" as const),\n id: \"summarize\",\n runId: kind,\n }\n const execution = await storage.executions.create({\n projectId,\n id: kind,\n executor:\n kind === \"request\"\n ? { type: \"request\", requestId: kind }\n : { type: \"primitive\", kind, runId: kind },\n source:\n kind === \"request\"\n ? { type: \"http\", requestId: kind }\n : { type: \"event\", eventId: kind },\n correlationId: kind,\n authorizationRef:\n kind === \"request\" ? { type: \"disabled\" } : { type: \"trustedPrimitive\", primitive },\n })\n for (const attempt of [1, 2]) {\n await storage.aiUsage.recordModelCall({\n projectId,\n id: `${kind}:${attempt}`,\n executionId: execution.id,\n attempt,\n callId: `${kind}:${attempt}`,\n requesterGroupIds: execution.requesterGroupIds,\n providerId: \"test\",\n requestedModelId: \"small\",\n responseId: `${kind}:${attempt}`,\n usage: { inputTokens: 2, outputTokens: 3 },\n occurredAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n }\n const calls = await storage.aiCosts.listModelCalls({\n ...range,\n executionId: execution.id,\n })\n expect(calls.total).toBe(2)\n expect(calls.items.map((call) => call.attribution)).toEqual([attribution, attribution])\n }\n const groups = await storage.aiCosts.listModelCallGroups(range)\n expect(groups.total).toBe(3)\n for (const attribution of expected) {\n const group = groups.items.find((item) => item.executionId === attribution.kind)\n expect(group).toMatchObject({\n attribution,\n modelCallCount: 2,\n totalTokens: 10,\n executions: [{ attribution, modelCallCount: 2 }],\n })\n }\n const overview = await storage.aiCosts.queryProjectOverview({ ...range, bucket: \"day\" })\n expect(overview.totals.modelCallCount).toBe(6)\n expect(overview.agents).toEqual([])\n expect(overview.workflows).toMatchObject([{ workflowId: \"summarize\", modelCallCount: 2 }])\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"attributes workflow usage to step references and keeps same-named steps separate\", async () => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n for (const [index, workflowId] of [\"billing\", \"billing\", \"shipping\"].entries()) {\n await seedWorkflowCall(storage, workflowId, `workflow-run-${index}`)\n }\n const overview = await storage.aiCosts.queryProjectOverview({ ...range, bucket: \"day\" })\n // Regression proof: grouping only by step id merges billing and shipping; exposing\n // the actor id instead of the step references fails these exact projections.\n expect(\n overview.agents.map((entry) => ({\n kind: entry.kind,\n modelCallCount: entry.modelCallCount,\n ...(entry.kind === \"workflowAgent\"\n ? { workflowId: entry.workflowId, agentStepId: entry.agentStepId }\n : {}),\n }))\n ).toEqual([\n {\n kind: \"workflowAgent\",\n workflowId: \"billing\",\n agentStepId: \"review\",\n modelCallCount: 2,\n },\n {\n kind: \"workflowAgent\",\n workflowId: \"shipping\",\n agentStepId: \"review\",\n modelCallCount: 1,\n },\n ])\n expect(overview.totals.costs.amounts).toEqual([{ currency: \"USD\", amountNanos: \"30\" }])\n const calls = await storage.aiCosts.listModelCalls(range)\n const groups = await storage.aiCosts.listModelCallGroups(range)\n expect(calls.total).toBe(3)\n expect(groups.total).toBe(3)\n for (const call of calls.items) {\n const runId = call.usage.callId\n const workflowId = runId === \"workflow-run-2\" ? \"shipping\" : \"billing\"\n const attribution = {\n kind: \"workflowAgent\" as const,\n workflowId,\n agentStepId: \"review\",\n workflowRunId: runId,\n nodeRunId: `${runId}:node:0`,\n }\n expect(call.attribution).toEqual(attribution)\n const group = groups.items.find((item) => item.executionId === call.usage.executionId)\n expect(group?.attribution).toEqual(attribution)\n expect(group?.executions[0]?.attribution).toEqual(attribution)\n }\n } finally {\n await options.cleanup?.(storage)\n }\n })\n\n test(\"paginates whole runs, keeps filtered parents, and preserves exact accounting\", async () => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n await seed(storage)\n const first = await storage.aiCosts.listModelCallGroups({ ...range, limit: 1 })\n expect(first).toMatchObject({\n total: 2,\n hasMore: true,\n items: [{ executionId: \"exec_second\", modelCallCount: 1 }],\n })\n const second = await storage.aiCosts.listModelCallGroups({ ...range, limit: 1, offset: 1 })\n expect(second).toMatchObject({\n total: 2,\n hasMore: false,\n items: [\n {\n executionId: \"exec_parent\",\n modelCallCount: 32,\n attribution: { kind: \"agent\", agentRunId: \"parent\", threadId: \"thread\" },\n costs: {\n amounts: [\n { currency: \"EUR\", amountNanos: \"0\" },\n { currency: \"USD\", amountNanos: \"300\" },\n ],\n ratedCallCount: 31,\n unvaluedCallCount: 1,\n },\n executions: [\n { executionId: \"exec_parent\", modelCallCount: 1, totalTokens: 3 },\n {\n executionId: \"exec_child\",\n modelCallCount: 31,\n attribution: { kind: \"subagent\", parentRunId: \"parent\", subagentRunId: \"child\" },\n },\n ],\n },\n ],\n })\n expect(second.items[0]?.totalTokens).toBeUndefined()\n const filtered = await storage.aiCosts.listModelCallGroups({\n ...range,\n providerId: \"child-provider\",\n modelId: \"small\",\n valuationStatus: \"rated\",\n })\n expect(filtered).toMatchObject({\n total: 1,\n items: [\n {\n executionId: \"exec_parent\",\n modelCallCount: 30,\n totalTokens: 90,\n costs: {\n amounts: [{ currency: \"USD\", amountNanos: \"300\" }],\n ratedCallCount: 30,\n unvaluedCallCount: 0,\n },\n executions: [{ executionId: \"exec_child\", modelCallCount: 30 }],\n },\n ],\n })\n expect(filtered.items[0]?.executions).toHaveLength(1)\n const late = await storage.aiCosts.listModelCallGroups({\n ...range,\n from: new Date(\"2026-09-01T12:00:01Z\"),\n to: new Date(\"2026-09-01T12:00:32Z\"),\n })\n expect(late).toMatchObject({\n total: 1,\n items: [{ executionId: \"exec_parent\", modelCallCount: 31 }],\n })\n const unknown = await storage.aiCosts.listModelCallGroups({\n ...range,\n valuationStatus: \"unvalued\",\n modelId: \"small\",\n })\n expect(unknown.items[0]?.costs.amounts).toEqual([])\n expect(unknown.items[0]?.totalTokens).toBeUndefined()\n expect(\n await storage.aiCosts.listModelCallGroups({ ...range, projectId: \"other-project\" })\n ).toEqual({ items: [], total: 0, hasMore: false })\n expect(await storage.aiCosts.listModelCallGroups({ ...range, offset: 20 })).toEqual({\n items: [],\n total: 2,\n hasMore: false,\n })\n await expect(\n storage.aiCosts.listModelCallGroups({ ...range, limit: 201 })\n ).rejects.toThrow()\n await expect(\n storage.aiCosts.listModelCallGroups({ ...range, to: range.from })\n ).rejects.toThrow()\n } finally {\n await options.cleanup?.(storage)\n }\n })\n })\n}\n\nasync function seedWorkflowCall(\n storage: AiModelCallGroupsContractStorage,\n workflowId: string,\n runId: string\n) {\n const sourceExecutionId = await createTestWorkflowExecution(storage.executions, {\n projectId,\n workflowId,\n runId,\n })\n await storage.workflowRuns.queue({\n projectId,\n id: runId,\n workflowId,\n executionId: sourceExecutionId,\n input: {},\n })\n await storage.workflowRuns.start({ projectId, id: runId })\n const nodeRunId = `${runId}:node:0`\n await storage.workflowRuns.nodes.start({\n projectId,\n id: nodeRunId,\n workflowId,\n workflowRunId: runId,\n nodeIndex: 0,\n nodeType: \"agent\",\n nodeId: \"review\",\n nodeKey: \"review\",\n input: {},\n })\n const actorId = workflowAgentStepActorId(workflowId, \"review\")\n const executionId = await createTestAgentExecution(storage, {\n projectId,\n runId: nodeRunId,\n actorId,\n sourceExecutionId,\n })\n await storage.workflowRuns.agentNodes.create({\n projectId,\n nodeRunId,\n executionId,\n actorId,\n prompt: \"Review the task.\",\n })\n const { record } = await storage.aiUsage.recordModelCall({\n projectId,\n id: `usage:${runId}`,\n executionId,\n attempt: 1,\n callId: runId,\n requesterGroupIds: [],\n providerId: \"test\",\n requestedModelId: \"small\",\n responseId: runId,\n usage: { inputTokens: 10, outputTokens: 5 },\n occurredAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n await storage.aiCosts.recordModelCallCost({\n projectId,\n usageRecordId: record.id,\n status: \"rated\",\n pricingContext: {},\n priceSource: {\n sourceId: \"provider-reported\",\n sourceEntryId: runId,\n sourceVersion: \"1\",\n observedAt: new Date(\"2026-09-01T12:00:00Z\"),\n },\n components: [],\n billingIdentity: { providerId: \"test\", modelId: \"small\" },\n money: { currency: \"USD\", amountNanos: \"10\" },\n ratedAt: new Date(\"2026-09-01T12:00:00Z\"),\n })\n}\n\nasync function seed(storage: AiModelCallGroupsContractStorage) {\n await storage.agents.threads.create({\n id: \"thread\",\n projectId,\n ownerPrincipal: { type: \"user\", id: \"user\" },\n })\n for (const runId of [\"parent\", \"second\"]) {\n const executionId = await createTestAgentExecution(storage, {\n projectId,\n runId,\n executionId: `exec_${runId}`,\n authority: \"inherited\",\n })\n await storage.agents.runs.create({\n id: runId,\n projectId,\n executionId,\n threadId: \"thread\",\n triggerMessageId: `message_${runId}`,\n spec: { model: { provider: \"parent-provider\", modelId: \"large\" } },\n })\n await storage.agents.runs.start({\n id: runId,\n projectId,\n execution: { token: runId, queueLeaseExpiresAt: new Date(\"2100-01-01T00:00:00Z\") },\n })\n if (runId === \"parent\") {\n const childExecution = await createTestAgentExecution(storage, {\n projectId,\n actorId: \"child\",\n runId: \"child\",\n executionId: \"exec_child\",\n sourceExecutionId: executionId,\n authority: \"inherited\",\n })\n await storage.agents.runs.createSubagent({\n id: \"child\",\n projectId,\n executionId: childExecution,\n parentRunId: runId,\n parentExecutionToken: runId,\n spawnKey: \"research\",\n spec: {\n model: { provider: \"child-provider\", modelId: \"small\" },\n task: \"Research\",\n toolNames: [],\n maxSteps: 25,\n },\n maxActiveChildren: 4,\n })\n }\n await storage.agents.runs.finish({\n id: runId,\n projectId,\n executionToken: runId,\n status: \"succeeded\",\n })\n }\n for (let index = 0; index < 33; index++) {\n const child = index > 0 && index < 32\n const result = await storage.aiUsage.recordModelCall({\n id: `usage_${index}`,\n projectId,\n executionId: index === 0 ? \"exec_parent\" : child ? \"exec_child\" : \"exec_second\",\n attempt: 1,\n callId: `call_${index}`,\n requesterGroupIds: [],\n providerId: child ? \"child-provider\" : \"parent-provider\",\n requestedModelId: child ? \"small\" : \"large\",\n responseId: `response_${index}`,\n usage: index === 31 ? {} : { inputTokens: 1, outputTokens: 2 },\n occurredAt: new Date(Date.parse(\"2026-09-01T12:00:00Z\") + index * 1000),\n })\n if (index >= 31) continue\n await storage.aiCosts.recordModelCallCost({\n projectId,\n usageRecordId: result.record.id,\n status: \"rated\",\n billingIdentity: {\n providerId: child ? \"child-provider\" : \"parent-provider\",\n modelId: child ? \"small\" : \"large\",\n },\n pricingContext: {},\n priceSource: {\n sourceId: \"provider-reported\",\n sourceEntryId: `cost_${index}`,\n sourceVersion: \"test\",\n observedAt: new Date(\"2026-09-01T12:05:00Z\"),\n },\n components: [],\n money: { currency: index === 0 ? \"EUR\" : \"USD\", amountNanos: index === 0 ? \"0\" : \"10\" },\n ratedAt: new Date(\"2026-09-01T12:05:00Z\"),\n })\n }\n}\n",
|
|
11
11
|
"import type { AuthorizablePrincipal, TrustedPrimitiveRef } from \"../execution\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution chain required by a workflow-run storage fixture. */\nexport async function createTestWorkflowExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly workflowId: string\n readonly runId: string\n readonly executionId?: string\n readonly requestedBy?: AuthorizablePrincipal\n readonly requesterGroupIds?: readonly string[]\n }\n): Promise<string> {\n const parentExecutionId = `test_request_execution:${input.runId}`\n const executionId = input.executionId ?? `test_workflow_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"workflow\",\n id: input.workflowId,\n runId: input.runId,\n }\n\n await executions.create({\n id: parentExecutionId,\n requesterGroupIds: input.requesterGroupIds ?? [],\n projectId: input.projectId,\n executor: { type: \"request\", requestId: `test_request:${input.runId}` },\n source: { type: \"http\", requestId: `test_request:${input.runId}` },\n ...(input.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.requestedBy) }),\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef:\n input.requestedBy === undefined\n ? { type: \"disabled\" }\n : { type: \"principal\", principal: structuredClone(input.requestedBy) },\n })\n await executions.create({\n id: executionId,\n requesterGroupIds: input.requesterGroupIds ?? [],\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"execution\", executionId: parentExecutionId },\n ...(input.requestedBy === undefined ? {} : { requestedBy: structuredClone(input.requestedBy) }),\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n\n/** Create a root workflow execution as produced by an automatic trigger. */\nexport async function createTestAutomaticWorkflowExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly workflowId: string\n readonly runId: string\n readonly executionId?: string\n readonly source?: { readonly type: \"schedule\" | \"event\"; readonly eventId: string }\n readonly correlationId?: string\n }\n): Promise<string> {\n const executionId = input.executionId ?? `test_workflow_execution:${input.runId}`\n const primitive: TrustedPrimitiveRef = {\n kind: \"workflow\",\n id: input.workflowId,\n runId: input.runId,\n }\n\n await executions.create({\n id: executionId,\n requesterGroupIds: [],\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: input.source ?? { type: \"event\", eventId: `test_event:${input.runId}` },\n correlationId: input.correlationId ?? `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n\n return executionId\n}\n",
|
|
12
12
|
"import { describe, expect, test } from \"bun:test\"\nimport {\n type AiUsageStorage,\n AiUsageStorageError,\n type RecordAiModelCallInput,\n} from \"../storage/ai-usage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\nexport interface AiUsageStorageContractSuiteOptions<\n TStorage extends AiUsageStorage = AiUsageStorage,\n> {\n /** Factory that returns an isolated AI usage store for each test. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly setup?: (storage: TStorage) => void | Promise<void>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"contract-project\"\nconst agentExecutionId = \"exec_agent_1\"\nconst otherAgentExecutionId = \"exec_agent_2\"\nconst workflowExecutionId = \"exec_workflow_1\"\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nfunction modelCallInput(overrides: Partial<RecordAiModelCallInput> = {}): RecordAiModelCallInput {\n return {\n id: \"usage_1\",\n projectId,\n executionId: agentExecutionId,\n attempt: 1,\n callId: \"call_1\",\n requesterGroupIds: [\"support\", \"engineering\"],\n providerId: \"gateway\",\n requestedModelId: \"openai/gpt-5\",\n requestedReasoning: { budgetTokens: 4_096 },\n responseModelId: \"gpt-5-2026-06-01\",\n responseId: \"response_1\",\n usage: {\n inputTokens: 12,\n outputTokens: 8,\n uncachedInputTokens: 9,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 1,\n textOutputTokens: 6,\n reasoningOutputTokens: 2,\n },\n rawUsage: { input_tokens: 12, output_tokens: 8 },\n occurredAt: at(\"2026-06-23T10:00:00.000Z\"),\n recordedAt: at(\"2026-06-23T10:00:01.000Z\"),\n ...overrides,\n }\n}\n\n/** Runs the provider-neutral model-call ledger contract against one storage implementation. */\nexport function runAiUsageStorageContractSuite<TStorage extends AiUsageStorage>(\n label: string,\n options: AiUsageStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"retains native provider IDs across reads and replay\", async () => {\n // Regression proof: omit providerIds in normalization or a storage row codec.\n await withStorage(async (storage) => {\n const providerIds = {\n requestId: \"request-native\",\n responseId: \"response-native\",\n generationId: \"gen_native\",\n }\n await storage.recordModelCall(modelCallInput({ providerIds }))\n const latest = await storage.getLatestForExecution({\n projectId,\n executionId: agentExecutionId,\n })\n expect(latest?.providerIds).toEqual(providerIds)\n const replay = await storage.recordModelCall(modelCallInput())\n expect(replay.created).toBe(false)\n expect(replay.record.providerIds).toEqual(providerIds)\n await storage.recordModelCall(\n modelCallInput({ id: \"legacy\", callId: \"legacy\", occurredAt: at(\"2026-06-24T00:00:00Z\") })\n )\n expect(\n (await storage.getLatestForExecution({ projectId, executionId: agentExecutionId }))\n ?.providerIds\n ).toBeUndefined()\n await expect(\n storage.recordModelCall(modelCallInput({ providerIds: { requestId: \" \" } }))\n ).rejects.toThrow(\"requestId\")\n })\n })\n test(\"records normalized usage and one canonical row per requester group\", async () => {\n await withStorage(async (storage) => {\n const result = await storage.recordModelCall(\n modelCallInput({\n requesterGroupIds: [\"support\", \"engineering\", \"support\"],\n })\n )\n\n expect(result.created).toBe(true)\n expect(result.record).toEqual({\n ...modelCallInput(),\n requesterGroupIds: [\"engineering\", \"support\"],\n usage: {\n ...modelCallInput().usage,\n totalTokens: 20,\n reportingStatus: \"complete\",\n },\n recordedAt: at(\"2026-06-23T10:00:01.000Z\"),\n })\n })\n })\n\n test(\"returns the existing record when the idempotency key is replayed\", async () => {\n await withStorage(async (storage) => {\n const first = await storage.recordModelCall(modelCallInput())\n const replay = await storage.recordModelCall(\n modelCallInput({\n id: \"ignored_retry_id\",\n requesterGroupIds: [\"different-group\"],\n usage: { inputTokens: 999, outputTokens: 1 },\n })\n )\n\n expect(first.created).toBe(true)\n expect(replay.created).toBe(false)\n expect(replay.record).toEqual(first.record)\n })\n })\n\n test(\"allows one generation call id to contain multiple billable responses\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(modelCallInput())\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_2\",\n responseId: \"response_2\",\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n uncachedInputTokens: 4,\n cacheReadInputTokens: 0,\n cacheWriteInputTokens: 2,\n textOutputTokens: 5,\n reasoningOutputTokens: 1,\n },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 2,\n usage: {\n inputTokens: 16,\n outputTokens: 14,\n totalTokens: 30,\n uncachedInputTokens: 13,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 3,\n textOutputTokens: 11,\n reasoningOutputTokens: 3,\n reportingStatus: \"complete\",\n },\n })\n })\n })\n\n test(\"returns the latest completed call for one execution\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.getLatestForExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toBeNull()\n\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_later\",\n callId: \"call_later\",\n responseId: \"response_later\",\n occurredAt: at(\"2026-06-23T10:02:00.000Z\"),\n })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_earlier\",\n callId: \"call_earlier\",\n responseId: \"response_earlier\",\n occurredAt: at(\"2026-06-23T10:01:00.000Z\"),\n })\n )\n\n await expect(\n storage.getLatestForExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toMatchObject({ id: \"usage_later\", responseId: \"response_later\" })\n await expect(\n storage.getLatestForExecution({\n projectId: \"other-project\",\n executionId: agentExecutionId,\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"bills the same call and response IDs again on a later delivery attempt\", async () => {\n // Regression guard: remove `attempt` from a provider's idempotency key/query/index and the\n // second append collapses into the first, making the aggregate assertions fail.\n await withStorage(async (storage) => {\n await storage.recordModelCall(modelCallInput())\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_2\",\n attempt: 2,\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n uncachedInputTokens: 4,\n cacheReadInputTokens: 0,\n cacheWriteInputTokens: 2,\n textOutputTokens: 5,\n reasoningOutputTokens: 1,\n },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 2,\n usage: {\n inputTokens: 16,\n outputTokens: 14,\n totalTokens: 30,\n uncachedInputTokens: 13,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 3,\n textOutputTokens: 11,\n reasoningOutputTokens: 3,\n reportingStatus: \"complete\",\n },\n })\n })\n })\n\n test(\"does not count concurrent idempotent appends twice\", async () => {\n await withStorage(async (storage) => {\n const results = await Promise.all([\n storage.recordModelCall(modelCallInput()),\n storage.recordModelCall(modelCallInput({ id: \"usage_retry\" })),\n ])\n\n expect(results.map((result) => result.created).sort()).toEqual([false, true])\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 1,\n usage: {\n inputTokens: 12,\n outputTokens: 8,\n totalTokens: 20,\n uncachedInputTokens: 9,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 1,\n textOutputTokens: 6,\n reasoningOutputTokens: 2,\n reportingStatus: \"complete\",\n },\n })\n })\n })\n\n test(\"keeps projects and workflow executions isolated\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_workflow\",\n executionId: workflowExecutionId,\n usage: { inputTokens: 5, outputTokens: 3 },\n })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_other_project\",\n projectId: \"other-project\",\n executionId: workflowExecutionId,\n usage: { inputTokens: 100, outputTokens: 100 },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: workflowExecutionId })\n ).resolves.toEqual({\n modelCallCount: 1,\n usage: {\n inputTokens: 5,\n outputTokens: 3,\n totalTokens: 8,\n reportingStatus: \"complete\",\n },\n })\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n await expect(\n storage.summarizeExecution({\n projectId,\n executionId: \"exec_workflow_2\",\n })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n })\n })\n\n test(\"summarizes multiple executions in input order with one zero-call entry per miss\", async () => {\n await withStorage(async (storage) => {\n await expect(storage.summarizeExecutions({ projectId, executionIds: [] })).resolves.toEqual(\n []\n )\n\n await storage.recordModelCall(modelCallInput())\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_agent_2\",\n executionId: otherAgentExecutionId,\n callId: \"call_agent_2\",\n responseId: \"response_agent_2\",\n usage: { inputTokens: 4, outputTokens: 6 },\n })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_workflow\",\n executionId: workflowExecutionId,\n callId: \"call_workflow\",\n responseId: \"response_workflow\",\n usage: { inputTokens: 5, outputTokens: 3 },\n })\n )\n\n await expect(\n storage.summarizeExecutions({\n projectId,\n executionIds: [\n otherAgentExecutionId,\n \"missing\",\n workflowExecutionId,\n agentExecutionId,\n otherAgentExecutionId,\n ],\n })\n ).resolves.toEqual([\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n totalTokens: 10,\n reportingStatus: \"complete\",\n },\n },\n { modelCallCount: 0, usage: { reportingStatus: \"unavailable\" } },\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 5,\n outputTokens: 3,\n totalTokens: 8,\n reportingStatus: \"complete\",\n },\n },\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 12,\n outputTokens: 8,\n totalTokens: 20,\n uncachedInputTokens: 9,\n cacheReadInputTokens: 3,\n cacheWriteInputTokens: 1,\n textOutputTokens: 6,\n reasoningOutputTokens: 2,\n reportingStatus: \"complete\",\n },\n },\n {\n modelCallCount: 1,\n usage: {\n inputTokens: 4,\n outputTokens: 6,\n totalTokens: 10,\n reportingStatus: \"complete\",\n },\n },\n ])\n })\n })\n\n test(\"distinguishes no model calls from a call without reported usage\", async () => {\n // Regression guard: coerce nullable SQL token columns with `Number(null)` and this becomes a\n // complete zero-token report instead of an unavailable one.\n await withStorage(async (storage) => {\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n\n const result = await storage.recordModelCall(\n modelCallInput({ usage: {}, rawUsage: undefined })\n )\n\n expect(result.record.usage).toEqual({ reportingStatus: \"unavailable\" })\n expect(result.record.rawUsage).toBeUndefined()\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 1,\n usage: { reportingStatus: \"unavailable\" },\n })\n })\n })\n\n test(\"normalizes offset timestamps to the same UTC instants\", async () => {\n // Regression guard: persist a timezone-naive SQL timestamp and these offset-derived instants\n // shift when read under a different database or process timezone.\n await withStorage(async (storage) => {\n const result = await storage.recordModelCall(\n modelCallInput({\n occurredAt: at(\"2026-06-23T03:04:05.678-07:00\"),\n recordedAt: at(\"2026-06-23T03:04:06.789-07:00\"),\n })\n )\n\n expect(result.record.occurredAt.toISOString()).toBe(\"2026-06-23T10:04:05.678Z\")\n expect(result.record.recordedAt.toISOString()).toBe(\"2026-06-23T10:04:06.789Z\")\n })\n })\n\n test(\"keeps incomplete execution totals partial instead of inventing zeroes\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(\n modelCallInput({ usage: { inputTokens: 10, outputTokens: 5 } })\n )\n await storage.recordModelCall(\n modelCallInput({\n id: \"usage_2\",\n callId: \"call_2\",\n responseId: \"response_2\",\n usage: { inputTokens: 0 },\n })\n )\n\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 2,\n usage: {\n inputTokens: 10,\n reportingStatus: \"partial\",\n },\n })\n })\n })\n\n test(\"defensively snapshots inputs and returned records\", async () => {\n await withStorage(async (storage) => {\n const requesterGroupIds = [\"support\"]\n const rawUsage = { nested: { cached: 3 } }\n const occurredAt = at(\"2026-06-23T10:00:00.000Z\")\n const input = modelCallInput({ requesterGroupIds, rawUsage, occurredAt })\n const first = await storage.recordModelCall(input)\n\n requesterGroupIds.push(\"mutated-input\")\n rawUsage.nested.cached = 999\n occurredAt.setTime(0)\n\n const returnedGroups = first.record.requesterGroupIds as string[]\n returnedGroups.push(\"mutated-output\")\n const returnedRaw = first.record.rawUsage as { nested: { cached: number } }\n returnedRaw.nested.cached = 888\n first.record.occurredAt.setTime(1)\n\n const replay = await storage.recordModelCall(modelCallInput())\n expect(replay.record.requesterGroupIds).toEqual([\"support\"])\n expect(replay.record.rawUsage).toEqual({ nested: { cached: 3 } })\n expect(replay.record.occurredAt.toISOString()).toBe(\"2026-06-23T10:00:00.000Z\")\n })\n })\n\n test(\"rejects a reused record id with a different model-call identity\", async () => {\n await withStorage(async (storage) => {\n await storage.recordModelCall(modelCallInput())\n\n const error = storage.recordModelCall(\n modelCallInput({ callId: \"call_2\", responseId: \"response_2\" })\n )\n await expect(error).rejects.toBeInstanceOf(AiUsageStorageError)\n await expect(error).rejects.toMatchObject({ code: \"duplicate_id\" })\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toMatchObject({\n modelCallCount: 1,\n usage: { inputTokens: 12, outputTokens: 8, totalTokens: 20 },\n })\n })\n })\n\n test(\"rejects a model call whose durable execution does not exist\", async () => {\n await withStorage(async (storage) => {\n const error = storage.recordModelCall(\n modelCallInput({ id: \"usage_missing\", executionId: \"exec_missing\" })\n )\n await expect(error).rejects.toBeInstanceOf(AiUsageStorageError)\n await expect(error).rejects.toMatchObject({ code: \"missing_execution\" })\n })\n })\n\n test(\"rejects invalid execution IDs, usage, dates, groups, and raw JSON\", async () => {\n await withStorage(async (storage) => {\n const invalidInputs: RecordAiModelCallInput[] = [\n modelCallInput({ attempt: 0 }),\n modelCallInput({ providerId: \" \" }),\n modelCallInput({ requesterGroupIds: [\"\"] }),\n modelCallInput({ usage: { inputTokens: -1 } }),\n modelCallInput({ occurredAt: new Date(Number.NaN) }),\n modelCallInput({ rawUsage: { invalid: undefined } as never }),\n modelCallInput({ requestedReasoning: { budgetTokens: -1 } }),\n modelCallInput({ executionId: \"\" }),\n ]\n\n for (const input of invalidInputs) {\n await expect(storage.recordModelCall(input)).rejects.toThrow()\n }\n await expect(\n storage.summarizeExecutions({\n projectId,\n executionIds: [\"\"],\n })\n ).rejects.toThrow()\n await expect(\n storage.summarizeExecution({ projectId, executionId: agentExecutionId })\n ).resolves.toEqual({\n modelCallCount: 0,\n usage: { reportingStatus: \"unavailable\" },\n })\n })\n })\n })\n}\n\n/** Seed the immutable execution references used by the provider-neutral AI usage contract. */\nexport async function seedAiUsageStorageContractExecutions(\n executions: ExecutionStorage\n): Promise<void> {\n for (const fixture of [\n { projectId, executionId: agentExecutionId },\n { projectId, executionId: otherAgentExecutionId },\n { projectId, executionId: workflowExecutionId },\n { projectId: \"other-project\", executionId: workflowExecutionId },\n ]) {\n const existing = await executions.getById({\n projectId: fixture.projectId,\n id: fixture.executionId,\n })\n if (existing) continue\n const primitive = {\n kind: \"workflow\" as const,\n id: \"ai-usage-contract\",\n runId: fixture.executionId,\n }\n await executions.create({\n id: fixture.executionId,\n projectId: fixture.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"event\", eventId: `test_event:${fixture.executionId}` },\n correlationId: `test_correlation:${fixture.executionId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n }\n}\n",
|
|
13
|
-
"import { describe, expect, test } from \"bun:test\"\nimport type {\n AuthStorage,\n AuthStorageErrorCode,\n CompleteAuthSessionInput,\n UserRecord,\n} from \"../storage/auth\"\nimport { AuthStorageError } from \"../storage/auth\"\n\nexport interface AuthStorageContractSuiteOptions<TStorage extends AuthStorage = AuthStorage> {\n /** Factory that produces a fresh `AuthStorage` instance for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"project-a\"\nconst otherProjectId = \"project-b\"\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nfunction sessionInput(\n id: string,\n tokenHash = `${id}-hash`,\n audience: CompleteAuthSessionInput[\"audience\"] = \"atlas\",\n absoluteExpiresAt?: Date\n): CompleteAuthSessionInput {\n return {\n id,\n audience,\n tokenHash,\n createdAt: at(\"2026-05-14T10:10:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:10:00.000Z\"),\n absoluteExpiresAt,\n }\n}\n\nfunction bearerSessionInput(id: string) {\n return {\n id,\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\" as const,\n tokenHash: \"access-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-06-14T10:00:00.000Z\"),\n bearer: {\n clientName: \"sixb CLI\",\n accessExpiresAt: at(\"2026-05-14T10:15:00.000Z\"),\n refreshTokenHash: \"refresh-1\",\n },\n }\n}\n\nasync function expectAuthError(\n promise: Promise<unknown>,\n code: AuthStorageErrorCode\n): Promise<void> {\n await expect(promise).rejects.toBeInstanceOf(AuthStorageError)\n await expect(promise).rejects.toMatchObject({ code })\n}\n\nasync function createUser(\n storage: AuthStorage,\n input: {\n readonly id?: string\n readonly email?: string\n readonly status?: UserRecord[\"status\"]\n readonly projectId?: string\n } = {}\n): Promise<UserRecord> {\n return storage.users.create({\n id: input.id ?? \"usr_1\",\n projectId: input.projectId ?? projectId,\n email: input.email ?? \"ava@acme.com\",\n status: input.status,\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n}\n\n/**\n * Runs the shared `AuthStorage` contract against any storage implementation.\n *\n * The suite is the storage-independent specification for Sixb auth state: users, identities,\n * sessions, invitations, group memberships, service accounts, access tokens,\n * magic links, OIDC attempts, and atomic sign-in completion.\n */\nexport function runAuthStorageContractSuite<TStorage extends AuthStorage>(\n label: string,\n options: AuthStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"creates users with normalized email and isolates projects\", async () => {\n await withStorage(async (storage) => {\n const user = await createUser(storage, {\n email: \" Ava@Acme.COM \",\n })\n\n expect(user.email).toBe(\"ava@acme.com\")\n await expectAuthError(\n storage.users.create({\n id: \"usr_duplicate\",\n projectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n }),\n \"duplicate_user\"\n )\n\n await expect(\n storage.users.create({\n id: \"usr_other\",\n projectId: otherProjectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n projectId: otherProjectId,\n email: \"ava@acme.com\",\n })\n\n const page = await storage.users.list({ projectId, statuses: [\"active\"] })\n expect(page.users.map((row) => row.id)).toEqual([\"usr_1\"])\n })\n })\n\n test(\"upserts identities without mutating canonical user email\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_oidc\", email: \"ava@acme.com\" })\n\n await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava@acme.com\" },\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n const updated = await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava.renamed@acme.com\" },\n updatedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n expect(updated.claims).toEqual({ email: \"ava.renamed@acme.com\" })\n await expect(storage.users.getById({ projectId, id: \"usr_oidc\" })).resolves.toMatchObject({\n email: \"ava@acme.com\",\n })\n })\n })\n\n test(\"keeps multiple concurrent sessions per user and never extends expiry on touch\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const first = await storage.sessions.create({\n id: \"ses_1\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n const second = await storage.sessions.create({\n id: \"ses_2\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n createdAt: at(\"2026-05-14T10:05:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:05:00.000Z\"),\n })\n\n // Creating a second session in the same audience no longer revokes the\n // first: both stay active and authenticate independently.\n expect(first.revokedAt).toBeUndefined()\n expect(second.revokedAt).toBeUndefined()\n const storedFirst = await storage.sessions.getById({ projectId, id: \"ses_1\" })\n expect(storedFirst?.revokedAt).toBeUndefined()\n\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_1\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_1\" })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"wrong\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n // getActiveByUserId returns the most recently created active session.\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n\n const touched = await storage.sessions.touch({\n projectId,\n id: second.id,\n lastSeenAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n expect(touched.lastSeenAt?.toISOString()).toBe(\"2026-05-15T10:00:00.000Z\")\n expect(touched.expiresAt.toISOString()).toBe(\"2026-05-21T10:05:00.000Z\")\n\n // A session in a different audience coexists and is cookie-scoped.\n const appSession = await storage.sessions.create({\n id: \"ses_app\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-app\",\n createdAt: at(\"2026-05-14T10:06:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:06:00.000Z\"),\n })\n expect(appSession.revokedAt).toBeUndefined()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_app\",\n audience: \"atlas\",\n tokenHash: \"hash-app\",\n now: at(\"2026-05-14T10:07:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n // Revoking a single session leaves the user's other sessions active.\n await storage.sessions.revoke({\n projectId,\n id: \"ses_1\",\n revokedAt: at(\"2026-05-14T10:08:00.000Z\"),\n })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_1\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n now: at(\"2026-05-14T10:09:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n now: at(\"2026-05-14T10:09:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n\n // \"Sign out everywhere\": revokeActiveForUser clears every remaining\n // active session for the user, across audiences.\n const revoked = await storage.sessions.revokeActiveForUser({\n projectId,\n userId: \"usr_1\",\n revokedAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n expect(revoked.map((entry) => entry.id).sort()).toEqual([\"ses_2\", \"ses_app\"])\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-14T10:11:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"persists and enforces an optional absolute session deadline\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n const capped = await storage.sessions.create({\n id: \"ses_capped\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n absoluteExpiresAt: at(\"2026-05-16T10:00:00.000Z\"),\n })\n const uncapped = await storage.sessions.create({\n id: \"ses-uncapped\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-uncapped\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n\n expect(capped.absoluteExpiresAt?.toISOString()).toBe(\"2026-05-16T10:00:00.000Z\")\n expect(uncapped.absoluteExpiresAt).toBeUndefined()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: capped.id,\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n now: at(\"2026-05-16T09:59:59.999Z\"),\n })\n ).resolves.toMatchObject({ id: capped.id })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: capped.id,\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n const active = await storage.sessions.listActiveByUserId({\n projectId,\n userId: \"usr_1\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n expect(active.map((session) => session.id)).toEqual([uncapped.id])\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.revokeActiveForUser({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n revokedAt: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toEqual([])\n })\n })\n\n test(\"atomically renews valid sessions without exceeding the absolute deadline\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_renew\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-15T10:00:00.000Z\"),\n absoluteExpiresAt: at(\"2026-05-20T10:00:00.000Z\"),\n })\n\n const renewed = await storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-25T10:00:00.000Z\"),\n })\n expect(renewed?.expiresAt.toISOString()).toBe(\"2026-05-20T10:00:00.000Z\")\n expect(renewed?.lastSeenAt?.toISOString()).toBe(\"2026-05-14T11:00:00.000Z\")\n\n const monotonic = await storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-14T12:00:00.000Z\"),\n expiresAt: at(\"2026-05-18T10:00:00.000Z\"),\n })\n expect(monotonic?.expiresAt.toISOString()).toBe(\"2026-05-20T10:00:00.000Z\")\n\n await expect(\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"wrong-hash\",\n now: at(\"2026-05-14T13:00:00.000Z\"),\n expiresAt: at(\"2026-05-19T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-20T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n await storage.sessions.create({\n id: \"ses_concurrent\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n await Promise.all([\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_concurrent\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-18T10:00:00.000Z\"),\n }),\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_concurrent\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-19T10:00:00.000Z\"),\n }),\n ])\n const concurrent = await storage.sessions.getById({ projectId, id: \"ses_concurrent\" })\n expect(concurrent?.expiresAt.toISOString()).toBe(\"2026-05-19T10:00:00.000Z\")\n })\n })\n\n test(\"persists best-effort device metadata on a session\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const withDevice = await storage.sessions.create({\n id: \"ses_device\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-device\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n userAgent: \"Mozilla/5.0 (iPhone)\",\n ipAddress: \"203.0.113.7\",\n })\n expect(withDevice.userAgent).toBe(\"Mozilla/5.0 (iPhone)\")\n expect(withDevice.ipAddress).toBe(\"203.0.113.7\")\n await expect(\n storage.sessions.getById({ projectId, id: \"ses_device\" })\n ).resolves.toMatchObject({\n userAgent: \"Mozilla/5.0 (iPhone)\",\n ipAddress: \"203.0.113.7\",\n })\n\n // Device metadata is optional; omitting it round-trips as undefined.\n const withoutDevice = await storage.sessions.create({\n id: \"ses_plain\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-plain\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n expect(withoutDevice.userAgent).toBeUndefined()\n expect(withoutDevice.ipAddress).toBeUndefined()\n })\n })\n\n test(\"lists a user's active sessions across audiences, newest activity first\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.sessions.create({\n id: \"ses_a\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-a\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_b\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-b\",\n createdAt: at(\"2026-05-14T10:05:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:05:00.000Z\"),\n })\n\n // Revoked sessions are excluded.\n await storage.sessions.create({\n id: \"ses_revoked\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-revoked\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n await storage.sessions.revoke({\n projectId,\n id: \"ses_revoked\",\n revokedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n // Another user's session must not leak in.\n await createUser(storage, { id: \"usr_2\", email: \"bo@acme.com\" })\n await storage.sessions.create({\n id: \"ses_other\",\n projectId,\n userId: \"usr_2\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-other\",\n createdAt: at(\"2026-05-14T10:03:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:03:00.000Z\"),\n })\n\n // ses_a is older than ses_b but has more recent activity, so it sorts first.\n await storage.sessions.touch({\n projectId,\n id: \"ses_a\",\n lastSeenAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n\n const active = await storage.sessions.listActiveByUserId({\n projectId,\n userId: \"usr_1\",\n now: at(\"2026-05-15T11:00:00.000Z\"),\n })\n expect(active.map((session) => session.id)).toEqual([\"ses_a\", \"ses_b\"])\n })\n })\n\n test(\"keeps one active invitation per normalized email\", async () => {\n await withStorage(async (storage) => {\n const first = await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \" Ava@Acme.COM \",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n const updated = await storage.invitations.createOrUpdateActive({\n id: \"inv_2\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"finance\"],\n updatedAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-22T10:00:00.000Z\"),\n })\n\n expect(updated.id).toBe(first.id)\n expect(updated.groupIds).toEqual([\"finance\"])\n await expect(\n storage.invitations.getActiveByEmail({\n projectId,\n email: \"ava@acme.com\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"inv_1\" })\n\n await storage.invitations.revoke({\n projectId,\n id: \"inv_1\",\n revokedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n await expect(\n storage.invitations.getActiveByEmail({\n projectId,\n email: \"ava@acme.com\",\n now: at(\"2026-05-14T10:04:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"upserts group memberships idempotently and preserves source\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"invitation\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n const repeated = await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n\n expect(repeated.source).toBe(\"invitation\")\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toHaveLength(1)\n })\n })\n\n test(\"rejects group memberships for missing users\", async () => {\n await withStorage(async (storage) => {\n await expectAuthError(\n storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_missing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n }),\n \"missing_user\"\n )\n })\n })\n\n test(\"removes group memberships and is idempotent for missing rows\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n\n const removed = await storage.groupMemberships.remove({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n })\n expect(removed).toMatchObject({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toHaveLength(0)\n\n // Removing an already-removed membership is a no-op that returns null.\n await expect(\n storage.groupMemberships.remove({ projectId, userId: \"usr_1\", groupId: \"commercial\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"returns null when removing a membership for a missing user\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.groupMemberships.remove({\n projectId,\n userId: \"usr_missing\",\n groupId: \"commercial\",\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"manages service accounts and their group memberships\", async () => {\n await withStorage(async (storage) => {\n const serviceAccount = await storage.serviceAccounts.create({\n id: \"svc_ingest\",\n projectId,\n name: \"Ingest worker\",\n description: \"Reads source data into Sixb.\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n expect(serviceAccount).toMatchObject({\n id: \"svc_ingest\",\n name: \"Ingest worker\",\n status: \"active\",\n })\n\n const membership = await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_ingest\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n expect(membership.groupId).toBe(\"commercial\")\n const repeated = await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_ingest\",\n groupId: \"commercial\",\n source: \"invitation\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n expect(repeated.source).toBe(\"manual\")\n\n await expect(\n storage.serviceAccountGroupMemberships.listForServiceAccount({\n projectId,\n serviceAccountId: \"svc_ingest\",\n })\n ).resolves.toHaveLength(1)\n await expect(\n storage.serviceAccountGroupMemberships.listForGroup({\n projectId,\n groupId: \"commercial\",\n })\n ).resolves.toMatchObject([{ serviceAccountId: \"svc_ingest\" }])\n\n const updated = await storage.serviceAccounts.update({\n projectId,\n id: \"svc_ingest\",\n name: \"Ingest worker v2\",\n status: \"suspended\",\n updatedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n expect(updated).toMatchObject({\n name: \"Ingest worker v2\",\n description: \"Reads source data into Sixb.\",\n status: \"suspended\",\n })\n await expect(\n storage.serviceAccounts.update({\n projectId,\n id: \"svc_ingest\",\n description: \"Imports source data into Sixb.\",\n updatedAt: at(\"2026-05-14T10:04:00.000Z\"),\n })\n ).resolves.toMatchObject({\n name: \"Ingest worker v2\",\n description: \"Imports source data into Sixb.\",\n status: \"suspended\",\n })\n await expect(\n storage.serviceAccounts.list({ projectId, statuses: [\"suspended\"] })\n ).resolves.toMatchObject({\n serviceAccounts: [{ id: \"svc_ingest\" }],\n total: 1,\n })\n })\n })\n\n test(\"rejects service account memberships for missing service accounts\", async () => {\n await withStorage(async (storage) => {\n await expectAuthError(\n storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_missing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n }),\n \"missing_service_account\"\n )\n })\n })\n\n test(\"reconciles agent-managed service account memberships\", async () => {\n await withStorage(async (storage) => {\n await storage.serviceAccounts.create({\n id: \"svc_agent_ops\",\n projectId,\n name: \"Ops agent\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupId: \"manual-extra\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupId: \"stale-agent\",\n source: \"agent\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n const first = await storage.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupIds: [\"agent-runtime\", \"agent-runtime\", \"ops\"],\n source: \"agent\",\n updatedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n expect(first.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"agent-runtime\", \"agent\"],\n [\"manual-extra\", \"manual\"],\n [\"ops\", \"agent\"],\n ])\n\n const second = await storage.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupIds: [\"ops\"],\n source: \"agent\",\n updatedAt: at(\"2026-05-14T10:04:00.000Z\"),\n })\n expect(second.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"manual-extra\", \"manual\"],\n [\"ops\", \"agent\"],\n ])\n })\n })\n\n test(\"creates, resolves, touches, lists, and revokes access tokens\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.serviceAccounts.create({\n id: \"svc_ingest\",\n projectId,\n name: \"Ingest worker\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n\n const personal = await storage.accessTokens.create({\n id: \"tok_personal\",\n projectId,\n name: \"Local CLI\",\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: \"hash-personal\",\n groupIds: [\"commercial\", \"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n expect(personal.groupIds).toEqual([\"commercial\", \"finance\"])\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"hash-personal\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"tok_personal\" })\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"wrong\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n const touched = await storage.accessTokens.touch({\n projectId,\n id: \"tok_personal\",\n lastUsedAt: at(\"2026-05-14T10:03:00.000Z\"),\n userAgent: \"sixb-cli/0.1\",\n ipAddress: \"203.0.113.10\",\n })\n expect(touched.lastUsedAt?.toISOString()).toBe(\"2026-05-14T10:03:00.000Z\")\n expect(touched.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n\n await storage.accessTokens.create({\n id: \"tok_service\",\n projectId,\n name: \"Sandbox agent\",\n kind: \"serviceAccount\",\n subject: { type: \"serviceAccount\", id: \"svc_ingest\" },\n tokenHash: \"hash-service\",\n createdAt: at(\"2026-05-14T10:04:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:04:00.000Z\"),\n })\n await expect(\n storage.accessTokens.list({\n projectId,\n subject: { type: \"serviceAccount\", id: \"svc_ingest\" },\n })\n ).resolves.toMatchObject({\n accessTokens: [{ id: \"tok_service\" }],\n total: 1,\n })\n\n await storage.accessTokens.revoke({\n projectId,\n id: \"tok_personal\",\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"hash-personal\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"round-trips the creator principal for service accounts and access tokens\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_creator\", email: \"creator@acme.com\" })\n await storage.serviceAccounts.create({\n id: \"svc_creator\",\n projectId,\n name: \"Creator service account\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_creator\",\n projectId,\n userId: \"usr_creator\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-creator\",\n createdAt: at(\"2026-05-14T10:00:30.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:30.000Z\"),\n })\n\n const principals = [\n { type: \"user\", id: \"usr_creator\" },\n { type: \"serviceAccount\", id: \"svc_creator\" },\n { type: \"system\", id: \"scheduler\" },\n ] as const\n\n for (const [index, principal] of principals.entries()) {\n const accountId = `svc_by_${principal.type}`\n const createdAccount = await storage.serviceAccounts.create({\n id: accountId,\n projectId,\n name: `Service account by ${principal.type}`,\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n createdAt: at(`2026-05-14T10:1${index}:00.000Z`),\n })\n expect(createdAccount.createdByPrincipal).toEqual(principal)\n expect(createdAccount.createdBySessionId).toBe(\"ses_creator\")\n await expect(\n storage.serviceAccounts.getById({ projectId, id: accountId })\n ).resolves.toMatchObject({\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n })\n\n const tokenId = `tok_by_${principal.type}`\n const createdToken = await storage.accessTokens.create({\n id: tokenId,\n projectId,\n name: `Token by ${principal.type}`,\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_creator\" },\n tokenHash: `hash-${tokenId}`,\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n createdAt: at(`2026-05-14T10:2${index}:00.000Z`),\n expiresAt: at(`2026-05-21T10:2${index}:00.000Z`),\n })\n expect(createdToken.createdByPrincipal).toEqual(principal)\n expect(createdToken.createdBySessionId).toBe(\"ses_creator\")\n await expect(\n storage.accessTokens.getById({ projectId, id: tokenId })\n ).resolves.toMatchObject({\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n })\n }\n\n // Omitting the creator round-trips as undefined on every backend.\n const anonymous = await storage.serviceAccounts.create({\n id: \"svc_anonymous\",\n projectId,\n name: \"Anonymous service account\",\n createdAt: at(\"2026-05-14T10:30:00.000Z\"),\n })\n expect(anonymous.createdByPrincipal).toBeUndefined()\n expect(anonymous.createdBySessionId).toBeUndefined()\n await expect(\n storage.serviceAccounts.getById({ projectId, id: \"svc_anonymous\" })\n ).resolves.toMatchObject({ id: \"svc_anonymous\" })\n })\n })\n\n test(\"touch preserves prior access-token metadata when omitted\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.accessTokens.create({\n id: \"tok_touch\",\n projectId,\n name: \"Touch token\",\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: \"hash-touch\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n\n const first = await storage.accessTokens.touch({\n projectId,\n id: \"tok_touch\",\n lastUsedAt: at(\"2026-05-14T10:01:00.000Z\"),\n userAgent: \"sixb-cli/0.1\",\n ipAddress: \"203.0.113.10\",\n })\n expect(first.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n expect(first.lastUsedIpAddress).toBe(\"203.0.113.10\")\n\n // A later touch without metadata advances lastUsedAt but keeps the\n // previously captured user agent and IP address.\n const second = await storage.accessTokens.touch({\n projectId,\n id: \"tok_touch\",\n lastUsedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n expect(second.lastUsedAt?.toISOString()).toBe(\"2026-05-14T10:05:00.000Z\")\n expect(second.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n expect(second.lastUsedIpAddress).toBe(\"203.0.113.10\")\n await expect(\n storage.accessTokens.getById({ projectId, id: \"tok_touch\" })\n ).resolves.toMatchObject({\n lastUsedUserAgent: \"sixb-cli/0.1\",\n lastUsedIpAddress: \"203.0.113.10\",\n })\n })\n })\n\n test(\"lists access tokens with revoked, order, and pagination parity\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const ids = [\"tok_a\", \"tok_b\", \"tok_c\", \"tok_d\"]\n for (const [index, id] of ids.entries()) {\n await storage.accessTokens.create({\n id,\n projectId,\n name: `Token ${id}`,\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: `hash-${id}`,\n createdAt: at(`2026-05-14T10:0${index}:00.000Z`),\n expiresAt: at(`2026-05-21T10:0${index}:00.000Z`),\n })\n }\n await storage.accessTokens.revoke({\n projectId,\n id: \"tok_b\",\n revokedAt: at(\"2026-05-14T11:00:00.000Z\"),\n })\n\n // includeRevoked defaults to false: the revoked token is hidden.\n const active = await storage.accessTokens.list({ projectId })\n expect(active.accessTokens.map((token) => token.id)).toEqual([\"tok_a\", \"tok_c\", \"tok_d\"])\n expect(active.total).toBe(3)\n expect(active.hasMore).toBe(false)\n\n // includeRevoked: true surfaces it again, default order is ascending.\n const all = await storage.accessTokens.list({ projectId, includeRevoked: true })\n expect(all.accessTokens.map((token) => token.id)).toEqual([\n \"tok_a\",\n \"tok_b\",\n \"tok_c\",\n \"tok_d\",\n ])\n expect(all.total).toBe(4)\n\n // order: \"desc\" reverses by createdAt.\n const descending = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n order: \"desc\",\n })\n expect(descending.accessTokens.map((token) => token.id)).toEqual([\n \"tok_d\",\n \"tok_c\",\n \"tok_b\",\n \"tok_a\",\n ])\n\n // First page reports hasMore at the page boundary.\n const firstPage = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 2,\n })\n expect(firstPage.accessTokens.map((token) => token.id)).toEqual([\"tok_a\", \"tok_b\"])\n expect(firstPage.total).toBe(4)\n expect(firstPage.hasMore).toBe(true)\n\n // Second page exhausts the result set.\n const secondPage = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 2,\n offset: 2,\n })\n expect(secondPage.accessTokens.map((token) => token.id)).toEqual([\"tok_c\", \"tok_d\"])\n expect(secondPage.hasMore).toBe(false)\n\n // A page that exactly consumes the remainder reports no more.\n const exactBoundary = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 4,\n })\n expect(exactBoundary.accessTokens.map((token) => token.id)).toEqual(ids)\n expect(exactBoundary.hasMore).toBe(false)\n })\n })\n\n test(\"lists service accounts with pagination parity\", async () => {\n await withStorage(async (storage) => {\n const ids = [\"svc_a\", \"svc_b\", \"svc_c\"]\n for (const [index, id] of ids.entries()) {\n await storage.serviceAccounts.create({\n id,\n projectId,\n name: `Service account ${id}`,\n createdAt: at(`2026-05-14T10:0${index}:00.000Z`),\n })\n }\n\n // Default order is ascending by createdAt across every backend.\n const all = await storage.serviceAccounts.list({ projectId })\n expect(all.serviceAccounts.map((account) => account.id)).toEqual(ids)\n expect(all.total).toBe(3)\n expect(all.hasMore).toBe(false)\n\n const firstPage = await storage.serviceAccounts.list({ projectId, limit: 2 })\n expect(firstPage.serviceAccounts.map((account) => account.id)).toEqual([\"svc_a\", \"svc_b\"])\n expect(firstPage.total).toBe(3)\n expect(firstPage.hasMore).toBe(true)\n\n const secondPage = await storage.serviceAccounts.list({\n projectId,\n limit: 2,\n offset: 2,\n })\n expect(secondPage.serviceAccounts.map((account) => account.id)).toEqual([\"svc_c\"])\n expect(secondPage.hasMore).toBe(false)\n })\n })\n\n test(\"rejects invalid access token subjects\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await expectAuthError(\n storage.accessTokens.create({\n id: \"tok_bad_kind\",\n projectId,\n name: \"Bad kind\",\n kind: \"serviceAccount\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: \"hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n }),\n \"invalid_input\"\n )\n await expectAuthError(\n storage.accessTokens.create({\n id: \"tok_missing_subject\",\n projectId,\n name: \"Missing subject\",\n kind: \"serviceAccount\",\n subject: { type: \"serviceAccount\", id: \"svc_missing\" },\n tokenHash: \"hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n }),\n \"missing_service_account\"\n )\n })\n })\n\n test(\"creates one active magic link per email and consumes it once\", async () => {\n await withStorage(async (storage) => {\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:15:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_2\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \" ava@acme.com \",\n tokenHash: \"hash-2\",\n returnTo: \"/dashboard\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n revokedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await expectAuthError(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"wrong\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n }),\n \"invalid_magic_link\"\n )\n\n await expect(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"hash-2\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n audience: \"atlas\",\n returnTo: \"/dashboard\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n await expectAuthError(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"hash-2\",\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n }),\n \"invalid_magic_link\"\n )\n })\n })\n\n test(\"stores OIDC attempts with one-time state consumption\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n returnTo: \"/objects\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"wrong\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n }),\n \"invalid_oidc_attempt\"\n )\n await expect(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"state-hash\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n ).resolves.toMatchObject({\n audience: \"atlas\",\n codeVerifier: \"verifier\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await expectAuthError(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"state-hash\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n }),\n \"invalid_oidc_attempt\"\n )\n })\n })\n\n test(\"authorizes a device and atomically starts its bearer session\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_browser\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"session-hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.deviceAuthorizations.create({\n id: \"dva_1\",\n projectId,\n deviceCodeHash: \"device-code-hash\",\n userCode: \"BCDF-HJKM\",\n clientName: \"sixb CLI\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expect(\n storage.deviceAuthorizations.getByUserCode({ projectId, userCode: \"BCDF-HJKM\" })\n ).resolves.toMatchObject({ id: \"dva_1\", status: \"pending\", clientName: \"sixb CLI\" })\n await storage.deviceAuthorizations.approve({\n projectId,\n id: \"dva_1\",\n userId: \"usr_1\",\n sessionId: \"ses_browser\",\n approvedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n\n const complete = (id: string) =>\n storage.completeDeviceAuthorization({\n projectId,\n id: \"dva_1\",\n deviceCodeHash: \"device-code-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n session: bearerSessionInput(id),\n })\n const completed = await complete(\"ses_cli\")\n\n expect(completed.authorization).toMatchObject({ status: \"consumed\" })\n expect(completed.session).toMatchObject({\n id: \"ses_cli\",\n userId: \"usr_1\",\n bearer: { clientName: \"sixb CLI\", refreshTokenHash: \"refresh-1\" },\n })\n await expectAuthError(complete(\"ses_cli_2\"), \"invalid_device_authorization\")\n await expect(storage.sessions.getById({ projectId, id: \"ses_cli_2\" })).resolves.toBeNull()\n })\n })\n\n test(\"keeps bearer and cookie session credentials apart\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create(bearerSessionInput(\"ses_cli\"))\n await storage.sessions.create({\n ...bearerSessionInput(\"ses_cookie\"),\n tokenHash: \"cookie-hash\",\n bearer: undefined,\n })\n const now = at(\"2026-05-14T10:05:00.000Z\")\n\n await expect(\n storage.sessions.findValidByAccessTokenHash({\n projectId,\n id: \"ses_cli\",\n tokenHash: \"access-1\",\n now,\n })\n ).resolves.toMatchObject({ id: \"ses_cli\" })\n // A bearer access token never works as a cookie secret, and a cookie never as a token.\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_cli\",\n audience: \"atlas\",\n tokenHash: \"access-1\",\n now,\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.findValidByAccessTokenHash({\n projectId,\n id: \"ses_cookie\",\n tokenHash: \"cookie-hash\",\n now,\n })\n ).resolves.toBeNull()\n // The access token expires before its session.\n await expect(\n storage.sessions.findValidByAccessTokenHash({\n projectId,\n id: \"ses_cli\",\n tokenHash: \"access-1\",\n now: at(\"2026-05-14T10:15:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"rotates refresh tokens, tolerates a lost response, and revokes on reuse\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n ...bearerSessionInput(\"ses_cli\"),\n absoluteExpiresAt: at(\"2026-06-20T00:00:00.000Z\"),\n })\n const rotate = (refreshTokenHash: string, now: string, generation: number) =>\n storage.sessions.rotateRefreshToken({\n projectId,\n id: \"ses_cli\",\n refreshTokenHash,\n now: at(now),\n reuseGraceMs: 60_000,\n next: {\n tokenHash: `access-${generation}`,\n accessExpiresAt: new Date(at(now).getTime() + 15 * 60_000),\n refreshTokenHash: `refresh-${generation}`,\n expiresAt: at(\"2026-07-01T00:00:00.000Z\"),\n },\n })\n\n const rotated = await rotate(\"refresh-1\", \"2026-05-15T10:00:00.000Z\", 2)\n expect(rotated).toMatchObject({\n status: \"rotated\",\n session: {\n tokenHash: \"access-2\",\n bearer: { refreshTokenHash: \"refresh-2\", previousRefreshTokenHash: \"refresh-1\" },\n },\n })\n // The idle deadline moves, but never past the absolute one.\n expect(rotated.status === \"rotated\" && rotated.session.expiresAt.toISOString()).toBe(\n \"2026-06-20T00:00:00.000Z\"\n )\n // The response was lost; the client retries with the token it still has.\n await expect(rotate(\"refresh-1\", \"2026-05-15T10:00:30.000Z\", 3)).resolves.toMatchObject({\n status: \"rotated\",\n session: { bearer: { refreshTokenHash: \"refresh-3\" } },\n })\n // An unknown token fails without touching the session.\n await expect(rotate(\"guess\", \"2026-05-15T10:01:00.000Z\", 4)).resolves.toEqual({\n status: \"invalid\",\n })\n expect((await storage.sessions.getById({ projectId, id: \"ses_cli\" }))?.revokedAt).toBe(\n undefined\n )\n // A replaced token after the grace window means a copy is in use: end the session.\n await expect(rotate(\"refresh-2\", \"2026-05-15T10:05:00.000Z\", 4)).resolves.toEqual({\n status: \"reused\",\n })\n await expect(rotate(\"refresh-3\", \"2026-05-15T10:05:01.000Z\", 5)).resolves.toEqual({\n status: \"invalid\",\n })\n const session = await storage.sessions.getById({ projectId, id: \"ses_cli\" })\n expect(session?.revokedAt).toBeInstanceOf(Date)\n })\n })\n\n test(\"completes magic-link sign-in for an existing user\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_old\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"old-hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_new\", \"session-hash\", \"atlas\", at(\"2026-06-21T10:10:00.000Z\")),\n })\n\n expect(result.user.id).toBe(\"usr_1\")\n expect(result.session).toMatchObject({\n id: \"ses_new\",\n strategyId: \"magic-link\",\n tokenHash: \"session-hash\",\n absoluteExpiresAt: at(\"2026-06-21T10:10:00.000Z\"),\n })\n // Signing in again keeps the user's existing session active; concurrent\n // sessions are allowed.\n const oldSession = await storage.sessions.getById({ projectId, id: \"ses_old\" })\n expect(oldSession?.revokedAt).toBeUndefined()\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_unused_2\",\n session: sessionInput(\"ses_replay\"),\n }),\n \"invalid_magic_link\"\n )\n })\n })\n\n test(\"creates invited users through magic-link completion and applies groups once\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:17:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_new\",\n manualGroupIds: [\"security-admins\"],\n session: sessionInput(\"ses_new\"),\n })\n\n expect(result.invitation).toMatchObject({\n id: \"inv_1\",\n status: \"accepted\",\n })\n const memberships = await storage.groupMemberships.listForUser({\n projectId,\n userId: \"usr_new\",\n })\n expect(memberships.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"commercial\", \"invitation\"],\n [\"finance\", \"invitation\"],\n [\"security-admins\", \"manual\"],\n ])\n })\n })\n\n test(\"preserves existing membership source when accepting an invitation\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_existing\", email: \"ava@acme.com\" })\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_existing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:17:00.000Z\"),\n })\n\n await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_existing\"),\n })\n\n const memberships = await storage.groupMemberships.listForUser({\n projectId,\n userId: \"usr_existing\",\n })\n expect(memberships.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"commercial\", \"manual\"],\n [\"finance\", \"invitation\"],\n ])\n })\n })\n\n test(\"does not create missing users when invitation eligibility disappeared\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n await storage.invitations.revoke({\n projectId,\n id: \"inv_1\",\n revokedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_new\",\n session: sessionInput(\"ses_new\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"ava@acme.com\" })\n ).resolves.toBeNull()\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n })\n })\n\n test(\"allows explicit bootstrap creation through magic-link completion\", async () => {\n await withStorage(async (storage) => {\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"founder@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_founder\",\n allowUserCreationWithoutInvitation: true,\n manualGroupIds: [\"security-admins\"],\n session: sessionInput(\"ses_founder\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_founder\",\n email: \"founder@acme.com\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_founder\" })\n ).resolves.toMatchObject([{ groupId: \"security-admins\", source: \"manual\" }])\n })\n })\n\n test(\"closes bootstrap user creation when an active user already exists\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, {\n id: \"usr_existing\",\n email: \"existing@acme.com\",\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"founder@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_founder\",\n allowUserCreationWithoutInvitation: true,\n requireNoActiveUsersForUserCreation: true,\n session: sessionInput(\"ses_founder\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"founder@acme.com\" })\n ).resolves.toBeNull()\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n })\n })\n\n test(\"does not apply the bootstrap closure guard to invited user creation\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, {\n id: \"usr_existing\",\n email: \"existing@acme.com\",\n })\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"invited@acme.com\",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"invited@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_invited\",\n requireNoActiveUsersForUserCreation: true,\n session: sessionInput(\"ses_invited\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_invited\",\n email: \"invited@acme.com\",\n })\n expect(result.invitation).toMatchObject({\n id: \"inv_1\",\n status: \"accepted\",\n })\n })\n })\n\n test(\"consumes valid magic links when an existing user is suspended\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { status: \"suspended\" })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_new\"),\n }),\n \"suspended_user\"\n )\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n })\n })\n\n test(\"completes OIDC sign-in through an existing identity\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_oidc\", email: \"ava@acme.com\" })\n await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava@acme.com\" },\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:11:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n subject: \"00u1\",\n email: \"renamed@acme.com\",\n emailVerified: true,\n claims: { email: \"renamed@acme.com\" },\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_oidc\"),\n })\n\n expect(result.identity).toMatchObject({\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"renamed@acme.com\" },\n })\n await expect(storage.users.getById({ projectId, id: \"usr_oidc\" })).resolves.toMatchObject({\n email: \"ava@acme.com\",\n })\n })\n })\n\n test(\"auto-links OIDC by verified email only when explicitly allowed\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_existing\", email: \"ava@acme.com\" })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_blocked\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"blocked-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_blocked\",\n stateHash: \"blocked-state\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n emailVerified: false,\n autoLinkByVerifiedEmail: true,\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_blocked\"),\n }),\n \"email_link_not_allowed\"\n )\n\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_allowed\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"allowed-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:12:00.000Z\"),\n })\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_allowed\",\n stateHash: \"allowed-state\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n emailVerified: true,\n autoLinkByVerifiedEmail: true,\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_allowed\"),\n })\n\n expect(result.user.id).toBe(\"usr_existing\")\n expect(result.identity).toMatchObject({\n userId: \"usr_existing\",\n })\n })\n })\n\n test(\"creates new OIDC users through active invitations and applies groups\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_oidc\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T09:59:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n displayName: \"Ava Chen\",\n emailVerified: true,\n newUserId: \"usr_oidc\",\n session: sessionInput(\"ses_oidc\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_oidc\",\n email: \"ava@acme.com\",\n displayName: \"Ava Chen\",\n })\n expect(result.invitation).toMatchObject({\n id: \"inv_oidc\",\n status: \"accepted\",\n })\n expect(result.identity).toMatchObject({\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_oidc\" })\n ).resolves.toMatchObject([{ groupId: \"commercial\", source: \"invitation\" }])\n })\n })\n\n test(\"does not create new OIDC users without invitation or bootstrap eligibility\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n emailVerified: true,\n newUserId: \"usr_oidc\",\n session: sessionInput(\"ses_oidc\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"ava@acme.com\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"allows first OIDC bootstrap user creation with manual groups\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_bootstrap\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"bootstrap-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_bootstrap\",\n stateHash: \"bootstrap-state\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"founder@acme.com\",\n emailVerified: true,\n allowUserCreationWithoutInvitation: true,\n requireNoActiveUsersForUserCreation: true,\n manualGroupIds: [\"security-admins\"],\n newUserId: \"usr_founder\",\n session: sessionInput(\"ses_oidc_bootstrap\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_founder\",\n email: \"founder@acme.com\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_founder\" })\n ).resolves.toMatchObject([{ groupId: \"security-admins\", source: \"manual\" }])\n })\n })\n\n test(\"suspends users and revokes active sessions immediately\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_1\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_app\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-app\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n\n const suspended = await storage.suspendUserAndRevokeSessions({\n projectId,\n userId: \"usr_1\",\n suspendedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n\n expect(suspended.status).toBe(\"suspended\")\n await expect(storage.sessions.getById({ projectId, id: \"ses_1\" })).resolves.toMatchObject({\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n await expect(storage.sessions.getById({ projectId, id: \"ses_app\" })).resolves.toMatchObject(\n {\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n }\n )\n })\n })\n })\n}\n",
|
|
13
|
+
"import { describe, expect, test } from \"bun:test\"\nimport type {\n AuthStorage,\n AuthStorageErrorCode,\n CompleteAuthSessionInput,\n UserRecord,\n} from \"../storage/auth\"\nimport { AuthStorageError } from \"../storage/auth\"\n\nexport interface AuthStorageContractSuiteOptions<TStorage extends AuthStorage = AuthStorage> {\n /** Factory that produces a fresh `AuthStorage` instance for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"project-a\"\nconst otherProjectId = \"project-b\"\n\nfunction at(value: string): Date {\n return new Date(value)\n}\n\nfunction sessionInput(\n id: string,\n tokenHash = `${id}-hash`,\n audience: CompleteAuthSessionInput[\"audience\"] = \"atlas\",\n absoluteExpiresAt?: Date\n): CompleteAuthSessionInput {\n return {\n id,\n audience,\n tokenHash,\n createdAt: at(\"2026-05-14T10:10:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:10:00.000Z\"),\n absoluteExpiresAt,\n }\n}\n\nfunction bearerSessionInput(id: string) {\n return {\n id,\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\" as const,\n tokenHash: \"access-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-06-14T10:00:00.000Z\"),\n bearer: {\n clientName: \"sixb CLI\",\n accessExpiresAt: at(\"2026-05-14T10:15:00.000Z\"),\n refreshTokenHash: \"refresh-1\",\n },\n }\n}\n\nasync function expectAuthError(\n promise: Promise<unknown>,\n code: AuthStorageErrorCode\n): Promise<void> {\n await expect(promise).rejects.toBeInstanceOf(AuthStorageError)\n await expect(promise).rejects.toMatchObject({ code })\n}\n\nasync function createUser(\n storage: AuthStorage,\n input: {\n readonly id?: string\n readonly email?: string\n readonly status?: UserRecord[\"status\"]\n readonly projectId?: string\n } = {}\n): Promise<UserRecord> {\n return storage.users.create({\n id: input.id ?? \"usr_1\",\n projectId: input.projectId ?? projectId,\n email: input.email ?? \"ava@acme.com\",\n status: input.status,\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n}\n\nasync function completeOidcSignInForAva(\n storage: AuthStorage,\n directoryGroupIds: readonly string[] | undefined\n): Promise<void> {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_directory\",\n projectId,\n strategyId: \"entra\",\n audience: \"atlas\",\n stateHash: \"directory-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_directory\",\n stateHash: \"directory-state\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"entra-ava\",\n email: \"ava@acme.com\",\n directoryGroupIds,\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_directory\"),\n })\n}\n\n/**\n * Runs the shared `AuthStorage` contract against any storage implementation.\n *\n * The suite is the storage-independent specification for Sixb auth state: users, identities,\n * sessions, invitations, group memberships, service accounts, access tokens,\n * magic links, OIDC attempts, and atomic sign-in completion.\n */\nexport function runAuthStorageContractSuite<TStorage extends AuthStorage>(\n label: string,\n options: AuthStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"creates users with normalized email and isolates projects\", async () => {\n await withStorage(async (storage) => {\n const user = await createUser(storage, {\n email: \" Ava@Acme.COM \",\n })\n\n expect(user.email).toBe(\"ava@acme.com\")\n await expectAuthError(\n storage.users.create({\n id: \"usr_duplicate\",\n projectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n }),\n \"duplicate_user\"\n )\n\n await expect(\n storage.users.create({\n id: \"usr_other\",\n projectId: otherProjectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n projectId: otherProjectId,\n email: \"ava@acme.com\",\n })\n\n const page = await storage.users.list({ projectId, statuses: [\"active\"] })\n expect(page.users.map((row) => row.id)).toEqual([\"usr_1\"])\n })\n })\n\n test(\"upserts identities without mutating canonical user email\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_oidc\", email: \"ava@acme.com\" })\n\n await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava@acme.com\" },\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n const updated = await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava.renamed@acme.com\" },\n updatedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n expect(updated.claims).toEqual({ email: \"ava.renamed@acme.com\" })\n await expect(storage.users.getById({ projectId, id: \"usr_oidc\" })).resolves.toMatchObject({\n email: \"ava@acme.com\",\n })\n })\n })\n\n test(\"keeps multiple concurrent sessions per user and never extends expiry on touch\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const first = await storage.sessions.create({\n id: \"ses_1\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n const second = await storage.sessions.create({\n id: \"ses_2\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n createdAt: at(\"2026-05-14T10:05:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:05:00.000Z\"),\n })\n\n // Creating a second session in the same audience no longer revokes the\n // first: both stay active and authenticate independently.\n expect(first.revokedAt).toBeUndefined()\n expect(second.revokedAt).toBeUndefined()\n const storedFirst = await storage.sessions.getById({ projectId, id: \"ses_1\" })\n expect(storedFirst?.revokedAt).toBeUndefined()\n\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_1\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_1\" })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"wrong\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n // getActiveByUserId returns the most recently created active session.\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n\n const touched = await storage.sessions.touch({\n projectId,\n id: second.id,\n lastSeenAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n expect(touched.lastSeenAt?.toISOString()).toBe(\"2026-05-15T10:00:00.000Z\")\n expect(touched.expiresAt.toISOString()).toBe(\"2026-05-21T10:05:00.000Z\")\n\n // A session in a different audience coexists and is cookie-scoped.\n const appSession = await storage.sessions.create({\n id: \"ses_app\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-app\",\n createdAt: at(\"2026-05-14T10:06:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:06:00.000Z\"),\n })\n expect(appSession.revokedAt).toBeUndefined()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_app\",\n audience: \"atlas\",\n tokenHash: \"hash-app\",\n now: at(\"2026-05-14T10:07:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n // Revoking a single session leaves the user's other sessions active.\n await storage.sessions.revoke({\n projectId,\n id: \"ses_1\",\n revokedAt: at(\"2026-05-14T10:08:00.000Z\"),\n })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_1\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n now: at(\"2026-05-14T10:09:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_2\",\n audience: \"atlas\",\n tokenHash: \"hash-2\",\n now: at(\"2026-05-14T10:09:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"ses_2\" })\n\n // \"Sign out everywhere\": revokeActiveForUser clears every remaining\n // active session for the user, across audiences.\n const revoked = await storage.sessions.revokeActiveForUser({\n projectId,\n userId: \"usr_1\",\n revokedAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n expect(revoked.map((entry) => entry.id).sort()).toEqual([\"ses_2\", \"ses_app\"])\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-14T10:11:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"persists and enforces an optional absolute session deadline\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n const capped = await storage.sessions.create({\n id: \"ses_capped\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n absoluteExpiresAt: at(\"2026-05-16T10:00:00.000Z\"),\n })\n const uncapped = await storage.sessions.create({\n id: \"ses-uncapped\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-uncapped\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n\n expect(capped.absoluteExpiresAt?.toISOString()).toBe(\"2026-05-16T10:00:00.000Z\")\n expect(uncapped.absoluteExpiresAt).toBeUndefined()\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: capped.id,\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n now: at(\"2026-05-16T09:59:59.999Z\"),\n })\n ).resolves.toMatchObject({ id: capped.id })\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: capped.id,\n audience: \"atlas\",\n tokenHash: \"hash-capped\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n const active = await storage.sessions.listActiveByUserId({\n projectId,\n userId: \"usr_1\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n expect(active.map((session) => session.id)).toEqual([uncapped.id])\n await expect(\n storage.sessions.getActiveByUserId({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n now: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.revokeActiveForUser({\n projectId,\n userId: \"usr_1\",\n audience: \"atlas\",\n revokedAt: at(\"2026-05-16T10:00:00.000Z\"),\n })\n ).resolves.toEqual([])\n })\n })\n\n test(\"atomically renews valid sessions without exceeding the absolute deadline\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_renew\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-15T10:00:00.000Z\"),\n absoluteExpiresAt: at(\"2026-05-20T10:00:00.000Z\"),\n })\n\n const renewed = await storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-25T10:00:00.000Z\"),\n })\n expect(renewed?.expiresAt.toISOString()).toBe(\"2026-05-20T10:00:00.000Z\")\n expect(renewed?.lastSeenAt?.toISOString()).toBe(\"2026-05-14T11:00:00.000Z\")\n\n const monotonic = await storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-14T12:00:00.000Z\"),\n expiresAt: at(\"2026-05-18T10:00:00.000Z\"),\n })\n expect(monotonic?.expiresAt.toISOString()).toBe(\"2026-05-20T10:00:00.000Z\")\n\n await expect(\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"wrong-hash\",\n now: at(\"2026-05-14T13:00:00.000Z\"),\n expiresAt: at(\"2026-05-19T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_renew\",\n audience: \"atlas\",\n tokenHash: \"hash-renew\",\n now: at(\"2026-05-20T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n await storage.sessions.create({\n id: \"ses_concurrent\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n await Promise.all([\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_concurrent\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-18T10:00:00.000Z\"),\n }),\n storage.sessions.renewIfValid({\n projectId,\n id: \"ses_concurrent\",\n audience: \"atlas\",\n tokenHash: \"hash-concurrent\",\n now: at(\"2026-05-14T11:00:00.000Z\"),\n expiresAt: at(\"2026-05-19T10:00:00.000Z\"),\n }),\n ])\n const concurrent = await storage.sessions.getById({ projectId, id: \"ses_concurrent\" })\n expect(concurrent?.expiresAt.toISOString()).toBe(\"2026-05-19T10:00:00.000Z\")\n })\n })\n\n test(\"persists best-effort device metadata on a session\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const withDevice = await storage.sessions.create({\n id: \"ses_device\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-device\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n userAgent: \"Mozilla/5.0 (iPhone)\",\n ipAddress: \"203.0.113.7\",\n })\n expect(withDevice.userAgent).toBe(\"Mozilla/5.0 (iPhone)\")\n expect(withDevice.ipAddress).toBe(\"203.0.113.7\")\n await expect(\n storage.sessions.getById({ projectId, id: \"ses_device\" })\n ).resolves.toMatchObject({\n userAgent: \"Mozilla/5.0 (iPhone)\",\n ipAddress: \"203.0.113.7\",\n })\n\n // Device metadata is optional; omitting it round-trips as undefined.\n const withoutDevice = await storage.sessions.create({\n id: \"ses_plain\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-plain\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n expect(withoutDevice.userAgent).toBeUndefined()\n expect(withoutDevice.ipAddress).toBeUndefined()\n })\n })\n\n test(\"lists a user's active sessions across audiences, newest activity first\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.sessions.create({\n id: \"ses_a\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-a\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_b\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-b\",\n createdAt: at(\"2026-05-14T10:05:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:05:00.000Z\"),\n })\n\n // Revoked sessions are excluded.\n await storage.sessions.create({\n id: \"ses_revoked\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-revoked\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n await storage.sessions.revoke({\n projectId,\n id: \"ses_revoked\",\n revokedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n // Another user's session must not leak in.\n await createUser(storage, { id: \"usr_2\", email: \"bo@acme.com\" })\n await storage.sessions.create({\n id: \"ses_other\",\n projectId,\n userId: \"usr_2\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-other\",\n createdAt: at(\"2026-05-14T10:03:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:03:00.000Z\"),\n })\n\n // ses_a is older than ses_b but has more recent activity, so it sorts first.\n await storage.sessions.touch({\n projectId,\n id: \"ses_a\",\n lastSeenAt: at(\"2026-05-15T10:00:00.000Z\"),\n })\n\n const active = await storage.sessions.listActiveByUserId({\n projectId,\n userId: \"usr_1\",\n now: at(\"2026-05-15T11:00:00.000Z\"),\n })\n expect(active.map((session) => session.id)).toEqual([\"ses_a\", \"ses_b\"])\n })\n })\n\n test(\"keeps one active invitation per normalized email\", async () => {\n await withStorage(async (storage) => {\n const first = await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \" Ava@Acme.COM \",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n const updated = await storage.invitations.createOrUpdateActive({\n id: \"inv_2\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"finance\"],\n updatedAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-22T10:00:00.000Z\"),\n })\n\n expect(updated.id).toBe(first.id)\n expect(updated.groupIds).toEqual([\"finance\"])\n await expect(\n storage.invitations.getActiveByEmail({\n projectId,\n email: \"ava@acme.com\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"inv_1\" })\n\n await storage.invitations.revoke({\n projectId,\n id: \"inv_1\",\n revokedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n await expect(\n storage.invitations.getActiveByEmail({\n projectId,\n email: \"ava@acme.com\",\n now: at(\"2026-05-14T10:04:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"upserts group memberships idempotently and preserves source\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"invitation\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n const repeated = await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n\n expect(repeated.source).toBe(\"invitation\")\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toHaveLength(1)\n })\n })\n\n test(\"rejects group memberships for missing users\", async () => {\n await withStorage(async (storage) => {\n await expectAuthError(\n storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_missing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n }),\n \"missing_user\"\n )\n })\n })\n\n test(\"removes group memberships and is idempotent for missing rows\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n\n const removed = await storage.groupMemberships.remove({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n })\n expect(removed).toMatchObject({\n projectId,\n userId: \"usr_1\",\n groupId: \"commercial\",\n source: \"manual\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toHaveLength(0)\n\n // Removing an already-removed membership is a no-op that returns null.\n await expect(\n storage.groupMemberships.remove({ projectId, userId: \"usr_1\", groupId: \"commercial\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"returns null when removing a membership for a missing user\", async () => {\n await withStorage(async (storage) => {\n await expect(\n storage.groupMemberships.remove({\n projectId,\n userId: \"usr_missing\",\n groupId: \"commercial\",\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"manages service accounts and their group memberships\", async () => {\n await withStorage(async (storage) => {\n const serviceAccount = await storage.serviceAccounts.create({\n id: \"svc_ingest\",\n projectId,\n name: \"Ingest worker\",\n description: \"Reads source data into Sixb.\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n expect(serviceAccount).toMatchObject({\n id: \"svc_ingest\",\n name: \"Ingest worker\",\n status: \"active\",\n })\n\n const membership = await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_ingest\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n expect(membership.groupId).toBe(\"commercial\")\n const repeated = await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_ingest\",\n groupId: \"commercial\",\n source: \"invitation\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n expect(repeated.source).toBe(\"manual\")\n\n await expect(\n storage.serviceAccountGroupMemberships.listForServiceAccount({\n projectId,\n serviceAccountId: \"svc_ingest\",\n })\n ).resolves.toHaveLength(1)\n await expect(\n storage.serviceAccountGroupMemberships.listForGroup({\n projectId,\n groupId: \"commercial\",\n })\n ).resolves.toMatchObject([{ serviceAccountId: \"svc_ingest\" }])\n\n const updated = await storage.serviceAccounts.update({\n projectId,\n id: \"svc_ingest\",\n name: \"Ingest worker v2\",\n status: \"suspended\",\n updatedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n expect(updated).toMatchObject({\n name: \"Ingest worker v2\",\n description: \"Reads source data into Sixb.\",\n status: \"suspended\",\n })\n await expect(\n storage.serviceAccounts.update({\n projectId,\n id: \"svc_ingest\",\n description: \"Imports source data into Sixb.\",\n updatedAt: at(\"2026-05-14T10:04:00.000Z\"),\n })\n ).resolves.toMatchObject({\n name: \"Ingest worker v2\",\n description: \"Imports source data into Sixb.\",\n status: \"suspended\",\n })\n await expect(\n storage.serviceAccounts.list({ projectId, statuses: [\"suspended\"] })\n ).resolves.toMatchObject({\n serviceAccounts: [{ id: \"svc_ingest\" }],\n total: 1,\n })\n })\n })\n\n test(\"rejects service account memberships for missing service accounts\", async () => {\n await withStorage(async (storage) => {\n await expectAuthError(\n storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_missing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n }),\n \"missing_service_account\"\n )\n })\n })\n\n test(\"reconciles agent-managed service account memberships\", async () => {\n await withStorage(async (storage) => {\n await storage.serviceAccounts.create({\n id: \"svc_agent_ops\",\n projectId,\n name: \"Ops agent\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupId: \"manual-extra\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await storage.serviceAccountGroupMemberships.upsert({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupId: \"stale-agent\",\n source: \"agent\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n const first = await storage.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupIds: [\"agent-runtime\", \"agent-runtime\", \"ops\"],\n source: \"agent\",\n updatedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n expect(first.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"agent-runtime\", \"agent\"],\n [\"manual-extra\", \"manual\"],\n [\"ops\", \"agent\"],\n ])\n\n const second = await storage.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId,\n serviceAccountId: \"svc_agent_ops\",\n groupIds: [\"ops\"],\n source: \"agent\",\n updatedAt: at(\"2026-05-14T10:04:00.000Z\"),\n })\n expect(second.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"manual-extra\", \"manual\"],\n [\"ops\", \"agent\"],\n ])\n })\n })\n\n test(\"creates, resolves, touches, lists, and revokes access tokens\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.serviceAccounts.create({\n id: \"svc_ingest\",\n projectId,\n name: \"Ingest worker\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n\n const personal = await storage.accessTokens.create({\n id: \"tok_personal\",\n projectId,\n name: \"Local CLI\",\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: \"hash-personal\",\n groupIds: [\"commercial\", \"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n expect(personal.groupIds).toEqual([\"commercial\", \"finance\"])\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"hash-personal\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({ id: \"tok_personal\" })\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"wrong\",\n now: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toBeNull()\n\n const touched = await storage.accessTokens.touch({\n projectId,\n id: \"tok_personal\",\n lastUsedAt: at(\"2026-05-14T10:03:00.000Z\"),\n userAgent: \"sixb-cli/0.1\",\n ipAddress: \"203.0.113.10\",\n })\n expect(touched.lastUsedAt?.toISOString()).toBe(\"2026-05-14T10:03:00.000Z\")\n expect(touched.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n\n await storage.accessTokens.create({\n id: \"tok_service\",\n projectId,\n name: \"Sandbox agent\",\n kind: \"serviceAccount\",\n subject: { type: \"serviceAccount\", id: \"svc_ingest\" },\n tokenHash: \"hash-service\",\n createdAt: at(\"2026-05-14T10:04:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:04:00.000Z\"),\n })\n await expect(\n storage.accessTokens.list({\n projectId,\n subject: { type: \"serviceAccount\", id: \"svc_ingest\" },\n })\n ).resolves.toMatchObject({\n accessTokens: [{ id: \"tok_service\" }],\n total: 1,\n })\n\n await storage.accessTokens.revoke({\n projectId,\n id: \"tok_personal\",\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n await expect(\n storage.accessTokens.findValidByTokenHash({\n projectId,\n id: \"tok_personal\",\n kind: \"personal\",\n tokenHash: \"hash-personal\",\n now: at(\"2026-05-14T10:06:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"round-trips the creator principal for service accounts and access tokens\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_creator\", email: \"creator@acme.com\" })\n await storage.serviceAccounts.create({\n id: \"svc_creator\",\n projectId,\n name: \"Creator service account\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_creator\",\n projectId,\n userId: \"usr_creator\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-creator\",\n createdAt: at(\"2026-05-14T10:00:30.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:30.000Z\"),\n })\n\n const principals = [\n { type: \"user\", id: \"usr_creator\" },\n { type: \"serviceAccount\", id: \"svc_creator\" },\n { type: \"system\", id: \"scheduler\" },\n ] as const\n\n for (const [index, principal] of principals.entries()) {\n const accountId = `svc_by_${principal.type}`\n const createdAccount = await storage.serviceAccounts.create({\n id: accountId,\n projectId,\n name: `Service account by ${principal.type}`,\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n createdAt: at(`2026-05-14T10:1${index}:00.000Z`),\n })\n expect(createdAccount.createdByPrincipal).toEqual(principal)\n expect(createdAccount.createdBySessionId).toBe(\"ses_creator\")\n await expect(\n storage.serviceAccounts.getById({ projectId, id: accountId })\n ).resolves.toMatchObject({\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n })\n\n const tokenId = `tok_by_${principal.type}`\n const createdToken = await storage.accessTokens.create({\n id: tokenId,\n projectId,\n name: `Token by ${principal.type}`,\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_creator\" },\n tokenHash: `hash-${tokenId}`,\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n createdAt: at(`2026-05-14T10:2${index}:00.000Z`),\n expiresAt: at(`2026-05-21T10:2${index}:00.000Z`),\n })\n expect(createdToken.createdByPrincipal).toEqual(principal)\n expect(createdToken.createdBySessionId).toBe(\"ses_creator\")\n await expect(\n storage.accessTokens.getById({ projectId, id: tokenId })\n ).resolves.toMatchObject({\n createdByPrincipal: principal,\n createdBySessionId: \"ses_creator\",\n })\n }\n\n // Omitting the creator round-trips as undefined on every backend.\n const anonymous = await storage.serviceAccounts.create({\n id: \"svc_anonymous\",\n projectId,\n name: \"Anonymous service account\",\n createdAt: at(\"2026-05-14T10:30:00.000Z\"),\n })\n expect(anonymous.createdByPrincipal).toBeUndefined()\n expect(anonymous.createdBySessionId).toBeUndefined()\n await expect(\n storage.serviceAccounts.getById({ projectId, id: \"svc_anonymous\" })\n ).resolves.toMatchObject({ id: \"svc_anonymous\" })\n })\n })\n\n test(\"touch preserves prior access-token metadata when omitted\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.accessTokens.create({\n id: \"tok_touch\",\n projectId,\n name: \"Touch token\",\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: \"hash-touch\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n\n const first = await storage.accessTokens.touch({\n projectId,\n id: \"tok_touch\",\n lastUsedAt: at(\"2026-05-14T10:01:00.000Z\"),\n userAgent: \"sixb-cli/0.1\",\n ipAddress: \"203.0.113.10\",\n })\n expect(first.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n expect(first.lastUsedIpAddress).toBe(\"203.0.113.10\")\n\n // A later touch without metadata advances lastUsedAt but keeps the\n // previously captured user agent and IP address.\n const second = await storage.accessTokens.touch({\n projectId,\n id: \"tok_touch\",\n lastUsedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n expect(second.lastUsedAt?.toISOString()).toBe(\"2026-05-14T10:05:00.000Z\")\n expect(second.lastUsedUserAgent).toBe(\"sixb-cli/0.1\")\n expect(second.lastUsedIpAddress).toBe(\"203.0.113.10\")\n await expect(\n storage.accessTokens.getById({ projectId, id: \"tok_touch\" })\n ).resolves.toMatchObject({\n lastUsedUserAgent: \"sixb-cli/0.1\",\n lastUsedIpAddress: \"203.0.113.10\",\n })\n })\n })\n\n test(\"lists access tokens with revoked, order, and pagination parity\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n const ids = [\"tok_a\", \"tok_b\", \"tok_c\", \"tok_d\"]\n for (const [index, id] of ids.entries()) {\n await storage.accessTokens.create({\n id,\n projectId,\n name: `Token ${id}`,\n kind: \"personal\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: `hash-${id}`,\n createdAt: at(`2026-05-14T10:0${index}:00.000Z`),\n expiresAt: at(`2026-05-21T10:0${index}:00.000Z`),\n })\n }\n await storage.accessTokens.revoke({\n projectId,\n id: \"tok_b\",\n revokedAt: at(\"2026-05-14T11:00:00.000Z\"),\n })\n\n // includeRevoked defaults to false: the revoked token is hidden.\n const active = await storage.accessTokens.list({ projectId })\n expect(active.accessTokens.map((token) => token.id)).toEqual([\"tok_a\", \"tok_c\", \"tok_d\"])\n expect(active.total).toBe(3)\n expect(active.hasMore).toBe(false)\n\n // includeRevoked: true surfaces it again, default order is ascending.\n const all = await storage.accessTokens.list({ projectId, includeRevoked: true })\n expect(all.accessTokens.map((token) => token.id)).toEqual([\n \"tok_a\",\n \"tok_b\",\n \"tok_c\",\n \"tok_d\",\n ])\n expect(all.total).toBe(4)\n\n // order: \"desc\" reverses by createdAt.\n const descending = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n order: \"desc\",\n })\n expect(descending.accessTokens.map((token) => token.id)).toEqual([\n \"tok_d\",\n \"tok_c\",\n \"tok_b\",\n \"tok_a\",\n ])\n\n // First page reports hasMore at the page boundary.\n const firstPage = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 2,\n })\n expect(firstPage.accessTokens.map((token) => token.id)).toEqual([\"tok_a\", \"tok_b\"])\n expect(firstPage.total).toBe(4)\n expect(firstPage.hasMore).toBe(true)\n\n // Second page exhausts the result set.\n const secondPage = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 2,\n offset: 2,\n })\n expect(secondPage.accessTokens.map((token) => token.id)).toEqual([\"tok_c\", \"tok_d\"])\n expect(secondPage.hasMore).toBe(false)\n\n // A page that exactly consumes the remainder reports no more.\n const exactBoundary = await storage.accessTokens.list({\n projectId,\n includeRevoked: true,\n limit: 4,\n })\n expect(exactBoundary.accessTokens.map((token) => token.id)).toEqual(ids)\n expect(exactBoundary.hasMore).toBe(false)\n })\n })\n\n test(\"lists service accounts with pagination parity\", async () => {\n await withStorage(async (storage) => {\n const ids = [\"svc_a\", \"svc_b\", \"svc_c\"]\n for (const [index, id] of ids.entries()) {\n await storage.serviceAccounts.create({\n id,\n projectId,\n name: `Service account ${id}`,\n createdAt: at(`2026-05-14T10:0${index}:00.000Z`),\n })\n }\n\n // Default order is ascending by createdAt across every backend.\n const all = await storage.serviceAccounts.list({ projectId })\n expect(all.serviceAccounts.map((account) => account.id)).toEqual(ids)\n expect(all.total).toBe(3)\n expect(all.hasMore).toBe(false)\n\n const firstPage = await storage.serviceAccounts.list({ projectId, limit: 2 })\n expect(firstPage.serviceAccounts.map((account) => account.id)).toEqual([\"svc_a\", \"svc_b\"])\n expect(firstPage.total).toBe(3)\n expect(firstPage.hasMore).toBe(true)\n\n const secondPage = await storage.serviceAccounts.list({\n projectId,\n limit: 2,\n offset: 2,\n })\n expect(secondPage.serviceAccounts.map((account) => account.id)).toEqual([\"svc_c\"])\n expect(secondPage.hasMore).toBe(false)\n })\n })\n\n test(\"rejects invalid access token subjects\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n\n await expectAuthError(\n storage.accessTokens.create({\n id: \"tok_bad_kind\",\n projectId,\n name: \"Bad kind\",\n kind: \"serviceAccount\",\n subject: { type: \"user\", id: \"usr_1\" },\n tokenHash: \"hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n }),\n \"invalid_input\"\n )\n await expectAuthError(\n storage.accessTokens.create({\n id: \"tok_missing_subject\",\n projectId,\n name: \"Missing subject\",\n kind: \"serviceAccount\",\n subject: { type: \"serviceAccount\", id: \"svc_missing\" },\n tokenHash: \"hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n }),\n \"missing_service_account\"\n )\n })\n })\n\n test(\"creates one active magic link per email and consumes it once\", async () => {\n await withStorage(async (storage) => {\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:15:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_2\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \" ava@acme.com \",\n tokenHash: \"hash-2\",\n returnTo: \"/dashboard\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n revokedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await expectAuthError(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"wrong\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n }),\n \"invalid_magic_link\"\n )\n\n await expect(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"hash-2\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n ).resolves.toMatchObject({\n audience: \"atlas\",\n returnTo: \"/dashboard\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n await expectAuthError(\n storage.magicLinks.consume({\n projectId,\n id: \"ml_2\",\n tokenHash: \"hash-2\",\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n }),\n \"invalid_magic_link\"\n )\n })\n })\n\n test(\"stores OIDC attempts with one-time state consumption\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n returnTo: \"/objects\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"wrong\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n }),\n \"invalid_oidc_attempt\"\n )\n await expect(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"state-hash\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n ).resolves.toMatchObject({\n audience: \"atlas\",\n codeVerifier: \"verifier\",\n consumedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await expectAuthError(\n storage.oidcAuthorizationAttempts.consume({\n projectId,\n id: \"oidc_1\",\n stateHash: \"state-hash\",\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n }),\n \"invalid_oidc_attempt\"\n )\n })\n })\n\n test(\"authorizes a device and atomically starts its bearer session\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_browser\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"session-hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.deviceAuthorizations.create({\n id: \"dva_1\",\n projectId,\n deviceCodeHash: \"device-code-hash\",\n userCode: \"BCDF-HJKM\",\n clientName: \"sixb CLI\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expect(\n storage.deviceAuthorizations.getByUserCode({ projectId, userCode: \"BCDF-HJKM\" })\n ).resolves.toMatchObject({ id: \"dva_1\", status: \"pending\", clientName: \"sixb CLI\" })\n await storage.deviceAuthorizations.approve({\n projectId,\n id: \"dva_1\",\n userId: \"usr_1\",\n sessionId: \"ses_browser\",\n approvedAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n\n const complete = (id: string) =>\n storage.completeDeviceAuthorization({\n projectId,\n id: \"dva_1\",\n deviceCodeHash: \"device-code-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n session: bearerSessionInput(id),\n })\n const completed = await complete(\"ses_cli\")\n\n expect(completed.authorization).toMatchObject({ status: \"consumed\" })\n expect(completed.session).toMatchObject({\n id: \"ses_cli\",\n userId: \"usr_1\",\n bearer: { clientName: \"sixb CLI\", refreshTokenHash: \"refresh-1\" },\n })\n await expectAuthError(complete(\"ses_cli_2\"), \"invalid_device_authorization\")\n await expect(storage.sessions.getById({ projectId, id: \"ses_cli_2\" })).resolves.toBeNull()\n })\n })\n\n test(\"keeps bearer and cookie session credentials apart\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create(bearerSessionInput(\"ses_cli\"))\n await storage.sessions.create({\n ...bearerSessionInput(\"ses_cookie\"),\n tokenHash: \"cookie-hash\",\n bearer: undefined,\n })\n const now = at(\"2026-05-14T10:05:00.000Z\")\n\n await expect(\n storage.sessions.findValidByAccessTokenHash({\n projectId,\n id: \"ses_cli\",\n tokenHash: \"access-1\",\n now,\n })\n ).resolves.toMatchObject({ id: \"ses_cli\" })\n // A bearer access token never works as a cookie secret, and a cookie never as a token.\n await expect(\n storage.sessions.findValidByTokenHash({\n projectId,\n id: \"ses_cli\",\n audience: \"atlas\",\n tokenHash: \"access-1\",\n now,\n })\n ).resolves.toBeNull()\n await expect(\n storage.sessions.findValidByAccessTokenHash({\n projectId,\n id: \"ses_cookie\",\n tokenHash: \"cookie-hash\",\n now,\n })\n ).resolves.toBeNull()\n // The access token expires before its session.\n await expect(\n storage.sessions.findValidByAccessTokenHash({\n projectId,\n id: \"ses_cli\",\n tokenHash: \"access-1\",\n now: at(\"2026-05-14T10:15:00.000Z\"),\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"rotates refresh tokens, tolerates a lost response, and revokes on reuse\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n ...bearerSessionInput(\"ses_cli\"),\n absoluteExpiresAt: at(\"2026-06-20T00:00:00.000Z\"),\n })\n const rotate = (refreshTokenHash: string, now: string, generation: number) =>\n storage.sessions.rotateRefreshToken({\n projectId,\n id: \"ses_cli\",\n refreshTokenHash,\n now: at(now),\n reuseGraceMs: 60_000,\n next: {\n tokenHash: `access-${generation}`,\n accessExpiresAt: new Date(at(now).getTime() + 15 * 60_000),\n refreshTokenHash: `refresh-${generation}`,\n expiresAt: at(\"2026-07-01T00:00:00.000Z\"),\n },\n })\n\n const rotated = await rotate(\"refresh-1\", \"2026-05-15T10:00:00.000Z\", 2)\n expect(rotated).toMatchObject({\n status: \"rotated\",\n session: {\n tokenHash: \"access-2\",\n bearer: { refreshTokenHash: \"refresh-2\", previousRefreshTokenHash: \"refresh-1\" },\n },\n })\n // The idle deadline moves, but never past the absolute one.\n expect(rotated.status === \"rotated\" && rotated.session.expiresAt.toISOString()).toBe(\n \"2026-06-20T00:00:00.000Z\"\n )\n // The response was lost; the client retries with the token it still has.\n await expect(rotate(\"refresh-1\", \"2026-05-15T10:00:30.000Z\", 3)).resolves.toMatchObject({\n status: \"rotated\",\n session: { bearer: { refreshTokenHash: \"refresh-3\" } },\n })\n // An unknown token fails without touching the session.\n await expect(rotate(\"guess\", \"2026-05-15T10:01:00.000Z\", 4)).resolves.toEqual({\n status: \"invalid\",\n })\n expect((await storage.sessions.getById({ projectId, id: \"ses_cli\" }))?.revokedAt).toBe(\n undefined\n )\n // A replaced token after the grace window means a copy is in use: end the session.\n await expect(rotate(\"refresh-2\", \"2026-05-15T10:05:00.000Z\", 4)).resolves.toEqual({\n status: \"reused\",\n })\n await expect(rotate(\"refresh-3\", \"2026-05-15T10:05:01.000Z\", 5)).resolves.toEqual({\n status: \"invalid\",\n })\n const session = await storage.sessions.getById({ projectId, id: \"ses_cli\" })\n expect(session?.revokedAt).toBeInstanceOf(Date)\n })\n })\n\n test(\"completes magic-link sign-in for an existing user\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_old\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"old-hash\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_new\", \"session-hash\", \"atlas\", at(\"2026-06-21T10:10:00.000Z\")),\n })\n\n expect(result.user.id).toBe(\"usr_1\")\n expect(result.session).toMatchObject({\n id: \"ses_new\",\n strategyId: \"magic-link\",\n tokenHash: \"session-hash\",\n absoluteExpiresAt: at(\"2026-06-21T10:10:00.000Z\"),\n })\n // Signing in again keeps the user's existing session active; concurrent\n // sessions are allowed.\n const oldSession = await storage.sessions.getById({ projectId, id: \"ses_old\" })\n expect(oldSession?.revokedAt).toBeUndefined()\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_unused_2\",\n session: sessionInput(\"ses_replay\"),\n }),\n \"invalid_magic_link\"\n )\n })\n })\n\n test(\"creates invited users through magic-link completion and applies groups once\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:17:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_new\",\n manualGroupIds: [\"security-admins\"],\n session: sessionInput(\"ses_new\"),\n })\n\n expect(result.invitation).toMatchObject({\n id: \"inv_1\",\n status: \"accepted\",\n })\n const memberships = await storage.groupMemberships.listForUser({\n projectId,\n userId: \"usr_new\",\n })\n expect(memberships.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"commercial\", \"invitation\"],\n [\"finance\", \"invitation\"],\n [\"security-admins\", \"manual\"],\n ])\n })\n })\n\n test(\"preserves existing membership source when accepting an invitation\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_existing\", email: \"ava@acme.com\" })\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\", \"finance\"],\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_existing\",\n groupId: \"commercial\",\n source: \"manual\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:02:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:17:00.000Z\"),\n })\n\n await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_existing\"),\n })\n\n const memberships = await storage.groupMemberships.listForUser({\n projectId,\n userId: \"usr_existing\",\n })\n expect(memberships.map((membership) => [membership.groupId, membership.source])).toEqual([\n [\"commercial\", \"manual\"],\n [\"finance\", \"invitation\"],\n ])\n })\n })\n\n test(\"does not create missing users when invitation eligibility disappeared\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_1\",\n projectId,\n email: \"ava@acme.com\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n await storage.invitations.revoke({\n projectId,\n id: \"inv_1\",\n revokedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_new\",\n session: sessionInput(\"ses_new\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"ava@acme.com\" })\n ).resolves.toBeNull()\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:03:00.000Z\"),\n })\n })\n })\n\n test(\"allows explicit bootstrap creation through magic-link completion\", async () => {\n await withStorage(async (storage) => {\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"founder@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n const result = await storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:03:00.000Z\"),\n newUserId: \"usr_founder\",\n allowUserCreationWithoutInvitation: true,\n manualGroupIds: [\"security-admins\"],\n session: sessionInput(\"ses_founder\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_founder\",\n email: \"founder@acme.com\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_founder\" })\n ).resolves.toMatchObject([{ groupId: \"security-admins\", source: \"manual\" }])\n })\n })\n\n test(\"consumes valid magic links when an existing user is suspended\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { status: \"suspended\" })\n await storage.magicLinks.create({\n id: \"ml_1\",\n projectId,\n strategyId: \"magic-link\",\n audience: \"atlas\",\n email: \"ava@acme.com\",\n tokenHash: \"link-hash\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:16:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeMagicLinkSignIn({\n projectId,\n magicLinkId: \"ml_1\",\n tokenHash: \"link-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_new\"),\n }),\n \"suspended_user\"\n )\n await expect(storage.magicLinks.getById({ projectId, id: \"ml_1\" })).resolves.toMatchObject({\n consumedAt: at(\"2026-05-14T10:02:00.000Z\"),\n })\n })\n })\n\n test(\"completes OIDC sign-in through an existing identity\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_oidc\", email: \"ava@acme.com\" })\n await storage.identities.upsert({\n projectId,\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"ava@acme.com\" },\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:11:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:02:00.000Z\"),\n subject: \"00u1\",\n email: \"renamed@acme.com\",\n claims: { email: \"renamed@acme.com\" },\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_oidc\"),\n })\n\n expect(result.identity).toMatchObject({\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n claims: { email: \"renamed@acme.com\" },\n })\n await expect(storage.users.getById({ projectId, id: \"usr_oidc\" })).resolves.toMatchObject({\n email: \"ava@acme.com\",\n })\n })\n })\n\n test(\"links a new OIDC identity to the existing user with its email\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage, { id: \"usr_existing\", email: \"ava@acme.com\" })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n newUserId: \"usr_unused\",\n session: sessionInput(\"ses_oidc\"),\n })\n\n expect(result.user.id).toBe(\"usr_existing\")\n expect(result.identity).toMatchObject({ subject: \"00u1\", userId: \"usr_existing\" })\n await expect(storage.users.getById({ projectId, id: \"usr_unused\" })).resolves.toBeNull()\n })\n })\n\n test(\"creates new OIDC users through active invitations and applies groups\", async () => {\n await withStorage(async (storage) => {\n await storage.invitations.createOrUpdateActive({\n id: \"inv_oidc\",\n projectId,\n email: \"ava@acme.com\",\n groupIds: [\"commercial\"],\n createdAt: at(\"2026-05-14T09:59:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n displayName: \"Ava Chen\",\n newUserId: \"usr_oidc\",\n session: sessionInput(\"ses_oidc\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_oidc\",\n email: \"ava@acme.com\",\n displayName: \"Ava Chen\",\n })\n expect(result.invitation).toMatchObject({\n id: \"inv_oidc\",\n status: \"accepted\",\n })\n expect(result.identity).toMatchObject({\n strategyId: \"okta\",\n subject: \"00u1\",\n userId: \"usr_oidc\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_oidc\" })\n ).resolves.toMatchObject([{ groupId: \"commercial\", source: \"invitation\" }])\n })\n })\n\n test(\"does not create new OIDC users without invitation or bootstrap eligibility\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_1\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"state-hash\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n await expectAuthError(\n storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_1\",\n stateHash: \"state-hash\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"ava@acme.com\",\n newUserId: \"usr_oidc\",\n session: sessionInput(\"ses_oidc\"),\n }),\n \"user_creation_not_allowed\"\n )\n await expect(\n storage.users.getByEmail({ projectId, email: \"ava@acme.com\" })\n ).resolves.toBeNull()\n })\n })\n\n test(\"allows OIDC bootstrap user creation with manual groups\", async () => {\n await withStorage(async (storage) => {\n await storage.oidcAuthorizationAttempts.create({\n id: \"oidc_bootstrap\",\n projectId,\n strategyId: \"okta\",\n audience: \"atlas\",\n stateHash: \"bootstrap-state\",\n nonceHash: \"nonce-hash\",\n codeVerifier: \"verifier\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-14T10:10:00.000Z\"),\n })\n\n const result = await storage.completeOidcSignIn({\n projectId,\n oidcAuthorizationAttemptId: \"oidc_bootstrap\",\n stateHash: \"bootstrap-state\",\n completedAt: at(\"2026-05-14T10:01:00.000Z\"),\n subject: \"00u1\",\n email: \"founder@acme.com\",\n allowUserCreationWithoutInvitation: true,\n manualGroupIds: [\"security-admins\"],\n newUserId: \"usr_founder\",\n session: sessionInput(\"ses_oidc_bootstrap\"),\n })\n\n expect(result.user).toMatchObject({\n id: \"usr_founder\",\n email: \"founder@acme.com\",\n })\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_founder\" })\n ).resolves.toMatchObject([{ groupId: \"security-admins\", source: \"manual\" }])\n })\n })\n\n test(\"syncs directory memberships to exactly the groups the provider grants\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n for (const [groupId, source] of [\n [\"security-admins\", \"manual\"],\n [\"commercial\", \"invitation\"],\n [\"legacy-team\", \"directory\"],\n ] as const) {\n await storage.groupMemberships.upsert({ projectId, userId: \"usr_1\", groupId, source })\n }\n\n await completeOidcSignInForAva(storage, [\"security-admins\", \"field-ops\"])\n\n // legacy-team is no longer granted; security-admins keeps its manual source.\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toMatchObject([\n { groupId: \"commercial\", source: \"invitation\" },\n { groupId: \"field-ops\", source: \"directory\" },\n { groupId: \"security-admins\", source: \"manual\" },\n ])\n })\n })\n\n test(\"removes every directory membership when the provider grants no groups\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"security-admins\",\n source: \"manual\",\n })\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"field-ops\",\n source: \"directory\",\n })\n\n await completeOidcSignInForAva(storage, [])\n\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toMatchObject([{ groupId: \"security-admins\", source: \"manual\" }])\n })\n })\n\n test(\"leaves directory memberships alone when sign-in syncs no groups\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.groupMemberships.upsert({\n projectId,\n userId: \"usr_1\",\n groupId: \"field-ops\",\n source: \"directory\",\n })\n\n await completeOidcSignInForAva(storage, undefined)\n\n await expect(\n storage.groupMemberships.listForUser({ projectId, userId: \"usr_1\" })\n ).resolves.toMatchObject([{ groupId: \"field-ops\", source: \"directory\" }])\n })\n })\n\n test(\"suspends users and revokes active sessions immediately\", async () => {\n await withStorage(async (storage) => {\n await createUser(storage)\n await storage.sessions.create({\n id: \"ses_1\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"atlas\",\n tokenHash: \"hash-1\",\n createdAt: at(\"2026-05-14T10:00:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:00:00.000Z\"),\n })\n await storage.sessions.create({\n id: \"ses_app\",\n projectId,\n userId: \"usr_1\",\n strategyId: \"magic-link\",\n audience: \"app\",\n tokenHash: \"hash-app\",\n createdAt: at(\"2026-05-14T10:01:00.000Z\"),\n expiresAt: at(\"2026-05-21T10:01:00.000Z\"),\n })\n\n const suspended = await storage.suspendUserAndRevokeSessions({\n projectId,\n userId: \"usr_1\",\n suspendedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n\n expect(suspended.status).toBe(\"suspended\")\n await expect(storage.sessions.getById({ projectId, id: \"ses_1\" })).resolves.toMatchObject({\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n })\n await expect(storage.sessions.getById({ projectId, id: \"ses_app\" })).resolves.toMatchObject(\n {\n revokedAt: at(\"2026-05-14T10:05:00.000Z\"),\n }\n )\n })\n })\n })\n}\n",
|
|
14
14
|
"import { describe, expect, test } from \"bun:test\"\nimport { blobIdFromDigest, computeBlobDigest } from \"../blob-storage\"\nimport type { BlobStorage } from \"../blob-storage/types\"\n\nexport interface BlobStorageContractSuiteOptions<TStorage extends BlobStorage = BlobStorage> {\n /** Factory that produces an isolated storage instance for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\n/** Runs the shared content, streaming, size-validation, and cancellation contract. */\nexport function runBlobStorageContractSuite<TStorage extends BlobStorage>(\n label: string,\n options: BlobStorageContractSuiteOptions<TStorage>\n): void {\n const encoder = new TextEncoder()\n\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"streams bodies into stable content-addressed references\", async () => {\n await withStorage(async (storage) => {\n const body = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(encoder.encode(\"streamed \"))\n controller.enqueue(encoder.encode(\"body\"))\n controller.close()\n },\n })\n\n const fileRef = await storage.put({\n body,\n expectedSizeBytes: 13,\n fileName: \"report.bin\",\n mediaType: \"application/octet-stream\",\n logicalPath: \"reports/report.bin\",\n })\n\n expect(fileRef.sizeBytes).toBe(13)\n expect(fileRef.blobId).toBe(blobIdFromDigest(fileRef.digest))\n expect(fileRef.fileName).toBe(\"report.bin\")\n expect(fileRef.mediaType).toBe(\"application/octet-stream\")\n expect(fileRef.logicalPath).toBe(\"reports/report.bin\")\n expect(await new Response(await storage.open(fileRef.blobId)).text()).toBe(\"streamed body\")\n })\n })\n\n test(\"rejects an expected size mismatch without publishing a blob\", async () => {\n await withStorage(async (storage) => {\n const bytes = encoder.encode(\"wrong size\")\n const blobId = blobIdFromDigest(computeBlobDigest(bytes))\n\n await expect(\n storage.put({ body: bytes, expectedSizeBytes: bytes.byteLength + 1 })\n ).rejects.toThrow(\n `Blob size mismatch: expected ${bytes.byteLength + 1} bytes, received ${bytes.byteLength}.`\n )\n await expect(storage.stat(blobId)).resolves.toBeNull()\n })\n })\n\n test(\"rejects invalid expected sizes\", async () => {\n await withStorage(async (storage) => {\n const body = new ReadableStream<Uint8Array>({\n pull(controller) {\n controller.close()\n },\n })\n\n await expect(storage.put({ body, expectedSizeBytes: -1 })).rejects.toThrow(\n \"expectedSizeBytes must be a non-negative safe integer\"\n )\n })\n })\n\n test(\"cancels an active body without publishing partial bytes\", async () => {\n await withStorage(async (storage) => {\n const abort = new AbortController()\n let bodyCancelled = false\n const firstChunk = encoder.encode(\"partial\")\n const blobId = blobIdFromDigest(computeBlobDigest(firstChunk))\n const body = new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(firstChunk)\n },\n cancel() {\n bodyCancelled = true\n },\n })\n\n const put = storage.put({ body, signal: abort.signal })\n abort.abort(new Error(\"cancel blob put\"))\n\n await expect(put).rejects.toThrow(\"cancel blob put\")\n expect(bodyCancelled).toBe(true)\n await expect(storage.stat(blobId)).resolves.toBeNull()\n })\n })\n })\n}\n",
|
|
15
15
|
"import { describe, expect, test } from \"bun:test\"\nimport { BrokerError } from \"../broker/errors\"\nimport type {\n Broker,\n BrokerRecord,\n BrokerRecordInput,\n BrokerStreamDefinition,\n} from \"../broker/types\"\nimport type { JsonValue } from \"../json\"\n\nexport interface BrokerContractSuiteOptions<TBroker extends Broker = Broker> {\n /** Factory that produces a fresh `Broker` instance for each test case. */\n readonly createBroker: () => TBroker | Promise<TBroker>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (broker: TBroker) => void | Promise<void>\n /**\n * Retention age used by the maxAgeMs assertion. Defaults to 20ms.\n * Providers with coarse server-side retention can increase this in their own suite.\n */\n readonly maxAgeMs?: number\n /**\n * Time to wait for maxAgeMs retention to expire. Defaults to `maxAgeMs + 20`.\n */\n readonly maxAgeWaitMs?: number\n /**\n * Time to wait after registering a live subscription before appending records.\n * Defaults to 0 for synchronous providers.\n */\n readonly subscriptionSetupMs?: number\n /**\n * Time to wait for asynchronous subscription delivery. Defaults to 200ms.\n */\n readonly subscriptionDeliveryTimeoutMs?: number\n /**\n * Poll interval while waiting for asynchronous subscription delivery. Defaults to 10ms.\n */\n readonly subscriptionPollIntervalMs?: number\n}\n\nconst eventsStream: BrokerStreamDefinition = { id: \"__events\" }\nconst retainedStream: BrokerStreamDefinition = { id: \"__retained\", retention: { maxRecords: 2 } }\n\n/**\n * Runs the shared `Broker` contract against any provider.\n *\n * The contract intentionally stays small: append records, read retained records\n * by exclusive cursor, subscribe to retained/live streams, and apply portable\n * retention. Provider-specific administration and durable consumer identity\n * are outside the V1 broker surface.\n */\nexport function runBrokerContractSuite<TBroker extends Broker>(\n label: string,\n options: BrokerContractSuiteOptions<TBroker>\n): void {\n const maxAgeMs = options.maxAgeMs ?? 20\n const maxAgeWaitMs = options.maxAgeWaitMs ?? maxAgeMs + 20\n const subscriptionSetupMs = options.subscriptionSetupMs ?? 0\n const subscriptionDeliveryTimeoutMs = options.subscriptionDeliveryTimeoutMs ?? 200\n const subscriptionPollIntervalMs = options.subscriptionPollIntervalMs ?? 10\n\n const withBroker = async (body: (broker: TBroker) => Promise<void>): Promise<void> => {\n const broker = await options.createBroker()\n try {\n await body(broker)\n } finally {\n await options.teardown?.(broker)\n }\n }\n\n describe(label, () => {\n describe(\"append\", () => {\n test(\"returns stored records with cursors and timestamps\", async () => {\n await withBroker(async (broker) => {\n const before = Date.now()\n\n const records = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n {\n name: \"test.record\",\n key: \"Room:room-1\",\n payload: { objectTypeId: \"Room\", primaryId: \"room-1\" },\n },\n ],\n })\n\n expect(records).toHaveLength(1)\n expect(records[0]).toMatchObject({\n streamId: eventsStream.id,\n name: \"test.record\",\n key: \"Room:room-1\",\n payload: { objectTypeId: \"Room\", primaryId: \"room-1\" },\n })\n expect(records[0]?.cursor).toBeTruthy()\n expect(Date.parse(records[0]!.publishedAt)).toBeGreaterThanOrEqual(before)\n })\n })\n\n test(\"snapshots appended payloads\", async () => {\n await withBroker(async (broker) => {\n const payload = { nested: { value: \"before\" } }\n\n const [record] = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ payload }],\n })\n payload.nested.value = \"after\"\n\n expect(record?.payload).toEqual({ nested: { value: \"before\" } })\n const [readBack] = await readRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n })\n expect(readBack?.payload).toEqual({ nested: { value: \"before\" } })\n })\n })\n\n test(\"returns empty array for empty appends\", async () => {\n await withBroker(async (broker) => {\n const records = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [],\n })\n\n expect(records).toEqual([])\n })\n })\n\n test(\"rejects empty projectId and stream id\", async () => {\n await withBroker(async (broker) => {\n await expect(\n appendRecords(broker, {\n projectId: \" \",\n stream: eventsStream,\n records: [{ payload: { ok: true } }],\n })\n ).rejects.toBeInstanceOf(BrokerError)\n\n await expect(\n appendRecords(broker, {\n projectId: \"project-a\",\n stream: { id: \" \" },\n records: [{ payload: { ok: true } }],\n })\n ).rejects.toBeInstanceOf(BrokerError)\n })\n })\n\n test(\"rejects payloads that are not JSON values\", async () => {\n await withBroker(async (broker) => {\n await expect(\n appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n {\n payload: {\n observedAt: new Date(\"2026-01-01T00:00:00.000Z\"),\n } as unknown as JsonValue,\n },\n ],\n })\n ).rejects.toBeInstanceOf(BrokerError)\n\n await expect(\n appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ payload: { value: Number.NaN } as unknown as JsonValue }],\n })\n ).rejects.toBeInstanceOf(BrokerError)\n })\n })\n\n test(\"requires streams to be ensured before appending records\", async () => {\n await withBroker(async (broker) => {\n await expect(\n broker.append({\n projectId: \"project-a\",\n streamId: \"missing\",\n records: [{ payload: \"one\" }],\n })\n ).rejects.toBeInstanceOf(BrokerError)\n })\n })\n })\n\n describe(\"read\", () => {\n test(\"reads records after an exclusive cursor\", async () => {\n await withBroker(async (broker) => {\n const [first] = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { name: \"one\", payload: { value: 1 } },\n { name: \"two\", payload: { value: 2 } },\n { name: \"three\", payload: { value: 3 } },\n ],\n })\n\n const records = await readRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n afterCursor: first?.cursor,\n })\n\n expect(records.map((record) => record.name)).toEqual([\"two\", \"three\"])\n })\n })\n\n test(\"limits matching records after applying name filters\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { name: \"test.record\", payload: { id: \"room-1\" } },\n { name: \"telemetry.appended\", payload: { id: \"temp-1\" } },\n { name: \"test.record\", payload: { id: \"room-2\" } },\n ],\n })\n\n const records = await readRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n names: [\"test.record\"],\n limit: 2,\n })\n\n expect(records.map((record) => record.payload)).toEqual([\n { id: \"room-1\" },\n { id: \"room-2\" },\n ])\n })\n })\n\n test(\"returns empty array for missing streams and non-positive limits\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ name: \"test.record\", payload: { id: \"room-1\" } }],\n })\n\n expect(\n await broker.read({\n projectId: \"project-a\",\n streamId: \"missing\",\n })\n ).toEqual({ records: [], cursor: undefined, hasMore: false })\n expect(\n await readRecords(broker, { projectId: \"project-a\", stream: eventsStream, limit: 0 })\n ).toEqual([])\n expect(\n await readRecords(broker, { projectId: \"project-a\", stream: eventsStream, limit: -1 })\n ).toEqual([])\n })\n })\n\n test(\"isolates projects and streams\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: { id: \"stream-a\" },\n records: [{ payload: { value: \"a\" } }],\n })\n await appendRecords(broker, {\n projectId: \"project-b\",\n stream: { id: \"stream-a\" },\n records: [{ payload: { value: \"b\" } }],\n })\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: { id: \"stream-b\" },\n records: [{ payload: { value: \"c\" } }],\n })\n\n expect(\n await payloads(\n readRecords(broker, { projectId: \"project-a\", stream: { id: \"stream-a\" } })\n )\n ).toEqual([{ value: \"a\" }])\n expect(\n await payloads(\n readRecords(broker, { projectId: \"project-b\", stream: { id: \"stream-a\" } })\n )\n ).toEqual([{ value: \"b\" }])\n expect(\n await payloads(\n readRecords(broker, { projectId: \"project-a\", stream: { id: \"stream-b\" } })\n )\n ).toEqual([{ value: \"c\" }])\n })\n })\n\n test(\"advances the page cursor when filters match no records\", async () => {\n await withBroker(async (broker) => {\n const appended = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { name: \"one\", payload: 1 },\n { name: \"two\", payload: 2 },\n ],\n })\n\n const page = await broker.read({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n names: [\"missing\"],\n limit: 1,\n })\n\n expect(page.records).toEqual([])\n expect(page.cursor).toBe(appended.at(-1)?.cursor)\n expect(page.hasMore).toBe(false)\n })\n })\n\n test(\"filters by record key before applying the page limit\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { key: \"sync:a\", payload: \"a1\" },\n { key: \"sync:b\", payload: \"b\" },\n { key: \"sync:a\", payload: \"a2\" },\n ],\n })\n\n const page = await broker.read({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n keys: [\"sync:a\"],\n limit: 2,\n })\n expect(page.records.map((record) => record.payload)).toEqual([\"a1\", \"a2\"])\n })\n })\n\n test(\"reports no forward page when only filtered-out records remain\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { key: \"target\", payload: \"match\" },\n { key: \"other\", payload: \"filtered-one\" },\n { key: \"other\", payload: \"filtered-two\" },\n ],\n })\n\n const page = await broker.read({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n keys: [\"target\"],\n limit: 1,\n })\n expect(page.records.map((record) => record.payload)).toEqual([\"match\"])\n expect(page.hasMore).toBe(false)\n })\n })\n\n test(\"reports no backward page when only filtered-out records remain\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { key: \"other\", payload: \"filtered-one\" },\n { key: \"other\", payload: \"filtered-two\" },\n { key: \"target\", payload: \"match\" },\n ],\n })\n\n const page = await broker.tail({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n keys: [\"target\"],\n limit: 1,\n })\n expect(page.records.map((record) => record.payload)).toEqual([\"match\"])\n expect(page.hasMore).toBe(false)\n })\n })\n\n test(\"tails recent records and paginates toward older history\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [1, 2, 3, 4, 5].map((payload) => ({ payload })),\n })\n\n const recent = await broker.tail({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n limit: 2,\n })\n expect(recent.records.map((record) => record.payload)).toEqual([4, 5])\n expect(recent.hasMore).toBe(true)\n\n const older = await broker.tail({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n beforeCursor: recent.cursor,\n limit: 2,\n })\n expect(older.records.map((record) => record.payload)).toEqual([2, 3])\n expect(older.hasMore).toBe(true)\n })\n })\n })\n\n describe(\"latestCursor\", () => {\n test(\"returns undefined for missing and empty streams\", async () => {\n await withBroker(async (broker) => {\n expect(\n await broker.latestCursor({ projectId: \"project-a\", streamId: \"missing\" })\n ).toBeUndefined()\n\n await broker.ensureStream({ projectId: \"project-a\", stream: eventsStream })\n expect(\n await broker.latestCursor({ projectId: \"project-a\", streamId: eventsStream.id })\n ).toBeUndefined()\n })\n })\n\n test(\"returns the newest retained record cursor\", async () => {\n await withBroker(async (broker) => {\n const records = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: retainedStream,\n records: [{ payload: \"one\" }, { payload: \"two\" }, { payload: \"three\" }],\n })\n\n expect(\n await broker.latestCursor({ projectId: \"project-a\", streamId: retainedStream.id })\n ).toBe(records.at(-1)?.cursor)\n })\n })\n })\n\n describe(\"subscribe\", () => {\n // Removing awaited provider delivery makes the second callback enter before release.\n test(\"awaits async handlers without blocking publishers or other subscribers\", async () => {\n await withBroker(async (broker) => {\n await broker.ensureStream({ projectId: \"project-a\", stream: eventsStream })\n let release!: () => void\n const blocked = new Promise<void>((resolve) => {\n release = resolve\n })\n const received: string[] = []\n const observer: string[] = []\n const unsubscribe = await broker.subscribe(\n { projectId: \"project-a\", streamId: eventsStream.id },\n async (records) => {\n received.push(...records.map((record) => String(record.payload)))\n await blocked\n }\n )\n const observe = await broker.subscribe(\n { projectId: \"project-a\", streamId: eventsStream.id },\n (records) => {\n observer.push(...records.map((record) => String(record.payload)))\n }\n )\n const wait = (predicate: () => boolean) =>\n waitUntil(predicate, {\n timeoutMs: subscriptionDeliveryTimeoutMs,\n intervalMs: subscriptionPollIntervalMs,\n message: \"Async broker subscription did not progress\",\n })\n try {\n if (subscriptionSetupMs > 0) await Bun.sleep(subscriptionSetupMs)\n await broker.append({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n records: [{ payload: \"one\" }],\n })\n await wait(() => received.length === 1)\n await broker.append({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n records: [{ payload: \"two\" }],\n })\n await wait(() => observer.length === 2)\n await Bun.sleep(30)\n expect(received).toEqual([\"one\"])\n release()\n await wait(() => received.length === 2)\n expect(received).toEqual([\"one\", \"two\"])\n } finally {\n release()\n unsubscribe()\n observe()\n }\n })\n })\n\n test(\"isolates rejected async handlers and permits appending from a handler\", async () => {\n await withBroker(async (broker) => {\n await broker.ensureStream({ projectId: \"project-a\", stream: eventsStream })\n const received: string[] = []\n const unsubscribe = await broker.subscribe(\n { projectId: \"project-a\", streamId: eventsStream.id },\n async (records) => {\n for (const record of records) {\n received.push(String(record.payload))\n if (record.payload === \"one\") {\n await broker.append({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n records: [{ payload: \"two\" }],\n })\n throw new Error(\"observer failure\")\n }\n }\n }\n )\n try {\n if (subscriptionSetupMs > 0) await Bun.sleep(subscriptionSetupMs)\n await broker.append({\n projectId: \"project-a\",\n streamId: eventsStream.id,\n records: [{ payload: \"one\" }],\n })\n await waitUntil(() => received.length === 2, {\n timeoutMs: subscriptionDeliveryTimeoutMs,\n intervalMs: subscriptionPollIntervalMs,\n message: \"Rejected async observer blocked later delivery\",\n })\n expect(received).toEqual([\"one\", \"two\"])\n } finally {\n unsubscribe()\n }\n })\n })\n\n test(\"requires streams to be ensured before subscribing\", async () => {\n await withBroker(async (broker) => {\n await expect(\n broker.subscribe({ projectId: \"project-a\", streamId: \"missing\" }, () => {})\n ).rejects.toBeInstanceOf(BrokerError)\n })\n })\n\n test(\"defaults to latest and receives only new records\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ name: \"before\", payload: { value: \"before\" } }],\n })\n\n const received: string[] = []\n await subscribeRecords(\n broker,\n { projectId: \"project-a\", stream: eventsStream },\n (records) => {\n received.push(...records.map((record) => String(record.payload)))\n }\n )\n if (subscriptionSetupMs > 0) {\n await Bun.sleep(subscriptionSetupMs)\n }\n\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ name: \"after\", payload: \"after\" }],\n })\n\n await waitUntil(() => received.length === 1, {\n timeoutMs: subscriptionDeliveryTimeoutMs,\n intervalMs: subscriptionPollIntervalMs,\n message: \"Broker subscription did not receive the appended record\",\n })\n expect(received).toEqual([\"after\"])\n })\n })\n\n test(\"can subscribe from earliest retained record\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { name: \"one\", payload: \"one\" },\n { name: \"two\", payload: \"two\" },\n ],\n })\n\n const received: string[] = []\n await subscribeRecords(\n broker,\n { projectId: \"project-a\", stream: eventsStream, from: \"earliest\" },\n (records) => {\n received.push(...records.map((record) => String(record.payload)))\n }\n )\n if (subscriptionSetupMs > 0) {\n await Bun.sleep(subscriptionSetupMs)\n }\n\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ name: \"three\", payload: \"three\" }],\n })\n\n await waitUntil(() => received.length === 3, {\n timeoutMs: subscriptionDeliveryTimeoutMs,\n intervalMs: subscriptionPollIntervalMs,\n message: \"Broker subscription did not receive retained plus live records\",\n })\n expect(received).toEqual([\"one\", \"two\", \"three\"])\n })\n })\n\n test(\"can subscribe after a cursor and filter by name and key\", async () => {\n await withBroker(async (broker) => {\n const [first] = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [\n { name: \"test.record\", key: \"other\", payload: \"one\" },\n { name: \"telemetry.appended\", key: \"target\", payload: \"two\" },\n { name: \"test.record\", key: \"target\", payload: \"three\" },\n ],\n })\n\n const received: string[] = []\n await subscribeRecords(\n broker,\n {\n projectId: \"project-a\",\n stream: eventsStream,\n afterCursor: first?.cursor,\n names: [\"test.record\"],\n keys: [\"target\"],\n },\n (records) => {\n received.push(...records.map((record) => String(record.payload)))\n }\n )\n\n await waitUntil(() => received.length === 1, {\n timeoutMs: subscriptionDeliveryTimeoutMs,\n intervalMs: subscriptionPollIntervalMs,\n message: \"Broker subscription did not replay matching records after cursor\",\n })\n expect(received).toEqual([\"three\"])\n })\n })\n\n test(\"unsubscribe stops delivery\", async () => {\n await withBroker(async (broker) => {\n const received: string[] = []\n const unsubscribe = await subscribeRecords(\n broker,\n { projectId: \"project-a\", stream: eventsStream },\n (records) => {\n received.push(...records.map((record) => String(record.payload)))\n }\n )\n if (subscriptionSetupMs > 0) {\n await Bun.sleep(subscriptionSetupMs)\n }\n\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ payload: \"one\" }],\n })\n\n await waitUntil(() => received.length === 1, {\n timeoutMs: subscriptionDeliveryTimeoutMs,\n intervalMs: subscriptionPollIntervalMs,\n message: \"Broker subscription did not receive the first record before unsubscribe\",\n })\n\n unsubscribe()\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ payload: \"two\" }],\n })\n await Bun.sleep(Math.min(250, subscriptionDeliveryTimeoutMs))\n\n expect(received).toEqual([\"one\"])\n })\n })\n\n test(\"swallows handler errors\", async () => {\n await withBroker(async (broker) => {\n const received: string[] = []\n await subscribeRecords(broker, { projectId: \"project-a\", stream: eventsStream }, () => {\n throw new Error(\"subscriber failed\")\n })\n await subscribeRecords(\n broker,\n { projectId: \"project-a\", stream: eventsStream },\n (records) => {\n received.push(...records.map((record) => String(record.payload)))\n }\n )\n if (subscriptionSetupMs > 0) {\n await Bun.sleep(subscriptionSetupMs)\n }\n\n await expect(\n appendRecords(broker, {\n projectId: \"project-a\",\n stream: eventsStream,\n records: [{ payload: \"one\" }],\n })\n ).resolves.toHaveLength(1)\n await waitUntil(() => received.length === 1, {\n timeoutMs: subscriptionDeliveryTimeoutMs,\n intervalMs: subscriptionPollIntervalMs,\n message: \"Broker subscription delivery stopped after another handler threw\",\n })\n expect(received).toEqual([\"one\"])\n })\n })\n })\n\n describe(\"retention\", () => {\n test(\"bounds retained history by bytes\", async () => {\n await withBroker(async (broker) => {\n const stream = { id: \"__byte_retained\", retention: { maxBytes: 1_024 } }\n await broker.ensureStream({ projectId: \"project-a\", stream })\n\n await broker.append({\n projectId: \"project-a\",\n streamId: stream.id,\n records: [\"one\", \"two\", \"three\"].map((label) => ({\n name: label,\n payload: { label, body: \"x\".repeat(600) },\n })),\n })\n\n const records = await broker.read({\n projectId: \"project-a\",\n streamId: stream.id,\n })\n expect(records.records.length).toBeGreaterThan(0)\n expect(records.records.length).toBeLessThan(3)\n expect(records.records.at(-1)?.name).toBe(\"three\")\n })\n })\n\n test(\"retains only the latest maxRecords\", async () => {\n await withBroker(async (broker) => {\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream: retainedStream,\n records: [{ payload: \"one\" }, { payload: \"two\" }, { payload: \"three\" }],\n })\n\n const records = await readRecords(broker, {\n projectId: \"project-a\",\n stream: retainedStream,\n })\n\n expect(records.map((record) => record.payload)).toEqual([\"two\", \"three\"])\n })\n })\n\n test(\"rejects resuming from a cursor that predates the retained range\", async () => {\n await withBroker(async (broker) => {\n const [first] = await appendRecords(broker, {\n projectId: \"project-a\",\n stream: retainedStream,\n records: [\n { payload: \"one\" },\n { payload: \"two\" },\n { payload: \"three\" },\n { payload: \"four\" },\n ],\n })\n\n await expect(\n readRecords(broker, {\n projectId: \"project-a\",\n stream: retainedStream,\n afterCursor: first?.cursor,\n })\n ).rejects.toBeInstanceOf(BrokerError)\n\n await expect(\n broker.tail({\n projectId: \"project-a\",\n streamId: retainedStream.id,\n beforeCursor: first?.cursor,\n })\n ).rejects.toBeInstanceOf(BrokerError)\n\n // A resuming subscriber must be told the gap exists rather than silently fast-forwarded\n // to the oldest retained record, which would look like a complete stream. To prove this\n // still guards, drop the `assertCursorInRetainedRange` call from `subscribe` in\n // `broker/in-memory.ts` (or from `nats-broker.ts`) and only this expectation fails.\n await expect(\n broker.subscribe(\n {\n projectId: \"project-a\",\n streamId: retainedStream.id,\n afterCursor: first?.cursor,\n },\n () => undefined\n )\n ).rejects.toBeInstanceOf(BrokerError)\n })\n })\n\n test(\"retains only records within maxAgeMs\", async () => {\n await withBroker(async (broker) => {\n const stream = { id: \"__age_retained\", retention: { maxAgeMs } }\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream,\n records: [{ payload: \"old\" }],\n })\n\n await Bun.sleep(maxAgeWaitMs)\n\n await appendRecords(broker, {\n projectId: \"project-a\",\n stream,\n records: [{ payload: \"new\" }],\n })\n\n const records = await readRecords(broker, { projectId: \"project-a\", stream })\n\n expect(records.map((record) => record.payload)).toEqual([\"new\"])\n })\n })\n })\n })\n}\n\nasync function payloads(records: Promise<readonly BrokerRecord[]>): Promise<readonly unknown[]> {\n return (await records).map((record) => record.payload)\n}\n\nasync function appendRecords(\n broker: Broker,\n params: {\n projectId: string\n stream: BrokerStreamDefinition\n records: readonly BrokerRecordInput[]\n }\n): Promise<readonly BrokerRecord[]> {\n await broker.ensureStream({ projectId: params.projectId, stream: params.stream })\n return broker.append({\n projectId: params.projectId,\n streamId: params.stream.id,\n records: params.records,\n })\n}\n\nasync function readRecords(\n broker: Broker,\n params: {\n projectId: string\n stream: BrokerStreamDefinition\n afterCursor?: string\n limit?: number\n names?: readonly string[]\n keys?: readonly string[]\n }\n): Promise<readonly BrokerRecord[]> {\n await broker.ensureStream({ projectId: params.projectId, stream: params.stream })\n return (\n await broker.read({\n projectId: params.projectId,\n streamId: params.stream.id,\n afterCursor: params.afterCursor,\n limit: params.limit,\n names: params.names,\n keys: params.keys,\n })\n ).records\n}\n\nasync function subscribeRecords(\n broker: Broker,\n params: {\n projectId: string\n stream: BrokerStreamDefinition\n from?: \"latest\" | \"earliest\"\n afterCursor?: string\n names?: readonly string[]\n keys?: readonly string[]\n },\n handler: (records: readonly BrokerRecord[]) => void\n): Promise<() => void> {\n await broker.ensureStream({ projectId: params.projectId, stream: params.stream })\n return broker.subscribe(\n {\n projectId: params.projectId,\n streamId: params.stream.id,\n from: params.from,\n afterCursor: params.afterCursor,\n names: params.names,\n keys: params.keys,\n },\n handler\n )\n}\n\nasync function waitUntil(\n predicate: () => boolean,\n options: { timeoutMs: number; intervalMs: number; message: string }\n): Promise<void> {\n const deadline = Date.now() + options.timeoutMs\n while (Date.now() < deadline) {\n if (predicate()) {\n return\n }\n await Bun.sleep(options.intervalMs)\n }\n throw new Error(`${options.message} within ${options.timeoutMs}ms`)\n}\n",
|
|
16
16
|
"import { describe, expect, test } from \"bun:test\"\nimport type {\n ClaimConnectorConnectionRunCallbackInput,\n ClaimConnectorCredentialMutationResult,\n ConnectorAuthorizationRecord,\n ConnectorConnectionStorage,\n ConnectorCredentialMutationKind,\n CreateConnectorAuthorizationAttemptInput,\n CreateConnectorConnectionRunInput,\n} from \"../storage/connector-connections\"\nimport type { CreateExecutionInput } from \"../storage/executions\"\nimport type { Storage } from \"../storage/types\"\n\nexport type ConnectorConnectionStorageContractStorage = Storage & {\n readonly connectorConnections: ConnectorConnectionStorage\n}\n\nexport interface ConnectorConnectionStorageContractSuiteOptions<\n TStorage extends\n ConnectorConnectionStorageContractStorage = ConnectorConnectionStorageContractStorage,\n> {\n /** Factory that produces one isolated complete storage provider for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Advances the storage-authoritative clock without relying on wall-clock sleeps. */\n readonly advanceTime: (storage: TStorage, durationMs: number) => void | Promise<void>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"project-a\"\nconst connectorId = \"social\"\nconst credentials = {\n version: 1,\n algorithm: \"A256GCM\",\n nonce: \"nonce\",\n ciphertext: \"ciphertext\",\n tag: \"tag\",\n} as const\n\n/** Runs the atomicity, fencing, slot uniqueness and project-isolation storage contract. */\nexport function runConnectorConnectionStorageContractSuite<\n TStorage extends ConnectorConnectionStorageContractStorage,\n>(label: string, options: ConnectorConnectionStorageContractSuiteOptions<TStorage>): void {\n const withStorage = async (\n body: (connections: TStorage[\"connectorConnections\"], storage: TStorage) => Promise<void>\n ): Promise<void> => {\n const root = await options.createStorage()\n try {\n await body(root.connectorConnections, root)\n } finally {\n await options.teardown?.(root)\n }\n }\n\n describe(label, () => {\n test(\"binds one-use authorization attempts to their initiating execution\", async () => {\n await withStorage(async (storage) => {\n const attempt = authorizationAttempt()\n await expect(storage.createAuthorizationAttempt(attempt)).resolves.toMatchObject({\n id: attempt.id,\n projectId,\n connectorId,\n initiatedByExecutionId: attempt.initiatedByExecutionId,\n })\n\n for (const mismatchedScope of [\n { projectId: \"project-b\" },\n { connectorId: \"another-connector\" },\n ]) {\n await expect(\n storage.consumeAuthorizationAttempt({\n ...authorizationAttemptConsumption(),\n ...mismatchedScope,\n })\n ).rejects.toThrow(\"invalid, expired, or already used\")\n }\n\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption())\n ).resolves.toMatchObject({\n id: attempt.id,\n initiatedByExecutionId: attempt.initiatedByExecutionId,\n })\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption())\n ).rejects.toThrow(\"invalid, expired, or already used\")\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt())\n ).resolves.toMatchObject({ id: \"attempt-a\" })\n })\n })\n\n test(\"persists explicitly non-PKCE attempts without a verifier\", async () => {\n // Removal proof: restore required code_verifier storage or omit migration 038; SQL providers fail.\n await withStorage(async (storage) => {\n const { codeVerifier: _verifier, ...input } = authorizationAttempt()\n const created = await storage.createAuthorizationAttempt(input)\n expect(created).not.toHaveProperty(\"codeVerifier\")\n const consumed = await storage.consumeAuthorizationAttempt(\n authorizationAttemptConsumption()\n )\n expect(consumed).not.toHaveProperty(\"codeVerifier\")\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption())\n ).rejects.toThrow(\"invalid, expired, or already used\")\n })\n })\n\n test(\"expires authorization attempts from the authoritative storage clock\", async () => {\n await withStorage(async (storage, root) => {\n const ttlMs = 60_000\n const attempt = await storage.createAuthorizationAttempt(authorizationAttempt({ ttlMs }))\n expect(attempt.expiresAt.getTime() - attempt.createdAt.getTime()).toBe(ttlMs)\n\n await options.advanceTime(root, ttlMs)\n\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption())\n ).rejects.toThrow(\"invalid, expired, or already used\")\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt())\n ).resolves.toMatchObject({ id: \"attempt-a\" })\n })\n })\n\n test(\"returns detached authorization attempt records\", async () => {\n await withStorage(async (storage) => {\n const created = await storage.createAuthorizationAttempt(authorizationAttempt())\n if (!created.codeVerifier) throw new Error(\"Expected a stored PKCE verifier.\")\n Object.assign(created.codeVerifier, { ciphertext: \"mutated\" })\n\n const consumed = await storage.consumeAuthorizationAttempt(\n authorizationAttemptConsumption()\n )\n expect(consumed.codeVerifier?.ciphertext).toBe(credentials.ciphertext)\n })\n })\n\n test(\"commits and rolls back connection runs with their attempt and execution\", async () => {\n await withStorage(async (storage, root) => {\n const committedExecution = requestExecution(\"execution-commit\")\n const committedAttempt = authorizationAttempt({\n id: \"attempt-commit\",\n initiatedByExecutionId: committedExecution.id,\n connectionRunId: \"run-commit\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-commit\",\n })\n const committedRun = connectionRun({\n id: \"run-commit\",\n initiatedByExecutionId: committedExecution.id,\n })\n await root.transaction(\n async (tx) => {\n await tx.executions.create(committedExecution)\n const connections = requireTransactionConnections(tx)\n await connections.createConnectionRun(committedRun)\n await connections.createAuthorizationAttempt(committedAttempt)\n },\n { isolation: \"serializable\" }\n )\n\n expect(\n await root.executions.getById({ projectId, id: committedExecution.id })\n ).not.toBeNull()\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: committedRun.id })\n ).resolves.toMatchObject({ id: committedRun.id })\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption(committedAttempt.id))\n ).resolves.toMatchObject({ id: committedAttempt.id })\n\n const rolledBackExecution = requestExecution(\"execution-rollback\")\n const rolledBackAttempt = authorizationAttempt({\n id: \"attempt-rollback\",\n initiatedByExecutionId: rolledBackExecution.id,\n connectionRunId: \"run-rollback\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-rollback\",\n })\n const rolledBackRun = connectionRun({\n id: \"run-rollback\",\n initiatedByExecutionId: rolledBackExecution.id,\n })\n const rollback = new Error(\"rollback connector authorization attempt\")\n await expect(\n root.transaction(\n async (tx) => {\n await tx.executions.create(rolledBackExecution)\n const connections = requireTransactionConnections(tx)\n await connections.createConnectionRun(rolledBackRun)\n await connections.createAuthorizationAttempt(rolledBackAttempt)\n throw rollback\n },\n { isolation: \"serializable\" }\n )\n ).rejects.toBe(rollback)\n\n expect(await root.executions.getById({ projectId, id: rolledBackExecution.id })).toBeNull()\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: rolledBackRun.id })\n ).resolves.toBeNull()\n await expect(\n storage.consumeAuthorizationAttempt(authorizationAttemptConsumption(rolledBackAttempt.id))\n ).rejects.toThrow(\"invalid, expired, or already used\")\n })\n })\n\n test(\"links at most one headless attempt to an awaiting provider run\", async () => {\n await withStorage(async (storage) => {\n const headlessAttempt = {\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n } as const\n\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt(headlessAttempt))\n ).rejects.toThrow(\"does not match its connection run\")\n\n await storage.createConnectionRun(connectionRun())\n await expect(\n storage.createAuthorizationAttempt(authorizationAttempt(headlessAttempt))\n ).resolves.toMatchObject({ id: \"attempt-a\", connectionRunId: \"run-a\" })\n await expect(\n storage.createAuthorizationAttempt(\n authorizationAttempt({ ...headlessAttempt, id: \"attempt-b\" })\n )\n ).rejects.toThrow(\"does not match its connection run\")\n })\n })\n\n test(\"claims a headless callback once with state and browser binding\", async () => {\n await withStorage(async (storage) => {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n\n await expect(\n storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"wrong-binding\",\n })\n )\n ).resolves.toBeNull()\n\n const claimed = await storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"binding-hash\",\n })\n )\n expect(claimed).toMatchObject({\n type: \"claimed\",\n run: { id: \"run-a\", status: \"running\" },\n attempt: { id: \"attempt-a\", connectionRunId: \"run-a\" },\n returnTo: \"https://app.example.com/connectors\",\n })\n expect(claimed && \"returnTo\" in claimed.run).toBe(false)\n await expect(\n storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"binding-hash\",\n })\n )\n ).resolves.toBeNull()\n })\n })\n\n test(\"expires a waiting run and removes its protocol attempt lazily\", async () => {\n await withStorage(async (storage, root) => {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n await options.advanceTime(root, 60_000)\n\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).resolves.toMatchObject({ status: \"expired\" })\n await expect(\n storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({\n callbackBindingHash: \"binding-hash\",\n })\n )\n ).resolves.toBeNull()\n })\n })\n\n test(\"fails an expired processing run and fences its late result\", async () => {\n await withStorage(async (storage, root) => {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n const claimed = await storage.claimConnectionRunCallback(\n connectionRunCallbackClaim({ processingTtlMs: 1_000 })\n )\n if (!claimed || claimed.type !== \"claimed\") throw new Error(\"Expected callback claim.\")\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await expect(\n storage.attachConnectionRunAuthorization({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n authorizationId: authorization.id,\n })\n ).resolves.not.toBeNull()\n\n await options.advanceTime(root, 1_000)\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).resolves.toMatchObject({\n status: \"failed\",\n authorizationId: authorization.id,\n error: { code: \"internal.unexpected\" },\n })\n await expect(\n storage.getAuthorization(authorizationKey(authorization.id))\n ).resolves.toMatchObject({ status: \"revocation_pending\" })\n await expect(\n storage.finishConnectionRun({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n status: \"cancelled\",\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"keeps account selection atomic with its connection run\", async () => {\n await withStorage(async (storage) => {\n const active = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await connect(storage, active, \"connection-a\", \"account-a\")\n const pending = await createAuthorization(storage, \"authorization-b\", \"account-b\")\n await createSelectionRun(storage, pending)\n\n await expect(\n storage.putConnectionFromRun({\n id: \"connection-b\",\n projectId,\n connectorId,\n runId: \"run-a\",\n account: { id: \"account-b\", label: \"Account B\" },\n replace: false,\n })\n ).rejects.toThrow(\"explicit replacement is required\")\n expect(\n await storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).toMatchObject({ status: \"waiting\", waitingFor: \"account_selection\" })\n expect(await storage.getAuthorization(authorizationKey(pending.id))).toEqual(pending)\n\n const selected = await storage.putConnectionFromRun({\n id: \"connection-b\",\n projectId,\n connectorId,\n runId: \"run-a\",\n account: { id: \"account-b\", label: \"Account B\" },\n replace: true,\n })\n expect(selected.run).toMatchObject({ status: \"succeeded\" })\n })\n })\n\n test(\"keeps one stable connection per project connector slot\", async () => {\n await withStorage(async (storage) => {\n const first = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const firstConnection = await connect(storage, first, \"connection-a\", \"account-a\")\n const second = await createAuthorization(storage, \"authorization-b\", \"account-b\")\n\n await expect(connect(storage, second, \"connection-b\", \"account-b\")).rejects.toThrow(\n \"explicit replacement is required\"\n )\n const replaced = await storage.putConnection({\n id: \"connection-b\",\n projectId,\n connectorId,\n authorizationId: second.id,\n owner: { type: \"project\" },\n slot: \"default\",\n account: { id: \"account-b\", label: \"ignored\" },\n replace: true,\n })\n expect(replaced.connection.id).toBe(firstConnection.connection.id)\n expect(replaced.revocationPendingAuthorizationId).toBe(first.id)\n expect(await storage.getAuthorization(authorizationKey(first.id))).toMatchObject({\n status: \"revocation_pending\",\n })\n expect(\n await storage.getConnection({\n projectId,\n connectorId,\n owner: { type: \"project\" },\n slot: \"default\",\n })\n ).toMatchObject({ authorizationId: second.id, account: { id: \"account-b\" } })\n })\n })\n\n test(\"retains disconnected identities and reactivates the same slot id\", async () => {\n await withStorage(async (storage) => {\n const first = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const connected = await connect(storage, first, \"connection-a\", \"account-a\")\n\n const disconnected = await storage.disconnectConnection({\n projectId,\n connectorId,\n connectionId: connected.connection.id,\n })\n expect(disconnected).toMatchObject({\n connection: { id: connected.connection.id, status: \"disconnected\" },\n authorization: { status: \"revocation_pending\" },\n revocationPendingAuthorizationId: first.id,\n })\n expect(\n await storage.getConnection({\n projectId,\n connectorId,\n owner: { type: \"project\" },\n slot: \"default\",\n })\n ).toBeNull()\n expect(\n await storage.getConnectionById({\n projectId,\n connectorId,\n connectionId: connected.connection.id,\n })\n ).toMatchObject({ status: \"disconnected\" })\n\n const second = await createAuthorization(storage, \"authorization-b\", \"account-a\")\n const reconnected = await connect(storage, second, \"ignored-new-id\", \"account-a\")\n expect(reconnected.connection).toMatchObject({\n id: connected.connection.id,\n authorizationId: second.id,\n status: \"connected\",\n })\n })\n })\n\n test(\"keeps pending selection untouched when connection validation fails\", async () => {\n await withStorage(async (storage) => {\n const active = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const existing = await connect(storage, active, \"connection-a\", \"account-a\")\n const replacement = await createAuthorization(storage, \"authorization-b\", \"account-b\")\n\n await expect(connect(storage, replacement, \"connection-b\", \"account-b\")).rejects.toThrow(\n \"explicit replacement is required\"\n )\n expect(await storage.getAuthorization(authorizationKey(replacement.id))).toEqual(\n replacement\n )\n\n const duplicateId = await createAuthorization(storage, \"authorization-c\", \"account-c\")\n await expect(\n storage.putConnection({\n id: existing.connection.id,\n projectId,\n connectorId,\n authorizationId: duplicateId.id,\n owner: { type: \"project\" },\n slot: \"secondary\",\n account: { id: \"account-c\", label: \"ignored\" },\n replace: false,\n })\n ).rejects.toThrow(\"connection id already exists\")\n expect(await storage.getAuthorization(authorizationKey(duplicateId.id))).toEqual(\n duplicateId\n )\n })\n })\n\n test(\"allows account selection after its legacy deadline\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await options.advanceTime(root, 365 * 24 * 60 * 60_000)\n\n await expect(\n connect(storage, authorization, \"connection-a\", \"account-a\")\n ).resolves.toMatchObject({ connection: { status: \"connected\" } })\n await expect(\n storage.getAuthorization(authorizationKey(authorization.id))\n ).resolves.toMatchObject({ status: \"active\" })\n })\n })\n\n test(\"keeps account-selection runs selectable after their legacy deadline\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n await createSelectionRun(storage, authorization)\n await options.advanceTime(root, 365 * 24 * 60 * 60_000)\n\n await expect(\n storage.putConnectionFromRun({\n id: \"connection-a\",\n projectId,\n connectorId,\n runId: \"run-a\",\n account: { id: \"account-a\", label: \"Account A\" },\n replace: false,\n })\n ).resolves.toMatchObject({ run: { status: \"succeeded\" } })\n await expect(\n storage.getConnectionRun({ projectId, connectorId, runId: \"run-a\" })\n ).resolves.toMatchObject({ status: \"succeeded\" })\n await expect(\n storage.getAuthorization(authorizationKey(authorization.id))\n ).resolves.toMatchObject({ status: \"active\" })\n })\n })\n\n test(\"scopes direct record reads by project and connector\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const connected = await connect(storage, authorization, \"connection-a\", \"account-a\")\n\n expect(await storage.getAuthorization(authorizationKey(authorization.id))).toEqual(\n connected.authorization\n )\n for (const scope of [\n { projectId: \"project-b\", connectorId },\n { projectId, connectorId: \"another-connector\" },\n ]) {\n expect(\n await storage.getAuthorization({\n ...scope,\n authorizationId: authorization.id,\n })\n ).toBeNull()\n expect(\n await storage.getConnectionById({\n ...scope,\n connectionId: connected.connection.id,\n })\n ).toBeNull()\n expect(\n await storage.listConnectionsByAuthorization({\n ...scope,\n authorizationId: authorization.id,\n })\n ).toEqual([])\n }\n })\n })\n\n test(\"fences staged credentials by project, revision and mutation id\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createActiveAuthorization(storage)\n for (const scope of [\n { projectId: \"project-b\", connectorId },\n { projectId, connectorId: \"another-connector\" },\n ]) {\n await expect(\n storage.claimCredentialMutation({\n ...scope,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: { id: \"mutation-a\", kind: \"refresh\", holderId: \"worker-a\" },\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n ).resolves.toBeNull()\n }\n\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: { id: \"mutation-a\", kind: \"refresh\", holderId: \"worker-a\" },\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n expect(claim).not.toBeNull()\n const claimed = claim!.authorization\n const executing = await storage.markCredentialMutationExecuting({\n ...fence(claimed),\n holderId: \"worker-a\",\n })\n expect(executing?.credentialMutation?.phase).toBe(\"executing\")\n for (const scope of [\n { projectId: \"project-b\", connectorId },\n { projectId, connectorId: \"another-connector\" },\n ]) {\n await expect(\n storage.stageCredentialMutationCredentials({\n ...fence(claimed),\n ...scope,\n holderId: \"worker-a\",\n credentials,\n scopes: [],\n })\n ).resolves.toBeNull()\n }\n await expect(\n storage.stageCredentialMutationCredentials({\n ...fence(claimed),\n mutationId: \"stale-mutation\",\n holderId: \"worker-a\",\n credentials,\n scopes: [],\n })\n ).resolves.toBeNull()\n\n const staged = await storage.stageCredentialMutationCredentials({\n ...fence(claimed),\n holderId: \"worker-a\",\n credentials,\n scopes: [],\n })\n expect(staged?.credentialMutation?.phase).toBe(\"result_staged\")\n await expect(\n storage.finalizeRefresh({ ...fence(claimed), expectedRevision: claimed.revision + 1 })\n ).resolves.toBeNull()\n await expect(storage.finalizeRefresh(fence(claimed))).resolves.toMatchObject({\n revision: claimed.revision + 1,\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"releases an expired prepared mutation without changing credential state\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n await claimMutation(storage, authorization, \"mutation-prepared\", \"refresh\", {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 60_000,\n })\n\n await options.advanceTime(root, 10_000)\n await expect(\n storage.recoverExpiredCredentialMutation(authorizationKey(authorization.id))\n ).resolves.toMatchObject({\n status: \"active\",\n revision: authorization.revision,\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"fails closed expired executing credential changes but keeps revocation retryable\", async () => {\n for (const kind of [\"refresh\", \"reauthorization\"] as const) {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(storage, authorization, `mutation-${kind}`, kind, {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 60_000,\n })\n await markExecuting(storage, claim.authorization)\n\n await options.advanceTime(root, 10_000)\n await expect(\n storage.recoverExpiredCredentialMutation(authorizationKey(authorization.id))\n ).resolves.toMatchObject({\n status: \"needs_reauthorization\",\n revision: claim.authorization.revision + 1,\n credentialMutation: undefined,\n })\n })\n }\n\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(\n storage,\n authorization,\n \"mutation-revocation\",\n \"revocation\",\n { leaseDurationMs: 10_000, operationTimeoutMs: 60_000 }\n )\n await markExecuting(storage, claim.authorization)\n\n await options.advanceTime(root, 10_000)\n const recovered = await storage.recoverExpiredCredentialMutation(\n authorizationKey(authorization.id)\n )\n expect(recovered).toMatchObject({\n status: \"revocation_pending\",\n revision: claim.authorization.revision,\n credentialMutation: undefined,\n })\n if (!recovered) throw new Error(\"Expected expired revocation recovery.\")\n await expect(\n claimMutation(storage, recovered, \"mutation-revocation-retry\", \"revocation\")\n ).resolves.toBeDefined()\n })\n })\n\n test(\"preserves a staged provider result after its lease and deadline\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(storage, authorization, \"mutation-staged\", \"refresh\", {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 20_000,\n })\n const executing = await markExecuting(storage, claim.authorization)\n const staged = await storage.stageCredentialMutationCredentials({\n ...fence(executing),\n holderId: \"worker-a\",\n credentials: { ...credentials, ciphertext: \"refreshed\" },\n scopes: [\"accounts.read\"],\n })\n expect(staged?.credentialMutation?.phase).toBe(\"result_staged\")\n\n await options.advanceTime(root, 20_000)\n const recovered = await storage.recoverExpiredCredentialMutation(\n authorizationKey(authorization.id)\n )\n expect(recovered?.credentialMutation?.phase).toBe(\"result_staged\")\n if (!recovered) throw new Error(\"Expected staged refresh recovery.\")\n await expect(storage.finalizeRefresh(fence(recovered))).resolves.toMatchObject({\n status: \"active\",\n revision: authorization.revision + 1,\n scopes: [\"accounts.read\"],\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"never renews a credential lease past its operation deadline\", async () => {\n await withStorage(async (storage, root) => {\n const authorization = await createActiveAuthorization(storage)\n const claim = await claimMutation(storage, authorization, \"mutation-renew\", \"refresh\", {\n leaseDurationMs: 10_000,\n operationTimeoutMs: 25_000,\n })\n const executing = await markExecuting(storage, claim.authorization)\n const deadline = executing.credentialMutation!.deadlineAt\n\n await options.advanceTime(root, 8_000)\n const renewed = await storage.renewCredentialMutation({\n ...fence(executing),\n holderId: \"worker-a\",\n leaseDurationMs: 30_000,\n })\n expect(renewed?.credentialMutation?.expiresAt).toEqual(deadline)\n\n await options.advanceTime(root, 17_000)\n await expect(\n storage.recoverExpiredCredentialMutation(authorizationKey(authorization.id))\n ).resolves.toMatchObject({\n status: \"needs_reauthorization\",\n credentialMutation: undefined,\n })\n })\n })\n\n test(\"disconnects every local usage atomically when revocation starts\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const first = await connect(storage, authorization, \"connection-a\", \"account-a\")\n await storage.putConnection({\n id: \"connection-b\",\n projectId,\n connectorId,\n authorizationId: authorization.id,\n owner: { type: \"project\" },\n slot: \"secondary\",\n account: { id: \"account-a\", label: \"ignored\" },\n replace: false,\n })\n const active = (await storage.getAuthorization(authorizationKey(authorization.id)))!\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: active.revision,\n mutation: { id: \"mutation-revoke\", kind: \"revocation\", holderId: \"worker-a\" },\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n\n expect(claim?.authorization.status).toBe(\"revocation_pending\")\n expect(claim?.disconnected.map((connection) => connection.id).sort()).toEqual(\n [first.connection.id, \"connection-b\"].sort()\n )\n expect(\n await storage.listConnectionsByAuthorization(authorizationKey(authorization.id))\n ).toEqual([])\n expect(\n await storage.getAuthorizationByConnectionId({\n projectId,\n connectorId,\n connectionId: first.connection.id,\n })\n ).toMatchObject({ id: authorization.id, status: \"revocation_pending\" })\n\n if (!claim) throw new Error(\"Expected revocation mutation claim.\")\n const executing = await markExecuting(storage, claim.authorization)\n const staged = await storage.stageCredentialMutationRevocation({\n ...fence(executing),\n holderId: \"worker-a\",\n })\n if (!staged) throw new Error(\"Expected staged revocation.\")\n const revoked = await storage.finalizeRevocation(fence(staged))\n expect(revoked).toMatchObject({\n status: \"revoked\",\n credentials: undefined,\n scopes: [],\n accounts: [],\n })\n expect(await storage.listConnections({ projectId, connectorId })).toEqual(\n expect.arrayContaining([\n expect.objectContaining({ id: first.connection.id, status: \"disconnected\" }),\n expect.objectContaining({ id: \"connection-b\", status: \"disconnected\" }),\n ])\n )\n })\n })\n\n test(\"freezes the attached connection set during reauthorization\", async () => {\n await withStorage(async (storage) => {\n const authorization = await createActiveAuthorization(storage)\n const connections = await storage.listConnectionsByAuthorization(\n authorizationKey(authorization.id)\n )\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: {\n id: \"mutation-reauthorize\",\n kind: \"reauthorization\",\n holderId: \"worker-a\",\n },\n expectedConnectionIds: connections.map((connection) => connection.id),\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n })\n expect(claim).not.toBeNull()\n\n await expect(\n storage.disconnectConnection({\n projectId,\n connectorId,\n connectionId: connections[0].id,\n })\n ).rejects.toThrow(\"being reauthorized\")\n })\n })\n })\n}\n\nfunction authorizationAttempt(\n overrides: Partial<CreateConnectorAuthorizationAttemptInput> = {}\n): CreateConnectorAuthorizationAttemptInput {\n return {\n id: \"attempt-a\",\n projectId,\n connectorId,\n owner: { type: \"project\" },\n slot: \"default\",\n initiatedByExecutionId: \"execution-a\",\n stateHash: \"state-hash\",\n codeVerifier: credentials,\n redirectUri: \"https://example.com/oauth/callback\",\n ttlMs: 60_000,\n ...overrides,\n }\n}\n\nfunction connectionRun(\n overrides: Partial<CreateConnectorConnectionRunInput> = {}\n): CreateConnectorConnectionRunInput {\n return {\n id: \"run-a\",\n projectId,\n connectorId,\n kind: \"connect\",\n owner: { type: \"project\" },\n slot: \"default\",\n initiatedByExecutionId: \"execution-a\",\n ttlMs: 60_000,\n ...overrides,\n }\n}\n\nasync function createSelectionRun(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord\n): Promise<void> {\n await storage.createConnectionRun(connectionRun())\n await storage.createAuthorizationAttempt(\n authorizationAttempt({\n connectionRunId: \"run-a\",\n returnTo: \"https://app.example.com/connectors\",\n callbackBindingHash: \"binding-hash\",\n })\n )\n const claimed = await storage.claimConnectionRunCallback(connectionRunCallbackClaim())\n if (!claimed || claimed.type !== \"claimed\") throw new Error(\"Expected callback claim.\")\n const attached = await storage.attachConnectionRunAuthorization({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n authorizationId: authorization.id,\n })\n if (!attached) throw new Error(\"Expected authorization to be attached to the run.\")\n const waiting = await storage.waitForConnectionRunSelection({\n projectId,\n connectorId,\n runId: \"run-a\",\n processingId: claimed.run.processingId,\n authorizationId: authorization.id,\n expiresAt: authorization.selectionExpiresAt!,\n })\n if (!waiting) throw new Error(\"Expected account-selection run.\")\n}\n\nfunction connectionRunCallbackClaim(\n overrides: Partial<ClaimConnectorConnectionRunCallbackInput> = {}\n): ClaimConnectorConnectionRunCallbackInput {\n return {\n projectId,\n attemptId: \"attempt-a\",\n stateHash: \"state-hash\",\n callbackBindingHash: \"binding-hash\",\n redirectUri: \"https://example.com/oauth/callback\",\n processingId: \"processing-a\",\n processingTtlMs: 60_000,\n ...overrides,\n }\n}\n\nfunction authorizationKey(\n authorizationId: string,\n overrides: Partial<{ readonly projectId: string; readonly connectorId: string }> = {}\n) {\n return { projectId, connectorId, authorizationId, ...overrides }\n}\n\nfunction authorizationAttemptConsumption(id = \"attempt-a\") {\n return {\n id,\n projectId,\n connectorId,\n stateHash: \"state-hash\",\n redirectUri: \"https://example.com/oauth/callback\",\n }\n}\n\nfunction requestExecution(id: string): CreateExecutionInput {\n const requestId = `request-${id}`\n return {\n id,\n projectId,\n executor: { type: \"request\", requestId },\n source: { type: \"http\", requestId },\n correlationId: `correlation-${id}`,\n authorizationRef: { type: \"disabled\" },\n }\n}\n\nfunction requireTransactionConnections(storage: Storage): ConnectorConnectionStorage {\n if (storage.connectorConnections) return storage.connectorConnections\n throw new Error(\"Connector connection storage is missing from the transaction facade.\")\n}\n\nasync function createAuthorization(\n storage: ConnectorConnectionStorage,\n id: string,\n accountId: string\n): Promise<ConnectorAuthorizationRecord> {\n return storage.createAuthorization({\n id,\n projectId,\n connectorId,\n authorizedBy: { type: \"user\", id: \"user-a\" },\n credentials,\n scopes: [],\n accounts: [{ id: accountId, label: accountId }],\n selectionTtlMs: 60_000,\n })\n}\n\nasync function createActiveAuthorization(\n storage: ConnectorConnectionStorage\n): Promise<ConnectorAuthorizationRecord> {\n const authorization = await createAuthorization(storage, \"authorization-a\", \"account-a\")\n const result = await connect(storage, authorization, \"connection-a\", \"account-a\")\n return result.authorization\n}\n\nfunction connect(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord,\n connectionId: string,\n accountId: string\n) {\n return storage.putConnection({\n id: connectionId,\n projectId,\n connectorId,\n authorizationId: authorization.id,\n owner: { type: \"project\" },\n slot: \"default\",\n account: { id: accountId, label: \"ignored\" },\n replace: false,\n })\n}\n\nasync function claimMutation(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord,\n mutationId: string,\n kind: ConnectorCredentialMutationKind,\n timing: { readonly leaseDurationMs: number; readonly operationTimeoutMs: number } = {\n leaseDurationMs: 30_000,\n operationTimeoutMs: 60_000,\n }\n): Promise<ClaimConnectorCredentialMutationResult> {\n const expectedConnectionIds =\n kind === \"reauthorization\"\n ? (await storage.listConnectionsByAuthorization(authorizationKey(authorization.id))).map(\n (connection) => connection.id\n )\n : undefined\n const claim = await storage.claimCredentialMutation({\n projectId,\n connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutation: { id: mutationId, kind, holderId: \"worker-a\" },\n ...(expectedConnectionIds === undefined ? {} : { expectedConnectionIds }),\n ...timing,\n })\n if (!claim) throw new Error(`Expected '${kind}' credential mutation claim.`)\n return claim\n}\n\nasync function markExecuting(\n storage: ConnectorConnectionStorage,\n authorization: ConnectorAuthorizationRecord\n): Promise<ConnectorAuthorizationRecord> {\n const executing = await storage.markCredentialMutationExecuting({\n ...fence(authorization),\n holderId: \"worker-a\",\n })\n if (!executing) throw new Error(\"Expected credential mutation execution.\")\n return executing\n}\n\nfunction fence(authorization: ConnectorAuthorizationRecord) {\n return {\n projectId: authorization.projectId,\n connectorId: authorization.connectorId,\n authorizationId: authorization.id,\n expectedRevision: authorization.revision,\n mutationId: authorization.credentialMutation!.id,\n }\n}\n",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"import type { TrustedPrimitiveRef } from \"../execution\"\nimport type {\n ProjectionRunClaim,\n ProjectionRunRecord,\n QueueProjectionRunInput,\n StartOrReclaimProjectionRunInput,\n Storage,\n} from \"../storage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\ntype ProjectionRunQueueFixtureInput = QueueProjectionRunInput extends infer TInput\n ? TInput extends QueueProjectionRunInput\n ? Omit<TInput, \"executionId\">\n : never\n : never\n\n/** Create the durable execution required by a Projection-run storage fixture. */\nexport async function createTestProjectionExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly projectionId: string\n readonly runId: string\n readonly datasetId: string\n readonly datasetVersionId: string\n readonly executionId?: string\n }\n): Promise<string> {\n const executionId = input.executionId ?? `test_projection_execution:${input.runId}`\n const existing = await executions.getById({ projectId: input.projectId, id: executionId })\n if (existing) return executionId\n\n const primitive: TrustedPrimitiveRef = {\n kind: \"projection\",\n id: input.projectionId,\n runId: input.runId,\n }\n await executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: {\n type: \"datasetVersion\",\n datasetId: input.datasetId,\n versionId: input.datasetVersionId,\n },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n return executionId\n}\n\n/** Queue a Projection run with the valid durable execution fixture required by every provider. */\nexport async function queueTestProjectionRun(\n storage: Pick<Storage, \"projectionRuns\" | \"executions\">,\n input: ProjectionRunQueueFixtureInput\n): Promise<ProjectionRunRecord> {\n if (!storage.projectionRuns)\n throw new Error(\"Projection run storage is not configured for this test.\")\n const executionId = await createTestProjectionExecution(storage.executions, {\n projectId: input.projectId,\n projectionId: input.identity.projectionId,\n runId: input.id,\n datasetId: input.identity.datasetVersion.datasetId,\n datasetVersionId: input.identity.datasetVersion.versionId,\n })\n return storage.projectionRuns.queue({ ...input, executionId })\n}\n\n/** Start a Projection run after creating its durable execution and queued state. */\nexport async function startTestProjectionRun(\n storage: Pick<Storage, \"projectionRuns\" | \"executions\">,\n input: StartOrReclaimProjectionRunInput\n): Promise<ProjectionRunClaim> {\n const projectionRuns = storage.projectionRuns\n if (!projectionRuns) throw new Error(\"Projection run storage is not configured for this test.\")\n const { startedAt, ...queuedRun } = input\n await queueTestProjectionRun(storage, { ...queuedRun, queuedAt: startedAt })\n return projectionRuns.startOrReclaim(input)\n}\n\n/** Claim a queued fixture, or rotate its attempt when the same durable run is reclaimed. */\nexport async function claimTestProjectionRun(\n storage: Pick<Storage, \"projectionRuns\" | \"executions\">,\n input: StartOrReclaimProjectionRunInput\n): Promise<ProjectionRunClaim> {\n if (!storage.projectionRuns)\n throw new Error(\"Projection run storage is not configured for this test.\")\n const existing = await storage.projectionRuns.getById({\n projectId: input.projectId,\n id: input.id,\n })\n if (!existing) {\n const { startedAt, ...queuedRun } = input\n await queueTestProjectionRun(storage, { ...queuedRun, queuedAt: startedAt })\n }\n return storage.projectionRuns.startOrReclaim(input)\n}\n",
|
|
30
30
|
"import { describe, expect, test } from \"bun:test\"\nimport type { JsonValue } from \"../json\"\nimport {\n collectObjectQueryValidationIssues,\n countObjects,\n executeObjectQuery,\n executeObjectQueryLinks,\n existsObjects,\n facetObjects,\n normalizeObjectQuery,\n type ObjectQuery,\n ObjectQueryPlanningError,\n type ObjectQueryPredicate,\n planObjectQuery,\n validateObjectQuery,\n} from \"../objects/query\"\nimport { defineObjectType, link, OntologyRegistry, prop, ref, stringEnum } from \"../ontology\"\nimport type { ObjectStorage, QueryObjectsResult } from \"../storage/objects\"\nimport type { Storage } from \"../storage/types\"\nimport {\n createMaterializerTestFixture,\n type MaterializerFixtureLink,\n type MaterializerFixtureObject,\n type MaterializerTestFixture,\n} from \"./materializer-fixture\"\n\nexport interface ObjectQueryProviderContractSuiteOptions<TStorage extends Storage> {\n /** Factory that produces a fresh complete storage instance for each test case. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"object-query-contract\"\n\nconst Device = defineObjectType({\n id: \"ContractDevice\",\n name: \"Contract Device\",\n properties: [\n prop(\"id\", \"string\", {\n required: true,\n primary: true,\n query: { searchable: true, filterable: true, exact: true, sortable: true },\n }),\n prop(\"name\", \"string\", {\n query: { searchable: true, text: true, filterable: true, exact: true, sortable: true },\n }),\n ],\n search: { defaultText: [\"name\"] },\n})\n\nconst Room = defineObjectType({\n id: \"ContractRoom\",\n name: \"Contract Room\",\n properties: [\n prop(\"id\", \"string\", {\n required: true,\n primary: true,\n query: { searchable: true, filterable: true, exact: true, sortable: true },\n }),\n prop(\"name\", \"string\", {\n query: { searchable: true, text: true, filterable: true, exact: true, sortable: true },\n }),\n prop(\"description\", \"string\", {\n query: { searchable: true, text: true },\n }),\n prop(\"floor\", \"string\", {\n nullable: true,\n query: { searchable: true, filterable: true, exact: true, sortable: true },\n }),\n prop(\"capacity\", \"double\", {\n query: { searchable: true, filterable: true, sortable: true },\n }),\n prop(\"occupied\", \"boolean\", {\n query: { searchable: true, filterable: true, exact: true, facet: true },\n }),\n prop(\"status\", stringEnum([\"active\", \"paused\"]), {\n query: { searchable: true, filterable: true, exact: true, facet: true },\n }),\n prop(\n \"tags\",\n { type: \"array\", items: \"string\" },\n { query: { searchable: true, filterable: true } }\n ),\n prop(\n \"metadata\",\n { type: \"map\", keySchema: \"string\", valueSchema: \"string\" },\n { query: { searchable: true, filterable: true } }\n ),\n prop(\"embedding\", { type: \"array\", items: \"double\" }, { query: { searchable: true } }),\n ],\n links: [link(\"hasDevice\", Device)],\n search: {\n defaultText: [\"name\", \"description\"],\n },\n})\n\nconst Zone = defineObjectType({\n id: \"ContractZone\",\n name: \"Contract Zone\",\n properties: [prop(\"id\", \"string\", { required: true, primary: true })],\n links: [link(\"hasDevice\", Device)],\n})\n\nconst Asset = defineObjectType({\n id: \"ContractAsset\",\n name: \"Contract Asset\",\n properties: [prop(\"id\", \"string\", { required: true, primary: true })],\n})\n\nconst LaptopAsset = defineObjectType({\n id: \"ContractLaptopAsset\",\n name: \"Contract Laptop Asset\",\n extends: Asset,\n properties: [],\n})\n\nconst DefaultTextBase = defineObjectType({\n id: \"ContractDefaultTextBase\",\n name: \"Contract Default Text Base\",\n properties: [\n prop(\"id\", \"string\", { required: true, primary: true }),\n prop(\"name\", \"string\", { query: { searchable: true, text: true } }),\n prop(\"alias\", \"string\"),\n ],\n search: { defaultText: [\"name\"] },\n})\n\nconst DefaultTextChild = defineObjectType({\n id: \"ContractDefaultTextChild\",\n name: \"Contract Default Text Child\",\n extends: DefaultTextBase,\n properties: [prop(\"alias\", \"string\", { query: { searchable: true, text: true } })],\n search: { defaultText: [\"alias\"] },\n})\n\nconst Task = defineObjectType({\n id: \"ContractTask\",\n name: \"Contract Task\",\n properties: [\n prop(\"id\", \"string\", {\n required: true,\n primary: true,\n query: { searchable: true, sortable: true },\n }),\n prop(\"assignee\", ref.user(), {\n nullable: true,\n query: { searchable: true, filterable: true, facet: true },\n }),\n prop(\n \"reviewers\",\n { type: \"array\", items: ref.user() },\n { query: { searchable: true, filterable: true } }\n ),\n ],\n})\n\nexport const objectQueryContractOntology = new OntologyRegistry({\n sources: [Room, Device, Zone, Asset, LaptopAsset, DefaultTextBase, DefaultTextChild, Task],\n})\n\n/**\n * Runs the shared object-query provider contract against any ObjectStorage.\n *\n * The contract defines the portable V1 query surface: capability declarations,\n * validation/normalization handoff, provider pushdown, bounded fallback,\n * canonical reference sets, traversal, set operations, pagination, search profile defaults, and stable\n * structured rejections for features outside a provider's capability map.\n */\nexport function runObjectQueryProviderContractSuite<TStorage extends Storage>(\n label: string,\n options: ObjectQueryProviderContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (\n body: (context: {\n readonly storage: TStorage\n readonly objects: TStorage[\"objects\"]\n readonly fixture: MaterializerTestFixture\n }) => Promise<void>\n ): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body({\n storage,\n objects: storage.objects,\n fixture: createMaterializerTestFixture({\n projectId,\n ontology: objectQueryContractOntology,\n storage,\n }),\n })\n } finally {\n await options.teardown?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"normalizes query shape and resolves search profile defaults\", () => {\n const normalized = normalizeObjectQuery({\n kind: \"limit\",\n limit: 10,\n input: {\n kind: \"limit\",\n limit: 3,\n input: {\n kind: \"project\",\n properties: [\"id\", \"name\", \"id\"],\n input: {\n kind: \"text\",\n query: \"alpha\",\n fields: [\"name\", \"description\", \"name\"],\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n })\n\n expect(normalized.kind).toBe(\"limit\")\n if (normalized.kind !== \"limit\") return\n expect(normalized.limit).toBe(3)\n expect(normalized.input.kind).toBe(\"project\")\n if (normalized.input.kind !== \"project\") return\n expect(normalized.input.properties).toEqual([\"id\", \"name\"])\n expect(normalized.input.input.kind).toBe(\"text\")\n if (normalized.input.input.kind !== \"text\") return\n expect(normalized.input.input.fields).toEqual([\"name\", \"description\"])\n\n const validated = validateObjectQuery(\n { kind: \"text\", query: \"alpha\", input: { kind: \"start\", objectTypeId: Room.id } },\n { ontology: objectQueryContractOntology }\n )\n expect(validated.query.kind).toBe(\"text\")\n if (validated.query.kind === \"text\") {\n expect(validated.query.fields).toBeUndefined()\n expect(validated.query.fieldsByObjectType).toEqual({\n [Room.id]: [\"name\", \"description\"],\n })\n }\n })\n\n test(\"collects validation failures before provider planning\", () => {\n const issues = collectObjectQueryValidationIssues(\n {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"missing\", value: \"x\" },\n input: {\n kind: \"text\",\n query: \"alpha\",\n fields: [\"capacity\"],\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n { ontology: objectQueryContractOntology }\n )\n\n expect(issues.map((issue) => issue.code)).toEqual(\n expect.arrayContaining([\n \"unknown_property\",\n \"query_field_not_enabled\",\n \"text_field_not_string_like\",\n ])\n )\n })\n\n test(\"declares the portable V1 query capability surface\", async () => {\n await withStorage(async ({ objects: storage }) => {\n const capabilities = storage.queryCapabilities()\n\n expect(capabilities.queryObjects).toBe(true)\n expect(capabilities.countObjects).toBe(true)\n expect(capabilities.existsObjects).toBe(true)\n expect(capabilities.facetObjects).toBe(true)\n for (const node of [\n \"start\",\n \"filter\",\n \"text\",\n \"sort\",\n \"limit\",\n \"page\",\n \"traverse\",\n \"set\",\n \"project\",\n ] as const) {\n expect(capabilities.nodes?.[node]).toBe(true)\n }\n for (const op of [\n \"and\",\n \"or\",\n \"not\",\n \"eq\",\n \"neq\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n \"in\",\n \"exists\",\n \"contains\",\n ] as const) {\n expect(capabilities.predicateOps?.[op]).toBe(true)\n }\n expect(capabilities.sortKinds?.property).toBe(true)\n expect(capabilities.traversalDirections?.outgoing).toBe(true)\n expect(capabilities.traversalDirections?.incoming).toBe(true)\n expect(capabilities.setOps?.union).toBe(true)\n expect(capabilities.setOps?.intersect).toBe(true)\n expect(capabilities.setOps?.subtract).toBe(true)\n })\n })\n\n test(\"pushes down scalar predicates, boolean groups, sorting, limits, and projections\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const result = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"project\",\n properties: [\"id\", \"name\", \"capacity\"],\n input: {\n kind: \"limit\",\n limit: 2,\n input: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"capacity\", direction: \"desc\" }],\n input: {\n kind: \"filter\",\n predicate: {\n op: \"and\",\n items: [\n { op: \"eq\", propertyId: \"status\", value: \"active\" },\n { op: \"neq\", propertyId: \"name\", value: \"Gamma Huddle\" },\n { op: \"gte\", propertyId: \"capacity\", value: 10 },\n { op: \"lte\", propertyId: \"capacity\", value: 30 },\n { op: \"in\", propertyId: \"floor\", values: [\"2\"] },\n { op: \"contains\", propertyId: \"tags\", value: \"lab\" },\n {\n op: \"or\",\n items: [\n { op: \"contains\", propertyId: \"name\", value: \"Alpha\" },\n { op: \"contains\", propertyId: \"metadata\", value: \"wing\" },\n ],\n },\n { op: \"not\", item: { op: \"eq\", propertyId: \"id\", value: \"missing\" } },\n ],\n },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(result.plan.mode).toBe(\"pushdown\")\n expect(ids(result)).toEqual([\"room-beta\", \"room-alpha\"])\n expect(result.objects[0]?.properties).toEqual({\n id: \"room-beta\",\n name: \"Beta Lab\",\n capacity: 30,\n })\n expect(result.total).toBe(2)\n expect(result.hasMore).toBe(false)\n })\n })\n\n test(\"queries opaque ids through canonical exact refs\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n const issue297 = \"github:issue:sixb-ai/sixb#297\"\n const issue298 = \"github:issue:sixb-ai/sixb#298\"\n await fixture.seed({\n objects: [\n objectSeed(Asset.id, issue297, { id: issue297 }),\n objectSeed(Asset.id, issue298, { id: issue298 }),\n ],\n })\n\n const refs = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"refs\",\n refs: [\n { objectTypeId: Asset.id, primaryId: issue298 },\n { objectTypeId: Asset.id, primaryId: issue297 },\n ],\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n // The JSON query body preserves URL-reserved characters without encoding.\n expect(refs.plan.mode).toBe(\n storage.queryCapabilities().nodes?.refs === true ? \"pushdown\" : \"fallback\"\n )\n expect(ids(refs)).toEqual([issue297, issue298])\n })\n })\n\n test(\"executes canonical heterogeneous refs with pagination and projection\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const refs: Extract<ObjectQuery, { kind: \"refs\" }>[\"refs\"] = [\n { objectTypeId: Device.id, primaryId: \"device-sensor\" },\n { objectTypeId: Room.id, primaryId: \"room-gamma\" },\n { objectTypeId: Room.id, primaryId: \"missing\" },\n { objectTypeId: Room.id, primaryId: \"room-alpha\" },\n ]\n const first = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"project\",\n properties: [\"id\"],\n input: { kind: \"page\", pageSize: 2, input: { kind: \"refs\", refs } },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const second = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"project\",\n properties: [\"id\"],\n input: {\n kind: \"page\",\n pageSize: 2,\n pageToken: first.nextPageToken,\n input: { kind: \"refs\", refs },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const count = await countObjects(\n { projectId, query: { kind: \"refs\", refs } },\n { ontology: objectQueryContractOntology, storage }\n )\n\n const expectedMode =\n storage.queryCapabilities().nodes?.refs === true ? \"pushdown\" : \"fallback\"\n expect(first.plan.mode).toBe(expectedMode)\n expect(ids(first)).toEqual([\"device-sensor\", \"room-alpha\"])\n expect(first.objects.map((row) => row.properties)).toEqual([\n { id: \"device-sensor\" },\n { id: \"room-alpha\" },\n ])\n expect(first.total).toBe(3)\n expect(first.hasMore).toBe(true)\n expect(first.nextPageToken).toBeTruthy()\n expect(second.plan.mode).toBe(expectedMode)\n expect(ids(second)).toEqual([\"room-gamma\"])\n expect(second.hasMore).toBe(false)\n expect(count.plan.mode).toBe(expectedMode)\n expect(count.count).toBe(3)\n })\n })\n\n test(\"composes refs with traversal in provider pushdown\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n if (storage.queryCapabilities().nodes?.refs !== true) return\n await seedObjectQueryContractData(fixture)\n\n const result = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"traverse\",\n direction: \"outgoing\",\n linkId: \"hasDevice\",\n input: {\n kind: \"refs\",\n refs: [{ objectTypeId: Room.id, primaryId: \"room-alpha\" }],\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(result.plan.mode).toBe(\"pushdown\")\n expect(ids(result)).toEqual([\"device-projector\"])\n })\n })\n\n test(\"queries and paginates incident links over a provider-backed object set\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n const query: ObjectQuery = {\n kind: \"refs\",\n refs: [{ objectTypeId: Device.id, primaryId: \"device-projector\" }],\n }\n\n const first = await executeObjectQueryLinks(\n {\n projectId,\n query,\n direction: \"incoming\",\n includeObjects: true,\n pageSize: 1,\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const second = await executeObjectQueryLinks(\n {\n projectId,\n query,\n direction: \"incoming\",\n includeObjects: true,\n pageSize: 1,\n pageToken: first.nextPageToken,\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(first.links).toEqual([\n expect.objectContaining({\n sourceTypeId: Room.id,\n sourceId: \"room-alpha\",\n linkId: \"hasDevice\",\n targetTypeId: Device.id,\n targetId: \"device-projector\",\n }),\n ])\n expect(first.objects.map((row) => row.primaryId)).toEqual([\n \"device-projector\",\n \"room-alpha\",\n ])\n expect(first.hasMore).toBe(true)\n expect(first.nextPageToken).toBeTruthy()\n expect(second.links).toEqual([\n expect.objectContaining({\n sourceTypeId: Zone.id,\n sourceId: \"zone-one\",\n linkId: \"hasDevice\",\n targetTypeId: Device.id,\n targetId: \"device-projector\",\n }),\n ])\n expect(second.objects.map((row) => row.primaryId)).toEqual([\"device-projector\", \"zone-one\"])\n expect(second.hasMore).toBe(false)\n })\n })\n\n test(\"does not admit a provider page probe into the link selector\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const result = await executeObjectQueryLinks(\n {\n projectId,\n query: {\n kind: \"page\",\n pageSize: 1,\n input: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\", direction: \"asc\" }],\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n direction: \"outgoing\",\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(result.links).toEqual([\n expect.objectContaining({ sourceId: \"room-alpha\", targetId: \"device-projector\" }),\n ])\n })\n })\n\n test(\"matches null, missing, neq, in, and not predicate semantics\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const nullable = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\", direction: \"asc\" }],\n input: {\n kind: \"filter\",\n predicate: {\n op: \"or\",\n items: [\n { op: \"eq\", propertyId: \"floor\", value: null },\n { op: \"exists\", propertyId: \"floor\", value: false },\n ],\n },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const notTwoOrNull = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\", direction: \"asc\" }],\n input: {\n kind: \"filter\",\n predicate: {\n op: \"and\",\n items: [\n { op: \"neq\", propertyId: \"floor\", value: \"2\" },\n { op: \"in\", propertyId: \"floor\", values: [\"1\", null] },\n ],\n },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const notNullFloor = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\", direction: \"asc\" }],\n input: {\n kind: \"filter\",\n predicate: { op: \"neq\", propertyId: \"floor\", value: null },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const notFloorTwo = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\", direction: \"asc\" }],\n input: {\n kind: \"filter\",\n predicate: { op: \"not\", item: { op: \"eq\", propertyId: \"floor\", value: \"2\" } },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(ids(nullable)).toEqual([\"room-missing-floor\", \"room-null-floor\"])\n expect(ids(notTwoOrNull)).toEqual([\"room-gamma\", \"room-null-floor\"])\n expect(ids(notNullFloor)).toEqual([\n \"room-alpha\",\n \"room-beta\",\n \"room-gamma\",\n \"room-missing-floor\",\n ])\n expect(ids(notFloorTwo)).toEqual([\"room-gamma\", \"room-missing-floor\", \"room-null-floor\"])\n })\n })\n\n test(\"keeps page tokens stable when projection hides sorted cursor fields\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const input: ObjectQuery = {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"capacity\", direction: \"desc\" }],\n input: {\n kind: \"filter\",\n predicate: { op: \"exists\", propertyId: \"capacity\", value: true },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n }\n const page1 = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"project\",\n properties: [\"id\"],\n input: { kind: \"page\", pageSize: 2, input },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const page2 = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"project\",\n properties: [\"id\"],\n input: { kind: \"page\", pageSize: 2, pageToken: page1.nextPageToken, input },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(page1.plan.mode).toBe(\"pushdown\")\n expect(ids(page1)).toEqual([\"room-beta\", \"room-gamma\"])\n expect(page1.objects.map((row) => row.properties)).toEqual([\n { id: \"room-beta\" },\n { id: \"room-gamma\" },\n ])\n expect(page1.hasMore).toBe(true)\n expect(page1.nextPageToken).toBeTruthy()\n expect(ids(page2)).toEqual([\"room-alpha\"])\n })\n })\n\n test(\"omits totals when requested without losing hasMore\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const limited = await executeObjectQuery(\n {\n projectId,\n includeTotal: false,\n query: { kind: \"limit\", limit: 2, input: { kind: \"start\", objectTypeId: Room.id } },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const page = await executeObjectQuery(\n {\n projectId,\n includeTotal: false,\n query: { kind: \"page\", pageSize: 2, input: { kind: \"start\", objectTypeId: Room.id } },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const sortedLimited = await executeObjectQuery(\n {\n projectId,\n includeTotal: false,\n query: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"capacity\", direction: \"desc\" }],\n input: { kind: \"limit\", limit: 2, input: { kind: \"start\", objectTypeId: Room.id } },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(limited.plan.mode).toBe(\"pushdown\")\n expect(ids(limited)).toEqual([\"room-alpha\", \"room-beta\"])\n expect(limited.total).toBeUndefined()\n expect(limited.hasMore).toBe(true)\n expect(ids(page)).toEqual([\"room-alpha\", \"room-beta\"])\n expect(page.total).toBeUndefined()\n expect(page.hasMore).toBe(true)\n expect(page.nextPageToken).toBeTruthy()\n expect(ids(sortedLimited)).toEqual([\"room-beta\", \"room-alpha\"])\n expect(sortedLimited.total).toBeUndefined()\n expect(sortedLimited.hasMore).toBe(true)\n })\n })\n\n test(\"counts matching objects without returning rows\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const active = await countObjects(\n {\n projectId,\n query: {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"status\", value: \"active\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const limited = await countObjects(\n {\n projectId,\n query: { kind: \"limit\", limit: 2, input: { kind: \"start\", objectTypeId: Room.id } },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(active.plan.mode).toBe(\"pushdown\")\n expect(active.count).toBe(2)\n expect(limited.count).toBe(5)\n })\n })\n\n test(\"checks existence without returning rows\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const active = await existsObjects(\n {\n projectId,\n query: {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"status\", value: \"active\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const missing = await existsObjects(\n {\n projectId,\n query: {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"name\", value: \"No Such Room\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const limited = await existsObjects(\n {\n projectId,\n query: { kind: \"limit\", limit: 0, input: { kind: \"start\", objectTypeId: Room.id } },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(active.plan.mode).toBe(\"pushdown\")\n expect(active.exists).toBe(true)\n expect(missing.exists).toBe(false)\n expect(limited.exists).toBe(true)\n })\n })\n\n test(\"plans aggregate operations without outer row-shaping requirements\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n const query: ObjectQuery = {\n kind: \"sort\",\n fields: [{ kind: \"relevance\" }],\n input: {\n kind: \"text\",\n query: \"alpha\",\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n }\n\n const count = await countObjects(\n { projectId, query },\n { ontology: objectQueryContractOntology, storage }\n )\n const exists = await existsObjects(\n { projectId, query },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(count.plan.mode).toBe(\"pushdown\")\n if (count.plan.mode !== \"pushdown\") return\n expect(count.plan.query.kind).toBe(\"text\")\n expect(count.count).toBe(1)\n expect(exists.plan.mode).toBe(\"pushdown\")\n if (exists.plan.mode !== \"pushdown\") return\n expect(exists.plan.query.kind).toBe(\"text\")\n expect(exists.exists).toBe(true)\n })\n })\n\n test(\"matches user references on type and id, and groups facets by user\", async () => {\n await withStorage(async ({ storage: complete, objects: storage, fixture }) => {\n const auth = complete.auth\n if (!auth) throw new Error(\"The object query contract requires auth storage.\")\n for (const id of [\"usr_alice\", \"usr_bob\", \"usr_carol\"]) {\n await auth.users.create({ projectId, id, email: `${id}@example.com` })\n }\n const alice = { type: \"user\", id: \"usr_alice\" }\n const bob = { type: \"user\", id: \"usr_bob\" }\n const carol = { type: \"user\", id: \"usr_carol\" }\n await fixture.seed({\n objects: [\n objectSeed(Task.id, \"t1\", { assignee: alice, reviewers: [bob] }),\n objectSeed(Task.id, \"t2\", { assignee: alice, reviewers: [bob, carol] }),\n objectSeed(Task.id, \"t3\", { assignee: alice, reviewers: [] }),\n objectSeed(Task.id, \"t4\", { assignee: bob, reviewers: [alice] }),\n objectSeed(Task.id, \"t5\", { assignee: bob, reviewers: [carol] }),\n objectSeed(Task.id, \"t6\", { assignee: null, reviewers: [] }),\n objectSeed(Task.id, \"t7\", { reviewers: [] }),\n ],\n })\n\n const ids = async (predicate: ObjectQueryPredicate) => {\n const result = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\" }],\n input: {\n kind: \"filter\",\n predicate,\n input: { kind: \"start\", objectTypeId: Task.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n expect(result.plan.mode).toBe(\"pushdown\")\n return result.objects.map((object) => object.primaryId)\n }\n\n expect(await ids({ op: \"eq\", propertyId: \"assignee\", value: alice })).toEqual([\n \"t1\",\n \"t2\",\n \"t3\",\n ])\n // Field order is not part of the value.\n expect(\n await ids({ op: \"eq\", propertyId: \"assignee\", value: { id: \"usr_alice\", type: \"user\" } })\n ).toEqual([\"t1\", \"t2\", \"t3\"])\n expect(await ids({ op: \"neq\", propertyId: \"assignee\", value: alice })).toEqual([\n \"t4\",\n \"t5\",\n \"t6\",\n \"t7\",\n ])\n expect(await ids({ op: \"in\", propertyId: \"assignee\", values: [bob, null] })).toEqual([\n \"t4\",\n \"t5\",\n \"t6\",\n ])\n expect(await ids({ op: \"exists\", propertyId: \"assignee\", value: false })).toEqual([\"t7\"])\n expect(await ids({ op: \"contains\", propertyId: \"reviewers\", value: bob })).toEqual([\n \"t1\",\n \"t2\",\n ])\n expect(await ids({ op: \"contains\", propertyId: \"reviewers\", value: carol })).toEqual([\n \"t2\",\n \"t5\",\n ])\n expect(await ids({ op: \"contains\", propertyId: \"reviewers\", value: alice })).toEqual([\"t4\"])\n\n const facets = await facetObjects(\n {\n projectId,\n query: { kind: \"start\", objectTypeId: Task.id },\n facets: [{ propertyId: \"assignee\", limit: 10 }],\n },\n { ontology: objectQueryContractOntology, storage }\n )\n expect(facets.plan.mode).toBe(\"pushdown\")\n expect(facets.facets).toEqual([\n {\n propertyId: \"assignee\",\n buckets: [\n { value: alice, count: 3 },\n { value: bob, count: 2 },\n { value: null, count: 1 },\n ],\n },\n ])\n })\n })\n\n test(\"counts matching objects by facetable properties without returning rows\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const status = await facetObjects(\n {\n projectId,\n query: { kind: \"start\", objectTypeId: Room.id },\n facets: [\n { propertyId: \"status\", limit: 10 },\n { propertyId: \"occupied\", limit: 10 },\n ],\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const limited = await facetObjects(\n {\n projectId,\n query: { kind: \"limit\", limit: 0, input: { kind: \"start\", objectTypeId: Room.id } },\n facets: [\n { propertyId: \"status\", limit: 10 },\n { propertyId: \"occupied\", limit: 10 },\n ],\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(status.plan.mode).toBe(\"pushdown\")\n expect(status.facets).toEqual([\n {\n propertyId: \"status\",\n buckets: [\n { value: \"paused\", count: 3 },\n { value: \"active\", count: 2 },\n ],\n },\n {\n propertyId: \"occupied\",\n buckets: [\n { value: false, count: 3 },\n { value: true, count: 2 },\n ],\n },\n ])\n expect(limited.facets).toEqual(status.facets)\n })\n })\n\n test(\"pushes down traversal and set operations\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const outgoing = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"traverse\",\n direction: \"outgoing\",\n linkId: \"hasDevice\",\n input: {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"status\", value: \"active\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const incoming = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"traverse\",\n direction: \"incoming\",\n linkId: \"hasDevice\",\n input: { kind: \"start\", objectTypeId: Device.id },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const incomingRooms = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"traverse\",\n direction: \"incoming\",\n linkId: \"hasDevice\",\n sourceObjectTypeId: Room.id,\n input: { kind: \"start\", objectTypeId: Device.id },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const incomingZones = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"traverse\",\n direction: \"incoming\",\n linkId: \"hasDevice\",\n sourceObjectTypeId: Zone.id,\n input: { kind: \"start\", objectTypeId: Device.id },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const intersect = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"set\",\n op: \"intersect\",\n inputs: [\n {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"status\", value: \"active\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n {\n kind: \"filter\",\n predicate: { op: \"contains\", propertyId: \"tags\", value: \"lab\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n ],\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n const subtract = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"set\",\n op: \"subtract\",\n inputs: [\n {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"status\", value: \"active\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n {\n kind: \"filter\",\n predicate: { op: \"contains\", propertyId: \"name\", value: \"Alpha\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n ],\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(outgoing.plan.mode).toBe(\"pushdown\")\n expect(incoming.plan.mode).toBe(\"pushdown\")\n expect(sortedIds(outgoing)).toEqual([\"device-projector\", \"device-sensor\"])\n expect(sortedIds(incoming)).toEqual([\"room-alpha\", \"room-beta\", \"zone-one\"])\n expect(incomingRooms.plan.mode).toBe(\"pushdown\")\n expect(sortedIds(incomingRooms)).toEqual([\"room-alpha\", \"room-beta\"])\n expect(sortedIds(incomingZones)).toEqual([\"zone-one\"])\n expect(sortedIds(intersect)).toEqual([\"room-alpha\", \"room-beta\"])\n expect(ids(subtract)).toEqual([\"room-beta\"])\n })\n })\n\n test(\"hydrates expand links identically via pushdown or bounded fallback\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const outgoing = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"expand\",\n expansions: [{ linkId: \"hasDevice\", direction: \"outgoing\" }],\n input: {\n kind: \"limit\",\n limit: 10,\n input: {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"status\", value: \"active\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n // A provider that declares expand pushdown hydrates links in-database;\n // otherwise the same links come back through the bounded fallback. Either\n // path must produce identical results.\n const expandMode = storage.queryCapabilities().nodes?.expand ? \"pushdown\" : \"fallback\"\n expect(outgoing.plan.mode).toBe(expandMode)\n expect(expandedIds(outgoing, \"room-alpha\", \"hasDevice\")).toEqual([\"device-projector\"])\n expect(expandedIds(outgoing, \"room-beta\", \"hasDevice\")).toEqual([\"device-sensor\"])\n\n const incoming = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"expand\",\n expansions: [{ linkId: \"hasDevice\", direction: \"incoming\" }],\n input: {\n kind: \"limit\",\n limit: 10,\n input: { kind: \"start\", objectTypeId: Device.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n // device-projector is linked from both a Room and a Zone.\n expect(incoming.plan.mode).toBe(expandMode)\n expect(expandedIds(incoming, \"device-projector\", \"hasDevice\")).toEqual([\n \"room-alpha\",\n \"zone-one\",\n ])\n expect(expandedIds(incoming, \"device-sensor\", \"hasDevice\")).toEqual([\"room-beta\"])\n })\n })\n\n test(\"expands includeSubtypes outside storage when the expanded query can push down\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const result = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"limit\",\n limit: 10,\n input: { kind: \"start\", objectTypeId: Asset.id, includeSubtypes: true },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(result.plan.mode).toBe(\"pushdown\")\n expect(sortedIds(result)).toEqual([\"asset-base\", \"laptop-1\"])\n })\n })\n\n test(\"pushes down basic text search using search profile defaults\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n\n const result = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"name\", direction: \"asc\" }],\n input: {\n kind: \"text\",\n query: \"alpha collaboration\",\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(result.plan.mode).toBe(\"pushdown\")\n expect(ids(result)).toEqual([\"room-alpha\"])\n })\n })\n\n test(\"scopes search profile defaults by object type for subtype text queries\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await fixture.seed({\n objects: [\n {\n ref: { objectTypeId: DefaultTextBase.id, primaryId: \"default-base\" },\n properties: { id: \"default-base\", name: \"ordinary\", alias: \"secret\" },\n },\n {\n ref: { objectTypeId: DefaultTextChild.id, primaryId: \"default-child\" },\n properties: { id: \"default-child\", name: \"ordinary\", alias: \"secret\" },\n },\n ],\n })\n\n const result = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"text\",\n query: \"secret\",\n input: {\n kind: \"start\",\n objectTypeId: DefaultTextBase.id,\n includeSubtypes: true,\n },\n },\n },\n { ontology: objectQueryContractOntology, storage }\n )\n\n expect(ids(result)).toEqual([\"default-child\"])\n })\n })\n\n test(\"executes or rejects relevance sorting according to provider capabilities\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n const query: ObjectQuery = {\n kind: \"sort\",\n fields: [{ kind: \"relevance\" }],\n input: {\n kind: \"text\",\n query: \"alpha\",\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n }\n\n if (storage.queryCapabilities().sortKinds?.relevance === true) {\n const result = await executeObjectQuery(\n { projectId, query },\n { ontology: objectQueryContractOntology, storage }\n )\n expect(result.plan.mode).toBe(\"pushdown\")\n expect(ids(result)).toEqual([\"room-alpha\"])\n return\n }\n\n await expectPlanningIssue(\n executeObjectQuery(\n { projectId, query },\n { ontology: objectQueryContractOntology, storage }\n ),\n \"sort_kind_not_supported\"\n )\n })\n })\n\n test(\"plans or rejects vector search according to provider capabilities\", async () => {\n await withStorage(async ({ objects: storage }) => {\n // Keep generic fixture writes usable by providers without vector persistence.\n const ontology = new OntologyRegistry({\n sources: [\n Device,\n defineObjectType({\n ...Room,\n search: {\n vectors: {\n content: {\n source: [\"name\", \"description\"],\n model: {\n providerId: \"test\",\n modelId: \"embedding\",\n definition: {\n kind: \"embedding\",\n providerId: \"test\",\n modelId: \"embedding\",\n dimensions: 2,\n },\n },\n },\n },\n },\n }),\n ],\n })\n const query: ObjectQuery = {\n kind: \"vector\",\n profile: \"content\",\n vector: [1, 0],\n k: 2,\n input: { kind: \"start\", objectTypeId: Room.id },\n }\n\n // Native vector execution is covered by the dedicated vector-search suite.\n const validated = validateObjectQuery(query, { ontology })\n const plan = planObjectQuery(validated.query, {\n capabilities: storage.queryCapabilities(),\n hasQueryObjects: typeof storage.queryObjects === \"function\",\n })\n if (storage.queryCapabilities().nodes?.vector === true) {\n expect(plan.mode).toBe(\"pushdown\")\n } else {\n expect(plan.mode).toBe(\"rejected\")\n expect(plan.issues.map((issue) => issue.code)).toContain(\"query_node_not_supported\")\n }\n })\n })\n\n test(\"executes bounded fallback when pushdown is disabled for a safe query\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n const fallbackStorage = withoutQueryPushdown(storage)\n\n const result = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"limit\",\n limit: 2,\n input: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"name\", direction: \"asc\" }],\n input: {\n kind: \"filter\",\n predicate: { op: \"eq\", propertyId: \"status\", value: \"active\" },\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage: fallbackStorage, maxFallbackRows: 20 }\n )\n\n expect(result.plan.mode).toBe(\"fallback\")\n expect(ids(result)).toEqual([\"room-alpha\", \"room-beta\"])\n })\n })\n\n test(\"rejects fallback for unsupported query nodes when pushdown is disabled\", async () => {\n await withStorage(async ({ objects: storage, fixture }) => {\n await seedObjectQueryContractData(fixture)\n const fallbackStorage = withoutQueryPushdown(storage)\n\n await expectPlanningIssue(\n executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"limit\",\n limit: 5,\n input: {\n kind: \"traverse\",\n direction: \"outgoing\",\n linkId: \"hasDevice\",\n input: { kind: \"start\", objectTypeId: Room.id },\n },\n },\n },\n { ontology: objectQueryContractOntology, storage: fallbackStorage, maxFallbackRows: 20 }\n ),\n \"fallback_node_not_supported\"\n )\n })\n })\n })\n}\n\nexport async function seedObjectQueryContractData(fixture: MaterializerTestFixture): Promise<void> {\n await fixture.seed({\n objects: [\n objectSeed(Room.id, \"room-alpha\", {\n id: \"room-alpha\",\n name: \"Alpha Conference\",\n description: \"north alpha collaboration\",\n floor: \"2\",\n capacity: 10,\n occupied: true,\n status: \"active\",\n tags: [\"lab\", \"video\"],\n metadata: { wing: \"north\" },\n embedding: [1, 0],\n }),\n objectSeed(Room.id, \"room-beta\", {\n id: \"room-beta\",\n name: \"Beta Lab\",\n description: \"south beta focus\",\n floor: \"2\",\n capacity: 30,\n occupied: false,\n status: \"active\",\n tags: [\"lab\"],\n metadata: { wing: \"south\" },\n embedding: [0.8, 0.2],\n }),\n objectSeed(Room.id, \"room-gamma\", {\n id: \"room-gamma\",\n name: \"Gamma Huddle\",\n description: \"quiet office\",\n floor: \"1\",\n capacity: 20,\n occupied: true,\n status: \"paused\",\n tags: [\"office\"],\n metadata: { zone: \"quiet\" },\n embedding: [0, 1],\n }),\n objectSeed(Room.id, \"room-null-floor\", {\n id: \"room-null-floor\",\n name: \"Null Floor\",\n description: \"nullable floor fixture\",\n floor: null,\n occupied: false,\n status: \"paused\",\n tags: [],\n metadata: {},\n embedding: [0, 0],\n }),\n objectSeed(Room.id, \"room-missing-floor\", {\n id: \"room-missing-floor\",\n name: \"Missing Floor\",\n description: \"missing floor fixture\",\n occupied: false,\n status: \"paused\",\n tags: [],\n metadata: {},\n embedding: [0, 0],\n }),\n objectSeed(Device.id, \"device-projector\", {\n id: \"device-projector\",\n name: \"Projector\",\n }),\n objectSeed(Device.id, \"device-sensor\", { id: \"device-sensor\", name: \"Sensor\" }),\n objectSeed(Asset.id, \"asset-base\", { id: \"asset-base\" }),\n objectSeed(LaptopAsset.id, \"laptop-1\", { id: \"laptop-1\" }),\n objectSeed(Zone.id, \"zone-one\", { id: \"zone-one\" }),\n ],\n links: [\n linkSeed(Room.id, \"room-alpha\", \"hasDevice\", Device.id, \"device-projector\"),\n linkSeed(Room.id, \"room-beta\", \"hasDevice\", Device.id, \"device-sensor\"),\n linkSeed(Zone.id, \"zone-one\", \"hasDevice\", Device.id, \"device-projector\"),\n ],\n })\n}\n\nfunction objectSeed(\n objectTypeId: string,\n primaryId: string,\n properties: Record<string, JsonValue>\n): MaterializerFixtureObject {\n return {\n ref: { objectTypeId, primaryId },\n properties,\n }\n}\n\nfunction linkSeed(\n sourceTypeId: string,\n sourceId: string,\n linkId: string,\n targetTypeId: string,\n targetId: string\n): MaterializerFixtureLink {\n return {\n ref: {\n source: { objectTypeId: sourceTypeId, primaryId: sourceId },\n linkId,\n target: { objectTypeId: targetTypeId, primaryId: targetId },\n },\n }\n}\n\nfunction ids(result: QueryObjectsResult): string[] {\n return result.objects.map((row) => row.primaryId)\n}\n\n// Sorted primaryIds of the objects hydrated under `linkId` on the parent row.\nfunction expandedIds(result: QueryObjectsResult, parentId: string, linkId: string): string[] {\n const parent = result.objects.find((row) => row.primaryId === parentId)\n if (!parent) throw new Error(`parent row '${parentId}' not found`)\n const value = parent.links?.[linkId]\n if (!Array.isArray(value)) throw new Error(`expected an array of links under '${linkId}'`)\n return value.map((linked) => linked.primaryId).sort()\n}\n\nfunction sortedIds(result: QueryObjectsResult): string[] {\n return [...ids(result)].sort()\n}\n\nfunction withoutQueryPushdown(storage: ObjectStorage): ObjectStorage {\n return new Proxy(storage, {\n get(target, property, receiver) {\n if (property === \"queryCapabilities\") return () => ({ queryObjects: false })\n if (property === \"queryObjects\") return undefined\n\n const value = Reflect.get(target, property, receiver)\n return typeof value === \"function\" ? value.bind(target) : value\n },\n })\n}\n\nasync function expectPlanningIssue(promise: Promise<unknown>, code: string): Promise<void> {\n try {\n await promise\n } catch (error) {\n expect(error).toBeInstanceOf(ObjectQueryPlanningError)\n if (error instanceof ObjectQueryPlanningError) {\n expect(error.issues.map((issue) => issue.code)).toContain(code)\n }\n return\n }\n\n throw new Error(`Expected ObjectQueryPlanningError with code '${code}'`)\n}\n",
|
|
31
31
|
"import { describe, expect, test } from \"bun:test\"\nimport type { JsonValue } from \"../json\"\nimport { executeObjectQuery, type ObjectQuery } from \"../objects/query\"\nimport { defineObjectType, link, OntologyRegistry, prop } from \"../ontology\"\nimport {\n compileSelectedObjectReadScope,\n linkBatchKey,\n MAX_OBJECT_READ_FACETS,\n type ObjectReadExecutionLimits,\n type ObjectReadScopeFactory,\n type ObjectReadStorage,\n objectBatchKey,\n type SelectedObjectReadScope,\n} from \"../storage/objects\"\nimport type { Storage } from \"../storage/types\"\nimport {\n createMaterializerTestFixture,\n type MaterializerFixtureLink,\n type MaterializerFixtureObject,\n type MaterializerTestFixture,\n} from \"./materializer-fixture\"\n\nexport interface ObjectReadScopeContractHarness<TStorage extends Storage> {\n readonly storage: TStorage\n /** Kept separate from `storage.objects` until the effective Storage contract activates it. */\n readonly objectReadScopeFactory: ObjectReadScopeFactory\n}\n\nexport interface ObjectReadScopeContractSuiteOptions<TStorage extends Storage> {\n readonly createHarness: () =>\n | ObjectReadScopeContractHarness<TStorage>\n | Promise<ObjectReadScopeContractHarness<TStorage>>\n readonly teardown?: (harness: ObjectReadScopeContractHarness<TStorage>) => void | Promise<void>\n}\n\nconst projectId = \"object-read-scope-contract\"\nconst otherProjectId = \"object-read-scope-contract-other\"\nconst Product = defineObjectType({\n id: \"ScopeProduct\",\n name: \"Scope Product\",\n properties: [\n prop(\"id\", \"string\", { required: true, primary: true }),\n prop(\"name\", \"string\", { query: { searchable: true, text: true } }),\n prop(\"internal\", \"string\"),\n ],\n search: { defaultText: [\"name\"] },\n})\n\nconst LineItem = defineObjectType({\n id: \"ScopeLineItem\",\n name: \"Scope Line Item\",\n properties: [\n prop(\"id\", \"string\", { required: true, primary: true }),\n prop(\"name\", \"string\", { query: { searchable: true, text: true, sortable: true } }),\n prop(\"price\", \"double\", { query: { searchable: true, filterable: true, sortable: true } }),\n prop(\"reviewNote\", \"string\"),\n prop(\"internal\", \"string\"),\n ],\n links: [link(\"product\", Product, { cardinality: \"one\" })],\n search: { defaultText: [\"name\"] },\n})\n\nconst Proposal = defineObjectType({\n id: \"ScopeProposal\",\n name: \"Scope Proposal\",\n properties: [\n prop(\"id\", \"string\", { required: true, primary: true }),\n prop(\"title\", \"string\", {\n query: { searchable: true, text: true, filterable: true, sortable: true },\n }),\n prop(\"rank\", \"double\", { query: { searchable: true, filterable: true, sortable: true } }),\n prop(\"category\", \"string\", { query: { searchable: true, filterable: true, facet: true } }),\n prop(\"embedding\", { type: \"array\", items: \"double\" }, { query: { searchable: true } }),\n prop(\"secret\", \"string\", { query: { searchable: true, filterable: true, facet: true } }),\n ],\n links: [\n link(\"items\", LineItem, {\n properties: [prop(\"position\", \"double\"), prop(\"label\", \"string\"), prop(\"internal\", \"string\")],\n }),\n link(\"reviewers\", LineItem),\n link.self(\"related\"),\n link(\"aPrivate\", Product),\n link(\"zVisible\", Product),\n ],\n search: { defaultText: [\"title\"] },\n})\n\nexport const objectReadScopeContractOntology = new OntologyRegistry({\n sources: [Proposal, LineItem, Product],\n})\n\nconst limits: ObjectReadExecutionLimits = {\n maxTraversalFacts: 100,\n maxOutputJsonBytes: 1_000_000,\n}\n\n/**\n * Portable selected-object-read contract shared by every storage provider.\n *\n * It verifies the security boundary, not a provider's implementation strategy: selection is live,\n * path-sensitive, applied before every terminal, redacted, project-bound, and independently\n * budgeted.\n */\nexport function runObjectReadScopeContractSuite<TStorage extends Storage>(\n label: string,\n options: ObjectReadScopeContractSuiteOptions<TStorage>\n): void {\n const withHarness = async (\n body: (context: {\n readonly harness: ObjectReadScopeContractHarness<TStorage>\n readonly fixture: MaterializerTestFixture\n }) => Promise<void>\n ): Promise<void> => {\n const harness = await options.createHarness()\n try {\n const fixture = createMaterializerTestFixture({\n projectId,\n ontology: objectReadScopeContractOntology,\n storage: harness.storage,\n })\n await seed(fixture)\n await body({ harness, fixture })\n } finally {\n await options.teardown?.(harness)\n }\n }\n\n describe(label, () => {\n test(\"selects exact live identities, unions properties, and redacts detached rows\", async () => {\n await withHarness(async ({ harness, fixture }) => {\n const reader = createReader(harness.objectReadScopeFactory)\n\n const proposal = await reader.getByPrimaryId({\n projectId,\n objectTypeId: Proposal.id,\n primaryId: \"proposal-1\",\n })\n expect(proposal?.primaryId).toBe(\"proposal-1\")\n expect(proposal?.properties).toEqual({\n id: \"proposal-1\",\n title: \"Visible proposal\",\n rank: 50,\n category: \"visible\",\n embedding: [0, 1],\n })\n expect(proposal?.links).toBeUndefined()\n expect(\n await reader.getByPrimaryId({\n projectId,\n objectTypeId: Proposal.id,\n primaryId: \"proposal-2\",\n })\n ).toBeNull()\n\n const item = await reader.getByPrimaryId({\n projectId,\n objectTypeId: LineItem.id,\n primaryId: \"item:opaque|1\",\n })\n expect(item?.properties).toEqual({\n id: \"item:opaque|1\",\n name: \"Visible item\",\n reviewNote: \"Property union\",\n })\n expect(\n await reader.selectsObjectProperties({\n projectId,\n items: [\n { objectTypeId: LineItem.id, primaryId: \"item:opaque|1\", propertyId: \"price\" },\n { objectTypeId: LineItem.id, primaryId: \"item:opaque|1\", propertyId: \"price\" },\n { objectTypeId: LineItem.id, primaryId: \"item:opaque|1\", propertyId: \"secret\" },\n { objectTypeId: LineItem.id, primaryId: \"item-hidden\", propertyId: \"id\" },\n ],\n })\n ).toEqual([true, true, false, false])\n\n const listed = await reader.list({\n projectId,\n objectTypeId: LineItem.id,\n limit: 1,\n orderBy: \"primaryId\",\n order: \"asc\",\n })\n expect(listed).toMatchObject({ total: 2, hasMore: true })\n expect(listed.objects).toHaveLength(1)\n expect(listed.objects[0]?.primaryId).toBe(\"item:opaque|1\")\n expect(listed.objects[0]?.properties).toEqual({\n id: \"item:opaque|1\",\n name: \"Visible item\",\n reviewNote: \"Property union\",\n })\n expect(listed.objects[0]?.links).toBeUndefined()\n\n if (!item) throw new Error(\"expected a selected item\")\n item.properties.name = \"mutated outside provider\"\n expect(\n (\n await reader.getByPrimaryId({\n projectId,\n objectTypeId: LineItem.id,\n primaryId: \"item:opaque|1\",\n })\n )?.properties\n ).toEqual({ id: \"item:opaque|1\", name: \"Visible item\", reviewNote: \"Property union\" })\n\n await fixture.seed({\n objects: [object(LineItem.id, \"item-live\", { id: \"item-live\", name: \"Added later\" })],\n links: [linkRow(Proposal.id, \"proposal-1\", \"items\", LineItem.id, \"item-live\")],\n })\n expect(\n (\n await reader.getByPrimaryId({\n projectId,\n objectTypeId: LineItem.id,\n primaryId: \"item-live\",\n })\n )?.properties\n ).toEqual({ id: \"item-live\", name: \"Added later\" })\n\n await fixture.commit([\n {\n id: \"delete-live-link\",\n kind: \"link.delete\",\n ref: linkRow(Proposal.id, \"proposal-1\", \"items\", LineItem.id, \"item-live\").ref,\n },\n ])\n expect(\n await reader.getByPrimaryId({\n projectId,\n objectTypeId: LineItem.id,\n primaryId: \"item-live\",\n })\n ).toBeNull()\n })\n })\n\n test(\"supports an empty selection and rejects every cross-project call\", async () => {\n await withHarness(async ({ harness }) => {\n const empty = createReader(harness.objectReadScopeFactory, {\n kind: \"selected\",\n roots: [],\n })\n expect((await empty.list({ projectId })).total).toBe(0)\n expect(\n await empty.queryObjects?.({\n projectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n })\n ).toMatchObject({ objects: [], total: 0 })\n\n const reader = createReader(harness.objectReadScopeFactory)\n const queryObjects = reader.queryObjects?.bind(reader)\n const countObjects = reader.countObjects?.bind(reader)\n const existsObjects = reader.existsObjects?.bind(reader)\n const facetObjects = reader.facetObjects?.bind(reader)\n if (!queryObjects || !countObjects || !existsObjects || !facetObjects) {\n throw new Error(\"Selected object-read scope contract requires every query terminal.\")\n }\n const crossProjectCalls: readonly (() => Promise<unknown>)[] = [\n () =>\n queryObjects({\n projectId: otherProjectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n }),\n () =>\n countObjects({\n projectId: otherProjectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n }),\n () =>\n existsObjects({\n projectId: otherProjectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n }),\n () =>\n facetObjects({\n projectId: otherProjectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n facets: [{ propertyId: \"category\", limit: 1 }],\n }),\n () =>\n reader.getByPrimaryId({\n projectId: otherProjectId,\n objectTypeId: Proposal.id,\n primaryId: \"proposal-1\",\n }),\n () =>\n reader.selectsObjectProperties({\n projectId: otherProjectId,\n items: [{ objectTypeId: Proposal.id, primaryId: \"proposal-1\", propertyId: \"id\" }],\n }),\n () =>\n reader.listLinks({\n projectId: otherProjectId,\n objectTypeId: Proposal.id,\n objectId: \"proposal-1\",\n }),\n () =>\n reader.getByPrimaryIdBatch({\n projectId: otherProjectId,\n items: [{ objectTypeId: Proposal.id, primaryId: \"proposal-1\" }],\n }),\n () =>\n reader.listLinksBatch({\n projectId: otherProjectId,\n items: [{ objectTypeId: Proposal.id, objectId: \"proposal-1\", linkId: \"items\" }],\n }),\n () =>\n reader.queryLinks({\n projectId: otherProjectId,\n objectRefs: [{ objectTypeId: Proposal.id, primaryId: \"proposal-1\" }],\n direction: \"outgoing\",\n limit: 1,\n }),\n () => reader.list({ projectId: otherProjectId }),\n ]\n\n for (const call of crossProjectCalls) {\n await expect(call()).rejects.toThrow(`belongs to project '${projectId}'`)\n }\n })\n })\n\n test(\"makes every selected target invisible as soon as its root is deleted\", async () => {\n await withHarness(async ({ harness, fixture }) => {\n const reader = createReader(harness.objectReadScopeFactory)\n await fixture.commit([\n {\n id: \"delete-selected-root\",\n kind: \"object.delete\",\n ref: { objectTypeId: Proposal.id, primaryId: \"proposal-1\" },\n },\n ])\n\n for (const ref of [\n { objectTypeId: Proposal.id, primaryId: \"proposal-1\" },\n { objectTypeId: LineItem.id, primaryId: \"item:opaque|1\" },\n { objectTypeId: LineItem.id, primaryId: \"reviewer-1\" },\n { objectTypeId: Product.id, primaryId: \"product-1\" },\n ]) {\n expect(await reader.getByPrimaryId({ projectId, ...ref })).toBeNull()\n }\n\n expect(await reader.list({ projectId })).toEqual({ objects: [], hasMore: false, total: 0 })\n expect(\n await reader.queryObjects?.({\n projectId,\n query: { kind: \"start\", objectTypeId: LineItem.id },\n })\n ).toMatchObject({ objects: [], total: 0 })\n expect(\n await reader.listLinks({\n projectId,\n objectTypeId: Proposal.id,\n objectId: \"proposal-1\",\n })\n ).toEqual([])\n expect(\n await reader.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Proposal.id, primaryId: \"proposal-1\" }],\n direction: \"outgoing\",\n limit: 10,\n })\n ).toEqual({ links: [], hasMore: false })\n })\n })\n\n test(\"uses collision-safe batch keys and exact incoming, outgoing, and self-loop semantics\", async () => {\n await withHarness(async ({ harness }) => {\n const reader = createReader(harness.objectReadScopeFactory)\n const objects = await reader.getByPrimaryIdBatch({\n projectId,\n items: [\n { objectTypeId: Proposal.id, primaryId: \"proposal-1\" },\n { objectTypeId: LineItem.id, primaryId: \"item:opaque|1\" },\n { objectTypeId: Proposal.id, primaryId: \"proposal-2\" },\n ],\n })\n expect([...objects.keys()]).toEqual([\n objectBatchKey(Proposal.id, \"proposal-1\"),\n objectBatchKey(LineItem.id, \"item:opaque|1\"),\n ])\n expect(objects.get(objectBatchKey(Proposal.id, \"proposal-1\"))?.properties).toEqual({\n id: \"proposal-1\",\n title: \"Visible proposal\",\n rank: 50,\n category: \"visible\",\n embedding: [0, 1],\n })\n expect(objects.get(objectBatchKey(Proposal.id, \"proposal-1\"))?.links).toBeUndefined()\n expect(objects.get(objectBatchKey(LineItem.id, \"item:opaque|1\"))?.properties).toEqual({\n id: \"item:opaque|1\",\n name: \"Visible item\",\n reviewNote: \"Property union\",\n })\n expect(objects.get(objectBatchKey(LineItem.id, \"item:opaque|1\"))?.links).toBeUndefined()\n\n const outgoing = await reader.listLinksBatch({\n projectId,\n direction: \"outgoing\",\n items: [{ objectTypeId: Proposal.id, objectId: \"proposal-1\", linkId: \"items\" }],\n })\n const outgoingRows = outgoing.get(linkBatchKey(Proposal.id, \"proposal-1\", \"items\"))\n expect(outgoingRows).toHaveLength(1)\n expect(outgoingRows?.[0]?.targetId).toBe(\"item:opaque|1\")\n expect(outgoingRows?.[0]?.properties).toEqual({ position: 1, label: \"primary\" })\n\n const listedLinks = await reader.listLinks({\n projectId,\n objectTypeId: Proposal.id,\n objectId: \"proposal-1\",\n linkId: \"items\",\n })\n expect(listedLinks).toHaveLength(1)\n expect(listedLinks[0]?.targetId).toBe(\"item:opaque|1\")\n expect(listedLinks[0]?.properties).toEqual({ position: 1, label: \"primary\" })\n\n const queriedLinks = await reader.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Proposal.id, primaryId: \"proposal-1\" }],\n direction: \"outgoing\",\n linkId: \"items\",\n limit: 10,\n })\n expect(queriedLinks.links).toHaveLength(1)\n expect(queriedLinks.links[0]?.targetId).toBe(\"item:opaque|1\")\n expect(queriedLinks.links[0]?.properties).toEqual({ position: 1, label: \"primary\" })\n\n const incoming = await reader.listLinksBatch({\n projectId,\n direction: \"incoming\",\n items: [{ objectTypeId: LineItem.id, objectId: \"item:opaque|1\", linkId: \"items\" }],\n })\n const incomingRows = incoming.get(linkBatchKey(LineItem.id, \"item:opaque|1\", \"items\"))\n expect(incomingRows).toHaveLength(1)\n expect(incomingRows?.[0]?.properties).toEqual({ position: 1, label: \"primary\" })\n expect(incoming.has(linkBatchKey(Proposal.id, \"proposal-1\", \"items\"))).toBe(false)\n\n const selfLoop = await reader.listLinksBatch({\n projectId,\n direction: \"both\",\n items: [{ objectTypeId: Proposal.id, objectId: \"proposal-1\", linkId: \"related\" }],\n })\n expect(selfLoop.get(linkBatchKey(Proposal.id, \"proposal-1\", \"related\"))).toHaveLength(1)\n })\n })\n\n test(\"applies scope before query ordering, pagination, predicates, and aggregate terminals\", async () => {\n await withHarness(async ({ harness }) => {\n const reader = createReader(harness.objectReadScopeFactory)\n const query = async (value: ObjectQuery) =>\n reader.queryObjects?.({ projectId, query: value })\n\n const queriedProposal = await query({ kind: \"start\", objectTypeId: Proposal.id })\n expect(queriedProposal?.objects.map((row) => row.primaryId)).toEqual([\"proposal-1\"])\n expect(queriedProposal?.objects[0]?.properties).toEqual({\n id: \"proposal-1\",\n title: \"Visible proposal\",\n rank: 50,\n category: \"visible\",\n embedding: [0, 1],\n })\n expect(queriedProposal?.objects[0]?.links).toBeUndefined()\n expect(\n (\n await query({\n kind: \"refs\",\n refs: [\n { objectTypeId: Proposal.id, primaryId: \"proposal-2\" },\n { objectTypeId: Proposal.id, primaryId: \"proposal-1\" },\n { objectTypeId: LineItem.id, primaryId: \"item:opaque|1\" },\n ],\n })\n )?.objects.map((row) => `${row.objectTypeId}:${row.primaryId}`)\n ).toEqual([`${LineItem.id}:item:opaque|1`, `${Proposal.id}:proposal-1`])\n expect(\n (\n await query({\n kind: \"filter\",\n input: { kind: \"start\", objectTypeId: Proposal.id },\n predicate: { op: \"eq\", propertyId: \"secret\", value: \"root-secret\" },\n })\n )?.objects\n ).toEqual([])\n expect(\n (\n await query({\n kind: \"limit\",\n limit: 1,\n input: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"rank\", direction: \"asc\" }],\n input: { kind: \"start\", objectTypeId: Proposal.id },\n },\n })\n )?.objects.map((row) => row.primaryId)\n ).toEqual([\"proposal-1\"])\n expect(\n (\n await query({\n kind: \"text\",\n input: { kind: \"start\", objectTypeId: Proposal.id },\n query: \"visible\",\n fields: [\"title\"],\n })\n )?.objects.map((row) => row.primaryId)\n ).toEqual([\"proposal-1\"])\n expect(\n (\n await query({\n kind: \"set\",\n op: \"union\",\n inputs: [\n { kind: \"start\", objectTypeId: Proposal.id },\n { kind: \"start\", objectTypeId: Product.id },\n ],\n })\n )?.objects.map((row) => row.primaryId)\n ).toEqual(expect.arrayContaining([\"proposal-1\", \"product-1\"]))\n\n const firstPage = await query({\n kind: \"page\",\n pageSize: 1,\n input: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\", direction: \"asc\" }],\n input: { kind: \"start\", objectTypeId: LineItem.id },\n },\n })\n expect(firstPage).toMatchObject({\n hasMore: true,\n objects: [{ primaryId: \"item:opaque|1\" }],\n })\n expect(firstPage?.nextPageToken).toBeString()\n const secondPage = await query({\n kind: \"page\",\n pageSize: 1,\n pageToken: firstPage?.nextPageToken,\n input: {\n kind: \"sort\",\n fields: [{ kind: \"property\", propertyId: \"id\", direction: \"asc\" }],\n input: { kind: \"start\", objectTypeId: LineItem.id },\n },\n })\n expect(secondPage).toMatchObject({\n hasMore: false,\n objects: [{ primaryId: \"reviewer-1\" }],\n })\n expect(secondPage?.objects[0]?.properties).toEqual({\n id: \"reviewer-1\",\n reviewNote: \"selected\",\n })\n expect(secondPage?.objects[0]?.links).toBeUndefined()\n\n expect(\n await reader.countObjects?.({\n projectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n })\n ).toEqual({ count: 1 })\n expect(\n await reader.existsObjects?.({\n projectId,\n query: {\n kind: \"filter\",\n input: { kind: \"start\", objectTypeId: Proposal.id },\n predicate: { op: \"eq\", propertyId: \"secret\", value: \"root-secret\" },\n },\n })\n ).toEqual({ exists: false })\n expect(\n await reader.facetObjects?.({\n projectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n facets: [\n { propertyId: \"category\", limit: 10 },\n { propertyId: \"secret\", limit: 10 },\n ],\n })\n ).toEqual({\n facets: [\n { propertyId: \"category\", buckets: [{ value: \"visible\", count: 1 }] },\n { propertyId: \"secret\", buckets: [] },\n ],\n })\n })\n })\n\n test(\"preserves path provenance through traverse and nested expand\", async () => {\n await withHarness(async ({ harness }) => {\n const reader = createReader(harness.objectReadScopeFactory)\n const traversed = await reader.queryObjects?.({\n projectId,\n query: {\n kind: \"traverse\",\n direction: \"outgoing\",\n linkId: \"product\",\n input: { kind: \"start\", objectTypeId: LineItem.id },\n },\n })\n expect(traversed?.objects.map((row) => row.primaryId)).toEqual([\"product-1\"])\n expect(traversed?.objects[0]?.properties).toEqual({\n id: \"product-1\",\n name: \"Visible product\",\n })\n expect(traversed?.objects[0]?.links).toBeUndefined()\n expect(\n await reader.getByPrimaryId({\n projectId,\n objectTypeId: Product.id,\n primaryId: \"product-review\",\n })\n ).toBeNull()\n\n const expanded = await executeObjectQuery(\n {\n projectId,\n query: {\n kind: \"expand\",\n input: {\n kind: \"limit\",\n limit: 10,\n input: { kind: \"start\", objectTypeId: Proposal.id },\n },\n expansions: [\n {\n linkId: \"items\",\n direction: \"outgoing\",\n expand: [{ linkId: \"product\", direction: \"outgoing\" }],\n },\n ],\n },\n },\n { ontology: objectReadScopeContractOntology, storage: reader }\n )\n const items = expanded.objects[0]?.links?.items\n expect(Array.isArray(items)).toBe(true)\n if (!Array.isArray(items)) throw new Error(\"expected expanded items\")\n expect(items[0]?.linkProperties).toEqual({ position: 1, label: \"primary\" })\n const expandedProduct = items[0]?.links?.product\n expect(expandedProduct).toMatchObject({ primaryId: \"product-1\" })\n if (!expandedProduct || Array.isArray(expandedProduct)) {\n throw new Error(\"expected one expanded product\")\n }\n expect(expandedProduct.properties).toEqual({\n id: \"product-1\",\n name: \"Visible product\",\n })\n expect(expandedProduct.links).toBeUndefined()\n })\n })\n\n test(\"filters unauthorized links and endpoints before canonical link pagination\", async () => {\n await withHarness(async ({ harness }) => {\n const reader = createReader(harness.objectReadScopeFactory, visibleLinkScope())\n expect(\n await reader.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Proposal.id, primaryId: \"proposal-1\" }],\n direction: \"outgoing\",\n limit: 1,\n })\n ).toMatchObject({ links: [{ linkId: \"zVisible\" }], hasMore: false })\n expect(\n await reader.queryLinks({\n projectId,\n objectRefs: [{ objectTypeId: Proposal.id, primaryId: \"proposal-1\" }],\n direction: \"outgoing\",\n endpointObjectTypeIds: [Proposal.id],\n limit: 1,\n })\n ).toEqual({ links: [], hasMore: false })\n })\n })\n\n test(\"enforces facet, traversal, and complete batch-output budgets independently\", async () => {\n await withHarness(async ({ harness }) => {\n const traversalBound = createReader(harness.objectReadScopeFactory, proposalScope(), {\n ...limits,\n maxTraversalFacts: 1,\n })\n await expect(traversalBound.list({ projectId })).rejects.toMatchObject({\n code: \"object_read_limit_exceeded\",\n metric: \"traversalFacts\",\n limit: 1,\n })\n\n const tinyOutput = createReader(harness.objectReadScopeFactory, proposalScope(), {\n ...limits,\n maxOutputJsonBytes: 8,\n })\n await expect(\n tinyOutput.getByPrimaryIdBatch({\n projectId,\n items: [{ objectTypeId: LineItem.id, primaryId: \"item:opaque|1\" }],\n })\n ).rejects.toMatchObject({\n code: \"object_read_limit_exceeded\",\n metric: \"outputJsonBytes\",\n limit: 8,\n })\n\n const facetBound = createReader(harness.objectReadScopeFactory, proposalScope(), {\n ...limits,\n maxTraversalFacts: 1,\n })\n await expect(\n facetBound.facetObjects?.({\n projectId,\n query: { kind: \"start\", objectTypeId: Proposal.id },\n facets: Array.from({ length: MAX_OBJECT_READ_FACETS + 1 }, (_, index) => ({\n propertyId: `facet-${index}`,\n limit: 1,\n })),\n })\n ).rejects.toThrow(`between 0 and ${MAX_OBJECT_READ_FACETS} facets`)\n })\n })\n })\n}\n\nfunction createReader(\n factory: ObjectReadScopeFactory,\n scope: SelectedObjectReadScope = proposalScope(),\n executionLimits: ObjectReadExecutionLimits = limits\n): ObjectReadStorage {\n return factory.createSelectedReadScope({\n projectId,\n scope: compileSelectedObjectReadScope(scope),\n limits: executionLimits,\n })\n}\n\nfunction proposalScope(): SelectedObjectReadScope {\n return {\n kind: \"selected\",\n roots: [\n {\n anchor: { objectTypeId: Proposal.id, primaryId: \"proposal-1\" },\n node: {\n objects: [\n {\n objectTypeId: Proposal.id,\n propertyIds: [\"id\", \"title\", \"rank\", \"category\", \"embedding\"],\n },\n ],\n links: [\n {\n definitions: [\n {\n sourceObjectTypeId: Proposal.id,\n linkId: \"items\",\n targetObjectTypeIds: [LineItem.id],\n propertyIds: [\"position\"],\n },\n {\n sourceObjectTypeId: Proposal.id,\n linkId: \"items\",\n targetObjectTypeIds: [LineItem.id],\n propertyIds: [\"label\", \"position\"],\n },\n ],\n target: {\n objects: [{ objectTypeId: LineItem.id, propertyIds: [\"id\", \"name\", \"price\"] }],\n links: [\n {\n definitions: [\n {\n sourceObjectTypeId: LineItem.id,\n linkId: \"product\",\n targetObjectTypeIds: [Product.id],\n propertyIds: [],\n },\n ],\n target: {\n objects: [{ objectTypeId: Product.id, propertyIds: [\"id\", \"name\"] }],\n links: [],\n },\n },\n ],\n },\n },\n {\n definitions: [\n {\n sourceObjectTypeId: Proposal.id,\n linkId: \"reviewers\",\n targetObjectTypeIds: [LineItem.id],\n propertyIds: [],\n },\n ],\n target: {\n objects: [{ objectTypeId: LineItem.id, propertyIds: [\"id\", \"reviewNote\"] }],\n links: [],\n },\n },\n {\n definitions: [\n {\n sourceObjectTypeId: Proposal.id,\n linkId: \"related\",\n targetObjectTypeIds: [Proposal.id],\n propertyIds: [],\n },\n ],\n target: {\n objects: [{ objectTypeId: Proposal.id, propertyIds: [\"id\", \"title\"] }],\n links: [],\n },\n },\n ],\n },\n },\n ],\n }\n}\n\nfunction visibleLinkScope(): SelectedObjectReadScope {\n return {\n kind: \"selected\",\n roots: [\n {\n anchor: { objectTypeId: Proposal.id, primaryId: \"proposal-1\" },\n node: {\n objects: [{ objectTypeId: Proposal.id, propertyIds: [\"id\"] }],\n links: [\n {\n definitions: [\n {\n sourceObjectTypeId: Proposal.id,\n linkId: \"zVisible\",\n targetObjectTypeIds: [Product.id],\n propertyIds: [],\n },\n ],\n target: {\n objects: [{ objectTypeId: Product.id, propertyIds: [\"id\"] }],\n links: [],\n },\n },\n ],\n },\n },\n ],\n }\n}\n\nasync function seed(fixture: MaterializerTestFixture): Promise<void> {\n await fixture.seed({\n objects: [\n object(Proposal.id, \"proposal-1\", {\n id: \"proposal-1\",\n title: \"Visible proposal\",\n rank: 50,\n category: \"visible\",\n embedding: [0, 1],\n secret: \"root-secret\",\n }),\n object(Proposal.id, \"proposal-2\", {\n id: \"proposal-2\",\n title: \"Hidden proposal\",\n rank: 1,\n category: \"hidden\",\n embedding: [1, 0],\n secret: \"hidden-secret\",\n }),\n object(LineItem.id, \"item:opaque|1\", {\n id: \"item:opaque|1\",\n name: \"Visible item\",\n reviewNote: \"Property union\",\n internal: \"hidden\",\n }),\n object(LineItem.id, \"item-hidden\", { id: \"item-hidden\", name: \"Hidden item\" }),\n object(LineItem.id, \"reviewer-1\", {\n id: \"reviewer-1\",\n name: \"Visible reviewer\",\n reviewNote: \"selected\",\n }),\n object(Product.id, \"product-1\", {\n id: \"product-1\",\n name: \"Visible product\",\n internal: \"hidden\",\n }),\n object(Product.id, \"product-review\", {\n id: \"product-review\",\n name: \"Product outside selected path\",\n }),\n ],\n links: [\n linkRow(Proposal.id, \"proposal-1\", \"items\", LineItem.id, \"item:opaque|1\", {\n position: 1,\n label: \"primary\",\n internal: \"hidden\",\n }),\n linkRow(Proposal.id, \"proposal-2\", \"items\", LineItem.id, \"item-hidden\"),\n linkRow(Proposal.id, \"proposal-1\", \"reviewers\", LineItem.id, \"item:opaque|1\"),\n linkRow(Proposal.id, \"proposal-1\", \"reviewers\", LineItem.id, \"reviewer-1\"),\n linkRow(Proposal.id, \"proposal-1\", \"related\", Proposal.id, \"proposal-1\"),\n linkRow(LineItem.id, \"item:opaque|1\", \"product\", Product.id, \"product-1\"),\n linkRow(LineItem.id, \"reviewer-1\", \"product\", Product.id, \"product-review\"),\n linkRow(Proposal.id, \"proposal-1\", \"aPrivate\", Product.id, \"product-review\"),\n linkRow(Proposal.id, \"proposal-1\", \"zVisible\", Product.id, \"product-1\"),\n ],\n })\n}\n\nfunction object(\n objectTypeId: string,\n primaryId: string,\n properties: Readonly<Record<string, JsonValue>>\n): MaterializerFixtureObject {\n return {\n ref: { objectTypeId, primaryId },\n properties,\n }\n}\n\nfunction linkRow(\n sourceObjectTypeId: string,\n sourcePrimaryId: string,\n linkId: string,\n targetObjectTypeId: string,\n targetPrimaryId: string,\n properties?: Readonly<Record<string, JsonValue>>\n): MaterializerFixtureLink {\n return {\n ref: {\n source: { objectTypeId: sourceObjectTypeId, primaryId: sourcePrimaryId },\n linkId,\n target: { objectTypeId: targetObjectTypeId, primaryId: targetPrimaryId },\n },\n ...(properties === undefined ? {} : { properties }),\n }\n}\n",
|
|
32
|
-
"import { describe, expect, test } from \"bun:test\"\nimport type {\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n} from \"../materialization/model\"\nimport type {\n MaterializationPlanFinalization,\n MaterializationPlanHeader,\n MaterializationSession,\n OntologyOutboxFailure,\n OntologySourceRecord,\n} from \"../storage/ontology\"\nimport type { ProjectionRunStorage } from \"../storage/projection-runs\"\nimport {\n commitEmptyEdit,\n commitExactObject,\n contractEditHeader,\n contractEditResult,\n contractExecutor,\n ensureContractExecution,\n type OntologyContractStorage,\n} from \"./ontology-contract-fixture\"\nimport { startTestProjectionRun } from \"./projection-execution\"\n\nexport interface OntologyStorageContractStorage extends OntologyContractStorage {\n readonly projectionRuns: ProjectionRunStorage\n}\n\nexport interface OntologyStorageContractSuiteOptions<\n TStorage extends OntologyStorageContractStorage = OntologyStorageContractStorage,\n> {\n /** Factory that returns a fresh, fully transaction-capable storage facade for each test. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional provider setup invoked after the storage facade is created. */\n readonly setup?: (storage: TStorage) => void | Promise<void>\n /** Optional provider cleanup invoked after every test, including failed tests. */\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst replacementIdentity = (\n versionId: string,\n projectionId = \"contract.devices\"\n): Extract<ProjectionMaterializationIdentity, { readonly projectionKind: \"object\" }> => ({\n projectionId,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: {\n datasetId: \"contract.devices\",\n versionId,\n createdAt: `2026-01-${versionId.padStart(2, \"0\")}T00:00:00.000Z`,\n },\n ontologyRevision: \"ontology-contract-revision\",\n projectionRevision: \"projection-contract-revision\",\n ownershipHash: \"ownership-contract-hash\",\n})\n\nconst emptyProjectionCounts = {\n objectsCreated: 0,\n objectsUpdated: 0,\n objectsDeleted: 0,\n objectsUnchanged: 0,\n linksCreated: 0,\n linksUpdated: 0,\n linksDeleted: 0,\n linksUnchanged: 0,\n} as const\n\ninterface ReadyCandidate {\n readonly identity: Extract<\n ProjectionMaterializationIdentity,\n { readonly projectionKind: \"object\" }\n >\n readonly execution: ProjectionExecution\n readonly materializationId: string\n readonly source: { readonly projectionId: string }\n readonly executionId: string\n}\n\nfunction ontologyOutboxFailure(message: string): OntologyOutboxFailure {\n return {\n code: \"event.delivery_failed\",\n message,\n retryable: true,\n at: \"2026-01-03T02:00:00.000Z\",\n }\n}\n\n/**\n * Runs provider-level ontology persistence contracts without asking the provider\n * to interpret ontology definitions, edits, or projection rows. Exact plans are\n * supplied directly and the suite checks durable lifecycle, CAS, outbox, and\n * cross-facade transaction behavior.\n */\nexport function runOntologyStorageContractSuite<TStorage extends OntologyStorageContractStorage>(\n label: string,\n options: OntologyStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"stores one authoritative commit and rejects duplicate commit identities\", async () => {\n await withStorage(async (storage) => {\n await commitEmptyEdit(storage, \"commit-one\")\n const stored = await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"commit-one\",\n })\n expect(stored).toMatchObject({\n id: \"commit-one\",\n idempotencyKey: \"runtime:commit-one\",\n requestHash: \"hash:commit-one\",\n result: { commitId: \"commit-one\" },\n })\n expect(\n await storage.ontology.commits.getByIdempotencyKey({\n projectId: \"contract-project\",\n idempotencyKey: \"runtime:commit-one\",\n })\n ).toEqual(stored)\n\n await expect(commitEmptyEdit(storage, \"commit-one\")).rejects.toMatchObject({\n kind: \"idempotency\",\n })\n const divergent = structuredClone(contractEditHeader(\"different-id\"))\n ;(divergent.commit as { idempotencyKey: string }).idempotencyKey = \"runtime:commit-one\"\n ;(divergent.commit as { requestHash: string }).requestHash = \"different-hash\"\n await expect(\n storage.transaction(async (tx) => {\n await ensureContractExecution(tx, divergent)\n await tx.ontology.materializations.begin(divergent)\n })\n ).rejects.toMatchObject({ kind: \"idempotency\" })\n\n const list = await storage.ontology.commits.list({\n projectId: \"contract-project\",\n limit: 1,\n offset: 0,\n })\n expect(list).toMatchObject({ total: 1, hasMore: false })\n expect(list.commits.map((commit) => commit.id)).toEqual([\"commit-one\"])\n })\n })\n\n test(\"round-trips commit and event attribution exactly\", async () => {\n await withStorage(async (storage) => {\n // The requester is a real principal: SQL executions reference it by foreign key.\n if (!storage.auth) throw new Error(\"The attribution contract requires auth storage.\")\n await storage.auth.users.create({\n projectId: \"contract-project\",\n id: \"contract-requester\",\n email: \"requester@example.com\",\n })\n const requestedBy = { type: \"user\", id: \"contract-requester\" } as const\n await commitExactObject(storage, \"attributed\", { requestedBy })\n await commitExactObject(storage, \"unattributed\", { primaryId: \"unattributed-device\" })\n\n const attributed = await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"attributed\",\n })\n expect(attributed?.requestedBy).toEqual(requestedBy)\n expect(attributed?.executor).toEqual(contractExecutor(\"attributed\"))\n expect(attributed).not.toHaveProperty(\"actor\")\n const unattributed = await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"unattributed\",\n })\n expect(unattributed).not.toHaveProperty(\"requestedBy\")\n expect(unattributed?.executor).toEqual(contractExecutor(\"unattributed\"))\n\n const claimed = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2027-01-01T00:00:00.000Z\",\n limit: 10,\n leaseId: \"attribution-check\",\n leaseExpiresAt: \"2027-01-01T01:00:00.000Z\",\n })\n const envelopes = new Map(claimed.map((record) => [record.envelope.commitId, record]))\n expect(envelopes.get(\"attributed\")?.envelope).toMatchObject({\n requestedBy,\n executor: contractExecutor(\"attributed\"),\n })\n const unattributedEnvelope = envelopes.get(\"unattributed\")?.envelope\n expect(unattributedEnvelope?.executor).toEqual(contractExecutor(\"unattributed\"))\n expect(unattributedEnvelope).not.toHaveProperty(\"requestedBy\")\n })\n })\n\n test(\"rejects an ontology commit whose execution does not exist\", async () => {\n await withStorage(async (storage) => {\n const header = contractEditHeader(\"missing-execution\")\n await expect(\n storage.transaction(async (tx) => {\n const session = await tx.ontology.materializations.begin(header)\n await tx.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [],\n result: contractEditResult(header.commit.id),\n },\n })\n })\n ).rejects.toThrow()\n await expect(\n storage.ontology.commits.getById({\n projectId: header.commit.projectId,\n id: header.commit.id,\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"rejects unfinished sessions and rolls back their authoritative writes\", async () => {\n await withStorage(async (storage) => {\n const header = contractEditHeader(\"session-contract\")\n await expect(storage.ontology.materializations.begin(header)).rejects.toThrow(\n \"active storage transaction\"\n )\n\n await expect(\n commitExactObject(storage, \"unfinished-session\", { omitFinalize: true })\n ).rejects.toThrow(\"unfinished materialization session\")\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"unfinished-session\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"unfinished-session\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2027-01-01T00:00:00.000Z\",\n limit: 10,\n leaseId: \"unfinished-session-check\",\n leaseExpiresAt: \"2027-01-01T01:00:00.000Z\",\n })\n ).toEqual([])\n\n let leakedSession: MaterializationSession | undefined\n await expect(\n storage.transaction(async (tx) => {\n const leakedHeader = contractEditHeader(\"leaked-session\")\n await ensureContractExecution(tx, leakedHeader)\n leakedSession = await tx.ontology.materializations.begin(leakedHeader)\n })\n ).rejects.toThrow(\"unfinished materialization session\")\n if (!leakedSession) throw new Error(\"Expected an unfinished session handle\")\n const staleSession = leakedSession\n await storage.transaction(async (tx) => {\n await expect(\n tx.ontology.materializations.finalize({\n session: staleSession,\n finalization: {\n sourceActivations: [],\n result: contractEditResult(\"leaked-session\"),\n },\n })\n ).rejects.toThrow(\"inactive\")\n })\n })\n })\n\n test(\"stages insert-only source rows, seals counts, and fences stale execution tokens\", async () => {\n await withStorage(async (storage) => {\n const identity = replacementIdentity(\"01\")\n const claimed = await startTestProjectionRun(storage, {\n id: \"staging-run\",\n projectId: \"contract-project\",\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n const execution = claimed.execution\n const source = { projectionId: identity.projectionId }\n await expect(\n storage.ontology.sources.beginMaterialization({\n projectId: \"contract-project\",\n source,\n materializationId: \"mismatched-candidate\",\n execution,\n projectionKind: \"link\",\n protocol: \"replacement\",\n datasetVersion: identity.datasetVersion,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n ontologyRevision: identity.ontologyRevision,\n createdAt: \"2026-01-01T00:00:00.000Z\",\n })\n ).rejects.toThrow(\"identity\")\n await storage.ontology.sources.beginMaterialization({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: identity.datasetVersion,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n ontologyRevision: identity.ontologyRevision,\n createdAt: \"2026-01-01T00:00:00.000Z\",\n })\n expect(\n await storage.ontology.sources.getActive({ projectId: \"contract-project\", source })\n ).toBeNull()\n\n const row = {\n root: {\n kind: \"object\" as const,\n ref: { objectTypeId: \"ContractDevice\", primaryId: \"one\" },\n },\n assertion: {\n kind: \"object\" as const,\n ref: { objectTypeId: \"ContractDevice\", primaryId: \"one\" },\n properties: { name: \"one\" },\n },\n stagingOrdinal: 0,\n }\n expect(\n await storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [row],\n })\n ).toEqual({ inserted: 1, unchanged: 0 })\n expect(\n await storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [row],\n })\n ).toEqual({ inserted: 0, unchanged: 1 })\n await expect(\n storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [\n {\n ...row,\n assertion: { ...row.assertion, properties: { name: \"different\" } },\n },\n ],\n })\n ).rejects.toThrow()\n\n const ready = await storage.ontology.sources.markReady({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rootCount: 1,\n assertionCount: 1,\n readyAt: \"2026-01-01T00:01:00.000Z\",\n })\n expect(ready).toMatchObject({ status: \"ready\", rootCount: 1, assertionCount: 1 })\n\n const reclaimed = await storage.projectionRuns.startOrReclaim({\n id: claimed.run.id,\n projectId: claimed.run.projectId,\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n await expect(\n storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [],\n })\n ).rejects.toMatchObject({ kind: \"execution-lost\" })\n await expect(\n storage.ontology.sources.markReady({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rootCount: 1,\n assertionCount: 1,\n readyAt: \"2026-01-01T00:03:00.000Z\",\n })\n ).rejects.toMatchObject({ kind: \"execution-lost\" })\n await expect(\n storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n abandonedAt: \"2026-01-01T00:03:00.000Z\",\n })\n ).rejects.toMatchObject({ kind: \"execution-lost\" })\n const abandoned = await storage.ontology.sources.abandon({\n kind: \"reclaim\",\n projectId: \"contract-project\",\n source,\n execution: reclaimed.execution,\n abandonedAt: \"2026-01-01T00:02:00.000Z\",\n })\n expect(abandoned).toMatchObject({ status: \"abandoned\", executionToken: null })\n expect(\n await storage.ontology.sources.summarizeTerminal({ projectId: \"contract-project\" })\n ).toEqual({ count: 1, oldestTerminalAt: \"2026-01-01T00:02:00.000Z\" })\n\n expect(\n await storage.ontology.sources.cleanupTerminal({\n projectId: \"contract-project\",\n terminalBefore: \"2026-02-01T00:00:00.000Z\",\n limit: 1,\n })\n ).toEqual({ rowsDeleted: 1, materializationsDeleted: 0 })\n expect(\n await storage.ontology.sources.cleanupTerminal({\n projectId: \"contract-project\",\n terminalBefore: \"2026-02-01T00:00:00.000Z\",\n limit: 1,\n })\n ).toEqual({ rowsDeleted: 1, materializationsDeleted: 0 })\n expect(\n await storage.ontology.sources.cleanupTerminal({\n projectId: \"contract-project\",\n terminalBefore: \"2026-02-01T00:00:00.000Z\",\n limit: 1,\n })\n ).toEqual({ rowsDeleted: 0, materializationsDeleted: 1 })\n expect(\n await storage.ontology.sources.summarizeTerminal({ projectId: \"contract-project\" })\n ).toEqual({ count: 0, oldestTerminalAt: null })\n })\n })\n\n test(\"atomically activates explicit empty candidates and rejects competing stale heads\", async () => {\n await withStorage(async (storage) => {\n const first = await createReadyEmptyCandidate(storage, \"run-one\", \"candidate-one\", \"01\")\n await activateEmptyCandidate(\n storage,\n first,\n null,\n \"commit-source-one\",\n \"2026-01-03T00:00:00.000Z\"\n )\n const activeOne = await storage.ontology.sources.getActive({\n projectId: \"contract-project\",\n source: first.source,\n })\n expect(activeOne).toMatchObject({\n materializationId: first.materializationId,\n status: \"active\",\n rootCount: 0,\n assertionCount: 0,\n executionToken: null,\n })\n expect(\n await storage.ontology.commits.getByOrigin({\n projectId: \"contract-project\",\n origin: { kind: \"projection\", projectionRunId: first.execution.projectionRunId },\n })\n ).toMatchObject({ id: \"commit-source-one\" })\n await expect(\n activateEmptyCandidate(\n storage,\n first,\n activeOne,\n \"duplicate-projection-origin\",\n \"2026-01-03T01:00:00.000Z\"\n )\n ).rejects.toMatchObject({ kind: \"run-correlation\" })\n\n const left = await createReadyEmptyCandidate(storage, \"run-left\", \"candidate-left\", \"02\")\n const right = await createReadyEmptyCandidate(storage, \"run-right\", \"candidate-right\", \"03\")\n await activateEmptyCandidate(\n storage,\n left,\n activeOne!,\n \"commit-source-left\",\n \"2026-01-04T00:00:00.000Z\"\n )\n await expect(\n activateEmptyCandidate(\n storage,\n right,\n activeOne!,\n \"commit-source-right\",\n \"2026-01-05T00:00:00.000Z\"\n )\n ).rejects.toMatchObject({ kind: \"projection-fence\" })\n const currentActive = await storage.ontology.sources.getActive({\n projectId: \"contract-project\",\n source: first.source,\n })\n expect(currentActive).toMatchObject({ materializationId: left.materializationId })\n\n const stale = await createReadyEmptyCandidate(\n storage,\n \"run-stale-activation\",\n \"candidate-stale-activation\",\n \"04\"\n )\n const reclaimed = await storage.projectionRuns.startOrReclaim({\n id: stale.execution.projectionRunId,\n projectId: \"contract-project\",\n identity: stale.identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n await expect(\n activateEmptyCandidate(\n storage,\n stale,\n currentActive,\n \"commit-stale-activation\",\n \"2026-01-06T00:00:00.000Z\"\n )\n ).rejects.toThrow(\"execution token is stale\")\n await storage.ontology.sources.abandon({\n kind: \"reclaim\",\n projectId: \"contract-project\",\n source: stale.source,\n execution: reclaimed.execution,\n abandonedAt: \"2026-01-06T00:01:00.000Z\",\n })\n\n const cleanup = await storage.ontology.sources.cleanupTerminal({\n projectId: \"contract-project\",\n terminalBefore: \"2026-02-01T00:00:00.000Z\",\n limit: 10,\n })\n expect(cleanup.materializationsDeleted).toBeGreaterThanOrEqual(1)\n expect(\n await storage.ontology.sources.getActive({\n projectId: \"contract-project\",\n source: first.source,\n })\n ).toMatchObject({ materializationId: left.materializationId })\n expect(\n await storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: \"contract-project\",\n source: right.source,\n materializationId: right.materializationId,\n execution: right.execution,\n abandonedAt: \"2026-02-02T00:00:00.000Z\",\n })\n ).toMatchObject({ status: \"abandoned\" })\n })\n })\n\n test(\"rolls back exact rows, commits, and outbox writes through one transaction facade\", async () => {\n await withStorage(async (storage) => {\n await expect(\n commitExactObject(storage, \"rolled-back\", { throwAfterFinalize: true })\n ).rejects.toThrow(\"contract rollback\")\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"rolled-back\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"rolled-back\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2027-01-01T00:00:00.000Z\",\n limit: 10,\n leaseId: \"rollback-check\",\n leaseExpiresAt: \"2027-01-01T01:00:00.000Z\",\n })\n ).toEqual([])\n\n await commitExactObject(storage, \"committed\")\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"committed\",\n })\n ).toMatchObject({ properties: { name: \"committed\" }, lastCommitId: \"committed\" })\n\n await expect(\n commitExactObject(storage, \"stale-object-cas\", { primaryId: \"committed\" })\n ).rejects.toThrow(\"to be absent\")\n expect(\n await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"stale-object-cas\",\n })\n ).toBeNull()\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"committed\",\n })\n ).toMatchObject({ properties: { name: \"committed\" }, lastCommitId: \"committed\" })\n })\n })\n\n test(\"leases outbox rows exclusively, reclaims expiry, fences stale workers, and purges\", async () => {\n await withStorage(async (storage) => {\n const outboxB = await commitExactObject(storage, \"outbox-b\")\n const outboxA = await commitExactObject(storage, \"outbox-a\")\n await expect(\n storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-02T19:00:00-05:00\",\n limit: 1,\n leaseId: \"noncanonical-lease\",\n leaseExpiresAt: \"2026-01-03T01:00:00.000Z\",\n })\n ).rejects.toThrow(\"canonical UTC\")\n const first = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T00:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-one\",\n leaseExpiresAt: \"2026-01-03T01:00:00.000Z\",\n })\n expect(first).toHaveLength(1)\n expect(first[0]).toMatchObject({ attempts: 1, leaseId: \"lease-one\" })\n expect(first[0].envelope.id).toBe([outboxA.eventId, outboxB.eventId].sort()[0])\n const concurrent = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T00:30:00.000Z\",\n limit: 10,\n leaseId: \"lease-concurrent\",\n leaseExpiresAt: \"2026-01-03T01:30:00.000Z\",\n })\n expect(concurrent).toHaveLength(1)\n expect(concurrent[0].envelope.id).not.toBe(first[0].envelope.id)\n\n const reclaimed = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T02:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-two\",\n leaseExpiresAt: \"2026-01-03T03:00:00.000Z\",\n })\n expect(reclaimed[0].envelope.id).toBe(first[0].envelope.id)\n await expect(\n storage.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: [first[0].envelope.id],\n leaseId: \"lease-one\",\n publishedAt: \"2026-01-03T02:10:00.000Z\",\n })\n ).rejects.toThrow(\"lease does not match\")\n await storage.ontology.outbox.reschedule({\n projectId: \"contract-project\",\n ids: [reclaimed[0].envelope.id],\n leaseId: \"lease-two\",\n availableAt: \"2026-01-04T00:00:00.000Z\",\n failure: ontologyOutboxFailure(\"broker unavailable\"),\n })\n const retried = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-04T00:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-three\",\n leaseExpiresAt: \"2026-01-04T01:00:00.000Z\",\n })\n expect(retried[0]).toMatchObject({\n attempts: 3,\n lastFailure: ontologyOutboxFailure(\"broker unavailable\"),\n })\n await storage.ontology.outbox.reschedule({\n projectId: \"contract-project\",\n ids: [retried[0].envelope.id],\n leaseId: \"lease-three\",\n availableAt: \"2026-01-04T00:15:00.000Z\",\n })\n const lifecycleRescheduled = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-04T00:15:00.000Z\",\n limit: 1,\n leaseId: \"lease-four\",\n leaseExpiresAt: \"2026-01-04T01:15:00.000Z\",\n })\n expect(lifecycleRescheduled[0]).toMatchObject({\n attempts: 4,\n lastFailure: ontologyOutboxFailure(\"broker unavailable\"),\n })\n expect(\n await storage.ontology.outbox.summarize({ projectId: \"contract-project\" })\n ).toMatchObject({ pendingCount: 2, retryingCount: 2, maxAttempts: 4 })\n await storage.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: [lifecycleRescheduled[0].envelope.id],\n leaseId: \"lease-four\",\n publishedAt: \"2026-01-04T00:30:00.000Z\",\n })\n expect(\n await storage.ontology.outbox.purgePublished({\n projectId: \"contract-project\",\n publishedBefore: \"2026-01-05T00:00:00.000Z\",\n limit: 1,\n })\n ).toBe(1)\n })\n })\n\n test.each([\n \"root\",\n \"transaction\",\n ] as const)(\"keeps %s batch outbox settlement atomic when callers catch a stale lease\", async (boundary) => {\n await withStorage(async (storage) => {\n await commitExactObject(storage, \"lease-atomic-a\")\n await commitExactObject(storage, \"lease-atomic-b\")\n const claimed = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T00:00:00.000Z\",\n limit: 10,\n leaseId: \"lease-atomic-old\",\n leaseExpiresAt: \"2026-01-03T01:00:00.000Z\",\n })\n expect(claimed).toHaveLength(2)\n const [reclaimed] = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T02:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-atomic-new\",\n leaseExpiresAt: \"2026-01-03T03:00:00.000Z\",\n })\n const untouched = claimed.find((row) => row.envelope.id !== reclaimed!.envelope.id)!\n\n let conflict: unknown\n const settle = async (tx: OntologyContractStorage) => {\n try {\n await tx.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: claimed.map((row) => row.envelope.id),\n leaseId: \"lease-atomic-old\",\n publishedAt: \"2026-01-03T02:10:00.000Z\",\n })\n } catch (error) {\n conflict = error\n }\n }\n if (boundary === \"transaction\") await storage.transaction(settle)\n else await settle(storage)\n expect(conflict).toMatchObject({ kind: \"outbox-lease\" })\n\n await storage.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: [untouched.envelope.id],\n leaseId: \"lease-atomic-old\",\n publishedAt: \"2026-01-03T02:20:00.000Z\",\n })\n })\n })\n\n test(\"rolls back a telemetry checkpoint with its authoritative ontology commit\", async () => {\n await withStorage(async (storage) => {\n const identity: ProjectionMaterializationIdentity = {\n projectionId: \"contract.telemetry\",\n projectionKind: \"telemetry\",\n protocol: \"telemetry\",\n datasetVersion: {\n datasetId: \"contract.readings\",\n versionId: \"telemetry-version\",\n createdAt: \"2026-01-01T00:00:00.000Z\",\n },\n ontologyRevision: \"ontology-contract-revision\",\n projectionRevision: \"telemetry-contract-revision\",\n ownershipHash: \"telemetry-contract-ownership\",\n }\n const run = await startTestProjectionRun(storage, {\n id: \"telemetry-run\",\n projectId: \"contract-project\",\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n fixedBatchSize: 2,\n })\n const execute = async (throwAfter: boolean) => {\n await storage.transaction(async (tx) => {\n if (!tx.projectionRuns) {\n throw new Error(\"Contract transaction omitted required storage facades.\")\n }\n const header = telemetryHeader(identity, run.run.id, run.run.executionId)\n const session = await tx.ontology.materializations.begin(header)\n await tx.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [],\n result: {\n kind: \"telemetry\",\n commitId: header.commit.id,\n created: true,\n eventCount: 0,\n committedAt: header.commit.committedAt,\n pointsCreated: 0,\n pointsUpdated: 0,\n pointsUnchanged: 0,\n latestObjectsChanged: 0,\n },\n },\n })\n await tx.projectionRuns.advanceTelemetryCheckpoint({\n id: run.run.id,\n projectId: run.run.projectId,\n identity,\n executionToken: run.execution.executionToken,\n batchOrdinal: 0,\n batchRowCount: 2,\n batchRowsSkipped: 2,\n inputExhausted: true,\n })\n if (throwAfter) throw new Error(\"telemetry rollback\")\n })\n }\n\n await expect(execute(true)).rejects.toThrow(\"telemetry rollback\")\n expect(\n await storage.ontology.commits.getByOrigin({\n projectId: \"contract-project\",\n origin: { kind: \"telemetry\", projectionRunId: run.run.id, batchOrdinal: 0 },\n })\n ).toBeNull()\n expect(\n await storage.projectionRuns.getById({ projectId: run.run.projectId, id: run.run.id })\n ).toMatchObject({\n telemetryCheckpoint: { nextBatchOrdinal: 0, nextRowOffset: 0, inputExhausted: false },\n })\n\n await execute(false)\n expect(\n await storage.ontology.commits.getByOrigin({\n projectId: \"contract-project\",\n origin: { kind: \"telemetry\", projectionRunId: run.run.id, batchOrdinal: 0 },\n })\n ).toMatchObject({ id: \"telemetry-commit\" })\n expect(\n await storage.projectionRuns.getById({ projectId: run.run.projectId, id: run.run.id })\n ).toMatchObject({\n telemetryCheckpoint: { nextBatchOrdinal: 1, nextRowOffset: 2, inputExhausted: true },\n })\n })\n })\n })\n}\n\nasync function createReadyEmptyCandidate(\n storage: OntologyStorageContractStorage,\n runId: string,\n materializationId: string,\n versionId: string\n): Promise<ReadyCandidate> {\n const identity = replacementIdentity(versionId)\n const run = await startTestProjectionRun(storage, {\n id: runId,\n projectId: \"contract-project\",\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n const execution = run.execution\n const source = { projectionId: identity.projectionId }\n await storage.ontology.sources.beginMaterialization({\n projectId: run.run.projectId,\n source,\n materializationId,\n execution,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: identity.datasetVersion,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n ontologyRevision: identity.ontologyRevision,\n createdAt: identity.datasetVersion.createdAt,\n })\n await storage.ontology.sources.markReady({\n projectId: run.run.projectId,\n source,\n materializationId,\n execution,\n rootCount: 0,\n assertionCount: 0,\n readyAt: new Date(Date.parse(identity.datasetVersion.createdAt) + 1_000).toISOString(),\n })\n return { identity, execution, materializationId, source, executionId: run.run.executionId }\n}\n\nasync function activateEmptyCandidate(\n storage: OntologyStorageContractStorage,\n candidate: ReadyCandidate,\n expectedActive: OntologySourceRecord | null,\n commitId: string,\n committedAt: string\n): Promise<void> {\n const expected = {\n source: candidate.source,\n activeMaterializationId: expectedActive?.materializationId ?? null,\n lastCommitId: expectedActive?.lastCommitId ?? null,\n }\n const header: MaterializationPlanHeader = {\n commit: {\n projectId: \"contract-project\",\n id: commitId,\n idempotencyKey: `projection:${commitId}`,\n requestHash: `hash:${commitId}`,\n executionId: candidate.executionId,\n origin: {\n kind: \"projection\",\n projectionId: candidate.source.projectionId,\n projectionRunId: candidate.execution.projectionRunId,\n datasetId: candidate.identity.datasetVersion.datasetId,\n datasetVersionId: candidate.identity.datasetVersion.versionId,\n },\n executor: {\n type: \"primitive\",\n kind: \"projection\",\n id: candidate.source.projectionId,\n runId: candidate.execution.projectionRunId,\n },\n ontologyRevision: candidate.identity.ontologyRevision,\n projectionRevision: candidate.identity.projectionRevision,\n ownershipHash: candidate.identity.ownershipHash,\n intent: {\n kind: \"projection\",\n source: candidate.source,\n datasetVersion: candidate.identity.datasetVersion,\n },\n committedAt,\n },\n expected: { sources: [expected], objects: [], links: [], linkScopes: [], points: [] },\n }\n const finalization: MaterializationPlanFinalization = {\n sourceActivations: [\n {\n source: candidate.source,\n materializationId: candidate.materializationId,\n execution: candidate.execution,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: candidate.identity.datasetVersion,\n projectionRevision: candidate.identity.projectionRevision,\n ownershipHash: candidate.identity.ownershipHash,\n ontologyRevision: candidate.identity.ontologyRevision,\n expected,\n lastCommitId: commitId,\n updatedAt: committedAt,\n },\n ],\n result: {\n kind: \"projection\",\n commitId,\n created: true,\n eventCount: 0,\n committedAt,\n counts: emptyProjectionCounts,\n },\n }\n await storage.transaction(async (tx) => {\n if (!tx.projectionRuns) {\n throw new Error(\"Contract transaction omitted required storage facades.\")\n }\n await tx.projectionRuns.lockForMaterialization({\n id: candidate.execution.projectionRunId,\n projectId: header.commit.projectId,\n identity: candidate.identity,\n executionToken: candidate.execution.executionToken,\n })\n const session = await tx.ontology.materializations.begin(header)\n for (const entityKind of [\"object\", \"link\"] as const) {\n for await (const _page of tx.ontology.materializations.streamSourceReplacementState({\n session,\n source: candidate.source,\n candidateMaterializationId: candidate.materializationId,\n entityKind,\n pageRows: 1,\n })) {\n // Empty output intentionally has no classifications or exact writes.\n }\n }\n await tx.ontology.materializations.finalize({ session, finalization })\n })\n}\n\nfunction telemetryHeader(\n identity: ProjectionMaterializationIdentity,\n projectionRunId: string,\n executionId: string\n): MaterializationPlanHeader {\n if (identity.protocol !== \"telemetry\") throw new Error(\"Expected telemetry identity\")\n return {\n commit: {\n projectId: \"contract-project\",\n id: \"telemetry-commit\",\n idempotencyKey: \"telemetry:telemetry-run:0\",\n requestHash: \"hash:telemetry-run:0\",\n executionId,\n origin: {\n kind: \"telemetry\",\n source: {\n kind: \"projection\",\n projectionId: identity.projectionId,\n projectionRunId,\n datasetId: identity.datasetVersion.datasetId,\n datasetVersionId: identity.datasetVersion.versionId,\n batchOrdinal: 0,\n },\n },\n executor: {\n type: \"primitive\",\n kind: \"projection\",\n id: identity.projectionId,\n runId: projectionRunId,\n },\n ontologyRevision: identity.ontologyRevision,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n intent: {\n kind: \"telemetry\",\n source: {\n kind: \"projection\",\n projection: { projectionId: identity.projectionId },\n datasetVersion: identity.datasetVersion,\n batchOrdinal: 0,\n sourceRowCount: 2,\n sourceRowsSkipped: 2,\n inputExhausted: true,\n },\n pointCount: 0,\n inputPointCount: 0,\n },\n committedAt: \"2026-01-02T00:00:00.000Z\",\n },\n expected: { sources: [], objects: [], links: [], linkScopes: [], points: [] },\n }\n}\n",
|
|
32
|
+
"import { describe, expect, test } from \"bun:test\"\nimport type {\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n} from \"../materialization/model\"\nimport type {\n MaterializationPlanFinalization,\n MaterializationPlanHeader,\n MaterializationSession,\n OntologyOutboxFailure,\n OntologySourceRecord,\n} from \"../storage/ontology\"\nimport type { ProjectionRunStorage } from \"../storage/projection-runs\"\nimport {\n commitEmptyEdit,\n commitExactObject,\n contractEditHeader,\n contractEditResult,\n contractExecutor,\n ensureContractExecution,\n type OntologyContractStorage,\n} from \"./ontology-contract-fixture\"\nimport { startTestProjectionRun } from \"./projection-execution\"\n\nexport interface OntologyStorageContractStorage extends OntologyContractStorage {\n readonly projectionRuns: ProjectionRunStorage\n}\n\nexport interface OntologyStorageContractSuiteOptions<\n TStorage extends OntologyStorageContractStorage = OntologyStorageContractStorage,\n> {\n /** Factory that returns a fresh, fully transaction-capable storage facade for each test. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n /** Optional provider setup invoked after the storage facade is created. */\n readonly setup?: (storage: TStorage) => void | Promise<void>\n /** Optional provider cleanup invoked after every test, including failed tests. */\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst replacementIdentity = (\n versionId: string,\n projectionId = \"contract.devices\"\n): Extract<ProjectionMaterializationIdentity, { readonly projectionKind: \"object\" }> => ({\n projectionId,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: {\n datasetId: \"contract.devices\",\n versionId,\n createdAt: `2026-01-${versionId.padStart(2, \"0\")}T00:00:00.000Z`,\n },\n ontologyRevision: \"ontology-contract-revision\",\n projectionRevision: \"projection-contract-revision\",\n ownershipHash: \"ownership-contract-hash\",\n})\n\nconst emptyProjectionCounts = {\n objectsCreated: 0,\n objectsUpdated: 0,\n objectsDeleted: 0,\n objectsUnchanged: 0,\n linksCreated: 0,\n linksUpdated: 0,\n linksDeleted: 0,\n linksUnchanged: 0,\n} as const\n\ninterface ReadyCandidate {\n readonly identity: Extract<\n ProjectionMaterializationIdentity,\n { readonly projectionKind: \"object\" }\n >\n readonly execution: ProjectionExecution\n readonly materializationId: string\n readonly source: { readonly projectionId: string }\n readonly executionId: string\n}\n\nfunction ontologyOutboxFailure(message: string): OntologyOutboxFailure {\n return {\n code: \"event.delivery_failed\",\n message,\n retryable: true,\n at: \"2026-01-03T02:00:00.000Z\",\n }\n}\n\n/**\n * Runs provider-level ontology persistence contracts without asking the provider\n * to interpret ontology definitions, edits, or projection rows. Exact plans are\n * supplied directly and the suite checks durable lifecycle, CAS, outbox, and\n * cross-facade transaction behavior.\n */\nexport function runOntologyStorageContractSuite<TStorage extends OntologyStorageContractStorage>(\n label: string,\n options: OntologyStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await options.setup?.(storage)\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"stores one authoritative commit and rejects duplicate commit identities\", async () => {\n await withStorage(async (storage) => {\n await commitEmptyEdit(storage, \"commit-one\")\n const stored = await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"commit-one\",\n })\n expect(stored).toMatchObject({\n id: \"commit-one\",\n idempotencyKey: \"runtime:commit-one\",\n requestHash: \"hash:commit-one\",\n result: { commitId: \"commit-one\" },\n })\n expect(\n await storage.ontology.commits.getByIdempotencyKey({\n projectId: \"contract-project\",\n idempotencyKey: \"runtime:commit-one\",\n })\n ).toEqual(stored)\n\n await expect(commitEmptyEdit(storage, \"commit-one\")).rejects.toMatchObject({\n kind: \"idempotency\",\n })\n const divergent = structuredClone(contractEditHeader(\"different-id\"))\n ;(divergent.commit as { idempotencyKey: string }).idempotencyKey = \"runtime:commit-one\"\n ;(divergent.commit as { requestHash: string }).requestHash = \"different-hash\"\n await expect(\n storage.transaction(async (tx) => {\n await ensureContractExecution(tx, divergent)\n await tx.ontology.materializations.begin(divergent)\n })\n ).rejects.toMatchObject({ kind: \"idempotency\" })\n\n const list = await storage.ontology.commits.list({\n projectId: \"contract-project\",\n limit: 1,\n offset: 0,\n })\n expect(list).toMatchObject({ total: 1, hasMore: false })\n expect(list.commits.map((commit) => commit.id)).toEqual([\"commit-one\"])\n })\n })\n\n test(\"round-trips commit and event attribution exactly\", async () => {\n await withStorage(async (storage) => {\n // The requester is a real principal: SQL executions reference it by foreign key.\n if (!storage.auth) throw new Error(\"The attribution contract requires auth storage.\")\n await storage.auth.users.create({\n projectId: \"contract-project\",\n id: \"contract-requester\",\n email: \"requester@example.com\",\n })\n const requestedBy = { type: \"user\", id: \"contract-requester\" } as const\n await commitExactObject(storage, \"attributed\", { requestedBy })\n await commitExactObject(storage, \"unattributed\", { primaryId: \"unattributed-device\" })\n\n const attributed = await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"attributed\",\n })\n expect(attributed?.requestedBy).toEqual(requestedBy)\n expect(attributed?.executor).toEqual(contractExecutor(\"attributed\"))\n expect(attributed).not.toHaveProperty(\"actor\")\n const unattributed = await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"unattributed\",\n })\n expect(unattributed).not.toHaveProperty(\"requestedBy\")\n expect(unattributed?.executor).toEqual(contractExecutor(\"unattributed\"))\n\n const claimed = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2027-01-01T00:00:00.000Z\",\n limit: 10,\n leaseId: \"attribution-check\",\n leaseExpiresAt: \"2027-01-01T01:00:00.000Z\",\n })\n const envelopes = new Map(claimed.map((record) => [record.envelope.commitId, record]))\n expect(envelopes.get(\"attributed\")?.envelope).toMatchObject({\n requestedBy,\n executor: contractExecutor(\"attributed\"),\n })\n const unattributedEnvelope = envelopes.get(\"unattributed\")?.envelope\n expect(unattributedEnvelope?.executor).toEqual(contractExecutor(\"unattributed\"))\n expect(unattributedEnvelope).not.toHaveProperty(\"requestedBy\")\n })\n })\n\n test(\"rejects an ontology commit whose execution does not exist\", async () => {\n await withStorage(async (storage) => {\n const header = contractEditHeader(\"missing-execution\")\n await expect(\n storage.transaction(async (tx) => {\n const session = await tx.ontology.materializations.begin(header)\n await tx.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [],\n result: contractEditResult(header.commit.id),\n },\n })\n })\n ).rejects.toThrow()\n await expect(\n storage.ontology.commits.getById({\n projectId: header.commit.projectId,\n id: header.commit.id,\n })\n ).resolves.toBeNull()\n })\n })\n\n test(\"rejects unfinished sessions and rolls back their authoritative writes\", async () => {\n await withStorage(async (storage) => {\n const header = contractEditHeader(\"session-contract\")\n await expect(storage.ontology.materializations.begin(header)).rejects.toThrow(\n \"active storage transaction\"\n )\n\n await expect(\n commitExactObject(storage, \"unfinished-session\", { omitFinalize: true })\n ).rejects.toThrow(\"unfinished materialization session\")\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"unfinished-session\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"unfinished-session\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2027-01-01T00:00:00.000Z\",\n limit: 10,\n leaseId: \"unfinished-session-check\",\n leaseExpiresAt: \"2027-01-01T01:00:00.000Z\",\n })\n ).toEqual([])\n\n let leakedSession: MaterializationSession | undefined\n await expect(\n storage.transaction(async (tx) => {\n const leakedHeader = contractEditHeader(\"leaked-session\")\n await ensureContractExecution(tx, leakedHeader)\n leakedSession = await tx.ontology.materializations.begin(leakedHeader)\n })\n ).rejects.toThrow(\"unfinished materialization session\")\n if (!leakedSession) throw new Error(\"Expected an unfinished session handle\")\n const staleSession = leakedSession\n await storage.transaction(async (tx) => {\n await expect(\n tx.ontology.materializations.finalize({\n session: staleSession,\n finalization: {\n sourceActivations: [],\n result: contractEditResult(\"leaked-session\"),\n },\n })\n ).rejects.toThrow(\"inactive\")\n })\n })\n })\n\n test(\"stages insert-only source rows, seals counts, and fences stale execution tokens\", async () => {\n await withStorage(async (storage) => {\n const identity = replacementIdentity(\"01\")\n const claimed = await startTestProjectionRun(storage, {\n id: \"staging-run\",\n projectId: \"contract-project\",\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n const execution = claimed.execution\n const source = { projectionId: identity.projectionId }\n await expect(\n storage.ontology.sources.beginMaterialization({\n projectId: \"contract-project\",\n source,\n materializationId: \"mismatched-candidate\",\n execution,\n projectionKind: \"link\",\n protocol: \"replacement\",\n datasetVersion: identity.datasetVersion,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n ontologyRevision: identity.ontologyRevision,\n createdAt: \"2026-01-01T00:00:00.000Z\",\n })\n ).rejects.toThrow(\"identity\")\n await storage.ontology.sources.beginMaterialization({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: identity.datasetVersion,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n ontologyRevision: identity.ontologyRevision,\n createdAt: \"2026-01-01T00:00:00.000Z\",\n })\n expect(\n await storage.ontology.sources.getActive({ projectId: \"contract-project\", source })\n ).toBeNull()\n\n const row = {\n root: {\n kind: \"object\" as const,\n ref: { objectTypeId: \"ContractDevice\", primaryId: \"one\" },\n },\n assertion: {\n kind: \"object\" as const,\n ref: { objectTypeId: \"ContractDevice\", primaryId: \"one\" },\n properties: { name: \"one\" },\n },\n stagingOrdinal: 0,\n }\n expect(\n await storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [row],\n })\n ).toEqual({ inserted: 1, unchanged: 0 })\n expect(\n await storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [row],\n })\n ).toEqual({ inserted: 0, unchanged: 1 })\n await expect(\n storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [\n {\n ...row,\n assertion: { ...row.assertion, properties: { name: \"different\" } },\n },\n ],\n })\n ).rejects.toThrow()\n\n const ready = await storage.ontology.sources.markReady({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rootCount: 1,\n assertionCount: 1,\n readyAt: \"2026-01-01T00:01:00.000Z\",\n })\n expect(ready).toMatchObject({ status: \"ready\", rootCount: 1, assertionCount: 1 })\n\n const reclaimed = await storage.projectionRuns.startOrReclaim({\n id: claimed.run.id,\n projectId: claimed.run.projectId,\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n await expect(\n storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rows: [],\n })\n ).rejects.toMatchObject({ kind: \"execution-lost\" })\n await expect(\n storage.ontology.sources.markReady({\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n rootCount: 1,\n assertionCount: 1,\n readyAt: \"2026-01-01T00:03:00.000Z\",\n })\n ).rejects.toMatchObject({ kind: \"execution-lost\" })\n await expect(\n storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: \"contract-project\",\n source,\n materializationId: \"staging-candidate\",\n execution,\n abandonedAt: \"2026-01-01T00:03:00.000Z\",\n })\n ).rejects.toMatchObject({ kind: \"execution-lost\" })\n const adopted = await storage.ontology.sources.adopt({\n projectId: \"contract-project\",\n source,\n execution: reclaimed.execution,\n adoptedAt: \"2026-01-01T00:01:30.000Z\",\n })\n expect(adopted).toMatchObject({\n record: {\n materializationId: \"staging-candidate\",\n status: \"ready\",\n executionToken: reclaimed.execution.executionToken,\n updatedAt: \"2026-01-01T00:01:30.000Z\",\n },\n resumeStagingOrdinal: 1,\n })\n // Adopting twice from the same execution is a no-op, not a second owner change.\n expect(\n await storage.ontology.sources.adopt({\n projectId: \"contract-project\",\n source,\n execution: reclaimed.execution,\n adoptedAt: \"2026-01-01T00:01:40.000Z\",\n })\n ).toMatchObject({ record: { executionToken: reclaimed.execution.executionToken } })\n\n const abandoned = await storage.ontology.sources.abandon({\n kind: \"run\",\n projectId: \"contract-project\",\n source,\n execution: reclaimed.execution,\n abandonedAt: \"2026-01-01T00:02:00.000Z\",\n })\n expect(abandoned).toMatchObject({ status: \"abandoned\", executionToken: null })\n expect(\n await storage.ontology.sources.abandon({\n kind: \"run\",\n projectId: \"contract-project\",\n source,\n execution: reclaimed.execution,\n abandonedAt: \"2026-01-01T00:02:00.000Z\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.sources.adopt({\n projectId: \"contract-project\",\n source,\n execution: reclaimed.execution,\n adoptedAt: \"2026-01-01T00:02:10.000Z\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.sources.summarizeTerminal({ projectId: \"contract-project\" })\n ).toEqual({ count: 1, oldestTerminalAt: \"2026-01-01T00:02:00.000Z\" })\n\n // Superseded retention does not hold an abandoned candidate back.\n expect(\n await storage.ontology.sources.cleanupTerminal({\n projectId: \"contract-project\",\n terminalBefore: \"2026-02-01T00:00:00.000Z\",\n limit: 10,\n })\n ).toEqual({ rowsDeleted: 0, materializationsDeleted: 0 })\n expect(\n await storage.ontology.sources.purgeAbandoned({ projectId: \"contract-project\", limit: 1 })\n ).toEqual({ rowsDeleted: 1, materializationsDeleted: 0 })\n expect(\n await storage.ontology.sources.purgeAbandoned({ projectId: \"contract-project\", limit: 1 })\n ).toEqual({ rowsDeleted: 1, materializationsDeleted: 0 })\n expect(\n await storage.ontology.sources.purgeAbandoned({ projectId: \"contract-project\", limit: 1 })\n ).toEqual({ rowsDeleted: 0, materializationsDeleted: 1 })\n expect(\n await storage.ontology.sources.summarizeTerminal({ projectId: \"contract-project\" })\n ).toEqual({ count: 0, oldestTerminalAt: null })\n })\n })\n\n test(\"adopts a staging candidate at its last staged root\", async () => {\n await withStorage(async (storage) => {\n const identity = replacementIdentity(\"01\")\n const claimed = await startTestProjectionRun(storage, {\n id: \"resumed-run\",\n projectId: \"contract-project\",\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n const source = { projectionId: identity.projectionId }\n await storage.ontology.sources.beginMaterialization({\n projectId: \"contract-project\",\n source,\n materializationId: \"resumed-candidate\",\n execution: claimed.execution,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: identity.datasetVersion,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n ontologyRevision: identity.ontologyRevision,\n createdAt: \"2026-01-01T00:00:00.000Z\",\n })\n const row = (primaryId: string, stagingOrdinal: number) => ({\n root: { kind: \"object\" as const, ref: { objectTypeId: \"ContractDevice\", primaryId } },\n assertion: {\n kind: \"object\" as const,\n ref: { objectTypeId: \"ContractDevice\", primaryId },\n properties: { name: primaryId },\n },\n stagingOrdinal,\n })\n await storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"resumed-candidate\",\n execution: claimed.execution,\n rows: [row(\"zero\", 0), row(\"one\", 1)],\n })\n\n const reclaimed = await storage.projectionRuns.startOrReclaim({\n id: claimed.run.id,\n projectId: claimed.run.projectId,\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n const adopted = await storage.ontology.sources.adopt({\n projectId: \"contract-project\",\n source,\n execution: reclaimed.execution,\n adoptedAt: \"2026-01-01T00:01:00.000Z\",\n })\n expect(adopted).toMatchObject({\n record: { status: \"staging\", executionToken: reclaimed.execution.executionToken },\n resumeStagingOrdinal: 1,\n })\n // The previous execution lost the candidate with the run.\n await expect(\n storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"resumed-candidate\",\n execution: claimed.execution,\n rows: [row(\"two\", 2)],\n })\n ).rejects.toMatchObject({ kind: \"execution-lost\" })\n expect(\n await storage.ontology.sources.stageRows({\n projectId: \"contract-project\",\n source,\n materializationId: \"resumed-candidate\",\n execution: reclaimed.execution,\n rows: [row(\"one\", 1), row(\"two\", 2)],\n })\n ).toEqual({ inserted: 1, unchanged: 1 })\n expect(\n await storage.ontology.sources.markReady({\n projectId: \"contract-project\",\n source,\n materializationId: \"resumed-candidate\",\n execution: reclaimed.execution,\n rootCount: 3,\n assertionCount: 3,\n readyAt: \"2026-01-01T00:02:00.000Z\",\n })\n ).toMatchObject({ status: \"ready\", rootCount: 3 })\n })\n })\n\n test(\"atomically activates explicit empty candidates and rejects competing stale heads\", async () => {\n await withStorage(async (storage) => {\n const first = await createReadyEmptyCandidate(storage, \"run-one\", \"candidate-one\", \"01\")\n await activateEmptyCandidate(\n storage,\n first,\n null,\n \"commit-source-one\",\n \"2026-01-03T00:00:00.000Z\"\n )\n const activeOne = await storage.ontology.sources.getActive({\n projectId: \"contract-project\",\n source: first.source,\n })\n expect(activeOne).toMatchObject({\n materializationId: first.materializationId,\n status: \"active\",\n rootCount: 0,\n assertionCount: 0,\n executionToken: null,\n })\n expect(\n await storage.ontology.commits.getByOrigin({\n projectId: \"contract-project\",\n origin: { kind: \"projection\", projectionRunId: first.execution.projectionRunId },\n })\n ).toMatchObject({ id: \"commit-source-one\" })\n await expect(\n activateEmptyCandidate(\n storage,\n first,\n activeOne,\n \"duplicate-projection-origin\",\n \"2026-01-03T01:00:00.000Z\"\n )\n ).rejects.toMatchObject({ kind: \"run-correlation\" })\n\n const left = await createReadyEmptyCandidate(storage, \"run-left\", \"candidate-left\", \"02\")\n const right = await createReadyEmptyCandidate(storage, \"run-right\", \"candidate-right\", \"03\")\n await activateEmptyCandidate(\n storage,\n left,\n activeOne!,\n \"commit-source-left\",\n \"2026-01-04T00:00:00.000Z\"\n )\n await expect(\n activateEmptyCandidate(\n storage,\n right,\n activeOne!,\n \"commit-source-right\",\n \"2026-01-05T00:00:00.000Z\"\n )\n ).rejects.toMatchObject({ kind: \"projection-fence\" })\n const currentActive = await storage.ontology.sources.getActive({\n projectId: \"contract-project\",\n source: first.source,\n })\n expect(currentActive).toMatchObject({ materializationId: left.materializationId })\n\n const stale = await createReadyEmptyCandidate(\n storage,\n \"run-stale-activation\",\n \"candidate-stale-activation\",\n \"04\"\n )\n const reclaimed = await storage.projectionRuns.startOrReclaim({\n id: stale.execution.projectionRunId,\n projectId: \"contract-project\",\n identity: stale.identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n await expect(\n activateEmptyCandidate(\n storage,\n stale,\n currentActive,\n \"commit-stale-activation\",\n \"2026-01-06T00:00:00.000Z\"\n )\n ).rejects.toThrow(\"execution token is stale\")\n await storage.ontology.sources.abandon({\n kind: \"run\",\n projectId: \"contract-project\",\n source: stale.source,\n execution: reclaimed.execution,\n abandonedAt: \"2026-01-06T00:01:00.000Z\",\n })\n\n const cleanup = await storage.ontology.sources.purgeAbandoned({\n projectId: \"contract-project\",\n limit: 10,\n })\n expect(cleanup.materializationsDeleted).toBeGreaterThanOrEqual(1)\n expect(\n await storage.ontology.sources.getActive({\n projectId: \"contract-project\",\n source: first.source,\n })\n ).toMatchObject({ materializationId: left.materializationId })\n expect(\n await storage.ontology.sources.abandon({\n kind: \"candidate\",\n projectId: \"contract-project\",\n source: right.source,\n materializationId: right.materializationId,\n execution: right.execution,\n abandonedAt: \"2026-02-02T00:00:00.000Z\",\n })\n ).toMatchObject({ status: \"abandoned\" })\n })\n })\n\n test(\"rolls back exact rows, commits, and outbox writes through one transaction facade\", async () => {\n await withStorage(async (storage) => {\n await expect(\n commitExactObject(storage, \"rolled-back\", { throwAfterFinalize: true })\n ).rejects.toThrow(\"contract rollback\")\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"rolled-back\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"rolled-back\",\n })\n ).toBeNull()\n expect(\n await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2027-01-01T00:00:00.000Z\",\n limit: 10,\n leaseId: \"rollback-check\",\n leaseExpiresAt: \"2027-01-01T01:00:00.000Z\",\n })\n ).toEqual([])\n\n await commitExactObject(storage, \"committed\")\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"committed\",\n })\n ).toMatchObject({ properties: { name: \"committed\" }, lastCommitId: \"committed\" })\n\n await expect(\n commitExactObject(storage, \"stale-object-cas\", { primaryId: \"committed\" })\n ).rejects.toThrow(\"to be absent\")\n expect(\n await storage.ontology.commits.getById({\n projectId: \"contract-project\",\n id: \"stale-object-cas\",\n })\n ).toBeNull()\n expect(\n await storage.objects.getByPrimaryId({\n projectId: \"contract-project\",\n objectTypeId: \"ContractDevice\",\n primaryId: \"committed\",\n })\n ).toMatchObject({ properties: { name: \"committed\" }, lastCommitId: \"committed\" })\n })\n })\n\n test(\"leases outbox rows exclusively, reclaims expiry, fences stale workers, and purges\", async () => {\n await withStorage(async (storage) => {\n const outboxB = await commitExactObject(storage, \"outbox-b\")\n const outboxA = await commitExactObject(storage, \"outbox-a\")\n await expect(\n storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-02T19:00:00-05:00\",\n limit: 1,\n leaseId: \"noncanonical-lease\",\n leaseExpiresAt: \"2026-01-03T01:00:00.000Z\",\n })\n ).rejects.toThrow(\"canonical UTC\")\n const first = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T00:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-one\",\n leaseExpiresAt: \"2026-01-03T01:00:00.000Z\",\n })\n expect(first).toHaveLength(1)\n expect(first[0]).toMatchObject({ attempts: 1, leaseId: \"lease-one\" })\n expect(first[0].envelope.id).toBe([outboxA.eventId, outboxB.eventId].sort()[0])\n const concurrent = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T00:30:00.000Z\",\n limit: 10,\n leaseId: \"lease-concurrent\",\n leaseExpiresAt: \"2026-01-03T01:30:00.000Z\",\n })\n expect(concurrent).toHaveLength(1)\n expect(concurrent[0].envelope.id).not.toBe(first[0].envelope.id)\n\n const reclaimed = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T02:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-two\",\n leaseExpiresAt: \"2026-01-03T03:00:00.000Z\",\n })\n expect(reclaimed[0].envelope.id).toBe(first[0].envelope.id)\n await expect(\n storage.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: [first[0].envelope.id],\n leaseId: \"lease-one\",\n publishedAt: \"2026-01-03T02:10:00.000Z\",\n })\n ).rejects.toThrow(\"lease does not match\")\n await storage.ontology.outbox.reschedule({\n projectId: \"contract-project\",\n ids: [reclaimed[0].envelope.id],\n leaseId: \"lease-two\",\n availableAt: \"2026-01-04T00:00:00.000Z\",\n failure: ontologyOutboxFailure(\"broker unavailable\"),\n })\n const retried = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-04T00:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-three\",\n leaseExpiresAt: \"2026-01-04T01:00:00.000Z\",\n })\n expect(retried[0]).toMatchObject({\n attempts: 3,\n lastFailure: ontologyOutboxFailure(\"broker unavailable\"),\n })\n await storage.ontology.outbox.reschedule({\n projectId: \"contract-project\",\n ids: [retried[0].envelope.id],\n leaseId: \"lease-three\",\n availableAt: \"2026-01-04T00:15:00.000Z\",\n })\n const lifecycleRescheduled = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-04T00:15:00.000Z\",\n limit: 1,\n leaseId: \"lease-four\",\n leaseExpiresAt: \"2026-01-04T01:15:00.000Z\",\n })\n expect(lifecycleRescheduled[0]).toMatchObject({\n attempts: 4,\n lastFailure: ontologyOutboxFailure(\"broker unavailable\"),\n })\n expect(\n await storage.ontology.outbox.summarize({ projectId: \"contract-project\" })\n ).toMatchObject({ pendingCount: 2, retryingCount: 2, maxAttempts: 4 })\n await storage.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: [lifecycleRescheduled[0].envelope.id],\n leaseId: \"lease-four\",\n publishedAt: \"2026-01-04T00:30:00.000Z\",\n })\n expect(\n await storage.ontology.outbox.purgePublished({\n projectId: \"contract-project\",\n publishedBefore: \"2026-01-05T00:00:00.000Z\",\n limit: 1,\n })\n ).toBe(1)\n })\n })\n\n test.each([\n \"root\",\n \"transaction\",\n ] as const)(\"keeps %s batch outbox settlement atomic when callers catch a stale lease\", async (boundary) => {\n await withStorage(async (storage) => {\n await commitExactObject(storage, \"lease-atomic-a\")\n await commitExactObject(storage, \"lease-atomic-b\")\n const claimed = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T00:00:00.000Z\",\n limit: 10,\n leaseId: \"lease-atomic-old\",\n leaseExpiresAt: \"2026-01-03T01:00:00.000Z\",\n })\n expect(claimed).toHaveLength(2)\n const [reclaimed] = await storage.ontology.outbox.claim({\n projectId: \"contract-project\",\n now: \"2026-01-03T02:00:00.000Z\",\n limit: 1,\n leaseId: \"lease-atomic-new\",\n leaseExpiresAt: \"2026-01-03T03:00:00.000Z\",\n })\n const untouched = claimed.find((row) => row.envelope.id !== reclaimed!.envelope.id)!\n\n let conflict: unknown\n const settle = async (tx: OntologyContractStorage) => {\n try {\n await tx.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: claimed.map((row) => row.envelope.id),\n leaseId: \"lease-atomic-old\",\n publishedAt: \"2026-01-03T02:10:00.000Z\",\n })\n } catch (error) {\n conflict = error\n }\n }\n if (boundary === \"transaction\") await storage.transaction(settle)\n else await settle(storage)\n expect(conflict).toMatchObject({ kind: \"outbox-lease\" })\n\n await storage.ontology.outbox.markPublished({\n projectId: \"contract-project\",\n ids: [untouched.envelope.id],\n leaseId: \"lease-atomic-old\",\n publishedAt: \"2026-01-03T02:20:00.000Z\",\n })\n })\n })\n\n test(\"rolls back a telemetry checkpoint with its authoritative ontology commit\", async () => {\n await withStorage(async (storage) => {\n const identity: ProjectionMaterializationIdentity = {\n projectionId: \"contract.telemetry\",\n projectionKind: \"telemetry\",\n protocol: \"telemetry\",\n datasetVersion: {\n datasetId: \"contract.readings\",\n versionId: \"telemetry-version\",\n createdAt: \"2026-01-01T00:00:00.000Z\",\n },\n ontologyRevision: \"ontology-contract-revision\",\n projectionRevision: \"telemetry-contract-revision\",\n ownershipHash: \"telemetry-contract-ownership\",\n }\n const run = await startTestProjectionRun(storage, {\n id: \"telemetry-run\",\n projectId: \"contract-project\",\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n fixedBatchSize: 2,\n })\n const execute = async (throwAfter: boolean) => {\n await storage.transaction(async (tx) => {\n if (!tx.projectionRuns) {\n throw new Error(\"Contract transaction omitted required storage facades.\")\n }\n const header = telemetryHeader(identity, run.run.id, run.run.executionId)\n const session = await tx.ontology.materializations.begin(header)\n await tx.ontology.materializations.finalize({\n session,\n finalization: {\n sourceActivations: [],\n result: {\n kind: \"telemetry\",\n commitId: header.commit.id,\n created: true,\n eventCount: 0,\n committedAt: header.commit.committedAt,\n pointsCreated: 0,\n pointsUpdated: 0,\n pointsUnchanged: 0,\n latestObjectsChanged: 0,\n },\n },\n })\n await tx.projectionRuns.advanceTelemetryCheckpoint({\n id: run.run.id,\n projectId: run.run.projectId,\n identity,\n executionToken: run.execution.executionToken,\n batchOrdinal: 0,\n batchRowCount: 2,\n batchRowsSkipped: 2,\n inputExhausted: true,\n })\n if (throwAfter) throw new Error(\"telemetry rollback\")\n })\n }\n\n await expect(execute(true)).rejects.toThrow(\"telemetry rollback\")\n expect(\n await storage.ontology.commits.getByOrigin({\n projectId: \"contract-project\",\n origin: { kind: \"telemetry\", projectionRunId: run.run.id, batchOrdinal: 0 },\n })\n ).toBeNull()\n expect(\n await storage.projectionRuns.getById({ projectId: run.run.projectId, id: run.run.id })\n ).toMatchObject({\n telemetryCheckpoint: { nextBatchOrdinal: 0, nextRowOffset: 0, inputExhausted: false },\n })\n\n await execute(false)\n expect(\n await storage.ontology.commits.getByOrigin({\n projectId: \"contract-project\",\n origin: { kind: \"telemetry\", projectionRunId: run.run.id, batchOrdinal: 0 },\n })\n ).toMatchObject({ id: \"telemetry-commit\" })\n expect(\n await storage.projectionRuns.getById({ projectId: run.run.projectId, id: run.run.id })\n ).toMatchObject({\n telemetryCheckpoint: { nextBatchOrdinal: 1, nextRowOffset: 2, inputExhausted: true },\n })\n })\n })\n })\n}\n\nasync function createReadyEmptyCandidate(\n storage: OntologyStorageContractStorage,\n runId: string,\n materializationId: string,\n versionId: string\n): Promise<ReadyCandidate> {\n const identity = replacementIdentity(versionId)\n const run = await startTestProjectionRun(storage, {\n id: runId,\n projectId: \"contract-project\",\n identity,\n target: { objectTypeId: \"ContractDevice\" },\n })\n const execution = run.execution\n const source = { projectionId: identity.projectionId }\n await storage.ontology.sources.beginMaterialization({\n projectId: run.run.projectId,\n source,\n materializationId,\n execution,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: identity.datasetVersion,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n ontologyRevision: identity.ontologyRevision,\n createdAt: identity.datasetVersion.createdAt,\n })\n await storage.ontology.sources.markReady({\n projectId: run.run.projectId,\n source,\n materializationId,\n execution,\n rootCount: 0,\n assertionCount: 0,\n readyAt: new Date(Date.parse(identity.datasetVersion.createdAt) + 1_000).toISOString(),\n })\n return { identity, execution, materializationId, source, executionId: run.run.executionId }\n}\n\nasync function activateEmptyCandidate(\n storage: OntologyStorageContractStorage,\n candidate: ReadyCandidate,\n expectedActive: OntologySourceRecord | null,\n commitId: string,\n committedAt: string\n): Promise<void> {\n const expected = {\n source: candidate.source,\n activeMaterializationId: expectedActive?.materializationId ?? null,\n lastCommitId: expectedActive?.lastCommitId ?? null,\n }\n const header: MaterializationPlanHeader = {\n commit: {\n projectId: \"contract-project\",\n id: commitId,\n idempotencyKey: `projection:${commitId}`,\n requestHash: `hash:${commitId}`,\n executionId: candidate.executionId,\n origin: {\n kind: \"projection\",\n projectionId: candidate.source.projectionId,\n projectionRunId: candidate.execution.projectionRunId,\n datasetId: candidate.identity.datasetVersion.datasetId,\n datasetVersionId: candidate.identity.datasetVersion.versionId,\n },\n executor: {\n type: \"primitive\",\n kind: \"projection\",\n id: candidate.source.projectionId,\n runId: candidate.execution.projectionRunId,\n },\n ontologyRevision: candidate.identity.ontologyRevision,\n projectionRevision: candidate.identity.projectionRevision,\n ownershipHash: candidate.identity.ownershipHash,\n intent: {\n kind: \"projection\",\n source: candidate.source,\n datasetVersion: candidate.identity.datasetVersion,\n },\n committedAt,\n },\n expected: { sources: [expected], objects: [], links: [], linkScopes: [], points: [] },\n }\n const finalization: MaterializationPlanFinalization = {\n sourceActivations: [\n {\n source: candidate.source,\n materializationId: candidate.materializationId,\n execution: candidate.execution,\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: candidate.identity.datasetVersion,\n projectionRevision: candidate.identity.projectionRevision,\n ownershipHash: candidate.identity.ownershipHash,\n ontologyRevision: candidate.identity.ontologyRevision,\n expected,\n lastCommitId: commitId,\n updatedAt: committedAt,\n },\n ],\n result: {\n kind: \"projection\",\n commitId,\n created: true,\n eventCount: 0,\n committedAt,\n counts: emptyProjectionCounts,\n },\n }\n await storage.transaction(async (tx) => {\n if (!tx.projectionRuns) {\n throw new Error(\"Contract transaction omitted required storage facades.\")\n }\n await tx.projectionRuns.lockForMaterialization({\n id: candidate.execution.projectionRunId,\n projectId: header.commit.projectId,\n identity: candidate.identity,\n executionToken: candidate.execution.executionToken,\n })\n const session = await tx.ontology.materializations.begin(header)\n for (const entityKind of [\"object\", \"link\"] as const) {\n for await (const _page of tx.ontology.materializations.streamSourceReplacementState({\n session,\n source: candidate.source,\n candidateMaterializationId: candidate.materializationId,\n entityKind,\n pageRows: 1,\n })) {\n // Empty output intentionally has no classifications or exact writes.\n }\n }\n await tx.ontology.materializations.finalize({ session, finalization })\n })\n}\n\nfunction telemetryHeader(\n identity: ProjectionMaterializationIdentity,\n projectionRunId: string,\n executionId: string\n): MaterializationPlanHeader {\n if (identity.protocol !== \"telemetry\") throw new Error(\"Expected telemetry identity\")\n return {\n commit: {\n projectId: \"contract-project\",\n id: \"telemetry-commit\",\n idempotencyKey: \"telemetry:telemetry-run:0\",\n requestHash: \"hash:telemetry-run:0\",\n executionId,\n origin: {\n kind: \"telemetry\",\n source: {\n kind: \"projection\",\n projectionId: identity.projectionId,\n projectionRunId,\n datasetId: identity.datasetVersion.datasetId,\n datasetVersionId: identity.datasetVersion.versionId,\n batchOrdinal: 0,\n },\n },\n executor: {\n type: \"primitive\",\n kind: \"projection\",\n id: identity.projectionId,\n runId: projectionRunId,\n },\n ontologyRevision: identity.ontologyRevision,\n projectionRevision: identity.projectionRevision,\n ownershipHash: identity.ownershipHash,\n intent: {\n kind: \"telemetry\",\n source: {\n kind: \"projection\",\n projection: { projectionId: identity.projectionId },\n datasetVersion: identity.datasetVersion,\n batchOrdinal: 0,\n sourceRowCount: 2,\n sourceRowsSkipped: 2,\n inputExhausted: true,\n },\n pointCount: 0,\n inputPointCount: 0,\n },\n committedAt: \"2026-01-02T00:00:00.000Z\",\n },\n expected: { sources: [], objects: [], links: [], linkScopes: [], points: [] },\n }\n}\n",
|
|
33
33
|
"import type { TrustedPrimitiveRef } from \"../execution\"\nimport type { PipelineRunRecord, QueuePipelineRunInput, Storage } from \"../storage\"\nimport type { ExecutionStorage } from \"../storage/executions\"\n\n/** Create the durable execution required by a Pipeline-run storage fixture. */\nexport async function createTestPipelineExecution(\n executions: ExecutionStorage,\n input: {\n readonly projectId: string\n readonly pipelineId: string\n readonly runId: string\n readonly executionId?: string\n }\n): Promise<string> {\n const executionId = input.executionId ?? `test_pipeline_execution:${input.runId}`\n const existing = await executions.getById({ projectId: input.projectId, id: executionId })\n if (existing) return executionId\n\n const primitive: TrustedPrimitiveRef = {\n kind: \"pipeline\",\n id: input.pipelineId,\n runId: input.runId,\n }\n await executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: primitive.kind, runId: primitive.runId },\n source: { type: \"event\", eventId: `test_event:${input.runId}` },\n correlationId: `test_correlation:${input.runId}`,\n authorizationRef: { type: \"trustedPrimitive\", primitive },\n })\n return executionId\n}\n\n/** Queue a Pipeline run with the valid durable execution fixture required by every provider. */\nexport async function queueTestPipelineRun(\n storage: Pick<Storage, \"pipelineRuns\" | \"executions\">,\n input: Omit<QueuePipelineRunInput, \"executionId\">\n): Promise<PipelineRunRecord> {\n if (!storage.pipelineRuns)\n throw new Error(\"Pipeline run storage is not configured for this test.\")\n const executionId = await createTestPipelineExecution(storage.executions, {\n projectId: input.projectId,\n pipelineId: input.pipelineId,\n runId: input.id,\n })\n return storage.pipelineRuns.queue({ ...input, executionId })\n}\n\n/** Start a Pipeline run after creating its durable execution and queued state. */\nexport async function startTestPipelineRun(\n storage: Pick<Storage, \"pipelineRuns\" | \"executions\">,\n input: Omit<QueuePipelineRunInput, \"executionId\" | \"queuedAt\"> & {\n readonly startedAt?: Date\n }\n): Promise<PipelineRunRecord> {\n const { startedAt, ...queuedRun } = input\n await queueTestPipelineRun(storage, { ...queuedRun, queuedAt: startedAt })\n return storage.pipelineRuns!.start({\n id: input.id,\n projectId: input.projectId,\n startedAt,\n })\n}\n",
|
|
34
|
-
"import { describe, expect, test } from \"bun:test\"\nimport type { SixbFailure } from \"../errors/types\"\nimport type { ProjectionMaterializationIdentity } from \"../materialization/model\"\nimport type { ExecutionStorage } from \"../storage/executions\"\nimport type {\n ProjectionRunClaim,\n ProjectionRunFailureCode,\n ProjectionRunStorage,\n QueueProjectionRunInput,\n StartOrReclaimProjectionRunInput,\n} from \"../storage/projection-runs\"\n\nexport interface ProjectionRunStorageContractContext<\n TStorage extends ProjectionRunStorage = ProjectionRunStorage,\n> {\n readonly projectionRuns: TStorage\n readonly executions: ExecutionStorage\n}\n\nexport interface ProjectionRunStorageContractSuiteOptions<\n TStorage extends ProjectionRunStorage = ProjectionRunStorage,\n> {\n /** Factory that returns one isolated execution + projection-run store for each test. */\n readonly createStorage: () =>\n | ProjectionRunStorageContractContext<TStorage>\n | Promise<ProjectionRunStorageContractContext<TStorage>>\n readonly setup?: (context: ProjectionRunStorageContractContext<TStorage>) => void | Promise<void>\n readonly cleanup?: (\n context: ProjectionRunStorageContractContext<TStorage>\n ) => void | Promise<void>\n}\n\nconst projectId = \"contract-project\"\nconst objectTarget = { objectTypeId: \"Device\" } as const\n\nconst failure = {\n code: \"internal.unexpected\",\n message: \"Projection failed\",\n retryable: false,\n at: \"2026-06-01T12:00:00.000Z\",\n details: { projectionId: \"contract.devices\", runId: \"failed-run\" },\n} as const satisfies SixbFailure<ProjectionRunFailureCode>\n\nconst replacementIdentity = {\n projectionId: \"contract.devices\",\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: {\n datasetId: \"contract.devices\",\n versionId: \"version-1\",\n createdAt: \"2026-01-01T00:00:00.000Z\",\n },\n ontologyRevision: \"ontology-1\",\n projectionRevision: \"projection-1\",\n ownershipHash: \"ownership-1\",\n} as const satisfies ProjectionMaterializationIdentity\n\nconst telemetryIdentity = {\n projectionId: \"contract.temperatures\",\n projectionKind: \"telemetry\",\n protocol: \"telemetry\",\n datasetVersion: {\n datasetId: \"contract.readings\",\n versionId: \"version-1\",\n createdAt: \"2026-01-01T00:00:00.000Z\",\n },\n ontologyRevision: \"ontology-1\",\n projectionRevision: \"projection-telemetry-1\",\n ownershipHash: \"ownership-telemetry-1\",\n} as const satisfies ProjectionMaterializationIdentity\n\n/** Runs the single durable, fenced projection-run lifecycle against a provider. */\nexport function runProjectionRunStorageContractSuite<TStorage extends ProjectionRunStorage>(\n label: string,\n options: ProjectionRunStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (\n body: (context: ProjectionRunStorageContractContext<TStorage>) => Promise<void>\n ): Promise<void> => {\n const context = await options.createStorage()\n try {\n await options.setup?.(context)\n await body(context)\n } finally {\n await options.cleanup?.(context)\n }\n }\n\n describe(label, () => {\n test(\"admits a queued run only after its durable execution exists\", async () => {\n await withStorage(async (context) => {\n const input = replacementInput(\"queued-run\")\n await expect(\n context.projectionRuns.queue({\n ...input,\n executionId: \"missing-execution\",\n })\n ).rejects.toThrow()\n\n const wrongSourceExecutionId = \"execution:wrong-source\"\n await context.executions.create({\n id: wrongSourceExecutionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: \"projection\", runId: input.id },\n source: { type: \"event\", eventId: \"wrong-source\" },\n correlationId: input.id,\n authorizationRef: {\n type: \"trustedPrimitive\",\n primitive: { kind: \"projection\", id: input.identity.projectionId, runId: input.id },\n },\n })\n await expect(\n context.projectionRuns.queue({\n ...input,\n executionId: wrongSourceExecutionId,\n })\n ).rejects.toThrow(\"does not authorize Projection run\")\n\n const admission = await admitProjectionRun(context, input)\n await expect(\n context.projectionRuns.getById({ projectId: input.projectId, id: input.id })\n ).resolves.toMatchObject({\n id: input.id,\n executionId: admission.executionId,\n status: \"queued\",\n attempt: 0,\n })\n })\n })\n\n test(\"requeues the same admission after an enqueue failure\", async () => {\n await withStorage(async (context) => {\n const input = replacementInput(\"enqueue-retry-run\")\n const admission = await admitProjectionRun(context, input)\n await expect(\n context.projectionRuns.failEnqueue({\n id: input.id,\n projectId: input.projectId,\n error: {\n code: \"queue.enqueue_failed\",\n message: \"queue unavailable\",\n retryable: true,\n at: \"2026-06-01T12:00:00.000Z\",\n details: { projectionId: input.identity.projectionId, runId: input.id },\n },\n })\n ).resolves.toMatchObject({\n status: \"failed\",\n error: { code: \"queue.enqueue_failed\", message: \"queue unavailable\" },\n })\n\n await expect(context.projectionRuns.queue(admission)).resolves.toMatchObject({\n executionId: admission.executionId,\n status: \"queued\",\n attempt: 0,\n })\n })\n })\n\n test(\"keeps one run while reclaim rotates its execution\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = replacementInput(\"replacement-run\")\n await admitProjectionRun(context, input)\n const first = await storage.startOrReclaim(input)\n const second = await storage.startOrReclaim(input)\n\n expect(first.run).toMatchObject({ id: input.id, attempt: 1, status: \"running\" })\n expect(second.run).toMatchObject({ id: input.id, attempt: 2, status: \"running\" })\n expect(second.execution.executionToken).not.toBe(first.execution.executionToken)\n expect(second.run).not.toHaveProperty(\"executionToken\")\n expect(await storage.getById({ projectId, id: input.id })).toMatchObject({\n identity: replacementIdentity,\n target: objectTarget,\n progress: { sourceRowsRead: 0, sourceRowsSkipped: 0 },\n })\n })\n })\n\n test(\"fences every stale lock, progress, and terminal write\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = replacementInput(\"fenced-run\")\n await admitProjectionRun(context, input)\n const stale = await storage.startOrReclaim(input)\n const current = await storage.startOrReclaim(input)\n\n await expect(storage.lockForMaterialization(executionInput(stale))).rejects.toThrow(\n \"execution token is stale\"\n )\n await expect(\n storage.update({\n ...executionInput(stale),\n progress: { sourceRowsRead: 1 },\n })\n ).rejects.toThrow(\"execution token is stale\")\n await expect(\n storage.finish({\n ...executionInput(stale),\n protocol: \"replacement\",\n status: \"cancelled\",\n })\n ).rejects.toThrow(\"execution token is stale\")\n\n await expect(\n storage.update({\n ...executionInput(current),\n progress: { sourceRowsRead: 3 },\n })\n ).resolves.toMatchObject({ progress: { sourceRowsRead: 3 } })\n })\n })\n\n test(\"rejects immutable identity and target drift\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = replacementInput(\"identity-run\")\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n const changedIdentity = { ...replacementIdentity, ownershipHash: \"different-ownership\" }\n\n await expect(\n storage.startOrReclaim({ ...input, identity: changedIdentity })\n ).rejects.toThrow(\"identity does not match\")\n await expect(\n storage.startOrReclaim({ ...input, target: { objectTypeId: \"OtherDevice\" } })\n ).rejects.toThrow(\"target object types do not match\")\n await expect(\n storage.lockForMaterialization({\n ...executionInput(claim),\n identity: changedIdentity,\n })\n ).rejects.toThrow(\"identity does not match\")\n })\n })\n\n test(\"keeps physical progress monotone and internally consistent\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n await admitProjectionRun(context, replacementInput(\"progress-run\"))\n const claim = await storage.startOrReclaim(replacementInput(\"progress-run\"))\n const execution = executionInput(claim)\n await expect(\n storage.update({\n ...execution,\n progress: { sourceRowsRead: 1, sourceRowsSkipped: 2 },\n })\n ).rejects.toThrow(\"sourceRowsSkipped must not exceed sourceRowsRead\")\n await storage.update({\n ...execution,\n progress: { sourceRowsRead: 5, sourceRowsSkipped: 1 },\n })\n await expect(\n storage.update({ ...execution, progress: { sourceRowsRead: 4 } })\n ).rejects.toThrow(\"must not decrease\")\n })\n })\n\n test(\"persists independent incremental progress across reclaim without a physical-row floor\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n await admitProjectionRun(context, replacementInput(\"delta-progress\"))\n const first = await storage.startOrReclaim(replacementInput(\"delta-progress\"))\n const updated = await storage.update({\n ...executionInput(first),\n progress: { sourceChangesRead: 12 },\n })\n expect(updated.progress).toEqual({\n sourceRowsRead: 0,\n sourceRowsSkipped: 0,\n sourceChangesRead: 12,\n })\n const second = await storage.startOrReclaim(replacementInput(\"delta-progress\"))\n expect(second.run.progress).toEqual(updated.progress)\n await expect(\n storage.update({ ...executionInput(first), progress: { sourceChangesRead: 13 } })\n ).rejects.toThrow()\n await expect(\n storage.update({ ...executionInput(second), progress: { sourceChangesRead: 11 } })\n ).rejects.toThrow(\"must not decrease\")\n const fallback = await storage.update({\n ...executionInput(second),\n progress: { sourceRowsRead: 2 },\n })\n expect(fallback.progress).toEqual({\n sourceRowsRead: 2,\n sourceRowsSkipped: 0,\n sourceChangesRead: 12,\n })\n })\n })\n\n test(\"rejects immutable dataset-version metadata reuse\", async () => {\n await withStorage(async (context) => {\n await admitProjectionRun(context, replacementInput(\"dataset-metadata-first\"))\n await expect(\n admitProjectionRun(context, {\n ...replacementInput(\"dataset-metadata-conflict\"),\n identity: {\n ...replacementIdentity,\n datasetVersion: {\n ...replacementIdentity.datasetVersion,\n createdAt: \"2026-01-02T00:00:00.000Z\",\n },\n },\n })\n ).rejects.toThrow(\"immutable dataset version id with different metadata\")\n })\n })\n\n test(\"advances telemetry in contiguous fixed physical batches\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = {\n id: \"telemetry-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 3,\n } as const\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n const execution = executionInput(claim)\n expect(claim.run).toMatchObject({\n telemetryCheckpoint: {\n fixedBatchSize: 3,\n nextBatchOrdinal: 0,\n nextRowOffset: 0,\n inputExhausted: false,\n },\n })\n await expect(\n storage.update({ ...execution, progress: { sourceRowsRead: 1 } })\n ).rejects.toThrow(\"can only advance with its checkpoint\")\n\n await storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 0,\n batchRowCount: 3,\n batchRowsSkipped: 1,\n inputExhausted: false,\n })\n await expect(\n storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 2,\n batchRowCount: 1,\n batchRowsSkipped: 0,\n inputExhausted: true,\n })\n ).rejects.toThrow(\"expected batch ordinal 1\")\n await expect(\n storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 1,\n batchRowCount: 1,\n batchRowsSkipped: 0,\n inputExhausted: false,\n })\n ).rejects.toThrow(\"partial non-final batch\")\n\n const exhausted = await storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 1,\n batchRowCount: 2,\n batchRowsSkipped: 1,\n inputExhausted: true,\n })\n expect(exhausted).toMatchObject({\n progress: { sourceRowsRead: 5, sourceRowsSkipped: 2 },\n telemetryCheckpoint: { nextBatchOrdinal: 2, nextRowOffset: 5, inputExhausted: true },\n })\n })\n })\n\n test(\"keeps a missing target until the batch it blocks commits\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = {\n id: \"telemetry-missing-target-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 2,\n } as const\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n const execution = executionInput(claim)\n const firstSeenAt = new Date(\"2026-06-01T12:00:00.000Z\")\n const missingTarget = {\n objectTypeId: \"Device\",\n objectId: \"missing-device\",\n batchOrdinal: 0,\n firstSeenAt,\n }\n\n const waiting = await storage.recordMissingTarget({ ...execution, missingTarget })\n expect(waiting.missingTarget).toEqual(missingTarget)\n expect(\n (await storage.getById({ projectId, id: \"telemetry-missing-target-run\" }))?.missingTarget\n ).toEqual(missingTarget)\n\n // A wait anchored to a batch the run has already passed would outlive the progress that\n // resolved it, so it is refused rather than stored.\n await expect(\n storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, batchOrdinal: 1 },\n })\n ).rejects.toThrow(\"cannot wait on batch 1\")\n\n // A run can only wait on the object type it writes: nothing else can appear in its\n // telemetry. Refused here so an adapter never has to rely on its own CHECK for it.\n await expect(\n storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, objectTypeId: \"Building\" },\n })\n ).rejects.toThrow(\"cannot wait on 'Building'\")\n\n // The whole wait or none of it. A half-written one reads as waiting since the epoch, or\n // waiting for nothing, and both decide a run's fate.\n for (const partial of [\n { objectId: \"\" },\n { objectTypeId: \"\" },\n { firstSeenAt: new Date(Number.NaN) },\n ]) {\n await expect(\n storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, ...partial },\n })\n ).rejects.toThrow()\n }\n\n // The write is last-wins; keeping the original start is the worker's rule, which only\n // records when the object or the batch changes. An adapter that merged instead would\n // make that rule unenforceable.\n const rerecorded = await storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, firstSeenAt: new Date(\"2026-06-01T12:01:00.000Z\") },\n })\n expect(rerecorded.missingTarget?.firstSeenAt).toEqual(new Date(\"2026-06-01T12:01:00.000Z\"))\n\n const advanced = await storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 0,\n batchRowCount: 2,\n batchRowsSkipped: 0,\n inputExhausted: true,\n })\n expect(advanced.missingTarget).toBeUndefined()\n })\n })\n\n test(\"requires and records explicit telemetry EOF with terminal success\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = {\n id: \"empty-telemetry-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 10,\n } as const\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n\n await expect(\n storage.finish({\n ...executionInput(claim),\n protocol: \"telemetry\",\n status: \"succeeded\",\n } as Parameters<ProjectionRunStorage[\"finish\"]>[0])\n ).rejects.toThrow(\"cannot succeed before input exhaustion\")\n await expect(storage.getById({ projectId, id: claim.run.id })).resolves.toMatchObject({\n status: \"running\",\n telemetryCheckpoint: { inputExhausted: false },\n })\n\n const finished = await storage.finish({\n ...executionInput(claim),\n protocol: \"telemetry\",\n status: \"succeeded\",\n inputExhausted: true,\n })\n expect(finished).toMatchObject({\n status: \"succeeded\",\n progress: { sourceRowsRead: 0 },\n telemetryCheckpoint: { inputExhausted: true },\n })\n await expect(storage.lockForMaterialization(executionInput(claim))).rejects.toThrow(\n \"already terminal\"\n )\n })\n })\n\n test(\"validates, detaches, and persists scoped failures\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n await admitProjectionRun(context, replacementInput(\"failed-run\"))\n const claim = await storage.startOrReclaim(replacementInput(\"failed-run\"))\n const finished = await storage.finish({\n ...executionInput(claim),\n protocol: \"replacement\",\n status: \"failed\",\n finishedAt: new Date(failure.at),\n error: failure,\n })\n\n expect(finished).toMatchObject({\n status: \"failed\",\n finishedAt: new Date(failure.at),\n error: failure,\n })\n expect(finished.error).not.toBe(failure)\n await expect(storage.getById({ projectId, id: \"failed-run\" })).resolves.toMatchObject({\n error: failure,\n })\n\n await admitProjectionRun(context, replacementInput(\"invalid-failure-run\"))\n const invalid = await storage.startOrReclaim(replacementInput(\"invalid-failure-run\"))\n await expect(\n storage.finish({\n ...executionInput(invalid),\n protocol: \"replacement\",\n status: \"failed\",\n error: { ...failure, code: \"dataset.not_found\" } as never,\n })\n ).rejects.toThrow(\"code is not allowed by this failure contract\")\n })\n })\n\n test(\"keeps equal run ids isolated by project\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const projectA = { ...replacementInput(\"shared-id\"), projectId: \"project-a\" } as const\n const projectB = { ...replacementInput(\"shared-id\"), projectId: \"project-b\" } as const\n await admitProjectionRun(context, projectA)\n await admitProjectionRun(context, projectB)\n await storage.startOrReclaim(projectA)\n await storage.startOrReclaim(projectB)\n\n expect(await storage.getById({ projectId: \"project-a\", id: \"shared-id\" })).not.toBeNull()\n expect(await storage.getById({ projectId: \"project-b\", id: \"shared-id\" })).not.toBeNull()\n expect(await storage.getById({ projectId: \"project-c\", id: \"shared-id\" })).toBeNull()\n })\n })\n })\n}\n\nasync function admitProjectionRun<TStorage extends ProjectionRunStorage>(\n context: ProjectionRunStorageContractContext<TStorage>,\n input: StartOrReclaimProjectionRunInput\n): Promise<QueueProjectionRunInput> {\n const executionId = `execution:${input.projectId}:${input.id}`\n await context.executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: \"projection\", runId: input.id },\n source: {\n type: \"datasetVersion\",\n datasetId: input.identity.datasetVersion.datasetId,\n versionId: input.identity.datasetVersion.versionId,\n },\n correlationId: input.id,\n authorizationRef: {\n type: \"trustedPrimitive\",\n primitive: { kind: \"projection\", id: input.identity.projectionId, runId: input.id },\n },\n })\n const admission = {\n ...input,\n executionId,\n queuedAt: new Date(\"2026-01-01T00:00:01.000Z\"),\n } satisfies QueueProjectionRunInput\n await context.projectionRuns.queue(admission)\n return admission\n}\n\nfunction replacementInput(id: string) {\n return { id, projectId, identity: replacementIdentity, target: objectTarget } as const\n}\n\nfunction executionInput(claim: ProjectionRunClaim) {\n return {\n id: claim.run.id,\n projectId: claim.run.projectId,\n identity: claim.run.identity,\n executionToken: claim.execution.executionToken,\n }\n}\n",
|
|
34
|
+
"import { describe, expect, test } from \"bun:test\"\nimport type { SixbFailure } from \"../errors/types\"\nimport type { ProjectionMaterializationIdentity } from \"../materialization/model\"\nimport type { ExecutionStorage } from \"../storage/executions\"\nimport type {\n ProjectionRunClaim,\n ProjectionRunFailureCode,\n ProjectionRunStorage,\n QueueProjectionRunInput,\n StartOrReclaimProjectionRunInput,\n} from \"../storage/projection-runs\"\n\nexport interface ProjectionRunStorageContractContext<\n TStorage extends ProjectionRunStorage = ProjectionRunStorage,\n> {\n readonly projectionRuns: TStorage\n readonly executions: ExecutionStorage\n}\n\nexport interface ProjectionRunStorageContractSuiteOptions<\n TStorage extends ProjectionRunStorage = ProjectionRunStorage,\n> {\n /** Factory that returns one isolated execution + projection-run store for each test. */\n readonly createStorage: () =>\n | ProjectionRunStorageContractContext<TStorage>\n | Promise<ProjectionRunStorageContractContext<TStorage>>\n readonly setup?: (context: ProjectionRunStorageContractContext<TStorage>) => void | Promise<void>\n readonly cleanup?: (\n context: ProjectionRunStorageContractContext<TStorage>\n ) => void | Promise<void>\n}\n\nconst projectId = \"contract-project\"\nconst objectTarget = { objectTypeId: \"Device\" } as const\n\nconst failure = {\n code: \"internal.unexpected\",\n message: \"Projection failed\",\n retryable: false,\n at: \"2026-06-01T12:00:00.000Z\",\n details: { projectionId: \"contract.devices\", runId: \"failed-run\" },\n} as const satisfies SixbFailure<ProjectionRunFailureCode>\n\nconst attemptFailure = {\n code: \"storage.unavailable\",\n message: \"Storage is temporarily unavailable.\",\n retryable: true,\n at: \"2026-06-01T11:00:00.000Z\",\n} as const satisfies SixbFailure<ProjectionRunFailureCode>\n\nconst replacementIdentity = {\n projectionId: \"contract.devices\",\n projectionKind: \"object\",\n protocol: \"replacement\",\n datasetVersion: {\n datasetId: \"contract.devices\",\n versionId: \"version-1\",\n createdAt: \"2026-01-01T00:00:00.000Z\",\n },\n ontologyRevision: \"ontology-1\",\n projectionRevision: \"projection-1\",\n ownershipHash: \"ownership-1\",\n} as const satisfies ProjectionMaterializationIdentity\n\nconst telemetryIdentity = {\n projectionId: \"contract.temperatures\",\n projectionKind: \"telemetry\",\n protocol: \"telemetry\",\n datasetVersion: {\n datasetId: \"contract.readings\",\n versionId: \"version-1\",\n createdAt: \"2026-01-01T00:00:00.000Z\",\n },\n ontologyRevision: \"ontology-1\",\n projectionRevision: \"projection-telemetry-1\",\n ownershipHash: \"ownership-telemetry-1\",\n} as const satisfies ProjectionMaterializationIdentity\n\n/** Runs the single durable, fenced projection-run lifecycle against a provider. */\nexport function runProjectionRunStorageContractSuite<TStorage extends ProjectionRunStorage>(\n label: string,\n options: ProjectionRunStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (\n body: (context: ProjectionRunStorageContractContext<TStorage>) => Promise<void>\n ): Promise<void> => {\n const context = await options.createStorage()\n try {\n await options.setup?.(context)\n await body(context)\n } finally {\n await options.cleanup?.(context)\n }\n }\n\n describe(label, () => {\n test(\"admits a queued run only after its durable execution exists\", async () => {\n await withStorage(async (context) => {\n const input = replacementInput(\"queued-run\")\n await expect(\n context.projectionRuns.queue({\n ...input,\n executionId: \"missing-execution\",\n })\n ).rejects.toThrow()\n\n const wrongSourceExecutionId = \"execution:wrong-source\"\n await context.executions.create({\n id: wrongSourceExecutionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: \"projection\", runId: input.id },\n source: { type: \"event\", eventId: \"wrong-source\" },\n correlationId: input.id,\n authorizationRef: {\n type: \"trustedPrimitive\",\n primitive: { kind: \"projection\", id: input.identity.projectionId, runId: input.id },\n },\n })\n await expect(\n context.projectionRuns.queue({\n ...input,\n executionId: wrongSourceExecutionId,\n })\n ).rejects.toThrow(\"does not authorize Projection run\")\n\n const admission = await admitProjectionRun(context, input)\n await expect(\n context.projectionRuns.getById({ projectId: input.projectId, id: input.id })\n ).resolves.toMatchObject({\n id: input.id,\n executionId: admission.executionId,\n status: \"queued\",\n attempt: 0,\n })\n })\n })\n\n test(\"requeues the same admission after an enqueue failure\", async () => {\n await withStorage(async (context) => {\n const input = replacementInput(\"enqueue-retry-run\")\n const admission = await admitProjectionRun(context, input)\n await expect(\n context.projectionRuns.failEnqueue({\n id: input.id,\n projectId: input.projectId,\n error: {\n code: \"queue.enqueue_failed\",\n message: \"queue unavailable\",\n retryable: true,\n at: \"2026-06-01T12:00:00.000Z\",\n details: { projectionId: input.identity.projectionId, runId: input.id },\n },\n })\n ).resolves.toMatchObject({\n status: \"failed\",\n error: { code: \"queue.enqueue_failed\", message: \"queue unavailable\" },\n })\n\n const requeued = await context.projectionRuns.queue(admission)\n expect(requeued).toMatchObject({\n executionId: admission.executionId,\n status: \"queued\",\n attempt: 0,\n })\n expect(requeued.error).toBeUndefined()\n })\n })\n\n test(\"keeps the failure of a retried attempt until the run ends\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = replacementInput(\"retried-run\")\n await admitProjectionRun(context, input)\n const first = await storage.startOrReclaim(input)\n\n const failed = await storage.recordAttemptFailure({\n ...executionInput(first),\n error: attemptFailure,\n })\n expect(failed).toMatchObject({ status: \"running\", error: attemptFailure })\n\n const second = await storage.startOrReclaim(input)\n expect(second.run).toMatchObject({ attempt: 2, error: attemptFailure })\n await expect(\n storage.recordAttemptFailure({ ...executionInput(first), error: failure })\n ).rejects.toThrow(\"execution token is stale\")\n await expect(\n storage.recordAttemptFailure({\n ...executionInput(second),\n error: { ...failure, code: \"dataset.not_found\" } as never,\n })\n ).rejects.toThrow(\"code is not allowed by this failure contract\")\n\n const succeeded = await storage.finish({\n ...executionInput(second),\n protocol: \"replacement\",\n status: \"succeeded\",\n })\n expect(succeeded).toMatchObject({ status: \"succeeded\" })\n expect(succeeded.error).toBeUndefined()\n await expect(\n storage.recordAttemptFailure({ ...executionInput(second), error: failure })\n ).rejects.toThrow(\"already terminal\")\n })\n })\n\n test(\"finds the newest later run that still stands to replace a source\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const current = replacementInput(\"current-run\")\n const earlier = versionedReplacementInput(\"earlier-run\", \"version-0\", \"2025-12-31\")\n const later = versionedReplacementInput(\"later-run\", \"version-2\", \"2026-01-02\")\n const latest = versionedReplacementInput(\"latest-run\", \"version-3\", \"2026-01-03\")\n const otherProjection = {\n ...versionedReplacementInput(\"other-projection-run\", \"version-4\", \"2026-01-04\"),\n identity: {\n ...versionedReplacementInput(\"other\", \"version-4\", \"2026-01-04\").identity,\n projectionId: \"contract.rooms\",\n },\n }\n for (const input of [current, earlier, later, latest, otherProjection]) {\n await admitProjectionRun(context, input)\n }\n const superseding = () => storage.findSupersedingRun({ projectId, id: current.id })\n\n await expect(superseding()).resolves.toMatchObject({ id: latest.id, status: \"queued\" })\n await expect(storage.findSupersedingRun({ projectId, id: latest.id })).resolves.toBeNull()\n\n // A run that failed or was cancelled replaces nothing, so it supersedes nothing either.\n await finishClaimed(context, latest, \"failed\")\n await expect(superseding()).resolves.toMatchObject({ id: later.id })\n await finishClaimed(context, later, \"cancelled\")\n await expect(superseding()).resolves.toBeNull()\n\n const telemetry = {\n id: \"telemetry-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 2,\n } as const\n await admitProjectionRun(context, telemetry)\n await expect(\n storage.findSupersedingRun({ projectId, id: telemetry.id })\n ).resolves.toBeNull()\n await expect(storage.findSupersedingRun({ projectId, id: \"missing-run\" })).rejects.toThrow(\n \"not found\"\n )\n })\n })\n\n test(\"ends a superseded run without a failure and never reports it as the latest\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const stale = replacementInput(\"stale-run\")\n const newer = versionedReplacementInput(\"newer-run\", \"version-2\", \"2026-01-02\")\n await admitProjectionRun(context, stale)\n await admitProjectionRun(context, newer)\n // Started after the newer run was queued, so it is the most recent by activity.\n // Removal proof: drop the superseded filter from listLatestByProjectionIds.\n const claim = await storage.startOrReclaim({\n ...stale,\n startedAt: new Date(\"2026-01-01T00:00:05.000Z\"),\n })\n\n const superseded = await storage.finish({\n ...executionInput(claim),\n protocol: \"replacement\",\n status: \"superseded\",\n })\n\n expect(superseded).toMatchObject({ status: \"superseded\", attempt: 1 })\n expect(superseded.error).toBeUndefined()\n expect(superseded.finishedAt).toBeInstanceOf(Date)\n await expect(\n storage.listLatestByProjectionIds({\n projectId,\n projectionIds: [replacementIdentity.projectionId],\n })\n ).resolves.toMatchObject({ runs: [{ id: newer.id, status: \"queued\" }] })\n await expect(storage.list({ projectId, statuses: [\"superseded\"] })).resolves.toMatchObject({\n runs: [{ id: stale.id }],\n total: 1,\n })\n\n const telemetry = {\n id: \"telemetry-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 2,\n } as const\n await admitProjectionRun(context, telemetry)\n const telemetryClaim = await storage.startOrReclaim(telemetry)\n await expect(\n storage.finish({\n ...executionInput(telemetryClaim),\n protocol: \"telemetry\",\n status: \"superseded\",\n } as never)\n ).rejects.toThrow(\"cannot be superseded\")\n })\n })\n\n test(\"keeps one run while reclaim rotates its execution\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = replacementInput(\"replacement-run\")\n await admitProjectionRun(context, input)\n const first = await storage.startOrReclaim(input)\n const second = await storage.startOrReclaim(input)\n\n expect(first.run).toMatchObject({ id: input.id, attempt: 1, status: \"running\" })\n expect(second.run).toMatchObject({ id: input.id, attempt: 2, status: \"running\" })\n expect(second.execution.executionToken).not.toBe(first.execution.executionToken)\n expect(second.run).not.toHaveProperty(\"executionToken\")\n expect(await storage.getById({ projectId, id: input.id })).toMatchObject({\n identity: replacementIdentity,\n target: objectTarget,\n progress: { sourceRowsRead: 0, sourceRowsSkipped: 0 },\n })\n })\n })\n\n test(\"fences every stale lock, progress, and terminal write\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = replacementInput(\"fenced-run\")\n await admitProjectionRun(context, input)\n const stale = await storage.startOrReclaim(input)\n const current = await storage.startOrReclaim(input)\n\n await expect(storage.lockForMaterialization(executionInput(stale))).rejects.toThrow(\n \"execution token is stale\"\n )\n await expect(\n storage.update({\n ...executionInput(stale),\n progress: { sourceRowsRead: 1 },\n })\n ).rejects.toThrow(\"execution token is stale\")\n await expect(\n storage.finish({\n ...executionInput(stale),\n protocol: \"replacement\",\n status: \"cancelled\",\n })\n ).rejects.toThrow(\"execution token is stale\")\n\n await expect(\n storage.update({\n ...executionInput(current),\n progress: { sourceRowsRead: 3 },\n })\n ).resolves.toMatchObject({ progress: { sourceRowsRead: 3 } })\n })\n })\n\n test(\"rejects immutable identity and target drift\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = replacementInput(\"identity-run\")\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n const changedIdentity = { ...replacementIdentity, ownershipHash: \"different-ownership\" }\n\n await expect(\n storage.startOrReclaim({ ...input, identity: changedIdentity })\n ).rejects.toThrow(\"identity does not match\")\n await expect(\n storage.startOrReclaim({ ...input, target: { objectTypeId: \"OtherDevice\" } })\n ).rejects.toThrow(\"target object types do not match\")\n await expect(\n storage.lockForMaterialization({\n ...executionInput(claim),\n identity: changedIdentity,\n })\n ).rejects.toThrow(\"identity does not match\")\n })\n })\n\n test(\"keeps physical progress monotone and internally consistent\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n await admitProjectionRun(context, replacementInput(\"progress-run\"))\n const claim = await storage.startOrReclaim(replacementInput(\"progress-run\"))\n const execution = executionInput(claim)\n await expect(\n storage.update({\n ...execution,\n progress: { sourceRowsRead: 1, sourceRowsSkipped: 2 },\n })\n ).rejects.toThrow(\"sourceRowsSkipped must not exceed sourceRowsRead\")\n await storage.update({\n ...execution,\n progress: { sourceRowsRead: 5, sourceRowsSkipped: 1 },\n })\n await expect(\n storage.update({ ...execution, progress: { sourceRowsRead: 4 } })\n ).rejects.toThrow(\"must not decrease\")\n })\n })\n\n test(\"persists independent incremental progress across reclaim without a physical-row floor\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n await admitProjectionRun(context, replacementInput(\"delta-progress\"))\n const first = await storage.startOrReclaim(replacementInput(\"delta-progress\"))\n const updated = await storage.update({\n ...executionInput(first),\n progress: { sourceChangesRead: 12 },\n })\n expect(updated.progress).toEqual({\n sourceRowsRead: 0,\n sourceRowsSkipped: 0,\n sourceChangesRead: 12,\n })\n const second = await storage.startOrReclaim(replacementInput(\"delta-progress\"))\n expect(second.run.progress).toEqual(updated.progress)\n await expect(\n storage.update({ ...executionInput(first), progress: { sourceChangesRead: 13 } })\n ).rejects.toThrow()\n await expect(\n storage.update({ ...executionInput(second), progress: { sourceChangesRead: 11 } })\n ).rejects.toThrow(\"must not decrease\")\n const fallback = await storage.update({\n ...executionInput(second),\n progress: { sourceRowsRead: 2 },\n })\n expect(fallback.progress).toEqual({\n sourceRowsRead: 2,\n sourceRowsSkipped: 0,\n sourceChangesRead: 12,\n })\n })\n })\n\n test(\"rejects immutable dataset-version metadata reuse\", async () => {\n await withStorage(async (context) => {\n await admitProjectionRun(context, replacementInput(\"dataset-metadata-first\"))\n await expect(\n admitProjectionRun(context, {\n ...replacementInput(\"dataset-metadata-conflict\"),\n identity: {\n ...replacementIdentity,\n datasetVersion: {\n ...replacementIdentity.datasetVersion,\n createdAt: \"2026-01-02T00:00:00.000Z\",\n },\n },\n })\n ).rejects.toThrow(\"immutable dataset version id with different metadata\")\n })\n })\n\n test(\"advances telemetry in contiguous fixed physical batches\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = {\n id: \"telemetry-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 3,\n } as const\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n const execution = executionInput(claim)\n expect(claim.run).toMatchObject({\n telemetryCheckpoint: {\n fixedBatchSize: 3,\n nextBatchOrdinal: 0,\n nextRowOffset: 0,\n inputExhausted: false,\n },\n })\n await expect(\n storage.update({ ...execution, progress: { sourceRowsRead: 1 } })\n ).rejects.toThrow(\"can only advance with its checkpoint\")\n\n await storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 0,\n batchRowCount: 3,\n batchRowsSkipped: 1,\n inputExhausted: false,\n })\n await expect(\n storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 2,\n batchRowCount: 1,\n batchRowsSkipped: 0,\n inputExhausted: true,\n })\n ).rejects.toThrow(\"expected batch ordinal 1\")\n await expect(\n storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 1,\n batchRowCount: 1,\n batchRowsSkipped: 0,\n inputExhausted: false,\n })\n ).rejects.toThrow(\"partial non-final batch\")\n\n const exhausted = await storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 1,\n batchRowCount: 2,\n batchRowsSkipped: 1,\n inputExhausted: true,\n })\n expect(exhausted).toMatchObject({\n progress: { sourceRowsRead: 5, sourceRowsSkipped: 2 },\n telemetryCheckpoint: { nextBatchOrdinal: 2, nextRowOffset: 5, inputExhausted: true },\n })\n })\n })\n\n test(\"keeps a missing target until the batch it blocks commits\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = {\n id: \"telemetry-missing-target-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 2,\n } as const\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n const execution = executionInput(claim)\n const firstSeenAt = new Date(\"2026-06-01T12:00:00.000Z\")\n const missingTarget = {\n objectTypeId: \"Device\",\n objectId: \"missing-device\",\n batchOrdinal: 0,\n firstSeenAt,\n }\n\n const waiting = await storage.recordMissingTarget({ ...execution, missingTarget })\n expect(waiting.missingTarget).toEqual(missingTarget)\n expect(\n (await storage.getById({ projectId, id: \"telemetry-missing-target-run\" }))?.missingTarget\n ).toEqual(missingTarget)\n\n // A wait anchored to a batch the run has already passed would outlive the progress that\n // resolved it, so it is refused rather than stored.\n await expect(\n storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, batchOrdinal: 1 },\n })\n ).rejects.toThrow(\"cannot wait on batch 1\")\n\n // A run can only wait on the object type it writes: nothing else can appear in its\n // telemetry. Refused here so an adapter never has to rely on its own CHECK for it.\n await expect(\n storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, objectTypeId: \"Building\" },\n })\n ).rejects.toThrow(\"cannot wait on 'Building'\")\n\n // The whole wait or none of it. A half-written one reads as waiting since the epoch, or\n // waiting for nothing, and both decide a run's fate.\n for (const partial of [\n { objectId: \"\" },\n { objectTypeId: \"\" },\n { firstSeenAt: new Date(Number.NaN) },\n ]) {\n await expect(\n storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, ...partial },\n })\n ).rejects.toThrow()\n }\n\n // The write is last-wins; keeping the original start is the worker's rule, which only\n // records when the object or the batch changes. An adapter that merged instead would\n // make that rule unenforceable.\n const rerecorded = await storage.recordMissingTarget({\n ...execution,\n missingTarget: { ...missingTarget, firstSeenAt: new Date(\"2026-06-01T12:01:00.000Z\") },\n })\n expect(rerecorded.missingTarget?.firstSeenAt).toEqual(new Date(\"2026-06-01T12:01:00.000Z\"))\n\n const advanced = await storage.advanceTelemetryCheckpoint({\n ...execution,\n batchOrdinal: 0,\n batchRowCount: 2,\n batchRowsSkipped: 0,\n inputExhausted: true,\n })\n expect(advanced.missingTarget).toBeUndefined()\n })\n })\n\n test(\"requires and records explicit telemetry EOF with terminal success\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const input = {\n id: \"empty-telemetry-run\",\n projectId,\n identity: telemetryIdentity,\n target: objectTarget,\n fixedBatchSize: 10,\n } as const\n await admitProjectionRun(context, input)\n const claim = await storage.startOrReclaim(input)\n\n await expect(\n storage.finish({\n ...executionInput(claim),\n protocol: \"telemetry\",\n status: \"succeeded\",\n } as Parameters<ProjectionRunStorage[\"finish\"]>[0])\n ).rejects.toThrow(\"cannot succeed before input exhaustion\")\n await expect(storage.getById({ projectId, id: claim.run.id })).resolves.toMatchObject({\n status: \"running\",\n telemetryCheckpoint: { inputExhausted: false },\n })\n\n const finished = await storage.finish({\n ...executionInput(claim),\n protocol: \"telemetry\",\n status: \"succeeded\",\n inputExhausted: true,\n })\n expect(finished).toMatchObject({\n status: \"succeeded\",\n progress: { sourceRowsRead: 0 },\n telemetryCheckpoint: { inputExhausted: true },\n })\n await expect(storage.lockForMaterialization(executionInput(claim))).rejects.toThrow(\n \"already terminal\"\n )\n })\n })\n\n test(\"validates, detaches, and persists scoped failures\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n await admitProjectionRun(context, replacementInput(\"failed-run\"))\n const claim = await storage.startOrReclaim(replacementInput(\"failed-run\"))\n const finished = await storage.finish({\n ...executionInput(claim),\n protocol: \"replacement\",\n status: \"failed\",\n finishedAt: new Date(failure.at),\n error: failure,\n })\n\n expect(finished).toMatchObject({\n status: \"failed\",\n finishedAt: new Date(failure.at),\n error: failure,\n })\n expect(finished.error).not.toBe(failure)\n await expect(storage.getById({ projectId, id: \"failed-run\" })).resolves.toMatchObject({\n error: failure,\n })\n\n await admitProjectionRun(context, replacementInput(\"invalid-failure-run\"))\n const invalid = await storage.startOrReclaim(replacementInput(\"invalid-failure-run\"))\n await expect(\n storage.finish({\n ...executionInput(invalid),\n protocol: \"replacement\",\n status: \"failed\",\n error: { ...failure, code: \"dataset.not_found\" } as never,\n })\n ).rejects.toThrow(\"code is not allowed by this failure contract\")\n })\n })\n\n test(\"keeps equal run ids isolated by project\", async () => {\n await withStorage(async (context) => {\n const storage = context.projectionRuns\n const projectA = { ...replacementInput(\"shared-id\"), projectId: \"project-a\" } as const\n const projectB = { ...replacementInput(\"shared-id\"), projectId: \"project-b\" } as const\n await admitProjectionRun(context, projectA)\n await admitProjectionRun(context, projectB)\n await storage.startOrReclaim(projectA)\n await storage.startOrReclaim(projectB)\n\n expect(await storage.getById({ projectId: \"project-a\", id: \"shared-id\" })).not.toBeNull()\n expect(await storage.getById({ projectId: \"project-b\", id: \"shared-id\" })).not.toBeNull()\n expect(await storage.getById({ projectId: \"project-c\", id: \"shared-id\" })).toBeNull()\n })\n })\n })\n}\n\nasync function admitProjectionRun<TStorage extends ProjectionRunStorage>(\n context: ProjectionRunStorageContractContext<TStorage>,\n input: StartOrReclaimProjectionRunInput\n): Promise<QueueProjectionRunInput> {\n const executionId = `execution:${input.projectId}:${input.id}`\n await context.executions.create({\n id: executionId,\n projectId: input.projectId,\n executor: { type: \"primitive\", kind: \"projection\", runId: input.id },\n source: {\n type: \"datasetVersion\",\n datasetId: input.identity.datasetVersion.datasetId,\n versionId: input.identity.datasetVersion.versionId,\n },\n correlationId: input.id,\n authorizationRef: {\n type: \"trustedPrimitive\",\n primitive: { kind: \"projection\", id: input.identity.projectionId, runId: input.id },\n },\n })\n const admission = {\n ...input,\n executionId,\n queuedAt: new Date(\"2026-01-01T00:00:01.000Z\"),\n } satisfies QueueProjectionRunInput\n await context.projectionRuns.queue(admission)\n return admission\n}\n\nfunction replacementInput(id: string) {\n return { id, projectId, identity: replacementIdentity, target: objectTarget } as const\n}\n\n/** A replacement run of the same projection, pinned to another version created on `day`. */\nfunction versionedReplacementInput(id: string, versionId: string, day: string) {\n return {\n ...replacementInput(id),\n identity: {\n ...replacementIdentity,\n datasetVersion: {\n ...replacementIdentity.datasetVersion,\n versionId,\n createdAt: `${day}T00:00:00.000Z`,\n },\n },\n } as const\n}\n\nasync function finishClaimed<TStorage extends ProjectionRunStorage>(\n context: ProjectionRunStorageContractContext<TStorage>,\n input: StartOrReclaimProjectionRunInput,\n status: \"failed\" | \"cancelled\"\n): Promise<void> {\n const claim = await context.projectionRuns.startOrReclaim(input)\n await context.projectionRuns.finish({\n ...executionInput(claim),\n protocol: \"replacement\",\n status,\n })\n}\n\nfunction executionInput(claim: ProjectionRunClaim) {\n return {\n id: claim.run.id,\n projectId: claim.run.projectId,\n identity: claim.run.identity,\n executionToken: claim.execution.executionToken,\n }\n}\n",
|
|
35
35
|
"import { describe, expect, test } from \"bun:test\"\nimport { QueueError } from \"../queues/errors\"\nimport type { PipelineQueueJobFailureCode, QueueJobFailure, Queues } from \"../queues/types\"\n\nconst TERMINAL_FAILURE = {\n code: \"internal.unexpected\",\n retryable: false,\n message: \"boom\",\n at: \"2026-01-01T00:00:00.000Z\",\n details: { pipelineId: \"p-1\" },\n} as const satisfies QueueJobFailure<PipelineQueueJobFailureCode>\n\nexport interface QueueContractSuiteOptions {\n /** Factory that produces a fresh `Queues` instance for each test case. */\n readonly createQueues: () => Queues | Promise<Queues>\n /** Optional cleanup invoked after every test case. */\n readonly teardown?: (queues: Queues) => void | Promise<void>\n /**\n * Lease duration used in lease-expiry redelivery assertions. Providers with a stalled-check\n * interval (e.g., BullMQ) need a larger value than in-memory providers. Defaults to 20ms.\n */\n readonly shortLeaseMs?: number\n /**\n * Time to wait for a claim to become re-visible after its lease expires. Defaults to\n * `shortLeaseMs + 10`; providers that rely on a periodic checker must add that interval.\n */\n readonly leaseExpiryRedeliveryMs?: number\n /**\n * Time to wait for a delayed retry to become visible again. Defaults to `shortLeaseMs + 15`.\n */\n readonly retryRedeliveryMs?: number\n}\n\n/**\n * Runs the shared `Queues` contract against any provider.\n *\n * Every provider must exhibit the same enqueue/claim/complete/retry/fail/renewLease behavior\n * described here, which is the authoritative specification for Sixb queues — each test is\n * written in Arrange/Act/Assert form, with timing parameters exposed for providers that need\n * them (short lease durations, periodic checker intervals).\n */\nexport function runQueueContractSuite(label: string, options: QueueContractSuiteOptions): void {\n const shortLeaseMs = options.shortLeaseMs ?? 20\n const leaseExpiryRedeliveryMs = options.leaseExpiryRedeliveryMs ?? shortLeaseMs + 10\n const retryRedeliveryMs = options.retryRedeliveryMs ?? shortLeaseMs + 15\n\n const withQueues = async (body: (queues: Queues) => Promise<void>): Promise<void> => {\n const queues = await options.createQueues()\n try {\n await body(queues)\n } finally {\n await options.teardown?.(queues)\n }\n }\n\n describe(label, () => {\n test(\"vector indexing has independent delivery capacity and idempotent generation ids\", async () => {\n await withQueues(async (queues) => {\n const jobs = [\n {\n id: \"generation-1\",\n type: \"vector.index.requested\" as const,\n payload: { indexingId: \"generation-1\" },\n },\n ]\n await queues.vectorIndexing.enqueue({ projectId: \"project-a\", jobs })\n await queues.vectorIndexing.enqueue({ projectId: \"project-a\", jobs })\n expect(\n await queues.projections.claim({ projectId: \"project-a\", workerId: \"projection\" })\n ).toHaveLength(0)\n const claimed = await queues.vectorIndexing.claim({\n projectId: \"project-a\",\n workerId: \"indexing\",\n limit: 2,\n })\n expect(claimed).toHaveLength(1)\n expect(claimed[0]!.job.payload).toEqual({ indexingId: \"generation-1\" })\n await queues.vectorIndexing.complete({\n projectId: \"project-a\",\n jobId: claimed[0]!.job.id,\n leaseId: claimed[0]!.leaseId,\n })\n expect(\n await queues.vectorIndexing.claim({ projectId: \"project-a\", workerId: \"indexing\" })\n ).toHaveLength(0)\n })\n })\n describe(\"enqueue\", () => {\n test(\"returns envelopes with generated id, createdAt, availableAt, attempt=0\", async () => {\n await withQueues(async (queues) => {\n const before = Date.now()\n\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [\n {\n type: \"sync.run.requested\",\n payload: { runId: \"sync-1\" },\n },\n ],\n })\n\n expect(job?.id).toMatch(/^[0-9a-f-]{36}$/)\n expect(job?.projectId).toBe(\"project-a\")\n expect(job?.attempt).toBe(0)\n expect(job?.type).toBe(\"sync.run.requested\")\n expect(job?.payload.runId).toBe(\"sync-1\")\n expect(Date.parse(job!.createdAt)).toBeGreaterThanOrEqual(before)\n expect(job?.availableAt).toBe(job?.createdAt)\n })\n })\n\n test(\"deduplicates repeated enqueue with a caller-supplied id\", async () => {\n await withQueues(async (queues) => {\n const input = {\n id: \"dispatch-run-1\",\n type: \"sync.run.requested\" as const,\n payload: { runId: \"sync-1\" },\n }\n const [[first], [second]] = await Promise.all([\n queues.syncRuns.enqueue({ projectId: \"project-a\", jobs: [input] }),\n queues.syncRuns.enqueue({ projectId: \"project-a\", jobs: [input] }),\n ])\n\n expect(first?.id).toBe(input.id)\n expect(second?.id).toBe(input.id)\n await expect(\n queues.syncRuns.claim({ projectId: \"project-a\", workerId: \"worker-1\", limit: 2 })\n ).resolves.toHaveLength(1)\n })\n })\n\n test(\"treats caller-supplied ids as opaque across the job lifecycle\", async () => {\n await withQueues(async (queues) => {\n const id = \"workflow:review-meeting:node:0\"\n const input = {\n id,\n type: \"sync.run.requested\" as const,\n payload: { runId: \"sync-1\" },\n }\n\n const [[first], [duplicate]] = await Promise.all([\n queues.syncRuns.enqueue({ projectId: \"project-a\", jobs: [input] }),\n queues.syncRuns.enqueue({ projectId: \"project-a\", jobs: [input] }),\n ])\n const [claimed] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n limit: 2,\n })\n\n expect(first?.id).toBe(id)\n expect(duplicate?.id).toBe(id)\n expect(claimed?.job.id).toBe(id)\n if (queues.syncRuns.renewLease) {\n await expect(\n queues.syncRuns.renewLease({\n projectId: \"project-a\",\n jobId: id,\n leaseId: claimed!.leaseId,\n leaseMs: shortLeaseMs * 10,\n })\n ).resolves.toMatchObject({ job: { id } })\n }\n await queues.syncRuns.complete({\n projectId: \"project-a\",\n jobId: id,\n leaseId: claimed!.leaseId,\n })\n await expect(\n queues.syncRuns.claim({ projectId: \"project-a\", workerId: \"worker-2\" })\n ).resolves.toHaveLength(0)\n })\n })\n\n test(\"returns empty array when no jobs are passed\", async () => {\n await withQueues(async (queues) => {\n const result = await queues.syncRuns.enqueue({ projectId: \"project-a\", jobs: [] })\n\n expect(result).toEqual([])\n })\n })\n\n test(\"rejects empty projectId with QueueError\", async () => {\n await withQueues(async (queues) => {\n await expect(\n queues.syncRuns.enqueue({\n projectId: \" \",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"sync-1\" } }],\n })\n ).rejects.toBeInstanceOf(QueueError)\n })\n })\n })\n\n describe(\"claim\", () => {\n test(\"increments attempt to 1 on first successful claim\", async () => {\n await withQueues(async (queues) => {\n await queues.pipelines.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"pipeline.run.requested\", payload: { runId: \"p-1\" } }],\n })\n\n const [claimed] = await queues.pipelines.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n })\n\n expect(claimed?.job.attempt).toBe(1)\n expect(claimed?.job.payload.runId).toBe(\"p-1\")\n expect(claimed?.leaseId).toBeTruthy()\n expect(Date.parse(claimed!.leaseExpiresAt)).toBeGreaterThan(\n Date.parse(claimed!.claimedAt)\n )\n })\n })\n\n test(\"returns empty array when limit is 0 or negative\", async () => {\n await withQueues(async (queues) => {\n await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n\n const zero = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n limit: 0,\n })\n const negative = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n limit: -5,\n })\n\n expect(zero).toEqual([])\n expect(negative).toEqual([])\n })\n })\n\n test(\"rejects non-positive leaseMs with QueueError\", async () => {\n await withQueues(async (queues) => {\n await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n\n await expect(\n queues.syncRuns.claim({ projectId: \"project-a\", workerId: \"w-1\", leaseMs: 0 })\n ).rejects.toBeInstanceOf(QueueError)\n await expect(\n queues.syncRuns.claim({ projectId: \"project-a\", workerId: \"w-1\", leaseMs: -1 })\n ).rejects.toBeInstanceOf(QueueError)\n })\n })\n\n test(\"respects delayed visibility via availableAt\", async () => {\n await withQueues(async (queues) => {\n const availableAt = new Date(Date.now() + shortLeaseMs + 20).toISOString()\n await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" }, availableAt }],\n })\n\n const before = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n })\n await Bun.sleep(shortLeaseMs + 40)\n const after = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n })\n\n expect(before).toHaveLength(0)\n expect(after).toHaveLength(1)\n expect(after[0]?.job.availableAt).toBe(availableAt)\n })\n })\n\n test(\"isolates jobs across distinct projectIds\", async () => {\n await withQueues(async (queues) => {\n await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"a-1\" } }],\n })\n await queues.syncRuns.enqueue({\n projectId: \"project-b\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"b-1\" } }],\n })\n\n const claimedB = await queues.syncRuns.claim({\n projectId: \"project-b\",\n workerId: \"worker-b\",\n limit: 10,\n })\n\n expect(claimedB).toHaveLength(1)\n expect(claimedB[0]?.job.payload.runId).toBe(\"b-1\")\n expect(claimedB[0]?.job.projectId).toBe(\"project-b\")\n })\n })\n\n test(\"keeps every worker lane independent\", async () => {\n await withQueues(async (queues) => {\n await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n await queues.pipelines.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"pipeline.run.requested\", payload: { runId: \"p-1\" } }],\n })\n await queues.projections.enqueue({\n projectId: \"project-a\",\n jobs: [\n {\n type: \"projection.run.requested\",\n payload: { runId: \"projection-run-1\" },\n },\n ],\n })\n await queues.workflows.enqueue({\n projectId: \"project-a\",\n jobs: [\n {\n type: \"workflow.run.requested\",\n payload: { runId: \"workflow-run-1\" },\n },\n ],\n })\n await queues.actions.enqueue({\n projectId: \"project-a\",\n jobs: [\n {\n type: \"action.run.requested\",\n payload: {\n runId: \"act_1\",\n },\n },\n ],\n })\n await queues.agents.enqueue({\n projectId: \"project-a\",\n jobs: [\n {\n type: \"agent.run.requested\",\n payload: { runId: \"agent-run-1\" },\n },\n ],\n })\n await queues.agentChildren.enqueue({\n projectId: \"project-a\",\n jobs: [\n {\n type: \"agent.subagent-run.requested\",\n payload: { runId: \"child-run-1\" },\n },\n ],\n })\n\n const crossLane = await queues.pipelines.claim({\n projectId: \"project-a\",\n workerId: \"pipeline-worker-1\",\n limit: 10,\n })\n const projectionLane = await queues.projections.claim({\n projectId: \"project-a\",\n workerId: \"projection-worker-1\",\n limit: 10,\n })\n const workflowLane = await queues.workflows.claim({\n projectId: \"project-a\",\n workerId: \"workflow-worker-1\",\n limit: 10,\n })\n const actionLane = await queues.actions.claim({\n projectId: \"project-a\",\n workerId: \"action-worker-1\",\n limit: 10,\n })\n const agentLane = await queues.agents.claim({\n projectId: \"project-a\",\n workerId: \"agent-worker-1\",\n limit: 10,\n })\n const childLane = await queues.agentChildren.claim({\n projectId: \"project-a\",\n workerId: \"child-agent-worker-1\",\n limit: 10,\n })\n const sameLane = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"sync-worker-1\",\n limit: 10,\n })\n\n expect(crossLane).toHaveLength(1)\n expect(crossLane[0]?.job.payload.runId).toBe(\"p-1\")\n expect(projectionLane).toHaveLength(1)\n expect(projectionLane[0]?.job.payload.runId).toBe(\"projection-run-1\")\n expect(workflowLane).toHaveLength(1)\n expect(workflowLane[0]?.job.payload.runId).toBe(\"workflow-run-1\")\n expect(actionLane).toHaveLength(1)\n expect(actionLane[0]?.job.payload.runId).toBe(\"act_1\")\n expect(agentLane).toHaveLength(1)\n expect(agentLane[0]?.job).toMatchObject({\n type: \"agent.run.requested\",\n payload: { runId: \"agent-run-1\" },\n })\n expect(childLane).toHaveLength(1)\n expect(childLane[0]?.job.payload.runId).toBe(\"child-run-1\")\n expect(sameLane).toHaveLength(1)\n })\n })\n })\n\n describe(\"complete\", () => {\n test(\"removes the job from the lane permanently\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n const [claim] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n })\n\n await queues.syncRuns.complete({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: claim!.leaseId,\n })\n\n const later = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-2\",\n limit: 10,\n })\n expect(later).toHaveLength(0)\n })\n })\n\n test(\"rejects a wrong leaseId with QueueError\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n leaseMs: shortLeaseMs * 10,\n })\n\n await expect(\n queues.syncRuns.complete({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: \"not-the-right-lease\",\n })\n ).rejects.toBeInstanceOf(QueueError)\n })\n })\n })\n\n describe(\"retry\", () => {\n test(\"reschedules the job and bumps attempt on next claim\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n const [firstClaim] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n leaseMs: shortLeaseMs,\n })\n\n const retryAt = new Date(Date.now() + retryRedeliveryMs).toISOString()\n await queues.syncRuns.retry({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: firstClaim!.leaseId,\n availableAt: retryAt,\n })\n await Bun.sleep(retryRedeliveryMs + 30)\n const [secondClaim] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-2\",\n leaseMs: shortLeaseMs,\n })\n\n expect(secondClaim?.job.id).toBe(job?.id)\n expect(secondClaim?.job.attempt).toBe(2)\n })\n })\n\n test(\"rejects invalid availableAt with QueueError\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n const [claim] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n leaseMs: shortLeaseMs * 10,\n })\n\n await expect(\n queues.syncRuns.retry({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: claim!.leaseId,\n availableAt: \"not-a-timestamp\",\n })\n ).rejects.toBeInstanceOf(QueueError)\n })\n })\n })\n\n describe(\"fail\", () => {\n test(\"marks the job as terminally failed\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.pipelines.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"pipeline.run.requested\", payload: { runId: \"p-1\" } }],\n })\n const [claim] = await queues.pipelines.claim({\n projectId: \"project-a\",\n workerId: \"pipeline-worker-1\",\n })\n\n await queues.pipelines.fail({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: claim!.leaseId,\n failure: TERMINAL_FAILURE,\n })\n\n const later = await queues.pipelines.claim({\n projectId: \"project-a\",\n workerId: \"pipeline-worker-2\",\n limit: 10,\n })\n expect(later).toHaveLength(0)\n })\n })\n })\n\n describe(\"renewLease\", () => {\n test(\"extends the lease and returns an updated claim\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n const [claim] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n leaseMs: shortLeaseMs + 20,\n })\n\n const renewed = await queues.syncRuns.renewLease?.({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: claim!.leaseId,\n leaseMs: shortLeaseMs * 5,\n })\n\n expect(renewed?.job.id).toBe(job?.id)\n expect(renewed?.leaseId).toBe(claim?.leaseId)\n expect(Date.parse(renewed!.leaseExpiresAt)).toBeGreaterThan(\n Date.parse(claim!.leaseExpiresAt)\n )\n })\n })\n\n test(\"returns null for unknown jobId\", async () => {\n await withQueues(async (queues) => {\n const result = await queues.syncRuns.renewLease?.({\n projectId: \"project-a\",\n jobId: \"00000000-0000-0000-0000-000000000000\",\n leaseId: \"no-such-lease\",\n leaseMs: shortLeaseMs,\n })\n\n expect(result).toBeNull()\n })\n })\n\n test(\"returns null when the leaseId does not match\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n leaseMs: shortLeaseMs * 10,\n })\n\n const renewed = await queues.syncRuns.renewLease?.({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: \"not-the-right-lease\",\n leaseMs: shortLeaseMs,\n })\n\n expect(renewed).toBeNull()\n })\n })\n })\n\n describe(\"redelivery\", () => {\n test(\"redelivers after lease expiry with attempt incremented\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n const [first] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n leaseMs: shortLeaseMs,\n })\n\n await Bun.sleep(leaseExpiryRedeliveryMs)\n const [second] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-2\",\n leaseMs: shortLeaseMs,\n })\n\n expect(first?.job.attempt).toBe(1)\n expect(second?.job.id).toBe(job?.id)\n expect(second!.job.attempt).toBeGreaterThanOrEqual(2)\n })\n })\n\n test(\"rejects complete on an already-expired lease\", async () => {\n await withQueues(async (queues) => {\n const [job] = await queues.syncRuns.enqueue({\n projectId: \"project-a\",\n jobs: [{ type: \"sync.run.requested\", payload: { runId: \"s-1\" } }],\n })\n const [claim] = await queues.syncRuns.claim({\n projectId: \"project-a\",\n workerId: \"worker-1\",\n leaseMs: shortLeaseMs,\n })\n\n await Bun.sleep(leaseExpiryRedeliveryMs)\n\n await expect(\n queues.syncRuns.complete({\n projectId: \"project-a\",\n jobId: job!.id,\n leaseId: claim!.leaseId,\n })\n ).rejects.toBeInstanceOf(QueueError)\n })\n })\n })\n\n describe(\"health\", () => {\n // `sixb check` reports its queues row from this call. While the method was absent, that row\n // was a literal the command printed green.\n test(\"resolves against a reachable backend\", async () => {\n await withQueues(async (queues) => {\n await expect(queues.health()).resolves.toBeUndefined()\n })\n })\n })\n\n describe(\"scope\", () => {\n // Asserted rather than left to the type checker: a provider that declares the wrong scope is\n // a deployment that looks healthy and claims nothing.\n test(\"declares whether it can be shared across processes\", async () => {\n await withQueues(async (queues) => {\n expect([\"process\", \"shared\"]).toContain(queues.scope)\n })\n })\n })\n })\n}\n",
|
|
36
36
|
"import { afterEach, beforeEach, describe, expect, test } from \"bun:test\"\nimport { realpath } from \"node:fs/promises\"\nimport { type SandboxFactory, SandboxNotRunningError } from \"../sandboxes\"\n\n/**\n * Capability flags letting a provider declare which contract slices are\n * meaningful for it. Tests gated by an unsupported capability are skipped.\n */\nexport interface SandboxesContractCapabilities {\n /** network.mode=\"none\" actually blocks outbound network access. */\n readonly networkBlocking?: boolean\n /** readOnlyPaths/readWritePaths actually restrict filesystem writes. */\n readonly readOnlyEnforcement?: boolean\n /** Strong isolation, such as process namespaces, is in effect. */\n readonly isolation?: boolean\n}\n\nexport interface SandboxesContractSuiteOptions {\n /** Factory under test. Called once per describe block. */\n readonly createFactory: () => SandboxFactory | Promise<SandboxFactory>\n /** Optional cleanup invoked once per test after factory-created sandboxes are destroyed. */\n readonly teardown?: (factory: SandboxFactory) => void | Promise<void>\n readonly capabilities?: SandboxesContractCapabilities\n /**\n * Timeout in milliseconds used by the timeout/abort tests. Bump on slow CI.\n * Default 200ms.\n */\n readonly shortTimeoutMs?: number\n}\n\nconst SLEEP_BUDGET_SECONDS = 5\n\n/**\n * Provider-independent contract for Sandbox and SandboxFactory. Concrete\n * providers wire this into their tests via runSandboxesContractSuite(...).\n */\nexport function runSandboxesContractSuite(\n label: string,\n options: SandboxesContractSuiteOptions\n): void {\n const shortTimeoutMs = options.shortTimeoutMs ?? 200\n const capabilities = options.capabilities ?? {}\n\n describe(label, () => {\n let factory: SandboxFactory\n\n beforeEach(async () => {\n factory = await options.createFactory()\n })\n\n afterEach(async () => {\n await options.teardown?.(factory)\n })\n\n describe(\"lifecycle\", () => {\n test(\"create returns a running sandbox with a non-empty id\", async () => {\n const sandbox = await factory.create()\n try {\n expect(sandbox.status).toBe(\"running\")\n expect(sandbox.id.length).toBeGreaterThan(0)\n expect(sandbox.workingDirectory.length).toBeGreaterThan(0)\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"runCommand returns exit code 0 and captured stdout for echo\", async () => {\n const sandbox = await factory.create()\n try {\n const result = await sandbox.runCommand(\"echo\", [\"hello\"])\n expect(result.exitCode).toBe(0)\n expect(result.stdout.trim()).toBe(\"hello\")\n expect(result.stderr).toBe(\"\")\n expect(result.durationMs).toBeGreaterThanOrEqual(0)\n expect(result.timedOut).not.toBe(true)\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"nonexistent binary resolves with non-zero exit code\", async () => {\n const sandbox = await factory.create()\n try {\n const result = await sandbox.runCommand(\"does-not-exist-xyz-sixb-test\", [])\n expect(result.exitCode).not.toBe(0)\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"captures stdout and stderr as separate streams\", async () => {\n const sandbox = await factory.create()\n try {\n const result = await sandbox.runCommand(\"/bin/sh\", [\n \"-c\",\n \"echo out-line; echo err-line >&2; exit 0\",\n ])\n expect(result.exitCode).toBe(0)\n expect(result.stdout).toContain(\"out-line\")\n expect(result.stderr).toContain(\"err-line\")\n expect(result.stdout).not.toContain(\"err-line\")\n expect(result.stderr).not.toContain(\"out-line\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"stop transitions status and rejects subsequent runCommand\", async () => {\n const sandbox = await factory.create()\n try {\n await sandbox.stop()\n expect(sandbox.status).toBe(\"stopped\")\n await expect(sandbox.runCommand(\"echo\", [\"nope\"])).rejects.toBeInstanceOf(\n SandboxNotRunningError\n )\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"destroy is idempotent\", async () => {\n const sandbox = await factory.create()\n await sandbox.destroy()\n await sandbox.destroy()\n await expect(sandbox.runCommand(\"echo\", [\"x\"])).rejects.toBeInstanceOf(\n SandboxNotRunningError\n )\n })\n })\n\n describe(\"working directory\", () => {\n // Regression check: remove the provider's cwd resolution, leaving only\n // `options.cwd ?? this.workingDirectory`; these relative file reads must fail.\n test.each([\n [\".\", \"root\"],\n [\"nested\", \"child\"],\n [\"./nested/..\", \"root\"],\n ])(\"resolves relative cwd %s against the workspace\", async (cwd, expected) => {\n const sandbox = await factory.create()\n try {\n await sandbox.writeFiles([\n { path: \"cwd-probe.txt\", contents: \"root\" },\n { path: \"nested/cwd-probe.txt\", contents: \"child\" },\n ])\n\n const result = await sandbox.runCommand(\"cat\", [\"cwd-probe.txt\"], { cwd })\n expect(result.exitCode).toBe(0)\n expect(result.stdout).toBe(expected)\n\n // A per-call override must not change the next command's default directory.\n const next = await sandbox.runCommand(\"cat\", [\"cwd-probe.txt\"])\n expect(next.exitCode).toBe(0)\n expect(next.stdout).toBe(\"root\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"pwd reflects the configured workingDirectory\", async () => {\n const sandbox = await factory.create()\n try {\n const result = await sandbox.runCommand(\"pwd\")\n const expected = await realpath(sandbox.workingDirectory)\n expect(result.exitCode).toBe(0)\n expect(result.stdout.trim()).toBe(expected)\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"per-call cwd overrides the sandbox-level workingDirectory\", async () => {\n const sandbox = await factory.create()\n try {\n const expected = await realpath(\"/tmp\")\n const result = await sandbox.runCommand(\"pwd\", [], { cwd: \"/tmp\" })\n expect(result.exitCode).toBe(0)\n expect(result.stdout.trim()).toBe(expected)\n } finally {\n await sandbox.destroy()\n }\n })\n })\n\n describe(\"env merging\", () => {\n test(\"sandbox-level env is visible to commands\", async () => {\n const sandbox = await factory.create({ env: { SIXB_TEST_A: \"alpha\" } })\n try {\n const result = await sandbox.runCommand(\"printenv\", [\"SIXB_TEST_A\"])\n expect(result.exitCode).toBe(0)\n expect(result.stdout.trim()).toBe(\"alpha\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"per-call env wins on collision and adds new keys\", async () => {\n const sandbox = await factory.create({\n env: { SIXB_TEST_A: \"alpha\", SIXB_TEST_B: \"beta\" },\n })\n try {\n const a = await sandbox.runCommand(\"printenv\", [\"SIXB_TEST_A\"], {\n env: { SIXB_TEST_A: \"alpha2\", SIXB_TEST_C: \"gamma\" },\n })\n const b = await sandbox.runCommand(\"printenv\", [\"SIXB_TEST_B\"], {\n env: { SIXB_TEST_A: \"alpha2\", SIXB_TEST_C: \"gamma\" },\n })\n const c = await sandbox.runCommand(\"printenv\", [\"SIXB_TEST_C\"], {\n env: { SIXB_TEST_A: \"alpha2\", SIXB_TEST_C: \"gamma\" },\n })\n expect(a.stdout.trim()).toBe(\"alpha2\")\n expect(b.stdout.trim()).toBe(\"beta\")\n expect(c.stdout.trim()).toBe(\"gamma\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"host secrets are not leaked into the sandbox\", async () => {\n const secretKey = \"SIXB_HOST_SECRET_DO_NOT_LEAK\"\n const previous = process.env[secretKey]\n process.env[secretKey] = \"host-only-value\"\n try {\n const sandbox = await factory.create()\n try {\n const result = await sandbox.runCommand(\"printenv\", [secretKey])\n expect(result.exitCode).not.toBe(0)\n expect(result.stdout).not.toContain(\"host-only-value\")\n } finally {\n await sandbox.destroy()\n }\n } finally {\n if (previous === undefined) {\n delete process.env[secretKey]\n } else {\n process.env[secretKey] = previous\n }\n }\n })\n })\n\n describe(\"timeout and abort\", () => {\n test(\"sleep beyond timeout marks the result timedOut and exits non-zero\", async () => {\n const sandbox = await factory.create()\n try {\n const start = Date.now()\n const result = await sandbox.runCommand(\"sleep\", [String(SLEEP_BUDGET_SECONDS)], {\n timeout: shortTimeoutMs,\n })\n const elapsed = Date.now() - start\n expect(result.timedOut).toBe(true)\n expect(result.exitCode).not.toBe(0)\n expect(elapsed).toBeLessThan(SLEEP_BUDGET_SECONDS * 1000)\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"abort signal aborts an in-flight command\", async () => {\n const sandbox = await factory.create()\n try {\n const ac = new AbortController()\n setTimeout(() => ac.abort(), shortTimeoutMs)\n const start = Date.now()\n const result = await sandbox.runCommand(\"sleep\", [String(SLEEP_BUDGET_SECONDS)], {\n signal: ac.signal,\n })\n const elapsed = Date.now() - start\n expect(result.exitCode).not.toBe(0)\n expect(elapsed).toBeLessThan(SLEEP_BUDGET_SECONDS * 1000)\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"per-call timeout overrides sandbox-level timeout\", async () => {\n const sandbox = await factory.create({ timeout: SLEEP_BUDGET_SECONDS * 1000 })\n try {\n const result = await sandbox.runCommand(\"sleep\", [String(SLEEP_BUDGET_SECONDS)], {\n timeout: shortTimeoutMs,\n })\n expect(result.timedOut).toBe(true)\n } finally {\n await sandbox.destroy()\n }\n })\n })\n\n describe(\"file materialization\", () => {\n test(\"writeFiles materializes files a subsequent command can read\", async () => {\n const sandbox = await factory.create()\n try {\n const flat = `${sandbox.workingDirectory}/materialized.txt`\n const nested = `${sandbox.workingDirectory}/nested/dir/deep.txt`\n await sandbox.writeFiles([\n { path: flat, contents: \"flat-contents\" },\n { path: nested, contents: \"nested-contents\" },\n ])\n\n const flatResult = await sandbox.runCommand(\"cat\", [flat])\n expect(flatResult.exitCode).toBe(0)\n expect(flatResult.stdout).toContain(\"flat-contents\")\n\n // A nested path proves writeFiles creates missing parent directories.\n const nestedResult = await sandbox.runCommand(\"cat\", [nested])\n expect(nestedResult.exitCode).toBe(0)\n expect(nestedResult.stdout).toContain(\"nested-contents\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"writeFiles round-trips binary contents faithfully\", async () => {\n const sandbox = await factory.create()\n try {\n const path = `${sandbox.workingDirectory}/binary.dat`\n const bytes = new Uint8Array([0x00, 0x01, 0xfe, 0xff, 0x0a, 0x7f])\n await sandbox.writeFiles([{ path, contents: bytes }])\n\n const size = await sandbox.runCommand(\"wc\", [\"-c\", path])\n expect(size.exitCode).toBe(0)\n expect(size.stdout.trim().split(/\\s+/)[0]).toBe(String(bytes.length))\n\n // od proves the exact bytes survived transport (e.g. a provider's base64 round-trip).\n const hex = await sandbox.runCommand(\"od\", [\"-An\", \"-v\", \"-tx1\", path])\n expect(hex.exitCode).toBe(0)\n expect(hex.stdout.replace(/\\s+/g, \" \").trim()).toBe(\"00 01 fe ff 0a 7f\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"writeFiles applies an explicit file mode\", async () => {\n const sandbox = await factory.create()\n try {\n const path = `${sandbox.workingDirectory}/run.sh`\n await sandbox.writeFiles([{ path, contents: \"#!/bin/sh\\necho ran\\n\", mode: 0o755 }])\n\n // The exec bit is observable, proving mode was honored (not silently dropped).\n const result = await sandbox.runCommand(\"/bin/sh\", [\"-c\", `test -x ${path} && echo yes`])\n expect(result.exitCode).toBe(0)\n expect(result.stdout).toContain(\"yes\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"writeFiles after stop rejects\", async () => {\n const sandbox = await factory.create()\n await sandbox.stop()\n try {\n await expect(\n sandbox.writeFiles([{ path: `${sandbox.workingDirectory}/x.txt`, contents: \"x\" }])\n ).rejects.toThrow(SandboxNotRunningError)\n } finally {\n await sandbox.destroy()\n }\n })\n })\n\n if (capabilities.networkBlocking) {\n describe(\"network isolation\", () => {\n test('network.mode=\"none\" blocks outbound DNS / TCP', async () => {\n const sandbox = await factory.create({ network: { mode: \"none\" } })\n try {\n const result = await sandbox.runCommand(\"curl\", [\n \"-sS\",\n \"--max-time\",\n \"2\",\n \"https://example.com\",\n ])\n expect(result.exitCode).not.toBe(0)\n } finally {\n await sandbox.destroy()\n }\n })\n\n test('network.mode=\"all\" permits outbound traffic', async () => {\n const sandbox = await factory.create({ network: { mode: \"all\" } })\n try {\n const result = await sandbox.runCommand(\"curl\", [\n \"-sS\",\n \"--max-time\",\n \"5\",\n \"https://example.com\",\n ])\n expect(result.exitCode).not.toBe(6)\n } finally {\n await sandbox.destroy()\n }\n })\n })\n }\n\n // Restricted per-origin egress is intentionally NOT covered here: the only provider that enforces\n // it (smolvm) can be verified only by a live in-VM network call, which needs a network-capable\n // guest image and outbound internet — infrastructure this suite deliberately avoids so it stays\n // hermetic. smolvm's allow-list flag construction is unit-tested in its network-argv tests\n // instead. Add a conformance slice here once a provider can enforce egress under hermetic tests.\n\n if (capabilities.readOnlyEnforcement) {\n describe(\"filesystem isolation\", () => {\n test(\"writing inside readWritePaths succeeds\", async () => {\n const sandbox = await factory.create()\n try {\n const result = await sandbox.runCommand(\"/bin/sh\", [\n \"-c\",\n `echo content > ${sandbox.workingDirectory}/probe.txt && cat ${sandbox.workingDirectory}/probe.txt`,\n ])\n expect(result.exitCode).toBe(0)\n expect(result.stdout.trim()).toBe(\"content\")\n } finally {\n await sandbox.destroy()\n }\n })\n\n test(\"writing outside readWritePaths fails\", async () => {\n const sandbox = await factory.create()\n try {\n const result = await sandbox.runCommand(\"/bin/sh\", [\n \"-c\",\n \"echo nope > /etc/sixb-sandbox-must-not-write\",\n ])\n expect(result.exitCode).not.toBe(0)\n } finally {\n await sandbox.destroy()\n }\n })\n })\n }\n })\n}\n",
|
|
37
37
|
"import { describe, expect, test } from \"bun:test\"\nimport type { CreateShareGrantInput, ShareGrantStorage } from \"../storage/share-grants\"\n\nexport interface ShareGrantStorageContractSuiteOptions<\n TStorage extends ShareGrantStorage = ShareGrantStorage,\n> {\n /** Returns an isolated provider capability for every test. */\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"share-grant-contract\"\nconst createdAt = new Date(\"2026-08-19T12:00:00.000Z\")\nconst expiresAt = new Date(\"2026-08-20T12:00:00.000Z\")\n\n/** Provider-neutral lifecycle and isolation contract for durable Share grants. */\nexport function runShareGrantStorageContractSuite<TStorage extends ShareGrantStorage>(\n label: string,\n options: ShareGrantStorageContractSuiteOptions<TStorage>\n): void {\n const withStorage = async (run: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await run(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"stores derived authority and returns defensive copies\", async () => {\n await withStorage(async (storage) => {\n const input = grantInput()\n const created = await storage.create(input)\n\n ;(input.target as { primaryId: string }).primaryId = \"mutated-input\"\n ;(input.issuedBy as { id: string }).id = \"mutated-input\"\n input.createdAt.setUTCFullYear(2040)\n attemptMutation(() => {\n ;(created.target as { primaryId: string }).primaryId = \"mutated-result\"\n })\n created.createdAt.setUTCFullYear(2041)\n const viewGrant = created.authoritySnapshot.access.grants[0]\n if (!viewGrant || viewGrant.kind !== \"object.view\") {\n throw new Error(\"Share grant storage fixture must contain an object.view grant.\")\n }\n attemptMutation(() => {\n ;(viewGrant.selection.roots[0]!.anchor as { primaryId: string }).primaryId =\n \"mutated-result\"\n })\n\n const stored = await storage.getById({ projectId, id: \"shr_1\" })\n expect(stored).toMatchObject({\n id: \"shr_1\",\n target: { objectTypeId: \"Report\", primaryId: \"report-1\" },\n issuedBy: { type: \"user\", id: \"usr_1\" },\n authoritySnapshot: { version: 1 },\n destinationPath: \"/reports/report-1\",\n createdAt,\n expiresAt,\n })\n expect(stored?.authorityDigest).toMatch(/^[0-9a-f]{64}$/)\n expect(stored?.tokenHash).toBe(\"a\".repeat(64))\n })\n })\n\n test(\"enforces id and token-hash uniqueness per project\", async () => {\n await withStorage(async (storage) => {\n await storage.create(grantInput())\n await expect(\n storage.create(grantInput({ tokenHash: \"b\".repeat(64) }))\n ).rejects.toMatchObject({ code: \"duplicate\" })\n await expect(storage.create(grantInput({ id: \"shr_2\" }))).rejects.toMatchObject({\n code: \"duplicate\",\n })\n\n await expect(\n storage.create(grantInput({ projectId: \"other-project\" }))\n ).resolves.toMatchObject({ id: \"shr_1\", projectId: \"other-project\" })\n })\n })\n\n test(\"lists a bounded deterministic page with total and hasMore\", async () => {\n await withStorage(async (storage) => {\n await storage.create(grantInput({ id: \"shr_a\", tokenHash: \"b\".repeat(64) }))\n await storage.create(grantInput({ id: \"shr_z\", tokenHash: \"c\".repeat(64) }))\n await storage.create(\n grantInput({\n id: \"shr_newer\",\n tokenHash: \"d\".repeat(64),\n createdAt: new Date(\"2026-08-19T13:00:00.000Z\"),\n })\n )\n\n await expect(\n storage.list({ projectId, now: createdAt, limit: 2, offset: 0 })\n ).resolves.toMatchObject({\n grants: [{ id: \"shr_newer\" }, { id: \"shr_z\" }],\n total: 3,\n hasMore: true,\n })\n await expect(\n storage.list({ projectId, now: createdAt, limit: 2, offset: 2 })\n ).resolves.toMatchObject({\n grants: [{ id: \"shr_a\" }],\n total: 3,\n hasMore: false,\n })\n })\n })\n\n test(\"filters by project, definition, target, expiry, and revocation\", async () => {\n await withStorage(async (storage) => {\n await storage.create(grantInput({ id: \"active\", tokenHash: \"b\".repeat(64) }))\n await storage.create(\n grantInput({\n id: \"other-target\",\n tokenHash: \"c\".repeat(64),\n targetPrimaryId: \"report-2\",\n destinationPath: \"/reports/report-2\",\n })\n )\n await storage.create(\n grantInput({ id: \"other-definition\", tokenHash: \"d\".repeat(64), definitionId: \"other\" })\n )\n await storage.create(\n grantInput({\n id: \"expired\",\n tokenHash: \"e\".repeat(64),\n expiresAt: new Date(\"2026-08-19T12:30:00.000Z\"),\n })\n )\n await storage.create(grantInput({ id: \"revoked\", tokenHash: \"f\".repeat(64) }))\n await storage.revoke({\n projectId,\n id: \"revoked\",\n revokedAt: new Date(\"2026-08-19T12:15:00.000Z\"),\n revokedBy: { type: \"user\", id: \"usr_revoker\" },\n })\n await storage.create(grantInput({ projectId: \"other-project\" }))\n\n const filter = {\n projectId,\n definitionId: \"published-report\",\n target: { objectTypeId: \"Report\", primaryId: \"report-1\" },\n now: new Date(\"2026-08-19T13:00:00.000Z\"),\n }\n await expect(storage.list(filter)).resolves.toMatchObject({\n grants: [{ id: \"active\" }],\n total: 1,\n hasMore: false,\n })\n const allStates = await storage.list({\n ...filter,\n includeExpired: true,\n includeRevoked: true,\n })\n expect(allStates.grants.map((grant) => grant.id)).toEqual([\"revoked\", \"expired\", \"active\"])\n })\n })\n\n test(\"treats the exact expiry instant as inactive\", async () => {\n await withStorage(async (storage) => {\n await storage.create(grantInput())\n await expect(storage.list({ projectId, now: expiresAt })).resolves.toMatchObject({\n grants: [],\n total: 0,\n })\n await expect(\n storage.list({ projectId, now: expiresAt, includeExpired: true })\n ).resolves.toMatchObject({ grants: [{ id: \"shr_1\" }], total: 1 })\n })\n })\n\n test(\"keeps the first concurrent revocation and makes later calls idempotent\", async () => {\n await withStorage(async (storage) => {\n await storage.create(grantInput())\n const left = {\n projectId,\n id: \"shr_1\",\n revokedAt: new Date(\"2026-08-19T13:00:00.000Z\"),\n revokedBy: { type: \"user\" as const, id: \"usr_left\" },\n }\n const right = {\n projectId,\n id: \"shr_1\",\n revokedAt: new Date(\"2026-08-19T14:00:00.000Z\"),\n revokedBy: { type: \"system\" as const, id: \"system\" },\n }\n\n const [first, second] = await Promise.all([storage.revoke(left), storage.revoke(right)])\n expect(first).toEqual(second)\n expect(\n await storage.revoke({ ...right, revokedAt: new Date(\"2026-08-19T15:00:00.000Z\") })\n ).toEqual(first)\n await expect(storage.revoke({ ...left, id: \"missing\" })).resolves.toBeNull()\n })\n })\n\n test(\"rejects invalid records and list windows consistently\", async () => {\n await withStorage(async (storage) => {\n const foreignAuthority = grantInput().authoritySnapshot\n const foreignViewGrant = foreignAuthority.access.grants[0]\n if (!foreignViewGrant || foreignViewGrant.kind !== \"object.view\") {\n throw new Error(\"Share grant storage fixture must contain an object.view grant.\")\n }\n ;(foreignViewGrant.selection.roots[0]!.anchor as { primaryId: string }).primaryId = \"other\"\n\n const invalid: CreateShareGrantInput[] = [\n grantInput({ projectId: \"\" }),\n grantInput({ tokenHash: \"not-a-hash\" }),\n grantInput({ destinationPath: \"https://example.com/report\" }),\n grantInput({ destinationPath: \"/reports//report-1\" }),\n grantInput({ destinationPath: \"/reports?id=1\" }),\n grantInput({ destinationPath: \"/shared\" }),\n grantInput({ destinationPath: \"/shared/report-1\" }),\n grantInput({ destinationPath: \"/shared%2Freport-1\" }),\n grantInput({ destinationPath: \"/shared%5Creport-1\" }),\n grantInput({ destinationPath: \"/%73hared/report-1\" }),\n grantInput({ expiresAt: new Date(createdAt) }),\n grantInput({ createdAt: new Date(\"invalid\") }),\n grantInput({ issuedBy: { type: \"system\", id: \"system\" } as never }),\n grantInput({ authoritySnapshot: foreignAuthority }),\n ]\n for (const input of invalid) {\n await expect(storage.create(input)).rejects.toMatchObject({ code: \"invalid_input\" })\n }\n await expect(storage.create(null as never)).rejects.toMatchObject({\n code: \"invalid_input\",\n })\n await expect(storage.getById(null as never)).rejects.toMatchObject({\n code: \"invalid_input\",\n })\n\n await expect(storage.list({ projectId, now: createdAt, limit: 201 })).rejects.toMatchObject(\n { code: \"invalid_input\" }\n )\n await expect(storage.list({ projectId, now: new Date(\"invalid\") })).rejects.toMatchObject({\n code: \"invalid_input\",\n })\n })\n })\n\n test(\"rejects a revocation before creation without changing the grant\", async () => {\n await withStorage(async (storage) => {\n await storage.create(grantInput())\n await expect(\n storage.revoke({\n projectId,\n id: \"shr_1\",\n revokedAt: new Date(\"2026-08-19T11:59:59.999Z\"),\n revokedBy: { type: \"user\", id: \"usr_1\" },\n })\n ).rejects.toMatchObject({ code: \"invalid_input\" })\n const unchanged = await storage.getById({ projectId, id: \"shr_1\" })\n expect(unchanged).not.toBeNull()\n expect(unchanged).not.toHaveProperty(\"revokedAt\")\n expect(unchanged).not.toHaveProperty(\"revokedBy\")\n })\n })\n })\n}\n\nfunction grantInput(\n overrides: Partial<CreateShareGrantInput> & { readonly targetPrimaryId?: string } = {}\n): CreateShareGrantInput {\n const targetPrimaryId = overrides.targetPrimaryId ?? \"report-1\"\n const target = overrides.target ?? { objectTypeId: \"Report\", primaryId: targetPrimaryId }\n const base: CreateShareGrantInput = {\n id: \"shr_1\",\n projectId,\n definitionId: \"published-report\",\n target,\n issuedBy: { type: \"user\", id: \"usr_1\" },\n authoritySnapshot: authoritySnapshot(target.objectTypeId, target.primaryId),\n tokenHash: \"a\".repeat(64),\n destinationPath: \"/reports/report-1\",\n createdAt: new Date(createdAt),\n expiresAt: new Date(expiresAt),\n }\n const { targetPrimaryId: _targetPrimaryId, ...recordOverrides } = overrides\n return { ...base, ...recordOverrides }\n}\n\nfunction authoritySnapshot(\n objectTypeId: string,\n primaryId: string\n): CreateShareGrantInput[\"authoritySnapshot\"] {\n return {\n version: 1,\n access: {\n grants: [\n {\n kind: \"object.view\",\n selection: {\n kind: \"selected\",\n roots: [\n {\n anchor: { objectTypeId, primaryId },\n node: {\n objects: [{ objectTypeId, propertyIds: [\"id\", \"title\"] }],\n links: [],\n },\n },\n ],\n },\n },\n ],\n },\n }\n}\n\nexport function createShareGrantStorageContractInput(\n overrides: Partial<CreateShareGrantInput> = {}\n): CreateShareGrantInput {\n return grantInput(overrides)\n}\n\nfunction attemptMutation(mutate: () => void): void {\n try {\n mutate()\n } catch (error) {\n expect(error).toBeInstanceOf(TypeError)\n }\n}\n",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"import { describe, expect, test } from \"bun:test\"\nimport type { SixbFailure } from \"../errors/types\"\nimport type { CreateExecutionInput, Storage } from \"../storage\"\nimport type { WebhookRunFailureCode } from \"../storage/webhook-runs\"\nimport { startTestWebhookRun } from \"./webhook-execution\"\n\nexport type WebhookRunStorageContractStorage = Storage & {\n readonly webhookRuns: NonNullable<Storage[\"webhookRuns\"]>\n}\n\nexport interface WebhookRunStorageContractSuiteOptions<\n TStorage extends WebhookRunStorageContractStorage = WebhookRunStorageContractStorage,\n> {\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"webhook-contract\"\nconst route = \"/api/webhooks/github/events\"\nconst bodySha256 = \"0\".repeat(64)\nconst finishedAt = new Date(\"2026-06-01T12:01:00.000Z\")\nconst retryableFailure = {\n code: \"webhook.delivery_failed\",\n message: \"Webhook delivery failed.\",\n retryable: true,\n at: finishedAt.toISOString(),\n details: { connectorId: \"github\", webhookId: \"events\", runId: \"delivery-retry\" },\n} as const satisfies SixbFailure<WebhookRunFailureCode>\nconst rejectedFailure = {\n code: \"webhook.delivery_rejected\",\n message: \"Webhook delivery was rejected.\",\n retryable: false,\n at: finishedAt.toISOString(),\n} as const satisfies SixbFailure<WebhookRunFailureCode>\n\n/** Runs the durable Webhook delivery contract against one complete storage provider. */\nexport function runWebhookRunStorageContractSuite<\n TStorage extends WebhookRunStorageContractStorage,\n>(label: string, options: WebhookRunStorageContractSuiteOptions<TStorage>): void {\n const withStorage = async (body: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await body(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"round-trips the immutable execution and delivery identity\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"delivery-1\", \"provider-1\"))\n expect(run).toMatchObject({\n id: \"delivery-1\",\n projectId,\n executionId: \"test_webhook_execution:delivery-1\",\n connectorId: \"github\",\n webhookId: \"events\",\n status: \"running\",\n route,\n requestBodyBytes: 12,\n requestBodySha256: bodySha256,\n idempotencyKey: \"provider-1\",\n })\n await expect(\n storage.webhookRuns.getByDelivery({\n projectId,\n connectorId: \"github\",\n webhookId: \"events\",\n idempotencyKey: \"provider-1\",\n })\n ).resolves.toEqual(run)\n })\n })\n\n test(\"rejects missing or mismatched execution authority\", async () => {\n await withStorage(async (storage) => {\n const missing = runInput(\"missing-execution\")\n await expect(\n storage.webhookRuns.start({ ...missing, executionId: \"missing\" })\n ).rejects.toMatchObject({ code: \"invalid_execution\" })\n\n await storage.executions.create(disabledRequestExecution(\"wrong-execution\"))\n await expect(\n storage.webhookRuns.start({ ...missing, executionId: \"wrong-execution\" })\n ).rejects.toMatchObject({ code: \"invalid_execution\" })\n })\n })\n\n test(\"enforces one run per provider delivery key\", async () => {\n await withStorage(async (storage) => {\n await startTestWebhookRun(storage, runInput(\"delivery-first\", \"provider-shared\"))\n await expect(\n startTestWebhookRun(storage, runInput(\"delivery-second\", \"provider-shared\"))\n ).rejects.toMatchObject({ code: \"duplicate_run\" })\n })\n })\n\n test(\"restarts only retryable failures without changing execution identity\", async () => {\n await withStorage(async (storage) => {\n const started = await startTestWebhookRun(\n storage,\n runInput(\"delivery-retry\", \"provider-retry\")\n )\n await storage.webhookRuns.finish({\n projectId,\n id: started.id,\n status: \"failed\",\n finishedAt,\n responseStatus: 503,\n error: retryableFailure,\n })\n const restarted = await storage.webhookRuns.restart({ projectId, id: started.id })\n expect(restarted).toMatchObject({\n id: started.id,\n executionId: started.executionId,\n status: \"running\",\n })\n expect(restarted.finishedAt).toBeUndefined()\n expect(restarted.responseStatus).toBeUndefined()\n expect(restarted.error).toBeUndefined()\n\n await storage.webhookRuns.finish({\n projectId,\n id: started.id,\n status: \"succeeded\",\n responseStatus: 202,\n })\n await expect(\n storage.webhookRuns.restart({ projectId, id: started.id })\n ).rejects.toMatchObject({ code: \"invalid_transition\" })\n })\n })\n\n test(\"does not reopen a terminal client rejection\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"delivery-rejected\"))\n await storage.webhookRuns.finish({\n projectId,\n id: run.id,\n status: \"failed\",\n finishedAt,\n responseStatus: 422,\n error: rejectedFailure,\n })\n await expect(storage.webhookRuns.restart({ projectId, id: run.id })).rejects.toMatchObject({\n code: \"invalid_transition\",\n })\n })\n })\n\n test(\"persists a validated, detached failure through get and list\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"failed-run\", \"failed-key\"))\n const failedRunFailure = {\n ...retryableFailure,\n details: { ...retryableFailure.details, runId: run.id },\n }\n const mutableFailure = {\n code: \"webhook.delivery_failed\" as const,\n message: String(failedRunFailure.message),\n retryable: true as const,\n at: failedRunFailure.at,\n details: {\n connectorId: String(failedRunFailure.details.connectorId),\n webhookId: String(failedRunFailure.details.webhookId),\n runId: String(failedRunFailure.details.runId),\n },\n }\n const finished = await storage.webhookRuns.finish({\n projectId,\n id: run.id,\n status: \"failed\",\n finishedAt,\n responseStatus: 503,\n error: mutableFailure,\n })\n\n mutableFailure.details.runId = \"mutated-after-write\"\n expect(finished.error).toEqual(failedRunFailure)\n await expect(storage.webhookRuns.getById({ projectId, id: run.id })).resolves.toMatchObject(\n {\n error: failedRunFailure,\n }\n )\n await expect(\n storage.webhookRuns.list({\n projectId,\n statuses: [\"failed\"],\n idempotencyKey: \"failed-key\",\n })\n ).resolves.toMatchObject({ runs: [{ id: run.id, error: failedRunFailure }], total: 1 })\n })\n })\n\n test(\"rejects failures outside the Webhook run contract without finishing\", async () => {\n await withStorage(async (storage) => {\n const run = await startTestWebhookRun(storage, runInput(\"invalid-failure\"))\n await expect(\n storage.webhookRuns.finish({\n projectId,\n id: run.id,\n status: \"failed\",\n finishedAt,\n error: { ...retryableFailure, code: \"runtime.cancelled\" } as never,\n })\n ).rejects.toThrow(\"code is not allowed by this failure contract\")\n const unchanged = await storage.webhookRuns.getById({ projectId, id: run.id })\n expect(unchanged?.status).toBe(\"running\")\n expect(unchanged?.error).toBeUndefined()\n })\n })\n })\n}\n\nfunction runInput(id: string, idempotencyKey?: string) {\n return {\n id,\n projectId,\n connectorId: \"github\",\n webhookId: \"events\",\n method: \"POST\",\n route,\n requestBodyBytes: 12,\n requestBodySha256: bodySha256,\n ...(idempotencyKey === undefined ? {} : { idempotencyKey }),\n startedAt: new Date(\"2026-06-01T12:00:00.000Z\"),\n }\n}\n\nfunction disabledRequestExecution(id: string): CreateExecutionInput {\n return {\n id,\n projectId,\n executor: { type: \"request\", requestId: id },\n source: { type: \"http\", requestId: id },\n correlationId: `correlation:${id}`,\n authorizationRef: { type: \"disabled\" },\n }\n}\n",
|
|
42
42
|
"import { describe, expect, test } from \"bun:test\"\nimport type { Principal } from \"../auth\"\nimport {\n type CreateWorkflowInterventionInput,\n WorkflowInterventionError,\n type WorkflowInterventionStorage,\n} from \"../storage/workflow-interventions\"\n\nexport interface WorkflowInterventionStorageContractSuiteOptions<\n TStorage extends WorkflowInterventionStorage = WorkflowInterventionStorage,\n> {\n readonly createStorage: () => TStorage | Promise<TStorage>\n readonly cleanup?: (storage: TStorage) => void | Promise<void>\n}\n\nconst projectId = \"workflow-intervention-contract\"\n\n/** Provider-neutral lifecycle, paging, and principal-attribution contract for interventions. */\nexport function runWorkflowInterventionStorageContractSuite<\n TStorage extends WorkflowInterventionStorage,\n>(label: string, options: WorkflowInterventionStorageContractSuiteOptions<TStorage>): void {\n const withStorage = async (run: (storage: TStorage) => Promise<void>): Promise<void> => {\n const storage = await options.createStorage()\n try {\n await run(storage)\n } finally {\n await options.cleanup?.(storage)\n }\n }\n\n describe(label, () => {\n test(\"creates pending interventions and supports filtered paging\", async () => {\n await withStorage(async (storage) => {\n await storage.create(interventionInput({ id: \"intervention-1\", requestedAt: at(\"10:00\") }))\n await storage.create(\n interventionInput({\n id: \"intervention-2\",\n workflowRunId: \"run-2\",\n requestedAt: at(\"11:00\"),\n })\n )\n await storage.submit({ projectId, id: \"intervention-2\", response: { decision: \"approve\" } })\n await storage.create(\n interventionInput({\n projectId: \"other-project\",\n id: \"other-project\",\n requestedAt: at(\"12:00\"),\n })\n )\n\n const stored = await storage.getById({ projectId, id: \"intervention-1\" })\n const page = await storage.list({\n projectId,\n statuses: [\"pending\"],\n workflowId: \"review-workflow\",\n interventionId: \"review-draft-document\",\n requestedAfter: at(\"09:00\"),\n order: \"asc\",\n limit: 1,\n })\n\n expect(stored).toMatchObject({\n id: \"intervention-1\",\n status: \"pending\",\n input: { draftId: \"draft-1\" },\n defaultResponse: { decision: \"approve\" },\n })\n expect(stored?.requestedAt.toISOString()).toBe(at(\"10:00\").toISOString())\n expect(page.total).toBe(1)\n expect(page.hasMore).toBe(false)\n expect(page.interventions.map((intervention) => intervention.id)).toEqual([\n \"intervention-1\",\n ])\n await expect(storage.list({ projectId, statuses: [] })).resolves.toEqual({\n interventions: [],\n hasMore: false,\n total: 0,\n })\n })\n })\n\n test(\"submits, cancels, expires, and rejects invalid transitions\", async () => {\n await withStorage(async (storage) => {\n await storage.create(interventionInput({ id: \"submit-me\" }))\n const submitted = await storage.submit({\n projectId,\n id: \"submit-me\",\n submittedAt: at(\"12:00\"),\n submittedBy: { type: \"user\", id: \"usr_1\" },\n response: { decision: \"approve\", reviewerNote: \"Looks good.\" },\n })\n\n await storage.create(interventionInput({ id: \"cancel-me\" }))\n const cancelled = await storage.cancel({\n projectId,\n id: \"cancel-me\",\n cancelledAt: at(\"12:30\"),\n cancelledBy: { type: \"system\", id: \"workflow-timeout\" },\n })\n\n await storage.create(interventionInput({ id: \"expire-me\" }))\n const expired = await storage.expire({ projectId, id: \"expire-me\", expiredAt: at(\"13:00\") })\n\n expect(submitted).toMatchObject({\n status: \"submitted\",\n response: { decision: \"approve\", reviewerNote: \"Looks good.\" },\n submittedBy: { type: \"user\", id: \"usr_1\" },\n })\n expect(submitted.submittedAt?.toISOString()).toBe(at(\"12:00\").toISOString())\n expect(cancelled).toMatchObject({\n status: \"cancelled\",\n cancelledBy: { type: \"system\", id: \"workflow-timeout\" },\n })\n expect(cancelled.cancelledAt?.toISOString()).toBe(at(\"12:30\").toISOString())\n expect(expired.status).toBe(\"expired\")\n expect(expired.expiredAt?.toISOString()).toBe(at(\"13:00\").toISOString())\n\n await expect(storage.cancel({ projectId, id: \"submit-me\" })).rejects.toBeInstanceOf(\n WorkflowInterventionError\n )\n await expect(\n storage.submit({ projectId, id: \"missing\", response: {} })\n ).rejects.toBeInstanceOf(WorkflowInterventionError)\n await expect(storage.create(interventionInput({ id: \"submit-me\" }))).rejects.toBeInstanceOf(\n WorkflowInterventionError\n )\n await expect(\n storage.create(interventionInput({ id: \"bad-index\", nodeIndex: -1 }))\n ).rejects.toBeInstanceOf(WorkflowInterventionError)\n })\n })\n\n test(\"persists submitting and cancelling principals as { type, id }\", async () => {\n await withStorage(async (storage) => {\n const principals: readonly Principal[] = [\n { type: \"user\", id: \"usr_1\" },\n { type: \"serviceAccount\", id: \"sa_1\" },\n { type: \"system\", id: \"system\" },\n ]\n for (const [index, principal] of principals.entries()) {\n await storage.create(\n interventionInput({ id: `submit-${principal.type}`, requestedAt: at(`10:0${index}`) })\n )\n await storage.submit({\n projectId,\n id: `submit-${principal.type}`,\n response: {},\n submittedBy: principal,\n })\n await storage.create(interventionInput({ id: `cancel-${principal.type}` }))\n await storage.cancel({\n projectId,\n id: `cancel-${principal.type}`,\n cancelledBy: principal,\n })\n }\n await storage.create(interventionInput({ id: \"anonymous\" }))\n await storage.submit({ projectId, id: \"anonymous\", response: {} })\n\n for (const principal of principals) {\n const submitted = await storage.getById({ projectId, id: `submit-${principal.type}` })\n const cancelled = await storage.getById({ projectId, id: `cancel-${principal.type}` })\n expect(submitted?.submittedBy).toStrictEqual(principal)\n expect(cancelled?.cancelledBy).toStrictEqual(principal)\n }\n const anonymous = await storage.getById({ projectId, id: \"anonymous\" })\n expect(anonymous?.submittedBy).toBeUndefined()\n expect(anonymous?.cancelledBy).toBeUndefined()\n\n const listed = await storage.list({ projectId, statuses: [\"submitted\"], order: \"asc\" })\n expect(\n listed.interventions.flatMap((intervention) =>\n intervention.submittedBy ? [intervention.submittedBy] : []\n )\n ).toStrictEqual([...principals])\n })\n })\n })\n}\n\nfunction interventionInput(\n overrides: Partial<CreateWorkflowInterventionInput> = {}\n): CreateWorkflowInterventionInput {\n return {\n id: \"intervention-1\",\n projectId,\n workflowId: \"review-workflow\",\n workflowRunId: \"run-1\",\n nodeRunId: \"node-1\",\n nodeIndex: 0,\n nodeId: \"review-draft-document\",\n nodeKey: \"reviewDraftDocument\",\n interventionId: \"review-draft-document\",\n input: { draftId: \"draft-1\" },\n defaultResponse: { decision: \"approve\" },\n requestedAt: at(\"10:00\"),\n ...overrides,\n }\n}\n\nfunction at(time: string): Date {\n return new Date(`2026-05-08T${time}:00.000Z`)\n}\n"
|
|
43
43
|
],
|
|
44
|
-
"mappings": "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",
|
|
45
|
-
"debugId": "
|
|
44
|
+
"mappings": "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",
|
|
45
|
+
"debugId": "9B51DDEB1A1D8F0764756E2164756E21",
|
|
46
46
|
"names": []
|
|
47
47
|
}
|