diff --git a/src/core/plugins/oas3/components/request-body.jsx b/src/core/plugins/oas3/components/request-body.jsx
index aa5cefdcfb4..0affb8ac85c 100644
--- a/src/core/plugins/oas3/components/request-body.jsx
+++ b/src/core/plugins/oas3/components/request-body.jsx
@@ -5,31 +5,28 @@ import { Map, OrderedMap, List } from "immutable"
import { getCommonExtensions, getSampleSchema, stringify, isEmptyValue } from "core/utils"
function getDefaultRequestBodyValue(requestBody, mediaType, activeExamplesKey) {
- let mediaTypeValue = requestBody.getIn(["content", mediaType])
- let schema = mediaTypeValue.get("schema").toJS()
- let example =
- mediaTypeValue.get("example") !== undefined
- ? stringify(mediaTypeValue.get("example"))
- : null
- let currentExamplesValue = mediaTypeValue.getIn([
- "examples",
- activeExamplesKey,
- "value"
- ])
+ const mediaTypeValue = requestBody.getIn(["content", mediaType])
+ const schema = mediaTypeValue.get("schema").toJS()
- if (mediaTypeValue.get("examples")) {
- // the media type DOES have examples
- return stringify(currentExamplesValue) || ""
- } else {
- // the media type DOES NOT have examples
- return stringify(
- example ||
- getSampleSchema(schema, mediaType, {
- includeWriteOnly: true
- }) ||
- ""
- )
- }
+ const hasExamplesKey = mediaTypeValue.get("examples") !== undefined
+ const exampleSchema = mediaTypeValue.get("example")
+ const mediaTypeExample = hasExamplesKey
+ ? mediaTypeValue.getIn([
+ "examples",
+ activeExamplesKey,
+ "value"
+ ])
+ : exampleSchema
+
+ const exampleValue = getSampleSchema(
+ schema,
+ mediaType,
+ {
+ includeWriteOnly: true
+ },
+ mediaTypeExample
+ )
+ return stringify(exampleValue)
}
@@ -212,6 +209,12 @@ const RequestBody = ({
}
+ const sampleRequestBody = getDefaultRequestBodyValue(
+ requestBody,
+ contentType,
+ activeExamplesKey,
+ )
+
return
{ requestBodyDescription &&
@@ -235,11 +238,7 @@ const RequestBody = ({
@@ -257,11 +256,7 @@ const RequestBody = ({
}
includeWriteOnly={true}
diff --git a/test/e2e-cypress/static/documents/bugs/6475.yaml b/test/e2e-cypress/static/documents/bugs/6475.yaml
new file mode 100644
index 00000000000..1d49c9afbf1
--- /dev/null
+++ b/test/e2e-cypress/static/documents/bugs/6475.yaml
@@ -0,0 +1,57 @@
+openapi: 3.0.1
+info:
+ title: Example Swagger
+ version: '1.0'
+servers:
+ - url: /api/v1
+paths:
+ /xmlTest/examples:
+ post:
+ summary: sample issues
+ operationId: xmlTest_examples
+ parameters: []
+ requestBody:
+ description: Simple Test xml examples
+ content:
+ application/xml:
+ schema:
+ $ref: "#/components/schemas/Test"
+ examples:
+ test:
+ value:
+ x: should be xml
+ responses:
+ '200':
+ description: Simple Test xml examples
+ content: {}
+ /xmlTest/example:
+ post:
+ summary: sample issues
+ operationId: xmlTest_example
+ parameters: []
+ requestBody:
+ description: Simple Test xml example
+ content:
+ application/xml:
+ schema:
+ $ref: "#/components/schemas/Test"
+ example:
+ x: should be xml
+ responses:
+ '200':
+ description: Simple Test xml example
+ content: {}
+components:
+ schemas:
+ Test:
+ type: object
+ xml:
+ name: root
+ properties:
+ x:
+ type: string
+ other:
+ type: string
+ format: email
+ example:
+ x: what the f
diff --git a/test/e2e-cypress/tests/bugs/6475.js b/test/e2e-cypress/tests/bugs/6475.js
new file mode 100644
index 00000000000..05fade8003b
--- /dev/null
+++ b/test/e2e-cypress/tests/bugs/6475.js
@@ -0,0 +1,65 @@
+describe("#6475: 'Examples' keyword definitions can not be rendered as xml", () => {
+ it("should render requestBody examples preview accourdingly to content-type xml", () => {
+ const xmlIndicator = "should be xml"
+
+ cy
+ .visit("?url=/documents/bugs/6475.yaml")
+ .get("#operations-default-xmlTest_examples")
+ .click()
+ .get(".opblock-section-request-body")
+ .within(() => {
+ cy
+ .get(".microlight")
+ .should("include.text", xmlIndicator)
+ })
+ })
+ it("should requestBody examples input accourdingly to content-type xml", () => {
+ const xmlIndicator = "should be xml"
+
+ cy
+ .visit("?url=/documents/bugs/6475.yaml")
+ .get("#operations-default-xmlTest_examples")
+ .click()
+ .get(".btn.try-out__btn")
+ .click()
+ .get(".opblock-section-request-body")
+ .within(() => {
+ cy
+ .get("textarea")
+ .contains(xmlIndicator)
+ })
+ })
+})
+
+describe("#6475: 'Example' keyword definitions can not be rendered as xml", () => {
+ it("should render requestBody examples preview accourdingly to content-type xml", () => {
+ const xmlIndicator = "should be xml"
+
+ cy
+ .visit("?url=/documents/bugs/6475.yaml")
+ .get("#operations-default-xmlTest_example")
+ .click()
+ .get(".opblock-section-request-body")
+ .within(() => {
+ cy
+ .get(".microlight")
+ .should("include.text", xmlIndicator)
+ })
+ })
+ it("should requestBody examples input accourdingly to content-type xml", () => {
+ const xmlIndicator = "should be xml"
+
+ cy
+ .visit("?url=/documents/bugs/6475.yaml")
+ .get("#operations-default-xmlTest_example")
+ .click()
+ .get(".btn.try-out__btn")
+ .click()
+ .get(".opblock-section-request-body")
+ .within(() => {
+ cy
+ .get("textarea")
+ .contains(xmlIndicator)
+ })
+ })
+})