UNPKG

@case-contract-testing/case

Version:

Next-generation contract testing suite

34 lines (33 loc) 1.28 kB
"use strict"; 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;