GitNexus/gitnexus/test/unit/eval-server-tool-allowlist.test.ts
Gergő Magyar 78b4077d8a
Some checks are pending
CodeQL / Analyze (javascript-typescript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Gitleaks / gitleaks (push) Waiting to run
Publish / Classify release event (push) Waiting to run
Publish / RC guard (marker + release-PR skip) (push) Blocked by required conditions
Publish / ci (push) Blocked by required conditions
Publish / Publish to npm (push) Blocked by required conditions
Publish / Build & Push RC Docker images (push) Blocked by required conditions
Scorecard / Scorecard analysis (push) Waiting to run
Trivy Image Scan / Trivy (gitnexus-cli) (push) Waiting to run
Trivy Image Scan / Trivy (gitnexus-web) (push) Waiting to run
feat(impact): opt-in PDG-backed impact mode - statement + inter-procedural slicing, resolved-callee-id soundness, mutation-oracle validated (#2227)
2026-06-20 12:04:32 +01:00

28 lines
1.1 KiB
TypeScript

// U8 — the eval-server only dispatches an allowlisted, read-only query surface
// over HTTP. LocalBackend.callTool can also reach write-side / heavier tools
// (rename, shape_check, tool_map, …); the allowlist keeps a stray
// `POST /tool/<name>` from reaching them through the Docker/eval-harness server.
import { describe, it, expect } from 'vitest';
import { EVAL_SERVER_TOOLS } from '../../src/cli/eval-server.js';
describe('EVAL_SERVER_TOOLS allowlist (U8)', () => {
it('exposes exactly the advertised read-only query surface', () => {
expect([...EVAL_SERVER_TOOLS].sort()).toEqual([
'context',
'cypher',
'detect_changes',
'impact',
'list_repos',
'query',
]);
});
it('does NOT expose write-side / unadvertised tools', () => {
expect(EVAL_SERVER_TOOLS.has('rename')).toBe(false);
expect(EVAL_SERVER_TOOLS.has('shape_check')).toBe(false);
expect(EVAL_SERVER_TOOLS.has('tool_map')).toBe(false);
expect(EVAL_SERVER_TOOLS.has('group_sync')).toBe(false);
expect(EVAL_SERVER_TOOLS.has('api_impact')).toBe(false);
});
});