fix: coerce multipart initial property values to string (via #5166)
* coerce multipart initial property values to string * add tests
This commit is contained in:
@@ -2,7 +2,7 @@ import React from "react"
|
|||||||
import PropTypes from "prop-types"
|
import PropTypes from "prop-types"
|
||||||
import ImPropTypes from "react-immutable-proptypes"
|
import ImPropTypes from "react-immutable-proptypes"
|
||||||
import { Map, OrderedMap, List } from "immutable"
|
import { Map, OrderedMap, List } from "immutable"
|
||||||
import { getCommonExtensions, getSampleSchema } from "core/utils"
|
import { getCommonExtensions, getSampleSchema, stringify } from "core/utils"
|
||||||
|
|
||||||
const RequestBody = ({
|
const RequestBody = ({
|
||||||
requestBody,
|
requestBody,
|
||||||
@@ -83,15 +83,19 @@ const RequestBody = ({
|
|||||||
|
|
||||||
let initialValue = prop.get("default") || prop.get("example") || ""
|
let initialValue = prop.get("default") || prop.get("example") || ""
|
||||||
|
|
||||||
if(initialValue === "" && type === "object") {
|
if (initialValue === "" && type === "object") {
|
||||||
initialValue = getSampleSchema(prop, false, {
|
initialValue = getSampleSchema(prop, false, {
|
||||||
includeWriteOnly: true
|
includeWriteOnly: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof initialValue !== "string" && type === "object") {
|
||||||
|
initialValue = stringify(initialValue)
|
||||||
|
}
|
||||||
|
|
||||||
const isFile = type === "string" && (format === "binary" || format === "base64")
|
const isFile = type === "string" && (format === "binary" || format === "base64")
|
||||||
|
|
||||||
return <tr key={key} className="parameters">
|
return <tr key={key} className="parameters" data-property-name={key}>
|
||||||
<td className="col parameters-col_name">
|
<td className="col parameters-col_name">
|
||||||
<div className={required ? "parameter__name required" : "parameter__name"}>
|
<div className={required ? "parameter__name required" : "parameter__name"}>
|
||||||
{ key }
|
{ key }
|
||||||
|
|||||||
23
test/e2e-cypress/static/documents/bugs/5164.yaml
Normal file
23
test/e2e-cypress/static/documents/bugs/5164.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
openapi: "3.0.0"
|
||||||
|
|
||||||
|
paths:
|
||||||
|
/:
|
||||||
|
post:
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
multipart/form-data:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
first:
|
||||||
|
type: object
|
||||||
|
example:
|
||||||
|
one: abc
|
||||||
|
two: 123
|
||||||
|
second:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
example:
|
||||||
|
- "hi"
|
||||||
19
test/e2e-cypress/tests/bugs/5164.js
Normal file
19
test/e2e-cypress/tests/bugs/5164.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
describe("#5164: multipart property initial values", () => {
|
||||||
|
it("should provide correct initial values for objects and arrays", () => {
|
||||||
|
const correctObjectValue = JSON.stringify({
|
||||||
|
"one": "abc",
|
||||||
|
"two": 123
|
||||||
|
}, null, 2)
|
||||||
|
|
||||||
|
cy
|
||||||
|
.visit("?url=/documents/bugs/5164.yaml")
|
||||||
|
.get("#operations-default-post_")
|
||||||
|
.click()
|
||||||
|
.get(".try-out__btn")
|
||||||
|
.click()
|
||||||
|
.get(`.parameters[data-property-name="first"] textarea`)
|
||||||
|
.should("have.value", correctObjectValue)
|
||||||
|
.get(`.parameters[data-property-name="second"] input`)
|
||||||
|
.should("have.value", "hi")
|
||||||
|
})
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user