Files
ruvnet--RuView/harness/ruview/test/policy.test.mjs
T
rUv a34bfc246e feat: add source-cited RuView guidance MCP tool (#1469)
Add a read-only guidance CLI/MCP surface with reviewed capability maturity, repository citations, validation commands, limitations, and shared-brain evidence. Bump @ruvnet/ruview to 0.3.1 and add release-tarball smoke coverage.
2026-07-29 01:32:45 -04:00

24 lines
1.3 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { authorizeTool, validateArguments } from '../src/policy.js';
import { runTool } from '../src/tools.js';
test('schema validation rejects unknown and mistyped arguments', async () => {
const result = await runTool('ruview_onboard', { path: 7, injected: true });
assert.equal(result.ok, false);
assert.equal(result.reason, 'invalid_arguments');
assert.ok(result.errors.some((error) => error.includes('injected')));
});
test('MCP workspace writes require confirmation and an explicit grant', () => {
assert.equal(authorizeTool('ruview_calibrate', {}, { source: 'mcp', grants: [] }).reason, 'not_confirmed');
assert.equal(authorizeTool('ruview_calibrate', { confirm: true }, { source: 'mcp', grants: [] }).reason, 'authority_denied');
assert.equal(authorizeTool('ruview_calibrate', { confirm: true }, { source: 'mcp', grants: ['workspace-write'] }).ok, true);
});
test('read-only tools remain available with no mutation grants', () => {
assert.equal(authorizeTool('ruview_claim_check', { text: 'safe' }, { source: 'mcp', grants: [] }).ok, true);
assert.equal(authorizeTool('ruview_guidance', {}, { source: 'mcp', grants: [] }).ok, true);
assert.deepEqual(validateArguments({ type: 'object', properties: {} }, {}), []);
});