This update required changing the configuration and test directory structure. Some tests needed to be amended as well to compensate for new Cypress APIs.
107 lines
3.9 KiB
JavaScript
107 lines
3.9 KiB
JavaScript
function getExpandedTryout(page = null, operationId = "#operations-pet-addPet") {
|
|
return (page || cy.visit(
|
|
"/?url=/documents/features/petstore-only-pet.openapi.yaml",
|
|
))
|
|
.get(operationId)
|
|
.click()
|
|
// Expand Try It Out
|
|
.get(".try-out__btn")
|
|
.click()
|
|
}
|
|
|
|
const getRequestBodyFromCY = (page = null, operationId = "#operations-pet-addPet") =>
|
|
getExpandedTryout(page, operationId)
|
|
// get textarea
|
|
.get(".opblock-body .opblock-section .opblock-section-request-body .body-param textarea")
|
|
|
|
const xmlIndicator = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
|
const userEditXmlSample = xmlIndicator +
|
|
"<pet>\n" +
|
|
"\t<id>420</id>\n" +
|
|
"\t<name>doggie<3</name>\n" +
|
|
"\t<category>\n" +
|
|
"\t\t<id>99999999999</id>\n" +
|
|
"\t\t<name>Dogiiiiiiiieeee</name>\n" +
|
|
"\t</category>\n" +
|
|
"\t<photoUrls>\n" +
|
|
"\t\t<photoUrl>string</photoUrl>\n" +
|
|
"\t</photoUrls>\n" +
|
|
"\t<tags>\n" +
|
|
"\t\t<tag>\n" +
|
|
"\t\t\t<id>0</id>\n" +
|
|
"\t\t\t<name>string</name>\n" +
|
|
"\t\t</tag>\n" +
|
|
"\t</tags>\n" +
|
|
"\t<status>available</status>\n" +
|
|
"</pet>"
|
|
|
|
describe("OAS3 Request Body user edit flows", () => {
|
|
// Case: Copy xml from email, paste into request body editor, change media-type to xml
|
|
it("it should never overwrite user edited value in case of media-type change", () => {
|
|
getRequestBodyFromCY()
|
|
// replace default sample with xml edited value
|
|
.type(`{selectall}${userEditXmlSample}`)
|
|
// change media type to xml, because I have forgotten it
|
|
.get(".opblock-section .opblock-section-request-body .body-param-content-type > select")
|
|
.select("application/xml")
|
|
// Ensure user edited body is not overwritten
|
|
.get(".opblock-section-request-body")
|
|
.within(() => {
|
|
cy
|
|
.get("textarea")
|
|
.should(($div) => {
|
|
expect($div.get(0).textContent).to.eq(userEditXmlSample)
|
|
})
|
|
})
|
|
})
|
|
// Case: User really wants to try out the brand new xml content-type
|
|
it("it should overwrite default value in case of content-type change, even within request body editor(#6836)", () => {
|
|
getRequestBodyFromCY()
|
|
// change media type to xml, because I have forgotten it (sry really wanted to try out the new xml content-type)
|
|
.get(".opblock-section .opblock-section-request-body .body-param-content-type > select")
|
|
.select("application/xml")
|
|
// Ensure default value is xml after content type change
|
|
.get(".opblock-section-request-body")
|
|
.within(() => {
|
|
cy
|
|
.get("textarea")
|
|
.should(($div) => {
|
|
expect($div.get(0).textContent).to.contain(xmlIndicator)
|
|
})
|
|
})
|
|
})
|
|
// Case: User wants to get the default value back
|
|
it("it reset the user edited value and render the default value in case of try out reset. (#6517)", () => {
|
|
getRequestBodyFromCY()
|
|
// replace default sample with bad value
|
|
.type("{selectall}ups that should not have happened")
|
|
// Cancel Try It Out
|
|
.get(".try-out__btn.reset")
|
|
.click()
|
|
// Ensure default value is xml after content type change
|
|
.get(".opblock-section-request-body")
|
|
.within(() => {
|
|
cy
|
|
.get("textarea")
|
|
.should(($div) => {
|
|
expect($div.get(0).textContent).to.not.contain("ups that should not have happened")
|
|
})
|
|
})
|
|
})
|
|
describe("multipart/", () => {
|
|
// Case: User wants to execute operation with media-type multipart/ with a enum property. The user expects the first enum value to be used when executed.
|
|
it("should use the first enum value on execute if not changed by user (#6976)", () => {
|
|
// test/e2e-cypress/static/documents/features/request-body/multipart/enum.yaml
|
|
getExpandedTryout(
|
|
cy.visit(
|
|
"/?url=/documents/features/request-body/multipart/enum.yaml",
|
|
), "#operations-default-post_test")
|
|
.get(".execute")
|
|
.click()
|
|
// Assert on the request URL
|
|
.get(".curl")
|
|
.contains("test_enum=A")
|
|
})
|
|
})
|
|
})
|