import { afterEach, beforeEach, describe, expect, it } from "vitest" ;
import {
findLatestTaskFlowForOwner,
getTaskFlowByIdForOwner,
listTaskFlowsForOwner,
resolveTaskFlowForLookupTokenForOwner,
} from "./task-flow-owner-access.js" ;
import { createManagedTaskFlow, resetTaskFlowRegistryForTests } from "./task-flow-registry.js" ;
import { configureTaskFlowRegistryRuntime } from "./task-flow-registry.store.js" ;
beforeEach(() => {
resetTaskFlowRegistryForTests({ persist: false });
configureTaskFlowRegistryRuntime({
store: {
loadSnapshot: () => ({ flows: new Map() }),
saveSnapshot: () => {},
upsertFlow: () => {},
deleteFlow: () => {},
},
});
});
afterEach(() => {
resetTaskFlowRegistryForTests({ persist: false });
});
describe("task flow owner access" , () => {
it("returns owner-scoped flows for direct and owner-key lookups" , () => {
const older = createManagedTaskFlow({
ownerKey: "agent:main:main" ,
controllerId: "tests/owner-access" ,
goal: "Older flow" ,
createdAt: 100 ,
updatedAt: 100 ,
});
const latest = createManagedTaskFlow({
ownerKey: "agent:main:main" ,
controllerId: "tests/owner-access" ,
goal: "Latest flow" ,
createdAt: 200 ,
updatedAt: 200 ,
});
expect(
getTaskFlowByIdForOwner({
flowId: older.flowId,
callerOwnerKey: "agent:main:main" ,
})?.flowId,
).toBe(older.flowId);
expect(
findLatestTaskFlowForOwner({
callerOwnerKey: "agent:main:main" ,
})?.flowId,
).toBe(latest.flowId);
expect(
resolveTaskFlowForLookupTokenForOwner({
token: "agent:main:main" ,
callerOwnerKey: "agent:main:main" ,
})?.flowId,
).toBe(latest.flowId);
expect(
listTaskFlowsForOwner({
callerOwnerKey: "agent:main:main" ,
}).map((flow) => flow.flowId),
).toEqual([latest.flowId, older.flowId]);
});
it("denies cross-owner flow reads" , () => {
const flow = createManagedTaskFlow({
ownerKey: "agent:main:main" ,
controllerId: "tests/owner-access" ,
goal: "Hidden flow" ,
});
expect(
getTaskFlowByIdForOwner({
flowId: flow.flowId,
callerOwnerKey: "agent:main:other" ,
}),
).toBeUndefined();
expect(
resolveTaskFlowForLookupTokenForOwner({
token: flow.flowId,
callerOwnerKey: "agent:main:other" ,
}),
).toBeUndefined();
expect(
resolveTaskFlowForLookupTokenForOwner({
token: "agent:main:main" ,
callerOwnerKey: "agent:main:other" ,
}),
).toBeUndefined();
expect(
listTaskFlowsForOwner({
callerOwnerKey: "agent:main:other" ,
}),
).toEqual([]);
});
});
Messung V0.5 in Prozent C=99 H=97 G=97
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland