agentgate / tree / test/mcp.test.js ยท raw (this view has old GitHub links rewritten for the mirror; raw is byte-exact)
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
import { buildServer } from '../mcp/server.js';
import { MockProvider } from '../src/registry.js';

async function connect() {
  const server = buildServer({ provider: new MockProvider() });
  const [a, b] = InMemoryTransport.createLinkedPair();
  const client = new Client({ name: 'test', version: '0' });
  await Promise.all([server.connect(a), client.connect(b)]);
  return client;
}

test('MCP server lists check_agent', async () => {
  const c = await connect();
  const { tools } = await c.listTools();
  assert.deepEqual(tools.map((t) => t.name), ['check_agent']);
  assert.ok(tools[0].inputSchema.properties.id);
});

test('check_agent returns VERIFIED / NOT VERIFIED with structured result', async () => {
  const c = await connect();
  const ok = await c.callTool({ name: 'check_agent', arguments: { id: 'MockVerifiedAgent1111', network: 'testnet' } });
  assert.match(ok.content[0].text, /^VERIFIED/);
  assert.match(ok.content[0].text, /\[MOCK DATA\]/);
  assert.equal(ok.structuredContent.verified, true);
  const bad = await c.callTool({ name: 'check_agent', arguments: { id: 'MockRevokedAgent22222', network: 'testnet' } });
  assert.match(bad.content[0].text, /^NOT VERIFIED: agent status is Revoked/);
});

agentgate-source: code mirror on Cloudflare Pages. All repos