diff --git a/test/integration/assigned-tools-confluence.test.ts b/test/integration/assigned-tools-confluence.test.ts index faafcf1..1d7e57a 100644 --- a/test/integration/assigned-tools-confluence.test.ts +++ b/test/integration/assigned-tools-confluence.test.ts @@ -204,6 +204,15 @@ test("the mesh assigns confluence: its tools-only runtime comes up and serves th assert.match(served2, /serve\.confluence\.confluence_search/, `confluence's runtime never bound its serve queue:\n${(await on(`docker logs mesh-runtime-confluence 2>&1 | tail -20`)).out}\n---\n${served2}`); + // --- and the control plane is the way to ask it (novox/hq ADR 0095, issue 049) ------------------ + // No account in the mesh but the control plane's may create a reply queue and publish to a + // module's request key. Asked through it, the tool ANSWERS — with an error, since the lab has no + // Confluence and no token, which is an answer: the round trip is what is under test, and a + // timeout would read differently. + const asked = await on(`docker exec mesh-controller /mesh-controller ask confluence confluence_search '{"query":"mesh"}' --wait 60s`, 90_000); + assert.doesNotMatch(asked.out, /did not answer/, `the tool was never reached through the control plane:\n${asked.out}`); + assert.match(asked.out, /"(result|error)"/, `the control plane printed no answer:\n${asked.out}`); + // --- confluence got its own scoped broker account ----------------------------------------------- const users = await must(`docker exec mesh-broker lavinmqctl list_users 2>&1`); assert.match(users, /anchor-confluence/, `the scoped account anchor-confluence is not on the broker:\n${users}`);