Merge pull request #3889 from swagger-api/bug/3299-param-validation-regression

Validate number and integer parameter value `0` correctly
This commit is contained in:
kyle
2017-11-10 11:25:24 -08:00
committed by GitHub
2 changed files with 10 additions and 2 deletions

View File

@@ -494,8 +494,8 @@ export const validateParam = (param, isXml, isOAS3 = false) => {
let listCheck = type === "array" && Im.List.isList(value) && value.count() let listCheck = type === "array" && Im.List.isList(value) && value.count()
let fileCheck = type === "file" && value instanceof win.File let fileCheck = type === "file" && value instanceof win.File
let booleanCheck = type === "boolean" && (value || value === false) let booleanCheck = type === "boolean" && (value || value === false)
let numberCheck = type === "number" && value let numberCheck = type === "number" && (value || value === 0)
let integerCheck = type === "integer" && value let integerCheck = type === "integer" && (value || value === 0)
if ( required && !(stringCheck || arrayCheck || listCheck || fileCheck || booleanCheck || numberCheck || integerCheck) ) { if ( required && !(stringCheck || arrayCheck || listCheck || fileCheck || booleanCheck || numberCheck || integerCheck) ) {
errors.push("Required field is not provided") errors.push("Required field is not provided")

View File

@@ -700,6 +700,14 @@ describe("utils", function() {
} }
assertValidateParam(param, ["Required field is not provided"]) assertValidateParam(param, ["Required field is not provided"])
// valid integer, but 0 is falsy in JS
param = {
required: true,
type: "integer",
value: 0
}
assertValidateParam(param, [])
// valid integer // valid integer
param = { param = {
required: true, required: true,