Browse Source

fix: coerce multipart initial property values to string (via #5166)

* coerce multipart initial property values to string

* add tests
bubble
kyle 5 years ago
committed by GitHub
parent
commit
d3c2e2777f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 3 deletions
  1. +7
    -3
      src/core/plugins/oas3/components/request-body.jsx
  2. +23
    -0
      test/e2e-cypress/static/documents/bugs/5164.yaml
  3. +19
    -0
      test/e2e-cypress/tests/bugs/5164.js

+ 7
- 3
src/core/plugins/oas3/components/request-body.jsx View File

@@ -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,
@@ -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 }


+ 23
- 0
test/e2e-cypress/static/documents/bugs/5164.yaml View 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
- 0
test/e2e-cypress/tests/bugs/5164.js View 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")
})
})

Loading…
Cancel
Save