Skip to content

Commit

Permalink
fix: required properties (#7206)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
mathis-m and tim-lai committed Apr 29, 2021
1 parent 0e770b3 commit 53829f1
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/core/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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")
})
})

0 comments on commit 53829f1

Please sign in to comment.