mirror of
https://github.com/samanhappy/mcphub.git
synced 2025-12-24 02:39:19 -05:00
69 lines
2.4 KiB
TypeScript
69 lines
2.4 KiB
TypeScript
import { generateOpenAPISpec, getToolStats } from '../../src/services/openApiGeneratorService';
|
|
|
|
describe('OpenAPI Generator Service', () => {
|
|
describe('generateOpenAPISpec', () => {
|
|
it('should generate a valid OpenAPI specification', () => {
|
|
const spec = generateOpenAPISpec();
|
|
|
|
// Check basic structure
|
|
expect(spec).toHaveProperty('openapi');
|
|
expect(spec).toHaveProperty('info');
|
|
expect(spec).toHaveProperty('servers');
|
|
expect(spec).toHaveProperty('paths');
|
|
expect(spec).toHaveProperty('components');
|
|
|
|
// Check OpenAPI version
|
|
expect(spec.openapi).toBe('3.0.3');
|
|
|
|
// Check info section
|
|
expect(spec.info).toHaveProperty('title');
|
|
expect(spec.info).toHaveProperty('description');
|
|
expect(spec.info).toHaveProperty('version');
|
|
|
|
// Check components
|
|
expect(spec.components).toHaveProperty('schemas');
|
|
expect(spec.components).toHaveProperty('securitySchemes');
|
|
|
|
// Check security schemes
|
|
expect(spec.components?.securitySchemes).toHaveProperty('bearerAuth');
|
|
});
|
|
|
|
it('should generate spec with custom options', () => {
|
|
const options = {
|
|
title: 'Custom API',
|
|
description: 'Custom description',
|
|
version: '2.0.0',
|
|
serverUrl: 'https://custom.example.com'
|
|
};
|
|
|
|
const spec = generateOpenAPISpec(options);
|
|
|
|
expect(spec.info.title).toBe('Custom API');
|
|
expect(spec.info.description).toBe('Custom description');
|
|
expect(spec.info.version).toBe('2.0.0');
|
|
expect(spec.servers[0].url).toContain('https://custom.example.com');
|
|
});
|
|
|
|
it('should handle empty server list gracefully', () => {
|
|
const spec = generateOpenAPISpec();
|
|
|
|
// Should not throw and should have valid structure
|
|
expect(spec).toHaveProperty('paths');
|
|
expect(typeof spec.paths).toBe('object');
|
|
});
|
|
});
|
|
|
|
describe('getToolStats', () => {
|
|
it('should return valid tool statistics', () => {
|
|
const stats = getToolStats();
|
|
|
|
expect(stats).toHaveProperty('totalServers');
|
|
expect(stats).toHaveProperty('totalTools');
|
|
expect(stats).toHaveProperty('serverBreakdown');
|
|
|
|
expect(typeof stats.totalServers).toBe('number');
|
|
expect(typeof stats.totalTools).toBe('number');
|
|
expect(Array.isArray(stats.serverBreakdown)).toBe(true);
|
|
});
|
|
});
|
|
}); |