Ekapp/swagger/test/e2e/tests/bugs/1862.js

102 lines
2.9 KiB
JavaScript

describe("Editor #1862: codegen download links downgrade HTTPS", () => {
describe("in Swagger 2", () => {
beforeEach(() => {
cy.visit("/?url=/documents/petstore.swagger.yaml")
cy.server()
cy.route({
url: "*//generator.swagger.io/api/gen/servers",
response: ["nodejs"]
})
cy.route({
url: "*//generator.swagger.io/api/gen/clients",
response: ["javascript"]
})
})
it("should force HTTPS server downloads from Swagger.io Generator", () => {
let wasHttpHit = false
let wasHttpsHit = false
// Given
cy.route({
url: "https://generator.swagger.io/api/gen/servers/nodejs",
method: "POST",
response: {
"code": "a92bc815-f6e3-4a56-839b-fd2e6f379d52",
"link": "http://generator.swagger.io:80/api/gen/download/a92bc815-f6e3-4a56-839b-fd2e6f379d52"
}
}).as("httpsServerNodejs")
cy.route({
url: "http://generator.swagger.io/api/gen/download/*",
onRequest: () => wasHttpHit = true,
response: {}
}).as("httpServerGenDownload")
cy.route({
url: "https://generator.swagger.io/api/gen/download/*",
onRequest: () => wasHttpsHit = true,
response: {}
}).as("httpsServerGenDownload")
// Then
cy.contains("Generate Server")
.click()
cy.contains("nodejs")
.click()
cy.wait(["@httpsServerNodejs", "@httpsServerGenDownload"])
.then(() => {
expect(wasHttpHit).to.equal(false, "has HTTP server been hit")
expect(wasHttpsHit).to.equal(true, "has HTTPS server been hit")
})
})
it("should force HTTPS client downloads from Swagger.io Generator", () => {
let wasHttpHit = false
let wasHttpsHit = false
// Given
cy.route({
url: "https://generator.swagger.io/api/gen/clients/javascript",
method: "POST",
response: {
"code": "a92bc815-f6e3-4a56-839b-fd2e6f379d52",
"link": "http://generator.swagger.io:80/api/gen/download/a92bc815-f6e3-4a56-839b-fd2e6f379d52"
}
}).as("httpsClientJavascript")
cy.route({
url: "http://generator.swagger.io/api/gen/download/*",
onRequest: () => wasHttpHit = true,
response: {}
}).as("httpClientGenDownload")
cy.route({
url: "https://generator.swagger.io/api/gen/download/*",
onRequest: () => wasHttpsHit = true,
response: {}
}).as("httpsClientGenDownload")
// Then
cy.contains("Generate Client")
.click()
cy.contains("javascript")
.click()
cy.wait(["@httpsClientJavascript", "@httpsClientGenDownload"])
.then(() => {
expect(wasHttpHit).to.equal(false, "has HTTP server been hit")
expect(wasHttpsHit).to.equal(true, "has HTTPS server been hit")
})
})
})
})