From 6fccf9e219b5d84b345dbda79693222255841d99 Mon Sep 17 00:00:00 2001 From: Oliwia Rogala Date: Tue, 23 Apr 2024 10:09:32 +0200 Subject: [PATCH] fix(utils): fix validation for required values without specified type (#9863) Refs #8007 --- src/core/utils/index.js | 15 ++++++++++++++- test/unit/core/utils.js | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/core/utils/index.js b/src/core/utils/index.js index 862d1c13..8f3ed3f9 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -439,13 +439,26 @@ function validateValueBySchema(value, schema, requiredByParam, bypassRequiredChe const isValidNullable = nullable && value === null + // required value is not provided and there's no type defined in the schema + const requiredNotProvided = + schemaRequiresValue + && !hasValue + && !isValidNullable + && !bypassRequiredCheck + && !type + + if (requiredNotProvided) { + errors.push("Required field is not provided") + return errors + } + // will not be included in the request or [schema / value] does not [allow / require] further analysis. const noFurtherValidationNeeded = isValidNullable || !type || !requiresFurtherValidation - if(noFurtherValidationNeeded) { + if (noFurtherValidationNeeded) { return [] } diff --git a/test/unit/core/utils.js b/test/unit/core/utils.js index 24e90b91..5bcb431d 100644 --- a/test/unit/core/utils.js +++ b/test/unit/core/utils.js @@ -1037,6 +1037,22 @@ describe("utils", () => { value = 10 assertValidateParam(param, value, []) }) + + it("validates required parameters without schema", () => { + // valid value + param = { + required: true + } + value = 123 + assertValidateParam(param, value, []) + + // missing value + param = { + required: true + } + value = undefined + assertValidateParam(param, value, ["Required field is not provided"]) + }) }) describe("fromJSOrdered", () => {