openapi-modifier
Version:
This package allows you to automate the process of modifying OpenAPI specifications by applying a set of predefined rules
140 lines (139 loc) • 5.53 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = __importDefault(require("./index"));
describe('change-endpoints-basepath rule', () => {
test('regular', () => {
const fakeLogger = global.createFakeLogger();
const fakeOpenAPIFile = global.createFakeOpenAPIFile({
paths: {
'/api/v1/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
},
});
expect(index_1.default.processDocument(fakeOpenAPIFile, {
map: { '/api/v1': '' },
}, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: {
'/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
} }) }));
expect(fakeLogger.warning).toBeCalledTimes(0);
});
test('regular, logger warning', () => {
const fakeLogger = global.createFakeLogger();
const fakeOpenAPIFile = global.createFakeOpenAPIFile({
paths: {
'/api/v1/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
},
});
expect(index_1.default.processDocument(fakeOpenAPIFile, {
map: { '/api/v2': '' },
}, fakeLogger, { ruleName: '' })).toEqual(Object.assign({}, fakeOpenAPIFile));
expect(fakeLogger.warning).toBeCalledLoggerMethod(/Not found endpoints with prefix/, 1);
});
test('usage option: map', () => {
const fakeLogger = global.createFakeLogger();
const fakeOpenAPIFile = global.createFakeOpenAPIFile({
paths: {
'/api/v1/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
},
});
expect(index_1.default.processDocument(fakeOpenAPIFile, {
map: { '/api/v1': '/proxy' },
}, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: {
'/proxy/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
} }) }));
expect(fakeLogger.warning).toBeCalledTimes(0);
});
test('operations collision', () => {
const fakeLogger = global.createFakeLogger();
const fakeOpenAPIFile = global.createFakeOpenAPIFile({
paths: {
'/proxy/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
'/api/v1/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
},
});
expect(index_1.default.processDocument(fakeOpenAPIFile, {
map: { '/api/v1': '/proxy' },
}, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign({}, fakeOpenAPIFile.document) }));
expect(fakeLogger.warning).toBeCalledTimes(0);
expect(fakeLogger.errorMessage).toBeCalledLoggerMethod(/operaion conflicts/, 1);
});
test('operations collision, usage config.ignoreOperationCollisions', () => {
const fakeLogger = global.createFakeLogger();
const fakeOpenAPIFile = global.createFakeOpenAPIFile({
paths: {
'/proxy/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
'/api/v1/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
},
});
expect(index_1.default.processDocument(fakeOpenAPIFile, {
map: { '/api/v1': '/proxy' },
ignoreOperationCollisions: true,
}, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: {
'/proxy/pets': {
get: {
summary: '',
tags: [],
responses: {},
},
},
} }) }));
expect(fakeLogger.warning).toBeCalledTimes(0);
expect(fakeLogger.error).toBeCalledTimes(0);
});
});