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
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('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);
});
});