fix(edp): resolve managed reader source scope

This commit is contained in:
Codex
2026-07-19 12:28:00 +03:00
parent 0611a88971
commit 95446bdc24
10 changed files with 273 additions and 19 deletions
@@ -0,0 +1,42 @@
import assert from "node:assert/strict";
import { resolveManagedReaderSourceConnection } from "../src/reader-source-scope.mjs";
const policy = {
tenantId: "tenant-01",
connectionId: "consumer-connection",
providerId: "provider-01",
allowedDataProductIds: ["fleet.positions.current.v1"],
};
assert.equal(
await resolveManagedReaderSourceConnection(db(["producer-connection"]), policy),
"producer-connection",
);
assert.equal(
await resolveManagedReaderSourceConnection(db(["producer-connection", "consumer-connection"]), policy),
"consumer-connection",
);
await assert.rejects(
resolveManagedReaderSourceConnection(db([]), policy),
(error) => error?.status === 409 && error?.code === "managed_reader_source_scope_not_found",
);
await assert.rejects(
resolveManagedReaderSourceConnection(db(["producer-a", "producer-b"]), policy),
(error) => error?.status === 409 && error?.code === "managed_reader_source_scope_ambiguous",
);
await assert.rejects(
resolveManagedReaderSourceConnection(db(["producer-connection"]), { ...policy, allowedDataProductIds: [] }),
(error) => error?.status === 400 && error?.code === "managed_reader_source_scope_request_invalid",
);
function db(connectionIds) {
return {
async query(sql, values) {
assert.match(sql, /external_data_plane_writer_bindings/);
assert.deepEqual(values, [policy.tenantId, policy.providerId, policy.allowedDataProductIds]);
return { rows: connectionIds.map((connectionId) => ({ connectionId })) };
},
};
}
console.log("external-data-plane reader source scope: ok");