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 pattern = schema.get("pattern")
|
||||
|
||||
const schemaRequiresValue = requiredByParam || requiredBySchema
|
||||
const schemaRequiresValue = requiredByParam || requiredBySchema === true
|
||||
const hasValue = value !== undefined && value !== null
|
||||
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