Files
excalidraw-mcp-sentinel/tests/backend/mcp-contract.test.ts
T

40 lines
1.2 KiB
TypeScript

import { afterAll, beforeAll, describe, expect, it } from 'vitest';
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
import { server, tools } from '../../src/index.js';
let client: Client;
beforeAll(async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
client = new Client({ name: 'mcp-contract-test-client', version: '1.0.0' });
await server.connect(serverTransport);
await client.connect(clientTransport);
});
afterAll(async () => {
await client.close();
await server.close();
});
describe('MCP contract', () => {
it('tools/list returns all declared tools', async () => {
const listed = await client.listTools();
expect(Array.isArray(listed.tools)).toBe(true);
expect(listed.tools.length).toBe(32);
expect(listed.tools.length).toBe(tools.length);
});
it('tools/call unknown tool returns MethodNotFound (-32601)', async () => {
await expect(
client.callTool({
name: '__unknown_tool__',
arguments: {},
})
).rejects.toMatchObject({
code: ErrorCode.MethodNotFound,
});
});
});