test-openapi
Version:
Automated client requests
101 lines (62 loc) • 2.2 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.addUrlParams=void 0;var _pathToRegexp=require("path-to-regexp");
var _path=require("../../../../utils/path.js");
var _prefix=require("../../../../utils/prefix.js");
var _error=require("../../../../errors/error.js");
var _handler=require("../../../../errors/handler.js");
const addUrlParams=function({url,rawRequest}){
const urlParams=(0,_prefix.removePrefixes)(rawRequest,"url");
const tokens=parseUrl({url});
validateRequiredParams({tokens,urlParams});
const urlA=serializeUrl({tokens,urlParams});
return urlA;
};exports.addUrlParams=addUrlParams;
const parseUrl=function({url}){
const tokens=(0,_pathToRegexp.parse)(url);
const tokensA=tokens.map(handlePort);
return tokensA;
};
const handlePort=function(token){
if(typeof token==="string"){
return token;
}
if(isPort(token)){
return`${token.delimiter}:${token.name}`;
}
return token;
};
const isPort=function({name,optional,repeat}){
return!optional&&!repeat&&PORT_REGEXP.test(name);
};
const PORT_REGEXP=/^[0-9]+$/u;
const validateRequiredParams=function({tokens,urlParams}){
tokens.forEach(token=>validateRequiredParam({token,urlParams}));
};
const validateRequiredParam=function({token,urlParams}){
if(!isRequiredParam(token)){
return;
}
const{name}=token;
if(urlParams[name]!==undefined&&urlParams[name]!==""){
return;
}
throwError("must not be empty",{name});
};
const isRequiredParam=function(token){
return typeof token!=="string"&&!token.optional;
};
const serializeUrl=function({tokens,urlParams}){
return tokens.map(token=>eSerializeToken({token,urlParams})).join("");
};
const serializeToken=function({token,urlParams}){
return(0,_pathToRegexp.tokensToFunction)([token])(urlParams);
};
const serializeTokenHandler=function({message},{token:{name}}){
throwError(`is invalid: ${message}`,{name});
};
const eSerializeToken=(0,_handler.addErrorHandler)(serializeToken,serializeTokenHandler);
const throwError=function(message,{name}){
const property=(0,_path.getPath)(["task","call",`url.${name}`]);
throw new _error.TestOpenApiError(`The URL parameter '${name}' ${message}`,{
property});
};
//# sourceMappingURL=params.js.map