@case-contract-testing/case
Version:
Next-generation contract testing suite
34 lines (33 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateCodes = void 0;
const errors_1 = require("../../../../entities/errors");
const validateCodeNumber = (code) => {
if (code < 100 || code >= 600) {
throw new errors_1.CaseConfigurationError(`HTTP status code '${code}' is outside the valid range (100-599) for status codes`);
}
if (Math.abs(code) !== code) {
throw new errors_1.CaseConfigurationError(`HTTP status code '${code}' must be a whole integer`);
}
return code;
};
const validateCode = (code) => {
switch (typeof code) {
case 'number':
return validateCodeNumber(code);
case 'string':
return validateCodeNumber(Number.parseInt(code.replace(/X|x/g, '0'), 10));
default:
throw new errors_1.CaseConfigurationError(`'${typeof code}' is not a valid type for an HTTP status code`);
}
};
const validateCodes = (codes) => {
if (Array.isArray(codes)) {
if (codes.length === 0) {
throw new errors_1.CaseConfigurationError(`An empty array isn't a valid list of HTTP status codes`);
}
return codes.map(validateCode)[0];
}
return validateCode(codes);
};
exports.validateCodes = validateCodes;