swagger-parser-mcp-server 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/index.js +126 -206
  2. package/dist/index.js.map +1 -1
  3. package/dist/schemas.d.ts +58 -0
  4. package/dist/schemas.d.ts.map +1 -0
  5. package/dist/schemas.js +32 -0
  6. package/dist/schemas.js.map +1 -0
  7. package/dist/tests/edgeCases.test.d.ts +2 -0
  8. package/dist/tests/edgeCases.test.d.ts.map +1 -0
  9. package/dist/tests/edgeCases.test.js +364 -0
  10. package/dist/tests/edgeCases.test.js.map +1 -0
  11. package/dist/tests/integration.test.d.ts +2 -0
  12. package/dist/tests/integration.test.d.ts.map +1 -0
  13. package/dist/tests/integration.test.js +382 -0
  14. package/dist/tests/integration.test.js.map +1 -0
  15. package/dist/tests/realWorldValidation.test.d.ts +2 -0
  16. package/dist/tests/realWorldValidation.test.d.ts.map +1 -0
  17. package/dist/tests/realWorldValidation.test.js +398 -0
  18. package/dist/tests/realWorldValidation.test.js.map +1 -0
  19. package/dist/tests/schemaResolver.test.d.ts +2 -0
  20. package/dist/tests/schemaResolver.test.d.ts.map +1 -0
  21. package/dist/tests/schemaResolver.test.js +322 -0
  22. package/dist/tests/schemaResolver.test.js.map +1 -0
  23. package/dist/utils/schemaResolver.d.ts +34 -0
  24. package/dist/utils/schemaResolver.d.ts.map +1 -0
  25. package/dist/utils/schemaResolver.js +255 -0
  26. package/dist/utils/schemaResolver.js.map +1 -0
  27. package/dist/utils/swaggerCache.d.ts +53 -0
  28. package/dist/utils/swaggerCache.d.ts.map +1 -0
  29. package/dist/utils/swaggerCache.js +146 -0
  30. package/dist/utils/swaggerCache.js.map +1 -0
  31. package/dist/utils/types.d.ts +73 -0
  32. package/dist/utils/types.d.ts.map +1 -0
  33. package/dist/utils/types.js +20 -0
  34. package/dist/utils/types.js.map +1 -0
  35. package/package.json +31 -9
