UNPKG

openapi-modifier

Version:

This package allows you to automate the process of modifying OpenAPI specifications by applying a set of predefined rules

351 lines (350 loc) 12.7 kB
"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('filter-endpoints rule', () => { test('regular', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { disabled: [ { path: '/pets', method: 'delete', }, ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: { '/pets': { get: { summary: '', responses: {}, }, }, } }) })); expect(fakeLogger.warning).toBeCalledTimes(0); }); test('regular, simple descriptor', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { disabled: [ 'delete /pets' ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: { '/pets': { get: { summary: '', responses: {}, }, }, } }) })); expect(fakeLogger.warning).toBeCalledTimes(0); }); test('regular, logger warning', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { enabled: [ { path: '/animals', method: 'get', }, ], disabled: [ { path: '/dogs', method: 'get', }, ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign({}, fakeOpenAPIFile)); expect(fakeLogger.warning).toBeCalledLoggerMethod(/Non-existent/, 2); }); test('usage option: enabled', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { enabled: [ { path: '/pets', method: 'get', }, ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: { '/pets': { get: { summary: '', responses: {}, }, }, } }) })); }); test('usage option: common parameters', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { parameters: [ { name: 'subject', in: 'query', schema: { type: 'string', }, }, ], get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { enabled: [ { path: '/pets', method: 'get', }, ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: { '/pets': { parameters: [ { name: 'subject', in: 'query', schema: { type: 'string', }, }, ], get: { summary: '', responses: {}, }, }, } }) })); }); test('usage option: delete empty paths', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { parameters: [ { name: 'subject', in: 'query', schema: { type: 'string', }, }, ], get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { disabled: [ { path: '/pets', method: 'get', }, { path: '/pets', method: 'delete', }, ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: {} }) })); }); test('usage option: disabled', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { disabled: [ { path: '/pets', method: 'delete', }, ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: { '/pets': { get: { summary: '', responses: {}, }, }, } }) })); }); test('usage option: disabled regexp', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/test/pets': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { disabledPathRegExp: [/\/test\//], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: {} }) })); }); test('usage option: enabled regexp', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets/cats': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, '/pets/dogs': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { enabledPathRegExp: [/\/dogs/], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: { '/pets/dogs': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, } }) })); }); test('usage option: print ignored endpoints', () => { const fakeLogger = global.createFakeLogger(); const fakeOpenAPIFile = global.createFakeOpenAPIFile({ paths: { '/pets': { get: { summary: '', responses: {}, }, delete: { summary: '', responses: {}, }, }, }, }); expect(index_1.default.processDocument(fakeOpenAPIFile, { printIgnoredEndpoints: true, disabled: [ { path: '/pets', method: 'delete', }, ], }, fakeLogger, { ruleName: '' })).toEqual(Object.assign(Object.assign({}, fakeOpenAPIFile), { document: Object.assign(Object.assign({}, fakeOpenAPIFile.document), { paths: { '/pets': { get: { summary: '', responses: {}, }, }, } }) })); expect(fakeLogger.info).toBeCalledLoggerMethod(/Ignored endpoints/, 1); }); });