A Model Context Protocol (MCP) server that integrates with n8n, providing tools for workflow and execution management via the n8n API.
91 lines
2.5 KiB
TypeScript
91 lines
2.5 KiB
TypeScript
/**
|
|
* Simple workflow tool tests without complex dependencies
|
|
*/
|
|
|
|
import { describe, it, expect } from '@jest/globals';
|
|
|
|
// Mock workflow data
|
|
const mockWorkflows = [
|
|
{
|
|
id: '1234abc',
|
|
name: 'Test Workflow 1',
|
|
active: true,
|
|
createdAt: '2025-03-01T12:00:00.000Z',
|
|
updatedAt: '2025-03-02T14:30:00.000Z',
|
|
nodes: []
|
|
},
|
|
{
|
|
id: '5678def',
|
|
name: 'Test Workflow 2',
|
|
active: false,
|
|
createdAt: '2025-03-01T12:00:00.000Z',
|
|
updatedAt: '2025-03-12T10:15:00.000Z',
|
|
nodes: []
|
|
}
|
|
];
|
|
|
|
// Simple function to test tool definition
|
|
function getListWorkflowsToolDefinition() {
|
|
return {
|
|
name: 'list_workflows',
|
|
description: 'List all workflows with optional filtering by status',
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {
|
|
active: {
|
|
type: 'boolean',
|
|
description: 'Filter workflows by active status'
|
|
}
|
|
},
|
|
required: []
|
|
}
|
|
};
|
|
}
|
|
|
|
// Simple function to test workflow filtering
|
|
function filterWorkflows(workflows, filter) {
|
|
if (filter && typeof filter.active === 'boolean') {
|
|
return workflows.filter(workflow => workflow.active === filter.active);
|
|
}
|
|
return workflows;
|
|
}
|
|
|
|
describe('Workflow Tools', () => {
|
|
describe('getListWorkflowsToolDefinition', () => {
|
|
it('should return the correct tool definition', () => {
|
|
const definition = getListWorkflowsToolDefinition();
|
|
|
|
expect(definition.name).toBe('list_workflows');
|
|
expect(definition.description).toBeTruthy();
|
|
expect(definition.inputSchema).toBeDefined();
|
|
expect(definition.inputSchema.properties).toHaveProperty('active');
|
|
expect(definition.inputSchema.required).toEqual([]);
|
|
});
|
|
});
|
|
|
|
describe('filterWorkflows', () => {
|
|
it('should return all workflows when no filter is provided', () => {
|
|
const result = filterWorkflows(mockWorkflows, {});
|
|
|
|
expect(result).toHaveLength(2);
|
|
expect(result).toEqual(mockWorkflows);
|
|
});
|
|
|
|
it('should filter workflows by active status when active is true', () => {
|
|
const result = filterWorkflows(mockWorkflows, { active: true });
|
|
|
|
expect(result).toHaveLength(1);
|
|
expect(result[0].id).toBe('1234abc');
|
|
expect(result[0].active).toBe(true);
|
|
});
|
|
|
|
it('should filter workflows by active status when active is false', () => {
|
|
const result = filterWorkflows(mockWorkflows, { active: false });
|
|
|
|
expect(result).toHaveLength(1);
|
|
expect(result[0].id).toBe('5678def');
|
|
expect(result[0].active).toBe(false);
|
|
});
|
|
});
|
|
});
|