|
|
|
|
@@ -459,6 +459,13 @@ export const validateMinLength = (val, min) => {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const validatePattern = (val, rxPattern) => {
|
|
|
|
|
var patt = new RegExp(rxPattern)
|
|
|
|
|
if (!patt.test(val)) {
|
|
|
|
|
return "Value must follow pattern " + rxPattern
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// validation of parameters before execute
|
|
|
|
|
export const validateParam = (param, isXml, isOAS3 = false) => {
|
|
|
|
|
let errors = []
|
|
|
|
|
@@ -472,6 +479,8 @@ export const validateParam = (param, isXml, isOAS3 = false) => {
|
|
|
|
|
let format = paramDetails.get("format")
|
|
|
|
|
let maxLength = paramDetails.get("maxLength")
|
|
|
|
|
let minLength = paramDetails.get("minLength")
|
|
|
|
|
let pattern = paramDetails.get("pattern")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
If the parameter is required OR the parameter has a value (meaning optional, but filled in)
|
|
|
|
|
@@ -479,15 +488,25 @@ export const validateParam = (param, isXml, isOAS3 = false) => {
|
|
|
|
|
Only bother validating the parameter if the type was specified.
|
|
|
|
|
*/
|
|
|
|
|
if ( type && (required || value) ) {
|
|
|
|
|
// These checks should evaluate to true if the parameter's value is valid
|
|
|
|
|
let stringCheck = type === "string" && value && !validateString(value)
|
|
|
|
|
// These checks should evaluate to true if there is a parameter
|
|
|
|
|
let stringCheck = type === "string" && value
|
|
|
|
|
let arrayCheck = type === "array" && Array.isArray(value) && value.length
|
|
|
|
|
let listCheck = type === "array" && Im.List.isList(value) && value.count()
|
|
|
|
|
let fileCheck = type === "file" && value instanceof win.File
|
|
|
|
|
let booleanCheck = type === "boolean" && !validateBoolean(value)
|
|
|
|
|
let numberCheck = type === "number" && !validateNumber(value) // validateNumber returns undefined if the value is a number
|
|
|
|
|
let integerCheck = type === "integer" && !validateInteger(value) // validateInteger returns undefined if the value is an integer
|
|
|
|
|
let booleanCheck = type === "boolean" && (value || value === false)
|
|
|
|
|
let numberCheck = type === "number" && value
|
|
|
|
|
let integerCheck = type === "integer" && value
|
|
|
|
|
|
|
|
|
|
if ( required && !(stringCheck || arrayCheck || listCheck || fileCheck || booleanCheck || numberCheck || integerCheck) ) {
|
|
|
|
|
errors.push("Required field is not provided")
|
|
|
|
|
return errors
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pattern) {
|
|
|
|
|
let err = validatePattern(value, pattern)
|
|
|
|
|
if (err) errors.push(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (maxLength || maxLength === 0) {
|
|
|
|
|
let err = validateMaxLength(value, maxLength)
|
|
|
|
|
if (err) errors.push(err)
|
|
|
|
|
@@ -498,11 +517,6 @@ export const validateParam = (param, isXml, isOAS3 = false) => {
|
|
|
|
|
if (err) errors.push(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( required && !(stringCheck || arrayCheck || listCheck || fileCheck || booleanCheck || numberCheck || integerCheck) ) {
|
|
|
|
|
errors.push("Required field is not provided")
|
|
|
|
|
return errors
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (maximum || maximum === 0) {
|
|
|
|
|
let err = validateMaximum(value, maximum)
|
|
|
|
|
if (err) errors.push(err)
|
|
|
|
|
|