Skip to content

Commit 3feede2

Browse files
committed
test: track terminal Todo source witness on current wire
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
1 parent 1ecf040 commit 3feede2

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

‎tests/control_plane_ts/authority_source.test.ts‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {registryAuthoritySourceCheck} from "../../loopx/control_plane/coordinati
88
import {
99
claimLocalCoordinationTodo, createLocalCoordinationTodo, updateLocalCoordinationTodo,
1010
terminalLifecycleLocalCoordinationTodo, pollLocalCoordinationMonitor,
11+
LOCAL_COORDINATION_TODO_TERMINAL_LIFECYCLE_REQUEST_SCHEMA,
1112
} from "../../loopx/control_plane/coordination/local_authority_runtime.ts";
1213

1314
test("registry witness captures primitive values across awaited request mutation", async t => {
@@ -30,7 +31,6 @@ test("registry witness captures primitive values across awaited request mutation
3031
const wires = [
3132
{invoke: createLocalCoordinationTodo, prefix: "loopx_local_coordination_todo_create_request", legacy: [0], current: 1},
3233
{invoke: claimLocalCoordinationTodo, prefix: "loopx_local_coordination_todo_claim_request", legacy: [0], current: 1},
33-
{invoke: terminalLifecycleLocalCoordinationTodo, prefix: "loopx_local_coordination_todo_terminal_lifecycle_request", legacy: [0], current: 1},
3434
{invoke: updateLocalCoordinationTodo, prefix: "loopx_local_coordination_todo_update_request", legacy: [0, 1], current: 2},
3535
{invoke: pollLocalCoordinationMonitor, prefix: "loopx_coordination_monitor_poll_request", legacy: [0, 1], current: 2},
3636
];
@@ -47,3 +47,24 @@ for (const wire of wires) test(`${wire.prefix}: source obligation cannot silentl
4747
assert.match(String(result.reason), /registry_source/u);
4848
}
4949
});
50+
51+
test("terminal lifecycle v3 rejects old wires and requires a registry witness", async () => {
52+
const prefix = "loopx_local_coordination_todo_terminal_lifecycle_request";
53+
for (const version of [0, 1, 2]) {
54+
const result = await terminalLifecycleLocalCoordinationTodo({
55+
schema_version: `${prefix}_v${version}`, registry_source: null,
56+
});
57+
assert.equal(result.status, "failed");
58+
assert.match(String(result.reason), /schema mismatch/u);
59+
}
60+
for (const source of [undefined, {}, {path: "relative", sha256: "0".repeat(64)},
61+
{path: "/unused", sha256: "invalid"}]) {
62+
const result = await terminalLifecycleLocalCoordinationTodo({
63+
schema_version: LOCAL_COORDINATION_TODO_TERMINAL_LIFECYCLE_REQUEST_SCHEMA,
64+
command: "complete", operation_identity: {kind: "explicit", operation_id: "source-wire"},
65+
registry_source: source,
66+
});
67+
assert.equal(result.status, "failed");
68+
assert.match(String(result.reason), /registry_source/u);
69+
}
70+
});

0 commit comments

Comments
 (0)