import assert from "node:assert/strict"; import test from "node:test"; import { MemoryTurnAccess } from "../access.mjs"; test("requires current-turn search and read before updating an existing concept", () => { const access = new MemoryTurnAccess(); assert.throws(() => access.requireWrite("projects/atlas", true), /memory_search/); access.recordSearch(["projects/atlas"]); assert.throws(() => access.requireWrite("projects/atlas", true), /read existing concept/); access.recordRead(["projects/atlas"]); assert.doesNotThrow(() => access.requireWrite("projects/atlas", true)); }); test("new concepts require duplicate search but cannot be read unless returned", () => { const access = new MemoryTurnAccess(); access.recordSearch([]); assert.doesNotThrow(() => access.requireWrite("projects/new-project", false)); assert.throws(() => access.requireSearchedId("projects/new-project"), /exact concept/); }); test("turn reset removes prior authorization", () => { const access = new MemoryTurnAccess(); access.recordSearch(["people/alice"]); access.recordRead(["people/alice"]); assert.doesNotThrow(() => access.requireForget("people/alice")); access.reset(); assert.throws(() => access.requireForget("people/alice"), /this user turn/); });