test: cover camera list invoke
This commit is contained in:
@@ -29,4 +29,23 @@ struct MacNodeRuntimeTests {
|
|||||||
BridgeInvokeRequest(id: "req-3", command: ClawdisSystemCommand.notify.rawValue, paramsJSON: json))
|
BridgeInvokeRequest(id: "req-3", command: ClawdisSystemCommand.notify.rawValue, paramsJSON: json))
|
||||||
#expect(response.ok == false)
|
#expect(response.ok == false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test func handleInvokeCameraListRequiresEnabledCamera() async {
|
||||||
|
let defaults = UserDefaults.standard
|
||||||
|
let previous = defaults.object(forKey: cameraEnabledKey)
|
||||||
|
defaults.set(false, forKey: cameraEnabledKey)
|
||||||
|
defer {
|
||||||
|
if let previous {
|
||||||
|
defaults.set(previous, forKey: cameraEnabledKey)
|
||||||
|
} else {
|
||||||
|
defaults.removeObject(forKey: cameraEnabledKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let runtime = MacNodeRuntime()
|
||||||
|
let response = await runtime.handleInvoke(
|
||||||
|
BridgeInvokeRequest(id: "req-4", command: ClawdisCameraCommand.list.rawValue))
|
||||||
|
#expect(response.ok == false)
|
||||||
|
#expect(response.error?.message.contains("CAMERA_DISABLED") == true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -959,6 +959,53 @@ describe("gateway server", () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("routes camera.list invoke to the node bridge", async () => {
|
||||||
|
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
|
||||||
|
const prevHome = process.env.HOME;
|
||||||
|
process.env.HOME = homeDir;
|
||||||
|
|
||||||
|
try {
|
||||||
|
bridgeInvoke.mockResolvedValueOnce({
|
||||||
|
type: "invoke-res",
|
||||||
|
id: "inv-2",
|
||||||
|
ok: true,
|
||||||
|
payloadJSON: JSON.stringify({ devices: [] }),
|
||||||
|
error: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
const { server, ws } = await startServerWithClient();
|
||||||
|
try {
|
||||||
|
await connectOk(ws);
|
||||||
|
|
||||||
|
const res = await rpcReq(ws, "node.invoke", {
|
||||||
|
nodeId: "ios-node",
|
||||||
|
command: "camera.list",
|
||||||
|
params: {},
|
||||||
|
idempotencyKey: "idem-2",
|
||||||
|
});
|
||||||
|
expect(res.ok).toBe(true);
|
||||||
|
|
||||||
|
expect(bridgeInvoke).toHaveBeenCalledWith(
|
||||||
|
expect.objectContaining({
|
||||||
|
nodeId: "ios-node",
|
||||||
|
command: "camera.list",
|
||||||
|
paramsJSON: JSON.stringify({}),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
} finally {
|
||||||
|
ws.close();
|
||||||
|
await server.close();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
await fs.rm(homeDir, { recursive: true, force: true });
|
||||||
|
if (prevHome === undefined) {
|
||||||
|
delete process.env.HOME;
|
||||||
|
} else {
|
||||||
|
process.env.HOME = prevHome;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
test("node.describe returns supported invoke commands for paired nodes", async () => {
|
test("node.describe returns supported invoke commands for paired nodes", async () => {
|
||||||
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
|
const homeDir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdis-home-"));
|
||||||
const prevHome = process.env.HOME;
|
const prevHome = process.env.HOME;
|
||||||
|
|||||||
Reference in New Issue
Block a user