fix: required properties (#7206)
* fix: required properties schema required properties should not be treated like required: true. this lead to objects that requires properties being treated as required itself * test: try-it-out-schema-required-override-allowed Co-authored-by: Tim Lai <timothy.lai@gmail.com>
This commit is contained in:
@@ -429,7 +429,7 @@ function validateValueBySchema(value, schema, requiredByParam, bypassRequiredChe
|
|||||||
let minItems = schema.get("minItems")
|
let minItems = schema.get("minItems")
|
||||||
let pattern = schema.get("pattern")
|
let pattern = schema.get("pattern")
|
||||||
|
|
||||||
const schemaRequiresValue = requiredByParam || requiredBySchema
|
const schemaRequiresValue = requiredByParam || requiredBySchema === true
|
||||||
const hasValue = value !== undefined && value !== null
|
const hasValue = value !== undefined && value !== null
|
||||||
const isValidEmpty = !schemaRequiresValue && !hasValue
|
const isValidEmpty = !schemaRequiresValue && !hasValue
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
swagger: '2.0'
|
||||||
|
info:
|
||||||
|
version: '1.0'
|
||||||
|
title: "schema required properties should not be treated like required: true"
|
||||||
|
paths:
|
||||||
|
'/v1/any-path':
|
||||||
|
put:
|
||||||
|
summary: lorem
|
||||||
|
operationId: setDeliveryLocation
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: ipsum
|
||||||
|
required: false
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/TopModel'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: successful operation
|
||||||
|
definitions:
|
||||||
|
TopModel:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
testProperty:
|
||||||
|
$ref: '#/definitions/NestedModel'
|
||||||
|
NestedModel:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- validated
|
||||||
|
properties:
|
||||||
|
validated:
|
||||||
|
type: boolean
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
describe("Try It Out: schema required properties can be overriden", () => {
|
||||||
|
it("should execute", () => {
|
||||||
|
cy
|
||||||
|
.visit("?tryItOutEnabled=true&url=/documents/features/try-it-out-schema-required-override-allowed.yaml")
|
||||||
|
.get("#operations-default-setDeliveryLocation")
|
||||||
|
.click()
|
||||||
|
.get(".body-param__text")
|
||||||
|
.should("include.value", "testProperty")
|
||||||
|
.clear() // swagger-ui will auto insert "{}" into textarea
|
||||||
|
.get(".execute-wrapper > .btn")
|
||||||
|
.click()
|
||||||
|
.get(".curl-command")
|
||||||
|
.should("exist")
|
||||||
|
})
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user