Skip to content

Commit

Permalink
fix: coerce multipart initial property values to string (via swagger-…
Browse files Browse the repository at this point in the history
…api#5166)

* coerce multipart initial property values to string

* add tests
  • Loading branch information
shockey authored and deepjia committed Feb 25, 2019
1 parent 3418683 commit 2e3e213
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/core/plugins/oas3/components/request-body.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from "react"
import PropTypes from "prop-types"
import ImPropTypes from "react-immutable-proptypes"
import { Map, OrderedMap, List } from "immutable"
import { getCommonExtensions, getSampleSchema } from "core/utils"
import { getCommonExtensions, getSampleSchema, stringify } from "core/utils"

const RequestBody = ({
requestBody,
Expand Down Expand Up @@ -83,15 +83,19 @@ const RequestBody = ({

let initialValue = prop.get("default") || prop.get("example") || ""

if(initialValue === "" && type === "object") {
if (initialValue === "" && type === "object") {
initialValue = getSampleSchema(prop, false, {
includeWriteOnly: true
})
}

if (typeof initialValue !== "string" && type === "object") {
initialValue = stringify(initialValue)
}

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">
<div className={required ? "parameter__name required" : "parameter__name"}>
{ key }
Expand Down
23 changes: 23 additions & 0 deletions test/e2e-cypress/static/documents/bugs/5164.yaml
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions test/e2e-cypress/tests/bugs/5164.js
Original file line number Diff line number Diff line change
@@ -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")
})
})

0 comments on commit 2e3e213

Please sign in to comment.