mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-20 06:02:14 +03:00
41 lines
1.6 KiB
TypeScript
41 lines
1.6 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import { evaluateToolScopes } from "../../open-sse/mcp-server/scopeEnforcement.ts";
|
|
import { localCorpusTools } from "../../open-sse/mcp-server/tools/localCorpusTools.ts";
|
|
|
|
test("local corpus exposes only the three read-only tools", () => {
|
|
assert.deepEqual(
|
|
localCorpusTools.map((tool) => tool.name),
|
|
["local_corpus_status", "local_corpus_search", "local_corpus_read"]
|
|
);
|
|
for (const tool of localCorpusTools) {
|
|
assert.deepEqual(tool.scopes, ["read:local-corpus"]);
|
|
}
|
|
});
|
|
|
|
test("local corpus tools require read:local-corpus when scope enforcement is enabled", () => {
|
|
for (const tool of localCorpusTools) {
|
|
const denied = evaluateToolScopes(tool.name, ["read:health"], true, tool.scopes);
|
|
assert.equal(denied.allowed, false);
|
|
assert.deepEqual(denied.missing, ["read:local-corpus"]);
|
|
|
|
const allowed = evaluateToolScopes(tool.name, ["read:local-corpus"], true, tool.scopes);
|
|
assert.equal(allowed.allowed, true);
|
|
}
|
|
});
|
|
|
|
test("local corpus tool schemas reject invalid input", () => {
|
|
const search = localCorpusTools.find((tool) => tool.name === "local_corpus_search");
|
|
const read = localCorpusTools.find((tool) => tool.name === "local_corpus_read");
|
|
assert.ok(search);
|
|
assert.ok(read);
|
|
assert.equal(search.inputSchema.safeParse({ query: "" }).success, false);
|
|
assert.equal(search.inputSchema.safeParse({ query: "water", limit: 21 }).success, false);
|
|
assert.equal(read.inputSchema.safeParse({ relativePath: "" }).success, false);
|
|
assert.equal(
|
|
read.inputSchema.safeParse({ relativePath: "notes.md", startLine: 0 }).success,
|
|
false
|
|
);
|
|
});
|