Skip to main content
Glama

n8n-MCP

by 88-888
get-workflow.test.tsβ€’4.09 kB
/** * Integration Tests: handleGetWorkflow * * Tests workflow retrieval against a real n8n instance. * Covers successful retrieval and error handling. */ import { describe, it, expect, beforeEach, afterEach, afterAll } from 'vitest'; import { createTestContext, TestContext, createTestWorkflowName } from '../utils/test-context'; import { getTestN8nClient } from '../utils/n8n-client'; import { N8nApiClient } from '../../../../src/services/n8n-api-client'; import { Workflow } from '../../../../src/types/n8n-api'; import { SIMPLE_WEBHOOK_WORKFLOW } from '../utils/fixtures'; import { cleanupOrphanedWorkflows } from '../utils/cleanup-helpers'; import { createMcpContext } from '../utils/mcp-context'; import { InstanceContext } from '../../../../src/types/instance-context'; import { handleGetWorkflow } from '../../../../src/mcp/handlers-n8n-manager'; describe('Integration: handleGetWorkflow', () => { let context: TestContext; let client: N8nApiClient; let mcpContext: InstanceContext; beforeEach(() => { context = createTestContext(); client = getTestN8nClient(); mcpContext = createMcpContext(); }); afterEach(async () => { await context.cleanup(); }); afterAll(async () => { if (!process.env.CI) { await cleanupOrphanedWorkflows(); } }); // ====================================================================== // Successful Retrieval // ====================================================================== describe('Successful Retrieval', () => { it('should retrieve complete workflow data', async () => { // Create a workflow first const workflow = { ...SIMPLE_WEBHOOK_WORKFLOW, name: createTestWorkflowName('Get Workflow - Complete Data'), tags: ['mcp-integration-test'] }; const created = await client.createWorkflow(workflow); expect(created).toBeDefined(); expect(created.id).toBeTruthy(); if (!created.id) throw new Error('Workflow ID is missing'); context.trackWorkflow(created.id); // Retrieve the workflow using MCP handler const response = await handleGetWorkflow({ id: created.id }, mcpContext); // Verify MCP response structure expect(response.success).toBe(true); expect(response.data).toBeDefined(); const retrieved = response.data as Workflow; // Verify all expected fields are present expect(retrieved).toBeDefined(); expect(retrieved.id).toBe(created.id); expect(retrieved.name).toBe(workflow.name); expect(retrieved.nodes).toBeDefined(); expect(retrieved.nodes).toHaveLength(workflow.nodes!.length); expect(retrieved.connections).toBeDefined(); expect(retrieved.active).toBeDefined(); expect(retrieved.createdAt).toBeDefined(); expect(retrieved.updatedAt).toBeDefined(); // Verify node data integrity const retrievedNode = retrieved.nodes[0]; const originalNode = workflow.nodes![0]; expect(retrievedNode.name).toBe(originalNode.name); expect(retrievedNode.type).toBe(originalNode.type); expect(retrievedNode.parameters).toBeDefined(); }); }); // ====================================================================== // Error Handling // ====================================================================== describe('Error Handling', () => { it('should return error for non-existent workflow (invalid ID)', async () => { const invalidId = '99999999'; const response = await handleGetWorkflow({ id: invalidId }, mcpContext); // MCP handlers return success: false on error expect(response.success).toBe(false); expect(response.error).toBeDefined(); }); it('should return error for malformed workflow ID', async () => { const malformedId = 'not-a-valid-id-format'; const response = await handleGetWorkflow({ id: malformedId }, mcpContext); // MCP handlers return success: false on error expect(response.success).toBe(false); expect(response.error).toBeDefined(); }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/88-888/n8n-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server