feat(platform): add managed data product history plane
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { validateIntakeBatch } from "../../../packages/external-provider-contract/src/data-plane.mjs";
|
||||
import {
|
||||
canMigrateManagedWriterBindingToDurable,
|
||||
createWriterToken,
|
||||
hashWriterToken,
|
||||
materializeDataProductPublish,
|
||||
@@ -38,6 +39,7 @@ assert.notEqual(hashWriterToken(token), hashWriterToken(`${token}x`));
|
||||
|
||||
const managedPolicy = normalizeManagedWriterBindingRequest({
|
||||
...request,
|
||||
expiresAt: null,
|
||||
allowedDataProductIds: ["fleet.positions.current.v1", "asset.status.current.v1"],
|
||||
generation: 1,
|
||||
capabilityDigest: hashWriterToken(token),
|
||||
@@ -48,26 +50,47 @@ assert.deepEqual(managedPolicy.allowedDataProductIds, [
|
||||
]);
|
||||
assert.equal(managedPolicy.generation, 1);
|
||||
assert.equal(managedPolicy.capabilityDigest, hashWriterToken(token));
|
||||
assert.equal(managedPolicy.expiresAt, null);
|
||||
assert.equal(canMigrateManagedWriterBindingToDurable({
|
||||
...managedPolicy,
|
||||
expiresAt: "2026-08-01T12:00:00.000Z",
|
||||
active: true,
|
||||
capabilityDigest: managedPolicy.capabilityDigest,
|
||||
}, managedPolicy, now), true);
|
||||
assert.equal(canMigrateManagedWriterBindingToDurable({
|
||||
...managedPolicy,
|
||||
expiresAt: "2026-07-01T12:00:00.000Z",
|
||||
active: true,
|
||||
capabilityDigest: managedPolicy.capabilityDigest,
|
||||
}, managedPolicy, now), false);
|
||||
assert.equal(writerBindingRequestHash(managedPolicy), writerBindingRequestHash({
|
||||
...managedPolicy,
|
||||
allowedDataProductIds: [...managedPolicy.allowedDataProductIds].reverse(),
|
||||
}));
|
||||
assert.throws(() => normalizeManagedWriterBindingRequest({
|
||||
...request,
|
||||
expiresAt: null,
|
||||
generation: 0,
|
||||
capabilityDigest: hashWriterToken(token),
|
||||
}, { now, maxTtlDays: 90 }), /managed_writer_binding_generation_invalid/);
|
||||
assert.throws(() => normalizeManagedWriterBindingRequest({
|
||||
...request,
|
||||
expiresAt: null,
|
||||
generation: 1,
|
||||
capabilityDigest: "not-a-digest",
|
||||
}, { now, maxTtlDays: 90 }), /managed_writer_binding_capability_digest_invalid/);
|
||||
assert.throws(() => normalizeManagedWriterBindingRequest({
|
||||
...request,
|
||||
expiresAt: null,
|
||||
generation: 1,
|
||||
capabilityDigest: hashWriterToken(token),
|
||||
token,
|
||||
}, { now, maxTtlDays: 90 }), /managed_writer_binding_secret_material_forbidden/);
|
||||
assert.throws(() => normalizeManagedWriterBindingRequest({
|
||||
...request,
|
||||
generation: 1,
|
||||
capabilityDigest: hashWriterToken(token),
|
||||
}), /managed_writer_binding_must_be_durable/);
|
||||
|
||||
const unscopedBatch = {
|
||||
schemaVersion: "nodedc.external-provider-contract/v1",
|
||||
@@ -148,5 +171,21 @@ const safeBinding = safeWriterBinding({
|
||||
});
|
||||
assert.equal("token" in safeBinding, false);
|
||||
assert.equal("tokenHash" in safeBinding, false);
|
||||
const safeManagedBinding = safeWriterBinding({
|
||||
id: "binding-managed-01",
|
||||
...managedPolicy,
|
||||
active: true,
|
||||
createdAt: now,
|
||||
});
|
||||
assert.equal(safeManagedBinding.expiresAt, null);
|
||||
assert.equal(materializeDataProductPublish({
|
||||
schemaVersion: "nodedc.data-product.publish/v1",
|
||||
batch: { runId: "run-durable", sequence: 0, idempotencyKey: "run-durable.batch-0" },
|
||||
facts: unscopedBatch.facts,
|
||||
}, safeManagedBinding, {
|
||||
id: "fleet.positions.current.v1",
|
||||
version: "1.0.0",
|
||||
ontologyRevision: "ontology.example-fleet.v1",
|
||||
}, "fleet.positions.current.v1", { now: new Date("2036-07-15T12:00:00.000Z") }).batch.runId, "run-durable");
|
||||
|
||||
console.log("external-data-plane writer bindings: ok");
|
||||
|
||||
Reference in New Issue
Block a user