Skip to content

Commit

Permalink
fix: add swagger valid status codes and default one (#57)
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinccbsg authored Jun 12, 2020
1 parent a456eb6 commit 1ee1a50
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 2 deletions.
66 changes: 66 additions & 0 deletions test/transforms/paths/__snapshots__/validStatusCodes.test.js.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Valid status codes snapshot 1`] = `
Object {
"100": "Continue",
"101": "Switching Protocols",
"102": "Processing",
"1XX": "1XX Range",
"200": "OK",
"201": "Created",
"202": "Accepted",
"203": "Non Authoritative Information",
"204": "No Content",
"205": "Reset Content",
"206": "Partial Content",
"207": "Multi-Status",
"2XX": "2XX Range",
"300": "Multiple Choices",
"301": "Moved Permanently",
"302": "Moved Temporarily",
"303": "See Other",
"304": "Not Modified",
"305": "Use Proxy",
"307": "Temporary Redirect",
"308": "Permanent Redirect",
"3XX": "3XX Range",
"400": "Bad Request",
"401": "Unauthorized",
"402": "Payment Required",
"403": "Forbidden",
"404": "Not Found",
"405": "Method Not Allowed",
"406": "Not Acceptable",
"407": "Proxy Authentication Required",
"408": "Request Timeout",
"409": "Conflict",
"410": "Gone",
"411": "Length Required",
"412": "Precondition Failed",
"413": "Request Entity Too Large",
"414": "Request-URI Too Long",
"415": "Unsupported Media Type",
"416": "Requested Range Not Satisfiable",
"417": "Expectation Failed",
"418": "I'm a teapot",
"419": "Insufficient Space on Resource",
"420": "Method Failure",
"422": "Unprocessable Entity",
"423": "Locked",
"424": "Failed Dependency",
"428": "Precondition Required",
"429": "Too Many Requests",
"431": "Request Header Fields Too Large",
"4XX": "4XX Range",
"500": "Server Error",
"501": "Not Implemented",
"502": "Bad Gateway",
"503": "Service Unavailable",
"504": "Gateway Timeout",
"505": "HTTP Version Not Supported",
"507": "Insufficient Storage",
"511": "Network Authentication Required",
"5XX": "5XX Range",
"default": "Default response",
}
`;
43 changes: 42 additions & 1 deletion test/transforms/paths/responses.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ describe('response tests', () => {
expect(result).toEqual(expected);
});

it('should not jsdoc with wrong info and return warning in the console', () => {
it('should not parse jsdoc with wrong info and return warning in the console', () => {
global.console = { ...global.console, warn: jest.fn() };
const jsodInput = [`
/**
Expand Down Expand Up @@ -81,6 +81,47 @@ describe('response tests', () => {
expect(console.warn).toHaveBeenCalled();
});

it('should parse jsdoc with wrong info and return warning in the console', () => {
global.console = { ...global.console, warn: jest.fn() };
const jsodInput = [`
/**
* GET /api/v1
* @summary This is the summary or description of the endpoint
* @return {object} default - success response - application/json
*/
`];
const expected = {
paths: {
'/api/v1': {
get: {
deprecated: false,
summary: 'This is the summary or description of the endpoint',
parameters: [],
tags: [],
security: [],
responses: {
default: {
description: 'success response',
content: {
'application/json': {
schema: {
type: 'object',
},
},
},
},
},
},
},
},
};
const parsedJSDocs = jsdocInfo()(jsodInput);
const result = setPaths({}, parsedJSDocs);
expect(result).toEqual(expected);
// eslint-disable-next-line
expect(console.warn).not.toHaveBeenCalled();
});

it('should parse jsdoc path response with array type', () => {
const jsodInput = [`
/**
Expand Down
5 changes: 5 additions & 0 deletions test/transforms/paths/validStatusCodes.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const validStatusCodes = require('../../../transforms/paths/validStatusCodes');

test('Valid status codes snapshot', () => {
expect(validStatusCodes).toMatchSnapshot();
});
2 changes: 1 addition & 1 deletion transforms/paths/responses.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const hasOldContent = (value, status) => (value[status] && value[status].content

const formatResponses = values => values.reduce((acc, value) => {
const [status, description, contentType] = mapDescription(value.description);
if (!STATUS_CODES[Number(status)]) {
if (!STATUS_CODES[status]) {
// eslint-disable-next-line
console.warn(chalk.yellow(`Status ${status} is not valid to create a response`));
return {};
Expand Down
6 changes: 6 additions & 0 deletions transforms/paths/validStatusCodes.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ const STATUS_CODES = {
422: 'Unprocessable Entity',
415: 'Unsupported Media Type',
305: 'Use Proxy',
'1XX': '1XX Range',
'2XX': '2XX Range',
'3XX': '3XX Range',
'4XX': '4XX Range',
'5XX': '5XX Range',
default: 'Default response',
};

module.exports = STATUS_CODES;

0 comments on commit 1ee1a50

Please sign in to comment.