swagger-route-validator
Version:
The fastest openapi validation middleware
19 lines (18 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateResponse = validateResponse;
const valueValidator_1 = require("./valueValidator");
function validateResponse(routeSpec, response, res, spec = {}) {
const errors = [];
if (!routeSpec.responses[res.statusCode] && !routeSpec.responses['default']) {
throw new Error(`Response status code "${res.statusCode}" not present in spec for this route and no default responses could be found.`);
}
const responseObj = routeSpec.responses[res.statusCode] || routeSpec.responses[(`${res.statusCode}`[0]) + 'XX'] || routeSpec.responses['default'];
(0, valueValidator_1.validateValue)('', response, routeSpec[res.req?.method?.toLowerCase()] || responseObj.content ? responseObj.content['application/json'] : responseObj, (0, valueValidator_1.set)(response), errors, spec);
if (responseObj.headers) {
for (let h in responseObj.headers) {
(0, valueValidator_1.validateValue)(`header.${h}`, res.get(h), { name: h, ...responseObj.headers[h] }, () => { }, errors, {});
}
}
return errors;
}