@@ -0,0 +1,382 @@
1
+ import { SwaggerCache } from '../utils/swaggerCache.js';
2
+ import { SchemaResolver } from '../utils/schemaResolver.js';
3
+ import axios from 'axios';
4
+ // Mock axios
5
+ jest.mock('axios');
6
+ const mockedAxios = axios;
7
+ describe('Integration Tests', () => {
8
+ let cache;
9
+ let resolver;
10
+ beforeEach(() => {
11
+ cache = new SwaggerCache();
12
+ resolver = new SchemaResolver();
13
+ jest.clearAllMocks();
14
+ });
15
+ describe('SwaggerCache Integration', () => {
16
+ const mockSwaggerResponse = {
17
+ openapi: '3.0.0',
18
+ info: { title: 'Test API', version: '1.0.0' },
19
+ paths: {
20
+ '/users': {
21
+ get: {
22
+ operationId: 'getUsers',
23
+ responses: {
24
+ '200': {
25
+ description: 'Success',
26
+ content: {
27
+ 'application/json': {
28
+ schema: { $ref: '#/components/schemas/UserList' },
29
+ },
30
+ },
31
+ },
32
+ },
33
+ },
34
+ },
35
+ },
36
+ components: {
37
+ schemas: {
38
+ User: {
39
+ type: 'object',
40
+ properties: {
41
+ id: { type: 'string' },
42
+ name: { type: 'string' },
43
+ email: { type: 'string' },
44
+ },
45
+ },
46
+ UserList: {
47
+ type: 'array',
48
+ items: { $ref: '#/components/schemas/User' },
49
+ },
50
+ },
51
+ },
52
+ };
53
+ it('should load and cache OpenAPI document successfully', async () => {
54
+ const url = 'https://api.example.com/swagger.json';
55
+ mockedAxios.get.mockResolvedValueOnce({ data: mockSwaggerResponse });
56
+ const result = await cache.load(url);
57
+ expect(result).toEqual(mockSwaggerResponse);
58
+ expect(cache.has(url)).toBe(true);
59
+ expect(mockedAxios.get).toHaveBeenCalledWith(url, expect.objectContaining({
60
+ timeout: 30000,
61
+ headers: expect.objectContaining({
62
+ Accept: 'application/json, application/yaml, text/yaml',
63
+ 'User-Agent': 'swagger-parser-mcp-server/1.0.0',
64
+ }),
65
+ }));
66
+ });
67
+ it('should return cached document on subsequent requests', async () => {
68
+ const url = 'https://api.example.com/swagger.json';
69
+ mockedAxios.get.mockResolvedValueOnce({ data: mockSwaggerResponse });
70
+ // First load
71
+ await cache.load(url);
72
+ // Second load should use cache
73
+ const result = await cache.getOrLoad(url);
74
+ expect(result).toEqual(mockSwaggerResponse);
75
+ expect(mockedAxios.get).toHaveBeenCalledTimes(1); // Only called once
76
+ });
77
+ it('should handle concurrent requests to same URL', async () => {
78
+ const url = 'https://api.example.com/swagger.json';
79
+ mockedAxios.get.mockResolvedValueOnce({ data: mockSwaggerResponse });
80
+ // Start multiple concurrent loads
81
+ const promises = [cache.load(url), cache.load(url), cache.load(url)];
82
+ const results = await Promise.all(promises);
83
+ // All should return the same result
84
+ results.forEach(result => {
85
+ expect(result).toEqual(mockSwaggerResponse);
86
+ });
87
+ // But HTTP request should only be made once
88
+ expect(mockedAxios.get).toHaveBeenCalledTimes(1);
89
+ });
90
+ it('should handle network errors gracefully', async () => {
91
+ const url = 'https://api.example.com/swagger.json';
92
+ mockedAxios.get.mockRejectedValueOnce(new Error('Network error'));
93
+ await expect(cache.load(url)).rejects.toThrow('Failed to load OpenAPI document: Network error');
94
+ expect(cache.has(url)).toBe(false);
95
+ });
96
+ it('should handle HTTP errors gracefully', async () => {
97
+ const url = 'https://api.example.com/swagger.json';
98
+ mockedAxios.get.mockRejectedValueOnce({
99
+ response: { status: 404, statusText: 'Not Found' },
100
+ });
101
+ await expect(cache.load(url)).rejects.toThrow('HTTP 404: Not Found');
102
+ expect(cache.has(url)).toBe(false);
103
+ });
104
+ it('should validate OpenAPI document structure', async () => {
105
+ const url = 'https://api.example.com/swagger.json';
106
+ const invalidDocument = { invalid: 'document' };
107
+ mockedAxios.get.mockResolvedValueOnce({ data: invalidDocument });
108
+ await expect(cache.load(url)).rejects.toThrow('Invalid OpenAPI document: missing openapi/swagger version');
109
+ });
110
+ it('should preload multiple URLs concurrently', async () => {
111
+ const urls = [
112
+ 'https://api1.example.com/swagger.json',
113
+ 'https://api2.example.com/swagger.json',
114
+ 'https://api3.example.com/swagger.json',
115
+ ];
116
+ // Mock successful responses for all URLs
117
+ mockedAxios.get
118
+ .mockResolvedValueOnce({ data: { ...mockSwaggerResponse, info: { title: 'API 1', version: '1.0.0' } } })
119
+ .mockResolvedValueOnce({ data: { ...mockSwaggerResponse, info: { title: 'API 2', version: '1.0.0' } } })
120
+ .mockResolvedValueOnce({ data: { ...mockSwaggerResponse, info: { title: 'API 3', version: '1.0.0' } } });
121
+ await cache.preload(urls);
122
+ // All should be cached now
123
+ urls.forEach(url => {
124
+ expect(cache.has(url)).toBe(true);
125
+ });
126
+ expect(mockedAxios.get).toHaveBeenCalledTimes(3);
127
+ });
128
+ it('should provide accurate cache statistics', async () => {
129
+ const urls = ['https://api1.example.com/swagger.json', 'https://api2.example.com/swagger.json'];
130
+ mockedAxios.get
131
+ .mockResolvedValueOnce({ data: mockSwaggerResponse })
132
+ .mockResolvedValueOnce({ data: mockSwaggerResponse });
133
+ await Promise.all(urls.map(url => cache.load(url)));
134
+ const stats = cache.getStats();
135
+ expect(stats.cacheSize).toBe(2);
136
+ expect(stats.loadingPromises).toBe(0);
137
+ expect(stats.cachedUrls).toEqual(expect.arrayContaining(urls));
138
+ });
139
+ });
140
+ describe('Schema Resolution Integration', () => {
141
+ const mockSwaggerWithCircular = {
142
+ openapi: '3.0.0',
143
+ info: { title: 'Test API', version: '1.0.0' },
144
+ paths: {},
145
+ components: {
146
+ schemas: {
147
+ User: {
148
+ type: 'object',
149
+ properties: {
150
+ id: { type: 'string' },
151
+ name: { type: 'string' },
152
+ profile: { $ref: '#/components/schemas/Profile' },
153
+ },
154
+ },
155
+ Profile: {
156
+ type: 'object',
157
+ properties: {
158
+ bio: { type: 'string' },
159
+ user: { $ref: '#/components/schemas/User' }, // Circular reference
160
+ },
161
+ },
162
+ Post: {
163
+ type: 'object',
164
+ properties: {
165
+ id: { type: 'string' },
166
+ title: { type: 'string' },
167
+ author: { $ref: '#/components/schemas/User' },
168
+ comments: {
169
+ type: 'array',
170
+ items: { $ref: '#/components/schemas/Comment' },
171
+ },
172
+ },
173
+ },
174
+ Comment: {
175
+ type: 'object',
176
+ properties: {
177
+ id: { type: 'string' },
178
+ content: { type: 'string' },
179
+ author: { $ref: '#/components/schemas/User' },
180
+ post: { $ref: '#/components/schemas/Post' }, // Another circular reference
181
+ },
182
+ },
183
+ },
184
+ },
185
+ };
186
+ it('should resolve complex schema without circular references', () => {
187
+ const nonCircularResolver = new SchemaResolver({ includeCircularRefs: false });
188
+ const schema = { $ref: '#/components/schemas/Post' };
189
+ const result = nonCircularResolver.resolveSchemaReference(schema, mockSwaggerWithCircular);
190
+ expect(result).toBeDefined();
191
+ expect(result.resolved).toBeDefined();
192
+ // Should contain circular reference placeholders instead of infinite recursion
193
+ const stringResult = JSON.stringify(result);
194
+ expect(stringResult).toContain('[Circular Reference]');
195
+ });
196
+ it('should detect multiple circular reference paths', () => {
197
+ expect(() => {
198
+ resolver.resolveRef('#/components/schemas/User', mockSwaggerWithCircular);
199
+ }).toThrow('Circular reference detected');
200
+ expect(() => {
201
+ resolver.resolveRef('#/components/schemas/Post', mockSwaggerWithCircular);
202
+ }).toThrow('Circular reference detected');
203
+ });
204
+ it('should resolve deeply nested schemas efficiently', () => {
205
+ const deepSchema = {
206
+ openapi: '3.0.0',
207
+ info: { title: 'Deep API', version: '1.0.0' },
208
+ paths: {},
209
+ components: {
210
+ schemas: {
211
+ Level1: {
212
+ type: 'object',
213
+ properties: {
214
+ data: { $ref: '#/components/schemas/Level2' },
215
+ },
216
+ },
217
+ Level2: {
218
+ type: 'object',
219
+ properties: {
220
+ data: { $ref: '#/components/schemas/Level3' },
221
+ },
222
+ },
223
+ Level3: {
224
+ type: 'object',
225
+ properties: {
226
+ data: { $ref: '#/components/schemas/Level4' },
227
+ },
228
+ },
229
+ Level4: {
230
+ type: 'object',
231
+ properties: {
232
+ value: { type: 'string' },
233
+ },
234
+ },
235
+ },
236
+ },
237
+ };
238
+ const startTime = Date.now();
239
+ const result = resolver.resolveRef('#/components/schemas/Level1', deepSchema);
240
+ const endTime = Date.now();
241
+ expect(result).toBeDefined();
242
+ expect(endTime - startTime).toBeLessThan(1000); // Should complete quickly
243
+ });
244
+ it('should handle mixed array and object schemas', () => {
245
+ const mixedSchema = {
246
+ openapi: '3.0.0',
247
+ info: { title: 'Mixed API', version: '1.0.0' },
248
+ paths: {},
249
+ components: {
250
+ schemas: {
251
+ UserList: {
252
+ type: 'array',
253
+ items: { $ref: '#/components/schemas/User' },
254
+ },
255
+ User: {
256
+ type: 'object',
257
+ properties: {
258
+ id: { type: 'string' },
259
+ tags: {
260
+ type: 'array',
261
+ items: { type: 'string' },
262
+ },
263
+ metadata: {
264
+ type: 'object',
265
+ properties: {
266
+ created: { type: 'string', format: 'date-time' },
267
+ categories: {
268
+ type: 'array',
269
+ items: { $ref: '#/components/schemas/Category' },
270
+ },
271
+ },
272
+ },
273
+ },
274
+ },
275
+ Category: {
276
+ type: 'object',
277
+ properties: {
278
+ name: { type: 'string' },
279
+ description: { type: 'string' },
280
+ },
281
+ },
282
+ },
283
+ },
284
+ };
285
+ const result = resolver.resolveRef('#/components/schemas/UserList', mixedSchema);
286
+ expect(result.type).toBe('array');
287
+ expect(result.items).toBeDefined();
288
+ // The items contains $ref and resolved, so check the resolved part
289
+ expect(result.items.resolved.type).toBe('object');
290
+ expect(result.items.resolved.properties.metadata.properties.categories).toBeDefined();
291
+ });
292
+ });
293
+ describe('Full Workflow Integration', () => {
294
+ it('should handle complete workflow from URL to resolved schema', async () => {
295
+ const url = 'https://api.example.com/swagger.json';
296
+ const swagger = {
297
+ openapi: '3.0.0',
298
+ info: { title: 'Complete API', version: '1.0.0' },
299
+ paths: {
300
+ '/users/{id}': {
301
+ get: {
302
+ parameters: [
303
+ {
304
+ name: 'id',
305
+ in: 'path',
306
+ required: true,
307
+ schema: { type: 'string' },
308
+ },
309
+ ],
310
+ responses: {
311
+ '200': {
312
+ description: 'User details',
313
+ content: {
314
+ 'application/json': {
315
+ schema: { $ref: '#/components/schemas/User' },
316
+ },
317
+ },
318
+ },
319
+ },
320
+ },
321
+ },
322
+ },
323
+ components: {
324
+ schemas: {
325
+ User: {
326
+ type: 'object',
327
+ properties: {
328
+ id: { type: 'string' },
329
+ name: { type: 'string' },
330
+ contacts: {
331
+ type: 'array',
332
+ items: { $ref: '#/components/schemas/Contact' },
333
+ },
334
+ },
335
+ },
336
+ Contact: {
337
+ type: 'object',
338
+ properties: {
339
+ type: { type: 'string', enum: ['email', 'phone'] },
340
+ value: { type: 'string' },
341
+ },
342
+ },
343
+ },
344
+ },
345
+ };
346
+ mockedAxios.get.mockResolvedValueOnce({ data: swagger });
347
+ // Load swagger document
348
+ const document = await cache.load(url);
349
+ expect(document).toEqual(swagger);
350
+ // Resolve schema reference
351
+ const userSchema = resolver.resolveRef('#/components/schemas/User', document);
352
+ expect(userSchema.type).toBe('object');
353
+ expect(userSchema.properties.contacts.type).toBe('array');
354
+ expect(userSchema.properties.contacts.items).toBeDefined();
355
+ // Validate reference
356
+ expect(resolver.validateRef('#/components/schemas/User', document)).toBe(true);
357
+ expect(resolver.validateRef('#/components/schemas/NonExistent', document)).toBe(false);
358
+ });
359
+ it('should handle workflow with error recovery', async () => {
360
+ const url = 'https://api.example.com/swagger.json';
361
+ // First request fails
362
+ mockedAxios.get.mockRejectedValueOnce(new Error('Network timeout'));
363
+ await expect(cache.load(url)).rejects.toThrow('Network timeout');
364
+ // Second request succeeds
365
+ const swagger = {
366
+ openapi: '3.0.0',
367
+ info: { title: 'Recovery API', version: '1.0.0' },
368
+ paths: {},
369
+ components: {
370
+ schemas: {
371
+ SimpleSchema: { type: 'string' },
372
+ },
373
+ },
374
+ };
375
+ mockedAxios.get.mockResolvedValueOnce({ data: swagger });
376
+ const document = await cache.load(url);
377
+ expect(document).toEqual(swagger);
378
+ expect(cache.has(url)).toBe(true);
379
+ });
380
+ });
381
+ });
382
+ //# sourceMappingURL=integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/tests/integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=realWorldValidation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realWorldValidation.test.d.ts","sourceRoot":"","sources":["../../src/tests/realWorldValidation.test.ts"],"names":[],"mappings":""}