diff --git a/test/e2e-selenium/scenarios/bugs/4196.js b/test/e2e-selenium/scenarios/bugs/4196.js index 0ce2b152..a2ae46b9 100644 --- a/test/e2e-selenium/scenarios/bugs/4196.js +++ b/test/e2e-selenium/scenarios/bugs/4196.js @@ -1,42 +1,42 @@ describe("bug #4196: HTTP basic auth credential retention", function () { - let mainPage - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() + let mainPage + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4196.yaml") - .click("button.download-url-button") + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4196.yaml") + .click("button.download-url-button") - done() - }) - afterEach(function (client, done) { - done() - }) - it("should display the most recent auth data across modal close/opens", function (client) { - client.waitForElementVisible(".opblock-tag-section", 10000) - .click("button.btn.authorize") // Open modal - .waitForElementVisible("section>input", 5000) - .setValue("section>input", "aaa") // Set user - .waitForElementVisible(`section>input[type="password"]`, 5000) - .setValue(`section>input[type="password"]`, "aaa") // Set password - .click(".auth-btn-wrapper button:nth-child(1)") // Click Authorize - .assert.containsText("div.wrapper:nth-child(4)>code", "aaa") - .click(".auth-btn-wrapper button:nth-child(2)") // Close modal - .pause(50) - .click("button.btn.authorize") // Open modal - .pause(50) - .click(".auth-btn-wrapper button:nth-child(1)") // Logout - .waitForElementVisible("section>input", 5000) - .setValue("section>input", "bbb") // Set user - .waitForElementVisible(`section>input[type="password"]`, 5000) - .setValue(`section>input[type="password"]`, "bbb") // Set password - .click(".auth-btn-wrapper button:nth-child(1)") // Click Authorize - .pause(1000) - .assert.containsText("div.wrapper:nth-child(4)>code", "bbb") + done() + }) + afterEach(function (client, done) { + done() + }) + it("should display the most recent auth data across modal close/opens", function (client) { + client.waitForElementVisible(".opblock-tag-section", 10000) + .click("button.btn.authorize") // Open modal + .waitForElementVisible("section>input", 5000) + .setValue("section>input", "aaa") // Set user + .waitForElementVisible(`section>input[type="password"]`, 5000) + .setValue(`section>input[type="password"]`, "aaa") // Set password + .click(".auth-btn-wrapper button:nth-child(1)") // Click Authorize + .assert.containsText("div.wrapper:nth-child(4)>code", "aaa") + .click(".auth-btn-wrapper button:nth-child(2)") // Close modal + .pause(50) + .click("button.btn.authorize") // Open modal + .pause(50) + .click(".auth-btn-wrapper button:nth-child(1)") // Logout + .waitForElementVisible("section>input", 5000) + .setValue("section>input", "bbb") // Set user + .waitForElementVisible(`section>input[type="password"]`, 5000) + .setValue(`section>input[type="password"]`, "bbb") // Set password + .click(".auth-btn-wrapper button:nth-child(1)") // Click Authorize + .pause(1000) + .assert.containsText("div.wrapper:nth-child(4)>code", "bbb") - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/bugs/4374.js b/test/e2e-selenium/scenarios/bugs/4374.js index 83730bbe..75a15f44 100644 --- a/test/e2e-selenium/scenarios/bugs/4374.js +++ b/test/e2e-selenium/scenarios/bugs/4374.js @@ -1,31 +1,31 @@ describe("bug #4374: OAS3 parameters should be visibly validated in Try-It-Out", function () { - let mainPage - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() + let mainPage + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 10000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "/test-specs/bugs/4374.yaml") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 10000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "/test-specs/bugs/4374.yaml") + .click("button.download-url-button") + .pause(1000) - done() - }) - afterEach(function (client, done) { - done() - }) - it("indicates an error when a required parameter is not selected", function (client) { - client.waitForElementVisible(".opblock-tag-section", 10000) - .assert.containsText(".opblock-summary-path span", "/pet/findByStatus") - .click(".opblock") - .waitForElementVisible(".opblock.is-open", 5000) - .click(".try-out__btn") - .click(".btn.execute") - .pause(100) - .assert.cssClassPresent(".parameters-col_description select", "invalid") + done() + }) + afterEach(function (client, done) { + done() + }) + it("indicates an error when a required parameter is not selected", function (client) { + client.waitForElementVisible(".opblock-tag-section", 10000) + .assert.containsText(".opblock-summary-path span", "/pet/findByStatus") + .click(".opblock") + .waitForElementVisible(".opblock.is-open", 5000) + .click(".try-out__btn") + .click(".btn.execute") + .pause(100) + .assert.cssClassPresent(".parameters-col_description select", "invalid") - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/bugs/4409.js b/test/e2e-selenium/scenarios/bugs/4409.js index abb78f1a..2b0aba43 100644 --- a/test/e2e-selenium/scenarios/bugs/4409.js +++ b/test/e2e-selenium/scenarios/bugs/4409.js @@ -1,28 +1,28 @@ describe("bug #4409: operationId normalization and layout tracking", function () { - let mainPage - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() + let mainPage + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4409.yaml") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4409.yaml") + .click("button.download-url-button") + .pause(1000) - done() - }) - afterEach(function (client, done) { - done() - }) - it("expands an operation that has a normalizable operationId", function (client) { - client.waitForElementVisible(".opblock-tag-section", 10000) - .assert.containsText(".opblock-summary-path span", "/myApi") - .click(".opblock") - .waitForElementVisible(".opblock-body", 5000) - .assert.cssClassPresent(".opblock", "is-open") + done() + }) + afterEach(function (client, done) { + done() + }) + it("expands an operation that has a normalizable operationId", function (client) { + client.waitForElementVisible(".opblock-tag-section", 10000) + .assert.containsText(".opblock-summary-path span", "/myApi") + .click(".opblock") + .waitForElementVisible(".opblock-body", 5000) + .assert.cssClassPresent(".opblock", "is-open") - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/bugs/4445.js b/test/e2e-selenium/scenarios/bugs/4445.js index bc311efe..2b0aba43 100644 --- a/test/e2e-selenium/scenarios/bugs/4445.js +++ b/test/e2e-selenium/scenarios/bugs/4445.js @@ -1,31 +1,28 @@ -describe("bug #4445: callback-via-$ref rendering", function () { - let mainPage - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() +describe("bug #4409: operationId normalization and layout tracking", function () { + let mainPage + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4445.yaml") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4409.yaml") + .click("button.download-url-button") + .pause(1000) - done() - }) - afterEach(function (client, done) { - done() - }) - it("expands an operation that has a visible callback", function (client) { - client.waitForElementVisible(".opblock-tag-section", 10000) - .click(".opblock") - .waitForElementVisible(".opblock-body", 5000) - .click(".opblock-section-header > .tab-header > div.tab-item:nth-of-type(2)") - .waitForElementVisible(".callbacks-container .opblock", 5000) - .click(".callbacks-container .opblock") - .waitForElementVisible(".callbacks-container .opblock-body", 5000) - .assert.containsText(".callbacks-container .opblock-description-wrapper:nth-of-type(2) p", "subscription payload") + done() + }) + afterEach(function (client, done) { + done() + }) + it("expands an operation that has a normalizable operationId", function (client) { + client.waitForElementVisible(".opblock-tag-section", 10000) + .assert.containsText(".opblock-summary-path span", "/myApi") + .click(".opblock") + .waitForElementVisible(".opblock-body", 5000) + .assert.cssClassPresent(".opblock", "is-open") - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/bugs/4485.js b/test/e2e-selenium/scenarios/bugs/4485.js index 6c9b1841..2b0aba43 100644 --- a/test/e2e-selenium/scenarios/bugs/4485.js +++ b/test/e2e-selenium/scenarios/bugs/4485.js @@ -1,30 +1,28 @@ -describe("bug #4485: operation metadata storage when referenced via path item $ref", function () { - let mainPage - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() +describe("bug #4409: operationId normalization and layout tracking", function () { + let mainPage + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4485/main.yaml") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4409.yaml") + .click("button.download-url-button") + .pause(1000) - done() - }) - afterEach(function (client, done) { - done() - }) - it("sets a consumes value for a body parameter correctly", function (client) { - client.waitForElementVisible(".opblock-tag-section", 10000) - .click(".opblock") - .waitForElementVisible(".opblock-body", 5000) - .click("button.btn.try-out__btn") - .click("select.content-type [value=\"application/xml\"]") - .pause(500) - .assert.value("select.content-type", "application/xml") + done() + }) + afterEach(function (client, done) { + done() + }) + it("expands an operation that has a normalizable operationId", function (client) { + client.waitForElementVisible(".opblock-tag-section", 10000) + .assert.containsText(".opblock-summary-path span", "/myApi") + .click(".opblock") + .waitForElementVisible(".opblock-body", 5000) + .assert.cssClassPresent(".opblock", "is-open") - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/bugs/4536.js b/test/e2e-selenium/scenarios/bugs/4536.js index 839b198a..e4727311 100644 --- a/test/e2e-selenium/scenarios/bugs/4536.js +++ b/test/e2e-selenium/scenarios/bugs/4536.js @@ -1,28 +1,28 @@ describe("bug #4536: model name consistency", function () { - let mainPage - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() + let mainPage + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4536.yaml") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/bugs/4536.yaml") + .click("button.download-url-button") + .pause(1000) - done() - }) - afterEach(function (client, done) { - done() - }) - it("consistently displays a model's name regardless of expansion state", function (client) { - client.waitForElementVisible("span.model.model-title", 10000) - .assert.containsText("span.model.model-title", "TitleName") - .click("span.model.model-title") - .pause(500) - .assert.containsText("span.model-title__text", "TitleName") + done() + }) + afterEach(function (client, done) { + done() + }) + it("consistently displays a model's name regardless of expansion state", function (client) { + client.waitForElementVisible("span.model.model-title", 10000) + .assert.containsText("span.model.model-title", "TitleName") + .click("span.model.model-title") + .pause(500) + .assert.containsText("span.model-title__text", "TitleName") - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/informationContainer.js b/test/e2e-selenium/scenarios/informationContainer.js index ccad1e30..7fb600b4 100644 --- a/test/e2e-selenium/scenarios/informationContainer.js +++ b/test/e2e-selenium/scenarios/informationContainer.js @@ -1,47 +1,78 @@ -describe("render informationContainer", function () { - let mainPage - let informationContainer - beforeEach(function (client, done) { - - mainPage = client - .url("localhost:3230") - .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") - .click("button.download-url-button") - .pause(1000) +describe("Render Model Wrapper", function () { + let modelWrapper, mainPage - informationContainer = mainPage.section.informationContainer - - done() - }) + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") + .click("button.download-url-button") + .pause(1000) - it("renders section", function (client) { - mainPage.expect.section("@informationContainer").to.be.visible.before(5000) + modelWrapper = mainPage.section.modelWrapper - client.end() - }) + done() + }) + afterEach(function (client, done) { + done() + }) + it("Render model wrapper", function (client) { + mainPage.expect.section("@modelWrapper").to.be.visible.before(5000) - it("renders content", function (client) { - informationContainer.waitForElementVisible("@title", 5000) - .assert.containsText("@title", "Swagger Petstore") - .assert.containsText("@version", "1.0.0") - .assert.containsText("@baseUrl", "[ Base URL: localhost:3204/ ]") - .assert.attributeEquals("@mainUrl", "href", "http://localhost:3230/test-specs/petstore.json") - .assert.containsText("@mainUrlContent", "http://localhost:3230/test-specs/petstore.json") - .assert.containsText("@description", "This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key special-key to test the authorization filters.") - .assert.attributeEquals("@swaggerUrl", "href", "http://swagger.io/") - .assert.attributeEquals("@swaggerircUrl", "href", "http://swagger.io/irc/") - .assert.attributeEquals("@termsLink", "href", "http://swagger.io/terms/") - .assert.containsText("@termsLink", "Terms of service") - .assert.attributeEquals("@contactDevLink", "href", "mailto:apiteam@swagger.io") - .assert.containsText("@contactDevLink", "Contact the developer") - .assert.attributeEquals("@contactDevLink", "href", "mailto:apiteam@swagger.io") - .assert.containsText("@contactDevLink", "Contact the developer") - .assert.attributeEquals("@aboutSwaggerLink", "href", "http://swagger.io/") - .assert.containsText("@aboutSwaggerLink", "Find out more about Swagger") - - client.end() - }) + client.end() + }) + + it("Render model wrapper collapse", function (client) { + modelWrapper.waitForElementVisible("@modelContainer", 5000) + .click("@modelCollapse") + .assert.cssClassNotPresent("@modelContainer", "is-open") + + client.end() + }) + + it("Testing order model", function (client) { + modelWrapper.waitForElementVisible("@orderModel") + .click("@orderModelCallapse") + .assert.cssClassNotPresent("@orderModelCallapse", "callapsed") + + client.end() + }) + + it("Testing category model", function (client) { + modelWrapper.waitForElementVisible("@categoryModel") + .click("@categoryModelCallapse") + .assert.cssClassNotPresent("@categoryModelCallapse", "callapsed") + + client.end() + }) + it("Testing user model", function (client) { + modelWrapper.waitForElementVisible("@userModel") + .click("@userModelCallapse") + .assert.cssClassNotPresent("@userModelCallapse", "callapsed") + + client.end() + }) + it("Testing tag model", function (client) { + modelWrapper.waitForElementVisible("@tagModel") + .click("@tagModelCallapse") + .assert.cssClassNotPresent("@tagModelCallapse", "callapsed") + + client.end() + }) + it("Testing pet model", function (client) { + modelWrapper.waitForElementVisible("@petModel") + .click("@petModelCallapse") + .assert.cssClassNotPresent("@petModelCallapse", "callapsed") + + client.end() + }) + it("Testing apiResponse model", function (client) { + modelWrapper.waitForElementVisible("@apiResponseModel") + .click("@apiResponseModelCallapse") + .assert.cssClassNotPresent("@apiResponseModelCallapse", "callapsed") + + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/models.js b/test/e2e-selenium/scenarios/models.js index 18c062e5..7fb600b4 100644 --- a/test/e2e-selenium/scenarios/models.js +++ b/test/e2e-selenium/scenarios/models.js @@ -1,78 +1,78 @@ describe("Render Model Wrapper", function () { - let modelWrapper, mainPage + let modelWrapper, mainPage - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") - .click("button.download-url-button") - .pause(1000) + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") + .click("button.download-url-button") + .pause(1000) - modelWrapper = mainPage.section.modelWrapper + modelWrapper = mainPage.section.modelWrapper - done() - }) - afterEach(function (client, done){ - done() - }) - it("Render model wrapper", function(client){ - mainPage.expect.section("@modelWrapper").to.be.visible.before(5000) + done() + }) + afterEach(function (client, done) { + done() + }) + it("Render model wrapper", function (client) { + mainPage.expect.section("@modelWrapper").to.be.visible.before(5000) - client.end() - }) + client.end() + }) - it("Render model wrapper collapse", function(client){ - modelWrapper.waitForElementVisible("@modelContainer", 5000) - .click("@modelCollapse") - .assert.cssClassNotPresent("@modelContainer", "is-open") + it("Render model wrapper collapse", function (client) { + modelWrapper.waitForElementVisible("@modelContainer", 5000) + .click("@modelCollapse") + .assert.cssClassNotPresent("@modelContainer", "is-open") - client.end() - }) + client.end() + }) - it("Testing order model", function(client){ - modelWrapper.waitForElementVisible("@orderModel") - .click("@orderModelCallapse") - .assert.cssClassNotPresent("@orderModelCallapse", "callapsed") + it("Testing order model", function (client) { + modelWrapper.waitForElementVisible("@orderModel") + .click("@orderModelCallapse") + .assert.cssClassNotPresent("@orderModelCallapse", "callapsed") - client.end() - }) + client.end() + }) - it("Testing category model", function(client){ - modelWrapper.waitForElementVisible("@categoryModel") - .click("@categoryModelCallapse") - .assert.cssClassNotPresent("@categoryModelCallapse", "callapsed") + it("Testing category model", function (client) { + modelWrapper.waitForElementVisible("@categoryModel") + .click("@categoryModelCallapse") + .assert.cssClassNotPresent("@categoryModelCallapse", "callapsed") - client.end() - }) - it("Testing user model", function(client){ - modelWrapper.waitForElementVisible("@userModel") - .click("@userModelCallapse") - .assert.cssClassNotPresent("@userModelCallapse", "callapsed") + client.end() + }) + it("Testing user model", function (client) { + modelWrapper.waitForElementVisible("@userModel") + .click("@userModelCallapse") + .assert.cssClassNotPresent("@userModelCallapse", "callapsed") - client.end() - }) - it("Testing tag model", function(client){ - modelWrapper.waitForElementVisible("@tagModel") - .click("@tagModelCallapse") - .assert.cssClassNotPresent("@tagModelCallapse", "callapsed") + client.end() + }) + it("Testing tag model", function (client) { + modelWrapper.waitForElementVisible("@tagModel") + .click("@tagModelCallapse") + .assert.cssClassNotPresent("@tagModelCallapse", "callapsed") - client.end() - }) - it("Testing pet model", function(client){ - modelWrapper.waitForElementVisible("@petModel") - .click("@petModelCallapse") - .assert.cssClassNotPresent("@petModelCallapse", "callapsed") + client.end() + }) + it("Testing pet model", function (client) { + modelWrapper.waitForElementVisible("@petModel") + .click("@petModelCallapse") + .assert.cssClassNotPresent("@petModelCallapse", "callapsed") - client.end() - }) - it("Testing apiResponse model", function(client){ - modelWrapper.waitForElementVisible("@apiResponseModel") - .click("@apiResponseModelCallapse") - .assert.cssClassNotPresent("@apiResponseModelCallapse", "callapsed") + client.end() + }) + it("Testing apiResponse model", function (client) { + modelWrapper.waitForElementVisible("@apiResponseModel") + .click("@apiResponseModelCallapse") + .assert.cssClassNotPresent("@apiResponseModelCallapse", "callapsed") - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/operations/pet.js b/test/e2e-selenium/scenarios/operations/pet.js index f6885a27..ae7516bf 100644 --- a/test/e2e-selenium/scenarios/operations/pet.js +++ b/test/e2e-selenium/scenarios/operations/pet.js @@ -1,215 +1,112 @@ -describe("render pet api container", function () { - let mainPage - let apiWrapper - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() +describe("render store api container", function () { + let mainPage + let apiWrapper + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") + .click("button.download-url-button") + .pause(1000) - apiWrapper = mainPage.section.apiWrapper + apiWrapper = mainPage.section.apiWrapper - done() - }) - afterEach(function (client, done) { - done() - }) - it("render section", function (client) { - mainPage.expect.section("@apiWrapper").to.be.visible.before(10000) - client.end() - }) - it("test rendered pet container", function (client) { - apiWrapper.waitForElementVisible("@petAPIWrapper", 5000) - .expect.element("@petAPIWrapper").to.be.visible + done() + }) + afterEach(function (client, done) { + done() + }) + it("test rendered store container", function (client) { + apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000) + .expect.element("@storeAPIWrapper").to.be.visible - client.end() - }) - it("collapse pet wrapper", function (client) { - apiWrapper.waitForElementVisible("@petAPIWrapper", 5000) - .click("@petAPIWrapperBar") - .assert.cssClassNotPresent("@petAPIWrapper", "is-open") + client.end() + }) + it("callapse store wrapper", function (client) { + apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000) + .click("@storeAPIWrapperBar") + .assert.cssClassNotPresent("@storeAPIWrapper", "is-open") - client.end() - }) - it("render post /pet api container", function (client) { - apiWrapper.waitForElementVisible("@petOperationPostContainer", 10000) - .assert.containsText("@petOperationPostTitle", "/pet") - .click("@petOperationPostCollpase") - .waitForElementVisible("@petOperationPostCollapseContainer", 5000) - .click("@petOperationPostTryBtn") - .waitForElementVisible("@petOperationPostTryText", 1000) - .waitForElementVisible("@petOperationPostExecuteBtn", 1000) - .click("@petOperationPostTryBtn") - .assert.cssClassNotPresent("@petOperationPostTryBtn", "cancel") + client.end() + }) + it("render get /store/inventory api container", function (client) { + apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000) + .assert.containsText("@storeOperationGetTitle", "/store/inventory") + .click("@storeOperationGetCollpase") + .waitForElementVisible("@storeOperationGetCollapseContainer", 5000) + .click("@storeOperationGetTryBtn") + .waitForElementVisible("@storeOperationGetExecuteBtn", 1000) + .click("@storeOperationGetTryBtn") + .assert.cssClassNotPresent("@storeOperationGetTryBtn", "cancel") - client.end() - }) + client.end() + }) - it("Testing post /pet api Mock data", function (client) { - apiWrapper.waitForElementVisible("@petOperationPostContainer", 5000) - .click("@petOperationPostCollpase") - .waitForElementVisible("@petOperationPostCollapseContainer", 5000) - .click("@petOperationPostTryBtn") - .waitForElementVisible("@petOperationPostExecuteBtn", 1000) - .click("@petOperationPostExecuteBtn") - .waitForElementVisible("@petOperationPostMockCategoryID", 2000) - .assert.containsText("@petOperationPostMockCategoryID", "0") - .assert.containsText("@petOperationPostMockCategoryName", "\"string\"") - .assert.containsText("@petOperationPostMockName", "\"doggie\"") - .assert.containsText("@petOperationPostTagID", "0") - .assert.containsText("@petOperationPostTagName", "\"string\"") - .assert.containsText("@petOperationPostStatus", "\"available\"") - .click("@petOperationPostTryBtn") - .assert.cssClassNotPresent("@petOperationPostTryBtn", "cancel") + it("Testing get /store/inventory api Mock data ", function (client) { + apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000) + .assert.containsText("@storeOperationGetTitle", "/store/inventory") + .click("@storeOperationGetCollpase") + .waitForElementVisible("@storeOperationGetCollapseContainer", 3000) + .click("@storeOperationGetTryBtn") + .waitForElementVisible("@storeOperationGetExecuteBtn", 1000) + .click("@storeOperationGetExecuteBtn") + .waitForElementVisible("@storeOperationResponseProps1") + .assert.containsText("@storeOperationResponseProps1", "0") + .assert.containsText("@storeOperationResponseProps2", "0") + .assert.containsText("@storeOperationResponseProps3", "0") + .click("@storeOperationGetTryBtn") + .assert.cssClassNotPresent("@storeOperationGetTryBtn", "cancel") - client.end() - }) + client.end() + }) - it("Testing post /pet api model values", function (client) { - apiWrapper.waitForElementVisible("@petOperationPostContainer", 5000) - .click("@petOperationPostCollpase") - .waitForElementVisible("@petOperationPostCollapseContainer", 5000) - .click("a.tablinks[data-name=model]") - .assert.containsText("span.model-title > .model-title__text", `Pet`) + it("render post /store/order api container", function (client) { + apiWrapper.waitForElementVisible("@storeOperationPostContainer") + .assert.containsText("@storeOperationPostTitle", "/store/order") + .click("@storeOperationPostCollpase") + .waitForElementVisible("@storeOperationPostCollapseContainer", 3000) + .click("@storeOperationPostTryBtn") + .waitForElementVisible("@storeOperationPostExecuteBtn", 1000) + .click("@storeOperationPostTryBtn") + .assert.cssClassNotPresent("@storeOperationPostTryBtn", "cancel") - client.end() - }) + client.end() + }) - it("render put /pet api container", function (client) { - apiWrapper.waitForElementVisible("@petOperationPutContainer", 5000) - .assert.containsText("@petOperationPutTitle", "/pet") - .click("@petOperationPutCollpase") - .waitForElementVisible("@petOperationPutCollapseContainer", 3000) - .click("@petOperationPutTryBtn") - .waitForElementVisible("@petOperationPutTryText", 1000) - .waitForElementVisible("@petOperationPutExecuteBtn", 1000) - .click("@petOperationPutTryBtn") - .assert.cssClassNotPresent("@petOperationPutTryBtn", "cancel") + it("Testing post /store/order api Mock Data", function (client) { + apiWrapper.waitForElementVisible("@storeOperationPostContainer") + .assert.containsText("@storeOperationPostTitle", "/store/order") + .click("@storeOperationPostCollpase") + .waitForElementVisible("@storeOperationPostCollapseContainer", 3000) + .click("@storeOperationPostTryBtn") + .waitForElementVisible("@storeOperationPostExecuteBtn", 1000) + .click("@storeOperationPostExecuteBtn") + .waitForElementVisible("@storeOperationPostResponseId") + .assert.containsText("@storeOperationPostResponseId", "0") + .assert.containsText("@storeOperationPostResponsePetId", "0") + .assert.containsText("@storeOperationPostResponseQuantity", "0") + .assert.containsText("@storeOperationPostResponseStatus", "placed") + .assert.containsText("@storeOperationPostResponseComplete", "false") + .click("@storeOperationPostTryBtn") + .assert.cssClassNotPresent("@storeOperationPostTryBtn", "cancel") - client.end() - }) + client.end() + }) + it("render delete /store/order/{orderId} api container", function (client) { + apiWrapper.waitForElementVisible("@storeOperationDeleteContainer") + .assert.containsText("@storeOperationDeleteTitle", "/store/order/{orderId}") + .click("@storeOperationDeleteCollpase") + .waitForElementVisible("@storeOperationDeleteCollapseContainer", 3000) + .click("@storeOperationDeleteTryBtn") + .waitForElementVisible("@storeOperationDeleteExecuteBtn", 1000) + .click("@storeOperationDeleteExecuteBtn") + .waitForElementVisible("@storeOperationGetResponseHeaders", "content-type: application/xml") + .click("@storeOperationDeleteTryBtn") + .assert.cssClassNotPresent("@storeOperationDeleteTryBtn", "cancel") - it("Testing put /pet api Mock data", function (client) { - apiWrapper.waitForElementVisible("@petOperationPutContainer", 5000) - .click("@petOperationPutCollpase") - .waitForElementVisible("@petOperationPutCollapseContainer", 3000) - .click("@petOperationPutTryBtn") - .waitForElementVisible("@petOperationPutExecuteBtn", 1000) - .click("@petOperationPutExecuteBtn") - .waitForElementVisible("@petOperationPutMockCategoryID") - .assert.containsText("@petOperationPutMockCategoryID", "0") - .assert.containsText("@petOperationPutMockCategoryName", "\"string\"") - .assert.containsText("@petOperationPutMockName", "\"doggie\"") - .assert.containsText("@petOperationPutTagID", "0") - .assert.containsText("@petOperationPutTagName", "\"string\"") - .assert.containsText("@petOperationPutStatus", "\"available\"") - .click("@petOperationPutTryBtn") - .assert.cssClassNotPresent("@petOperationPutTryBtn", "Cancel") - - client.end() - }) - - it("render get by tag /pet api container", function (client) { - apiWrapper.waitForElementVisible("@petOperationGetByTagContainer", 5000) - .assert.containsText("@petOperationGetByTagTitle", "/pet/findByTags") - .click("@petOperationGetByTagCollpase") - .waitForElementVisible("@petOperationGetByTagCollapseContainer", 3000) - .click("@petOperationGetByTagTryBtn") - .waitForElementVisible("@petOperationGetByTagTryAdded", 1000) - .waitForElementVisible("@petOperationGetByTagExecuteBtn", 1000) - .click("@petOperationGetByTagTryBtn") - .assert.cssClassNotPresent("@petOperationGetByTagTryBtn", "cancel") - - client.end() - }) - - it("Testing get by tag /pet api Mock data", function (client) { - apiWrapper.waitForElementVisible("@petOperationGetByTagContainer", 5000) - .click("@petOperationGetByTagCollpase") - .waitForElementVisible("@petOperationGetByTagCollapseContainer", 3000) - .click("@petOperationGetByTagTryBtn") - .waitForElementVisible("@petOperationGetByTagExecuteBtn", 1000) - .click("@petOperationGetByTagExecuteBtn") - .waitForElementVisible("@petOperationGetByTagMockCategoryID") - .assert.containsText("@petOperationGetByTagMockCategoryID", "0") - .assert.containsText("@petOperationGetByTagMockCategoryName", "\"string\"") - .assert.containsText("@petOperationGetByTagMockName", "\"doggie\"") - .assert.containsText("@petOperationGetByTagTagID", "0") - .assert.containsText("@petOperationGetByTagTagName", "\"string\"") - .assert.containsText("@petOperationGetByTagStatus", "\"available\"") - .click("@petOperationGetByTagTryBtn") - .assert.cssClassNotPresent("@petOperationGetByTagTryBtn", "cancel") - - client.end() - }) - - it("render get by ID /pet/{petId} api container", function (client) { - apiWrapper.waitForElementVisible("@petOperationGetByIdContainer", 5000) - .assert.containsText("@petOperationGetByIdTitle", "/pet/{petId}") - .click("@petOperationGetByIdCollpase") - .waitForElementVisible("@petOperationGetByIdCollapseContainer", 3000) - .click("@petOperationGetByIdTryBtn") - .waitForElementVisible("@petOperationGetByTagExecuteBtn", 1000) - .click("@petOperationGetByTagTryBtn") - .assert.cssClassNotPresent("@petOperationGetByTagTryBtn", "cancel") - - client.end() - }) - - it("render get by ID /pet/{petId} api Mock data", function (client) { - apiWrapper.waitForElementVisible("@petOperationGetByIdContainer", 5000) - .assert.containsText("@petOperationGetByIdTitle", "/pet/{petId}") - .click("@petOperationGetByIdCollpase") - .waitForElementVisible("@petOperationGetByIdCollapseContainer", 3000) - .click("@petOperationGetByIdTryBtn") - .waitForElementVisible("@petOperationGetByTagExecuteBtn", 1000) - .setValue("@petOperationGetByIdParameter", "abc") - .click("@petOperationGetByIdExecuteBtn") - .waitForElementVisible("@petOperationGetByIdResultsBox") - .assert.containsText("@petOperationGetByIdParameter", "abc") - .assert.cssClassPresent("@petOperationGetByIdParameter", "invalid") - .assert.attributeEquals("@petOperationGetByIdParameter", "title", "Value must be an integer") - .click("@petOperationGetByTagTryBtn") - .assert.cssClassNotPresent("@petOperationGetByTagTryBtn", "cancel") - - client.end() - }) - - it("render delete /pet api container", function (client) { - apiWrapper.waitForElementVisible("@petOperationDeleteContainer") - .assert.containsText("@petOperationDeleteTitle", "/pet/{petId}") - .click("@petOperationDeleteCollpase") - .waitForElementVisible("@petOperationDeleteCollapseContainer", 3000) - .click("@petOperationDeleteTryBtn") - .waitForElementVisible("@petOperationDeleteExecuteBtn", 1000) - .click("@petOperationDeleteTryBtn") - .assert.cssClassNotPresent("@petOperationDeleteTryBtn", "cancel") - - client.end() - }) - - it("Testing delete /pet api Mock data", function (client) { - apiWrapper.waitForElementVisible("@petOperationDeleteContainer", 3000) - .click("@petOperationDeleteCollpase") - .waitForElementVisible("@petOperationDeleteCollapseContainer", 3000) - .click("@petOperationDeleteTryBtn") - .waitForElementVisible("@petOperationDeleteExecuteBtn", 1000) - .click("@petOperationDeleteExecuteBtn") - .waitForElementVisible("@petOperationDeleteMockCategoryID") - .assert.containsText("@petOperationDeleteMockCategoryID", "0") - .assert.containsText("@petOperationDeleteMockCategoryName", "\"string\"") - .assert.containsText("@petOperationDeleteMockName", "\"doggie\"") - .assert.containsText("@petOperationDeleteTagID", "0") - .assert.containsText("@petOperationDeleteTagName", "\"string\"") - .assert.containsText("@petOperationDeleteStatus", "\"available\"") - .click("@petOperationDeleteTryBtn") - .assert.cssClassNotPresent("@petOperationDeleteTryBtn", "cancel") - - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/operations/store.js b/test/e2e-selenium/scenarios/operations/store.js index 4bddf878..ae7516bf 100644 --- a/test/e2e-selenium/scenarios/operations/store.js +++ b/test/e2e-selenium/scenarios/operations/store.js @@ -1,112 +1,112 @@ -describe("render store api container", function(){ - let mainPage - let apiWrapper - beforeEach( function(client, done){ - mainPage = client - .url("localhost:3230") - .page.main() +describe("render store api container", function () { + let mainPage + let apiWrapper + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") + .click("button.download-url-button") + .pause(1000) - apiWrapper = mainPage.section.apiWrapper + apiWrapper = mainPage.section.apiWrapper - done() - }) - afterEach(function (client, done) { - done() - }) - it("test rendered store container", function(client){ - apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000) - .expect.element("@storeAPIWrapper").to.be.visible + done() + }) + afterEach(function (client, done) { + done() + }) + it("test rendered store container", function (client) { + apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000) + .expect.element("@storeAPIWrapper").to.be.visible client.end() - }) - it("callapse store wrapper", function(client){ - apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000) - .click("@storeAPIWrapperBar") - .assert.cssClassNotPresent("@storeAPIWrapper", "is-open") + }) + it("callapse store wrapper", function (client) { + apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000) + .click("@storeAPIWrapperBar") + .assert.cssClassNotPresent("@storeAPIWrapper", "is-open") - client.end() - }) - it("render get /store/inventory api container", function (client) { - apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000) - .assert.containsText("@storeOperationGetTitle", "/store/inventory") - .click("@storeOperationGetCollpase") - .waitForElementVisible("@storeOperationGetCollapseContainer", 5000) - .click("@storeOperationGetTryBtn") - .waitForElementVisible("@storeOperationGetExecuteBtn", 1000) - .click("@storeOperationGetTryBtn") - .assert.cssClassNotPresent("@storeOperationGetTryBtn", "cancel") - - client.end() - }) + client.end() + }) + it("render get /store/inventory api container", function (client) { + apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000) + .assert.containsText("@storeOperationGetTitle", "/store/inventory") + .click("@storeOperationGetCollpase") + .waitForElementVisible("@storeOperationGetCollapseContainer", 5000) + .click("@storeOperationGetTryBtn") + .waitForElementVisible("@storeOperationGetExecuteBtn", 1000) + .click("@storeOperationGetTryBtn") + .assert.cssClassNotPresent("@storeOperationGetTryBtn", "cancel") - it("Testing get /store/inventory api Mock data ", function (client) { - apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000) - .assert.containsText("@storeOperationGetTitle", "/store/inventory") - .click("@storeOperationGetCollpase") - .waitForElementVisible("@storeOperationGetCollapseContainer", 3000) - .click("@storeOperationGetTryBtn") - .waitForElementVisible("@storeOperationGetExecuteBtn", 1000) - .click("@storeOperationGetExecuteBtn") - .waitForElementVisible("@storeOperationResponseProps1") - .assert.containsText("@storeOperationResponseProps1", "0") - .assert.containsText("@storeOperationResponseProps2", "0") - .assert.containsText("@storeOperationResponseProps3", "0") - .click("@storeOperationGetTryBtn") - .assert.cssClassNotPresent("@storeOperationGetTryBtn", "cancel") - - client.end() - }) + client.end() + }) - it("render post /store/order api container", function (client) { - apiWrapper.waitForElementVisible("@storeOperationPostContainer") - .assert.containsText("@storeOperationPostTitle", "/store/order") - .click("@storeOperationPostCollpase") - .waitForElementVisible("@storeOperationPostCollapseContainer", 3000) - .click("@storeOperationPostTryBtn") - .waitForElementVisible("@storeOperationPostExecuteBtn", 1000) - .click("@storeOperationPostTryBtn") - .assert.cssClassNotPresent("@storeOperationPostTryBtn", "cancel") - - client.end() - }) + it("Testing get /store/inventory api Mock data ", function (client) { + apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000) + .assert.containsText("@storeOperationGetTitle", "/store/inventory") + .click("@storeOperationGetCollpase") + .waitForElementVisible("@storeOperationGetCollapseContainer", 3000) + .click("@storeOperationGetTryBtn") + .waitForElementVisible("@storeOperationGetExecuteBtn", 1000) + .click("@storeOperationGetExecuteBtn") + .waitForElementVisible("@storeOperationResponseProps1") + .assert.containsText("@storeOperationResponseProps1", "0") + .assert.containsText("@storeOperationResponseProps2", "0") + .assert.containsText("@storeOperationResponseProps3", "0") + .click("@storeOperationGetTryBtn") + .assert.cssClassNotPresent("@storeOperationGetTryBtn", "cancel") - it("Testing post /store/order api Mock Data", function (client) { - apiWrapper.waitForElementVisible("@storeOperationPostContainer") - .assert.containsText("@storeOperationPostTitle", "/store/order") - .click("@storeOperationPostCollpase") - .waitForElementVisible("@storeOperationPostCollapseContainer", 3000) - .click("@storeOperationPostTryBtn") - .waitForElementVisible("@storeOperationPostExecuteBtn", 1000) - .click("@storeOperationPostExecuteBtn") - .waitForElementVisible("@storeOperationPostResponseId") - .assert.containsText("@storeOperationPostResponseId", "0") - .assert.containsText("@storeOperationPostResponsePetId", "0") - .assert.containsText("@storeOperationPostResponseQuantity", "0") - .assert.containsText("@storeOperationPostResponseStatus", "placed") - .assert.containsText("@storeOperationPostResponseComplete", "false") - .click("@storeOperationPostTryBtn") - .assert.cssClassNotPresent("@storeOperationPostTryBtn", "cancel") - - client.end() - }) - it("render delete /store/order/{orderId} api container", function (client) { - apiWrapper.waitForElementVisible("@storeOperationDeleteContainer") - .assert.containsText("@storeOperationDeleteTitle", "/store/order/{orderId}") - .click("@storeOperationDeleteCollpase") - .waitForElementVisible("@storeOperationDeleteCollapseContainer", 3000) - .click("@storeOperationDeleteTryBtn") - .waitForElementVisible("@storeOperationDeleteExecuteBtn", 1000) - .click("@storeOperationDeleteExecuteBtn") - .waitForElementVisible("@storeOperationGetResponseHeaders", "content-type: application/xml") - .click("@storeOperationDeleteTryBtn") - .assert.cssClassNotPresent("@storeOperationDeleteTryBtn", "cancel") - - client.end() - }) + client.end() + }) + + it("render post /store/order api container", function (client) { + apiWrapper.waitForElementVisible("@storeOperationPostContainer") + .assert.containsText("@storeOperationPostTitle", "/store/order") + .click("@storeOperationPostCollpase") + .waitForElementVisible("@storeOperationPostCollapseContainer", 3000) + .click("@storeOperationPostTryBtn") + .waitForElementVisible("@storeOperationPostExecuteBtn", 1000) + .click("@storeOperationPostTryBtn") + .assert.cssClassNotPresent("@storeOperationPostTryBtn", "cancel") + + client.end() + }) + + it("Testing post /store/order api Mock Data", function (client) { + apiWrapper.waitForElementVisible("@storeOperationPostContainer") + .assert.containsText("@storeOperationPostTitle", "/store/order") + .click("@storeOperationPostCollpase") + .waitForElementVisible("@storeOperationPostCollapseContainer", 3000) + .click("@storeOperationPostTryBtn") + .waitForElementVisible("@storeOperationPostExecuteBtn", 1000) + .click("@storeOperationPostExecuteBtn") + .waitForElementVisible("@storeOperationPostResponseId") + .assert.containsText("@storeOperationPostResponseId", "0") + .assert.containsText("@storeOperationPostResponsePetId", "0") + .assert.containsText("@storeOperationPostResponseQuantity", "0") + .assert.containsText("@storeOperationPostResponseStatus", "placed") + .assert.containsText("@storeOperationPostResponseComplete", "false") + .click("@storeOperationPostTryBtn") + .assert.cssClassNotPresent("@storeOperationPostTryBtn", "cancel") + + client.end() + }) + it("render delete /store/order/{orderId} api container", function (client) { + apiWrapper.waitForElementVisible("@storeOperationDeleteContainer") + .assert.containsText("@storeOperationDeleteTitle", "/store/order/{orderId}") + .click("@storeOperationDeleteCollpase") + .waitForElementVisible("@storeOperationDeleteCollapseContainer", 3000) + .click("@storeOperationDeleteTryBtn") + .waitForElementVisible("@storeOperationDeleteExecuteBtn", 1000) + .click("@storeOperationDeleteExecuteBtn") + .waitForElementVisible("@storeOperationGetResponseHeaders", "content-type: application/xml") + .click("@storeOperationDeleteTryBtn") + .assert.cssClassNotPresent("@storeOperationDeleteTryBtn", "cancel") + + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/operations/user.js b/test/e2e-selenium/scenarios/operations/user.js index 63ee46b5..7fb600b4 100644 --- a/test/e2e-selenium/scenarios/operations/user.js +++ b/test/e2e-selenium/scenarios/operations/user.js @@ -1,93 +1,78 @@ -describe("render user api container", function(){ - let mainPage - let apiWrapper - beforeEach( function(client, done){ - mainPage = client - .url("localhost:3230") - .page.main() +describe("Render Model Wrapper", function () { + let modelWrapper, mainPage - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") - .click("button.download-url-button") - .pause(1000) + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") + .click("button.download-url-button") + .pause(1000) - apiWrapper = mainPage.section.apiWrapper + modelWrapper = mainPage.section.modelWrapper - done() - }) - afterEach(function (client, done) { - done() - }) - it("test rendered user container", function(client){ - apiWrapper.waitForElementVisible("@userAPIWrapper", 5000) - .expect.element("@userAPIWrapper").to.be.visible + done() + }) + afterEach(function (client, done) { + done() + }) + it("Render model wrapper", function (client) { + mainPage.expect.section("@modelWrapper").to.be.visible.before(5000) client.end() - }) - it("callapse user wrapper", function(client){ - apiWrapper.waitForElementVisible("@userAPIWrapper", 5000) - .click("@userAPIWrapperBar") - .assert.cssClassNotPresent("@userAPIWrapper", "is-open") + }) - client.end() - }) - it("render put /user/{username} api container", function (client) { - apiWrapper.waitForElementVisible("@userOperationPutContainer", 5000) - .assert.containsText("@userOperationPutTitle", "/user/{username}") - .click("@userOperationPutCollpase") - .waitForElementVisible("@userOperationPutCollapseContainer", 3000) - .click("@userOperationPutTryBtn") - .waitForElementVisible("@userOperationPutExecuteBtn", 1000) - .click("@userOperationPutTryBtn") - .assert.cssClassNotPresent("@userOperationPutTryBtn", "cancel") - - client.end() - }) - it("Test put /user/{username} api Mock data", function (client) { - apiWrapper.waitForElementVisible("@userOperationPutContainer", 5000) - .assert.containsText("@userOperationPutTitle", "/user/{username}") - .click("@userOperationPutCollpase") - .waitForElementVisible("@userOperationPutCollapseContainer", 3000) - .click("@userOperationPutTryBtn") - .waitForElementVisible("@userOperationPutParameter") - .setValue("@userOperationPutParameter", "123") - .waitForElementVisible("@userOperationPutExecuteBtn", 1000) - .click("userOperationPutExecuteBtn") - .waitForElementVisible("@userOperationPutResponseHeader") - .assert.containsText("@userOperationPutResponseHeader", "content-type: application/xml") - .click("@userOperationPutTryBtn") - .assert.cssClassNotPresent("@userOperationPutTryBtn", "cancel") - - client.end() - }) - it("render delete /user/{username} api container", function (client) { - apiWrapper.waitForElementVisible("@userOperationDeleteContainer", 5000) - .assert.containsText("@userOperationDeleteTitle", "/user/{username}") - .click("@userOperationDeleteCollpase") - .waitForElementVisible("@userOperationDeleteCollapseContainer", 3000) - .click("@userOperationDeleteTryBtn") - .waitForElementVisible("@userOperationDeleteExecuteBtn", 1000) - .click("@userOperationDeleteTryBtn") - .assert.cssClassNotPresent("@userOperationDeleteTryBtn", "cancel") - - client.end() - }) - it("Test delete /user/{username} api Mock data", function (client) { - apiWrapper.waitForElementVisible("@userOperationDeleteContainer", 5000) - .assert.containsText("@userOperationDeleteTitle", "/user/{username}") - .click("@userOperationDeleteCollpase") - .waitForElementVisible("@userOperationDeleteCollapseContainer", 3000) - .click("@userOperationDeleteTryBtn") - .waitForElementVisible("@userOperationDeleteParameter") - .setValue("@userOperationDeleteParameter", "123") - .waitForElementVisible("@userOperationDeleteExecuteBtn", 1000) - .click("userOperationDeleteExecuteBtn") - .waitForElementVisible("@userOperationDeleteResponseHeader") - .assert.containsText("@userOperationDeleteResponseHeader", "content-type: application/xml") - .click("@userOperationDeleteTryBtn") - .assert.cssClassNotPresent("@userOperationDeleteTryBtn", "cancel") - - client.end() - }) + it("Render model wrapper collapse", function (client) { + modelWrapper.waitForElementVisible("@modelContainer", 5000) + .click("@modelCollapse") + .assert.cssClassNotPresent("@modelContainer", "is-open") + + client.end() + }) + + it("Testing order model", function (client) { + modelWrapper.waitForElementVisible("@orderModel") + .click("@orderModelCallapse") + .assert.cssClassNotPresent("@orderModelCallapse", "callapsed") + + client.end() + }) + + it("Testing category model", function (client) { + modelWrapper.waitForElementVisible("@categoryModel") + .click("@categoryModelCallapse") + .assert.cssClassNotPresent("@categoryModelCallapse", "callapsed") + + client.end() + }) + it("Testing user model", function (client) { + modelWrapper.waitForElementVisible("@userModel") + .click("@userModelCallapse") + .assert.cssClassNotPresent("@userModelCallapse", "callapsed") + + client.end() + }) + it("Testing tag model", function (client) { + modelWrapper.waitForElementVisible("@tagModel") + .click("@tagModelCallapse") + .assert.cssClassNotPresent("@tagModelCallapse", "callapsed") + + client.end() + }) + it("Testing pet model", function (client) { + modelWrapper.waitForElementVisible("@petModel") + .click("@petModelCallapse") + .assert.cssClassNotPresent("@petModelCallapse", "callapsed") + + client.end() + }) + it("Testing apiResponse model", function (client) { + modelWrapper.waitForElementVisible("@apiResponseModel") + .click("@apiResponseModelCallapse") + .assert.cssClassNotPresent("@apiResponseModelCallapse", "callapsed") + + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/schemeContainer.js b/test/e2e-selenium/scenarios/schemeContainer.js index 3dffe5d9..e356d84a 100644 --- a/test/e2e-selenium/scenarios/schemeContainer.js +++ b/test/e2e-selenium/scenarios/schemeContainer.js @@ -1,61 +1,61 @@ describe("Render scheme", function () { - let mainPage - let schemeContainer - beforeEach(function (client, done) { + let mainPage + let schemeContainer + beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() + mainPage = client + .url("localhost:3230") + .page.main() - schemeContainer = mainPage.section.schemeContainer + schemeContainer = mainPage.section.schemeContainer - client.waitForElementVisible(".download-url-input:not([disabled])", 5000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") - .click("button.download-url-button") - .pause(1000) + client.waitForElementVisible(".download-url-input:not([disabled])", 5000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") + .click("button.download-url-button") + .pause(1000) - done() - }) + done() + }) - it("render section", function (client) { - mainPage.expect.section("@schemeContainer").to.be.visible.before(5000) + it("render section", function (client) { + mainPage.expect.section("@schemeContainer").to.be.visible.before(5000) - client.end() - }) - it("render scheme option", function (client) { - schemeContainer.waitForElementVisible("@httpOption", 5000) - .expect.element("@httpOption").to.be.selected + client.end() + }) + it("render scheme option", function (client) { + schemeContainer.waitForElementVisible("@httpOption", 5000) + .expect.element("@httpOption").to.be.selected - client.end() - }) + client.end() + }) - it("render authorized button", function (client) { - schemeContainer.waitForElementVisible("@btnAuthorize", 5000) - .expect.element("@btnAuthorize").to.be.visible + it("render authorized button", function (client) { + schemeContainer.waitForElementVisible("@btnAuthorize", 5000) + .expect.element("@btnAuthorize").to.be.visible - client.end() - }) - it("render click event", function(client) { - schemeContainer.waitForElementVisible("@btnAuthorize", 5000) - .click("@btnAuthorize") - .assert.visible("@authorizationModal") - .assert.containsText("@appName", "Application: your-app-name") - .assert.containsText("@authorizationUrl", "http://petstore.swagger.io/oauth/dialog") - .assert.containsText("@flow", "implicit") - .assert.value("@inputClientID", "your-client-id") - schemeContainer.expect.element("@readPetsScope").to.be.selected - schemeContainer.expect.element("@writePetsScope").to.not.be.selected + client.end() + }) + it("render click event", function (client) { + schemeContainer.waitForElementVisible("@btnAuthorize", 5000) + .click("@btnAuthorize") + .assert.visible("@authorizationModal") + .assert.containsText("@appName", "Application: your-app-name") + .assert.containsText("@authorizationUrl", "http://petstore.swagger.io/oauth/dialog") + .assert.containsText("@flow", "implicit") + .assert.value("@inputClientID", "your-client-id") + schemeContainer.expect.element("@readPetsScope").to.be.selected + schemeContainer.expect.element("@writePetsScope").to.not.be.selected - schemeContainer.click("@selectAllScopes") - schemeContainer.expect.element("@readPetsScope").to.be.selected - schemeContainer.expect.element("@writePetsScope").to.be.selected + schemeContainer.click("@selectAllScopes") + schemeContainer.expect.element("@readPetsScope").to.be.selected + schemeContainer.expect.element("@writePetsScope").to.be.selected - schemeContainer.click("@selectNoneScopes") - schemeContainer.expect.element("@readPetsScope").to.not.be.selected - schemeContainer.expect.element("@writePetsScope").to.not.be.selected + schemeContainer.click("@selectNoneScopes") + schemeContainer.expect.element("@readPetsScope").to.not.be.selected + schemeContainer.expect.element("@writePetsScope").to.not.be.selected - client.end() - }) + client.end() + }) }) diff --git a/test/e2e-selenium/scenarios/topbar.js b/test/e2e-selenium/scenarios/topbar.js index 094eb3a6..06b802b2 100644 --- a/test/e2e-selenium/scenarios/topbar.js +++ b/test/e2e-selenium/scenarios/topbar.js @@ -1,51 +1,51 @@ describe("initial render", function () { - let mainPage - describe("for topbar", function () { - let topbar - before(function (client, done) { - done() - }) - - after(function (client, done) { - client.end(function () { - done() - }) - }) - - afterEach(function (client, done) { - done() - }) - - beforeEach(function (client, done) { - mainPage = client - .url("localhost:3230") - .page.main() - - topbar = mainPage.section.topbar - - client.waitForElementVisible(".download-url-input:not([disabled])", 10000) - .clearValue(".download-url-input") - .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") - .click("button.download-url-button") - .pause(1000) - - done() - }) - - it("renders section", function (client) { - mainPage.expect.section("@topbar").to.be.visible - client.end() - }) - - it("renders input box", function (client) { - topbar.expect.element("@inputBox").to.be.visible - client.end() - }) - - it("renders explore button", function (client) { - topbar.expect.element("@btnExplore").to.be.visible - - client.end() - }) + let mainPage + describe("for topbar", function () { + let topbar + before(function (client, done) { + done() }) + + after(function (client, done) { + client.end(function () { + done() + }) + }) + + afterEach(function (client, done) { + done() + }) + + beforeEach(function (client, done) { + mainPage = client + .url("localhost:3230") + .page.main() + + topbar = mainPage.section.topbar + + client.waitForElementVisible(".download-url-input:not([disabled])", 10000) + .clearValue(".download-url-input") + .setValue(".download-url-input", "http://localhost:3230/test-specs/petstore.json") + .click("button.download-url-button") + .pause(1000) + + done() + }) + + it("renders section", function (client) { + mainPage.expect.section("@topbar").to.be.visible + client.end() + }) + + it("renders input box", function (client) { + topbar.expect.element("@inputBox").to.be.visible + client.end() + }) + + it("renders explore button", function (client) { + topbar.expect.element("@btnExplore").to.be.visible + + client.end() + }) + }) }) diff --git a/test/mocha/components/markdown.jsx b/test/mocha/components/markdown.jsx index 8a9b71d2..3fc9c75a 100644 --- a/test/mocha/components/markdown.jsx +++ b/test/mocha/components/markdown.jsx @@ -5,108 +5,108 @@ import { render } from "enzyme" import Markdown from "components/providers/markdown" import { Markdown as OAS3Markdown } from "corePlugins/oas3/wrap-components/markdown.jsx" -describe("Markdown component", function() { - describe("Swagger 2.0", function() { - it("allows elements with class, style and data-* attribs", function() { - const getConfigs = () => ({ useUnsafeMarkdown: true }) - const str = `ONE` - const el = render() - expect(el.html()).toEqual(`

ONE

\n
`) - }) +describe("Markdown component", function () { + describe("Swagger 2.0", function () { + it("allows elements with class, style and data-* attribs", function () { + const getConfigs = () => ({ useUnsafeMarkdown: true }) + const str = `ONE` + const el = render() + expect(el.html()).toEqual(`

ONE

\n
`) + }) - it("strips class, style and data-* attribs from elements", function() { - const getConfigs = () => ({ useUnsafeMarkdown: false }) - const str = `ONE` - const el = render() - expect(el.html()).toEqual(`

ONE

\n
`) - }) + it("strips class, style and data-* attribs from elements", function () { + const getConfigs = () => ({ useUnsafeMarkdown: false }) + const str = `ONE` + const el = render() + expect(el.html()).toEqual(`

ONE

\n
`) + }) - it("allows td elements with colspan attrib", function() { - const str = `
ABC
` - const el = render() - expect(el.html()).toEqual(`
ABC
`) - }) + it("allows td elements with colspan attrib", function () { + const str = `
ABC
` + const el = render() + expect(el.html()).toEqual(`
ABC
`) + }) - it("allows image elements", function() { - const str = `![Image alt text](http://image.source "Image title")` - const el = render() - expect(el.html()).toEqual(`

Image alt text

\n
`) - }) + it("allows image elements", function () { + const str = `![Image alt text](http://image.source "Image title")` + const el = render() + expect(el.html()).toEqual(`

Image alt text

\n
`) + }) - it("allows image elements with https scheme", function() { - const str = `![Image alt text](https://image.source "Image title")` - const el = render() - expect(el.html()).toEqual(`

Image alt text

\n
`) - }) + it("allows image elements with https scheme", function () { + const str = `![Image alt text](https://image.source "Image title")` + const el = render() + expect(el.html()).toEqual(`

Image alt text

\n
`) + }) - it("allows image elements with data scheme", function() { - const str = `` - const el = render() - expect(el.html()).toEqual(`

` + str + `

\n
`) - }) + it("allows image elements with data scheme", function () { + const str = `` + const el = render() + expect(el.html()).toEqual(`

` + str + `

\n
`) + }) - it("allows heading elements", function() { - const str = ` + it("allows heading elements", function () { + const str = ` # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6` - const el = render() - expect(el.html()).toEqual(`

h1

\n

h2

\n

h3

\n

h4

\n
h5
\n
h6
\n
`) - }) - - it("allows links", function() { - const str = `[Link](https://example.com/)` - const el = render() - expect(el.html()).toEqual(``) - }) + const el = render() + expect(el.html()).toEqual(`

h1

\n

h2

\n

h3

\n

h4

\n
h5
\n
h6
\n
`) }) - describe("OAS 3", function() { - it("allows elements with class, style and data-* attribs", function() { - const getConfigs = () => ({ useUnsafeMarkdown: true }) - const str = `ONE` - const el = render() - expect(el.html()).toEqual(`

ONE

`) - }) + it("allows links", function () { + const str = `[Link](https://example.com/)` + const el = render() + expect(el.html()).toEqual(``) + }) + }) - it("strips class, style and data-* attribs from elements", function() { - const getConfigs = () => ({ useUnsafeMarkdown: false }) - const str = `ONE` - const el = render() - expect(el.html()).toEqual(`

ONE

`) - }) + describe("OAS 3", function () { + it("allows elements with class, style and data-* attribs", function () { + const getConfigs = () => ({ useUnsafeMarkdown: true }) + const str = `ONE` + const el = render() + expect(el.html()).toEqual(`

ONE

`) + }) - it("allows image elements", function() { - const str = `![Image alt text](http://image.source "Image title")` - const el = render() - expect(el.html()).toEqual(`

Image alt text

`) - }) + it("strips class, style and data-* attribs from elements", function () { + const getConfigs = () => ({ useUnsafeMarkdown: false }) + const str = `ONE` + const el = render() + expect(el.html()).toEqual(`

ONE

`) + }) - it("allows image elements with https scheme", function() { - const str = `![Image alt text](https://image.source "Image title")` - const el = render() - expect(el.html()).toEqual(`

Image alt text

`) - }) + it("allows image elements", function () { + const str = `![Image alt text](http://image.source "Image title")` + const el = render() + expect(el.html()).toEqual(`

Image alt text

`) + }) - it("allows image elements with data scheme", function() { - const str = `` - const el = render() - expect(el.html()).toEqual(`

` + str + `

`) - }) + it("allows image elements with https scheme", function () { + const str = `![Image alt text](https://image.source "Image title")` + const el = render() + expect(el.html()).toEqual(`

Image alt text

`) + }) - it("allows heading elements", function() { - const str = ` + it("allows image elements with data scheme", function () { + const str = `` + const el = render() + expect(el.html()).toEqual(`

` + str + `

`) + }) + + it("allows heading elements", function () { + const str = ` # h1 ## h2 ### h3 #### h4 ##### h5 ###### h6` - const el = render() - expect(el.html()).toEqual(`

h1

\n

h2

\n

h3

\n

h4

\n
h5
\n
h6
`) - }) + const el = render() + expect(el.html()).toEqual(`

h1

\n

h2

\n

h3

\n

h4

\n
h5
\n
h6
`) }) + }) }) diff --git a/test/mocha/components/primitive-model.jsx b/test/mocha/components/primitive-model.jsx index 4b09b5af..8560f7bd 100644 --- a/test/mocha/components/primitive-model.jsx +++ b/test/mocha/components/primitive-model.jsx @@ -5,48 +5,48 @@ import { shallow } from "enzyme" import { fromJS } from "immutable" import PrimitiveModel from "components/primitive-model" -describe("", function() { - describe("Model name", function() { - const dummyComponent = () => null - const components = { - Markdown: dummyComponent, - EnumModel: dummyComponent - } - const props = { - getComponent: c => components[c], - getConfigs: () => ({ - showExtensions: false - }), - name: "Name from props", - depth: 1, - schema: fromJS({ - type: "string", - title: "Custom model title" - }) - } +describe("", function () { + describe("Model name", function () { + const dummyComponent = () => null + const components = { + Markdown: dummyComponent, + EnumModel: dummyComponent + } + const props = { + getComponent: c => components[c], + getConfigs: () => ({ + showExtensions: false + }), + name: "Name from props", + depth: 1, + schema: fromJS({ + type: "string", + title: "Custom model title" + }) + } - it("renders the schema's title", function() { - // When - const wrapper = shallow() - const modelTitleEl = wrapper.find("span.model-title") - expect(modelTitleEl.length).toEqual(1) - - // Then - expect( modelTitleEl.text() ).toEqual( "Custom model title" ) - }) - - it("falls back to the passed-in `name` prop for the title", function() { - // When - props.schema = fromJS({ - type: "string" - }) - const wrapper = shallow() - const modelTitleEl = wrapper.find("span.model-title") - expect(modelTitleEl.length).toEqual(1) - - // Then - expect( modelTitleEl.text() ).toEqual( "Name from props" ) - }) + it("renders the schema's title", function () { + // When + const wrapper = shallow() + const modelTitleEl = wrapper.find("span.model-title") + expect(modelTitleEl.length).toEqual(1) + // Then + expect(modelTitleEl.text()).toEqual("Custom model title") }) -} ) + + it("falls back to the passed-in `name` prop for the title", function () { + // When + props.schema = fromJS({ + type: "string" + }) + const wrapper = shallow() + const modelTitleEl = wrapper.find("span.model-title") + expect(modelTitleEl.length).toEqual(1) + + // Then + expect(modelTitleEl.text()).toEqual("Name from props") + }) + + }) +}) diff --git a/test/mocha/components/response-body.jsx b/test/mocha/components/response-body.jsx index 31509e3d..01c48712 100644 --- a/test/mocha/components/response-body.jsx +++ b/test/mocha/components/response-body.jsx @@ -3,41 +3,41 @@ import expect from "expect" import { shallow } from "enzyme" import ResponseBody from "components/response-body" -describe("", function() { - const highlightCodeComponent = () => null - const components = { - highlightCode: highlightCodeComponent - } - const props = { - getComponent: c => components[c], - } +describe("", function () { + const highlightCodeComponent = () => null + const components = { + highlightCode: highlightCodeComponent + } + const props = { + getComponent: c => components[c], + } - it("renders ResponseBody as 'application/json'", function() { - props.contentType = "application/json" - props.content = "{\"key\": \"a test value\"}" - const wrapper = shallow() - expect(wrapper.find("highlightCodeComponent").length).toEqual(1) - }) + it("renders ResponseBody as 'application/json'", function () { + props.contentType = "application/json" + props.content = "{\"key\": \"a test value\"}" + const wrapper = shallow() + expect(wrapper.find("highlightCodeComponent").length).toEqual(1) + }) - it("renders ResponseBody as 'text/html'", function() { - props.contentType = "application/json" - props.content = "Result" - const wrapper = shallow() - expect(wrapper.find("highlightCodeComponent").length).toEqual(1) - }) + it("renders ResponseBody as 'text/html'", function () { + props.contentType = "application/json" + props.content = "Result" + const wrapper = shallow() + expect(wrapper.find("highlightCodeComponent").length).toEqual(1) + }) - it("renders ResponseBody as 'image/svg'", function() { - props.contentType = "image/svg" - const wrapper = shallow() - console.warn(wrapper.debug()) - expect(wrapper.find("highlightCodeComponent").length).toEqual(0) - }) + it("renders ResponseBody as 'image/svg'", function () { + props.contentType = "image/svg" + const wrapper = shallow() + console.warn(wrapper.debug()) + expect(wrapper.find("highlightCodeComponent").length).toEqual(0) + }) - it("should render a copyable highlightCodeComponent for text types", function() { - props.contentType = "text/plain" - props.content = "test text" - const wrapper = shallow() - console.warn(wrapper.debug()) - expect(wrapper.find("highlightCodeComponent[canCopy]").length).toEqual(1) - }) + it("should render a copyable highlightCodeComponent for text types", function () { + props.contentType = "text/plain" + props.content = "test text" + const wrapper = shallow() + console.warn(wrapper.debug()) + expect(wrapper.find("highlightCodeComponent[canCopy]").length).toEqual(1) + }) }) diff --git a/test/mocha/components/response.jsx b/test/mocha/components/response.jsx index 04624f83..0cbde9ec 100644 --- a/test/mocha/components/response.jsx +++ b/test/mocha/components/response.jsx @@ -6,56 +6,56 @@ import Response from "components/response" import ModelExample from "components/model-example" import { inferSchema } from "corePlugins/samples/fn" -describe("", function() { - const dummyComponent = () => null - const components = { - headers: dummyComponent, - highlightCode: dummyComponent, - modelExample: ModelExample, - Markdown: dummyComponent, - operationLink: dummyComponent, - contentType: dummyComponent - } - const props = { - getComponent: c => components[c], - specSelectors: { - isOAS3() { - return false - } - }, - fn: { - inferSchema - }, - contentType: "application/json", - className: "for-test", - specPath: List(), - response: fromJS({ - schema: { - type: "object", - properties: { - // Note reverse order: c, b, a - "c": { - type: "integer" - }, - "b": { - type: "boolean" - }, - "a": { - type: "string" - } - } +describe("", function () { + const dummyComponent = () => null + const components = { + headers: dummyComponent, + highlightCode: dummyComponent, + modelExample: ModelExample, + Markdown: dummyComponent, + operationLink: dummyComponent, + contentType: dummyComponent + } + const props = { + getComponent: c => components[c], + specSelectors: { + isOAS3() { + return false + } + }, + fn: { + inferSchema + }, + contentType: "application/json", + className: "for-test", + specPath: List(), + response: fromJS({ + schema: { + type: "object", + properties: { + // Note reverse order: c, b, a + "c": { + type: "integer" + }, + "b": { + type: "boolean" + }, + "a": { + type: "string" + } } - }), - code: "200" - } + } + }), + code: "200" + } - it("renders the model-example schema properties in order", function() { - const wrapper = shallow() - const renderedModelExample = wrapper.find(ModelExample) - expect(renderedModelExample.length).toEqual(1) + it("renders the model-example schema properties in order", function () { + const wrapper = shallow() + const renderedModelExample = wrapper.find(ModelExample) + expect(renderedModelExample.length).toEqual(1) - // Assert the schema's properties have maintained their order - const modelExampleSchemaProperties = renderedModelExample.props().schema.toJS().properties - expect( Object.keys(modelExampleSchemaProperties) ).toEqual(["c", "b", "a"]) - }) + // Assert the schema's properties have maintained their order + const modelExampleSchemaProperties = renderedModelExample.props().schema.toJS().properties + expect(Object.keys(modelExampleSchemaProperties)).toEqual(["c", "b", "a"]) + }) }) diff --git a/test/mocha/core/curlify.js b/test/mocha/core/curlify.js index 6506b128..973a6b78 100644 --- a/test/mocha/core/curlify.js +++ b/test/mocha/core/curlify.js @@ -3,206 +3,311 @@ import Im from "immutable" import curl from "core/curlify" import win from "core/window" -describe("curlify", function() { +describe("curlify", function () { - it("prints a curl statement with custom content-type", function() { - var req = { - url: "http://example.com", - method: "POST", - body: { - id: 0, - name: "doggie", - status: "available" - }, - headers: { - Accept: "application/json", - "content-type": "application/json" - } - } - - let curlified = curl(Im.fromJS(req)) - - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"Accept: application/json\" -H \"content-type: application/json\" -d {\"id\":0,\"name\":\"doggie\",\"status\":\"available\"}") - }) - - it("does add a empty data param if no request body given", function() { - var req = { - url: "http://example.com", - method: "POST", + it("prints a curl statement with custom content-type", function () { + var req = { + url: "http://example.com", + method: "POST", + body: { + id: 0, + name: "doggie", + status: "available" + }, + headers: { + Accept: "application/json", + "content-type": "application/json" } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://example.com\" -d \"\"") - }) + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"Accept: application/json\" -H \"content-type: application/json\" -d {\"id\":0,\"name\":\"doggie\",\"status\":\"available\"}") + }) - it("does not change the case of header in curl", function() { - var req = { - url: "http://example.com", - method: "POST", - headers: { - "conTenT Type": "application/Moar" - } - } + it("does add a empty data param if no request body given", function () { + var req = { + url: "http://example.com", + method: "POST", + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"conTenT Type: application/Moar\" -d \"\"") - }) + expect(curlified).toEqual("curl -X POST \"http://example.com\" -d \"\"") + }) - it("prints a curl statement with an array of query params", function() { - var req = { - url: "http://swaggerhub.com/v1/one?name=john|smith", - method: "GET" - } + it("does not change the case of header in curl", function () { + var req = { + url: "http://example.com", + method: "POST", + headers: { + "conTenT Type": "application/Moar" + } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X GET \"http://swaggerhub.com/v1/one?name=john|smith\"") - }) + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"conTenT Type: application/Moar\" -d \"\"") + }) - it("prints a curl statement with an array of query params and auth", function() { - var req = { - url: "http://swaggerhub.com/v1/one?name=john|smith", - method: "GET", - headers: { - authorization: "Basic Zm9vOmJhcg==" - } - } + it("prints a curl statement with an array of query params", function () { + var req = { + url: "http://swaggerhub.com/v1/one?name=john|smith", + method: "GET" + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X GET \"http://swaggerhub.com/v1/one?name=john|smith\" -H \"authorization: Basic Zm9vOmJhcg==\"") - }) + expect(curlified).toEqual("curl -X GET \"http://swaggerhub.com/v1/one?name=john|smith\"") + }) - it("prints a curl statement with html", function() { - var req = { - url: "http://swaggerhub.com/v1/one?name=john|smith", - method: "GET", - headers: { - accept: "application/json" - }, - body: { - description: "Test" - } - } + it("prints a curl statement with an array of query params and auth", function () { + var req = { + url: "http://swaggerhub.com/v1/one?name=john|smith", + method: "GET", + headers: { + authorization: "Basic Zm9vOmJhcg==" + } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X GET \"http://swaggerhub.com/v1/one?name=john|smith\" -H \"accept: application/json\" -d {\"description\":\"Test\"}") - }) + expect(curlified).toEqual("curl -X GET \"http://swaggerhub.com/v1/one?name=john|smith\" -H \"authorization: Basic Zm9vOmJhcg==\"") + }) - it("handles post body with html", function() { - var req = { - url: "http://swaggerhub.com/v1/one?name=john|smith", - method: "POST", - headers: { - accept: "application/json" - }, - body: { - description: "Test" - } - } + it("prints a curl statement with html", function () { + var req = { + url: "http://swaggerhub.com/v1/one?name=john|smith", + method: "GET", + headers: { + accept: "application/json" + }, + body: { + description: "Test" + } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://swaggerhub.com/v1/one?name=john|smith\" -H \"accept: application/json\" -d {\"description\":\"Test\"}") - }) + expect(curlified).toEqual("curl -X GET \"http://swaggerhub.com/v1/one?name=john|smith\" -H \"accept: application/json\" -d {\"description\":\"Test\"}") + }) - it("handles post body with special chars", function() { - var req = { - url: "http://swaggerhub.com/v1/one?name=john|smith", - method: "POST", - body: { - description: "@prefix nif: .\n" + - "@prefix itsrdf: ." - } - } + it("handles post body with html", function () { + var req = { + url: "http://swaggerhub.com/v1/one?name=john|smith", + method: "POST", + headers: { + accept: "application/json" + }, + body: { + description: "Test" + } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://swaggerhub.com/v1/one?name=john|smith\" -d {\"description\":\"@prefix nif: .@prefix itsrdf: .\"}") - }) + expect(curlified).toEqual("curl -X POST \"http://swaggerhub.com/v1/one?name=john|smith\" -H \"accept: application/json\" -d {\"description\":\"Test\"}") + }) - it("handles delete form with parameters", function() { - var req = { - url: "http://example.com", - method: "DELETE", - headers: { - accept: "application/x-www-form-urlencoded" - } - } + it("handles post body with special chars", function () { + var req = { + url: "http://swaggerhub.com/v1/one?name=john|smith", + method: "POST", + body: { + description: "@prefix nif: .\n" + + "@prefix itsrdf: ." + } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X DELETE \"http://example.com\" -H \"accept: application/x-www-form-urlencoded\"") - }) + expect(curlified).toEqual("curl -X POST \"http://swaggerhub.com/v1/one?name=john|smith\" -d {\"description\":\"@prefix nif: .@prefix itsrdf: .\"}") + }) - it("should print a curl with formData", function() { - var req = { - url: "http://example.com", - method: "POST", - headers: { "content-type": "multipart/form-data" }, - body: { - id: "123", - name: "Sahar" - } - } + it("handles delete form with parameters", function () { + var req = { + url: "http://example.com", + method: "DELETE", + headers: { + accept: "application/x-www-form-urlencoded" + } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"name=Sahar\"") - }) + expect(curlified).toEqual("curl -X DELETE \"http://example.com\" -H \"accept: application/x-www-form-urlencoded\"") + }) - it("should print a curl with formData that extracts array representation with hashIdx", function() { - // Note: hashIdx = `_**[]${counter}` - // Usage of hashIdx is an internal SwaggerUI method to convert formData array into something curlify can handle - const req = { - url: "http://example.com", - method: "POST", - headers: { "content-type": "multipart/form-data" }, - body: { - id: "123", - "fruits[]_**[]1": "apple", - "fruits[]_**[]2": "banana", - "fruits[]_**[]3": "grape" - } - } + it("should print a curl with formData", function () { + var req = { + url: "http://example.com", + method: "POST", + headers: { "content-type": "multipart/form-data" }, + body: { + id: "123", + name: "Sahar" + } + } - let curlified = curl(Im.fromJS(req)) + let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"fruits[]=apple\" -F \"fruits[]=banana\" -F \"fruits[]=grape\"") - }) + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"name=Sahar\"") + }) - it("should print a curl with formData and file", function() { - var file = new win.File() + it("should print a curl with formData that extracts array representation with hashIdx", function () { + // Note: hashIdx = `_**[]${counter}` + // Usage of hashIdx is an internal SwaggerUI method to convert formData array into something curlify can handle + const req = { + url: "http://example.com", + method: "POST", + headers: { "content-type": "multipart/form-data" }, + body: { + id: "123", + "fruits[]_**[]1": "apple", + "fruits[]_**[]2": "banana", + "fruits[]_**[]3": "grape" + } + } + + let curlified = curl(Im.fromJS(req)) + + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"fruits[]=apple\" -F \"fruits[]=banana\" -F \"fruits[]=grape\"") + }) + + it("should print a curl with formData and file", function () { + var file = new win.File() + file.name = "file.txt" + file.type = "text/plain" + + var req = { + url: "http://example.com", + method: "POST", + headers: { "content-type": "multipart/form-data" }, + body: { + id: "123", + file + } + } + + let curlified = curl(Im.fromJS(req)) + + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"file=@file.txt;type=text/plain\"") + }) + + it("should print a curl without form data type if type is unknown", function () { + var file = new win.File() + file.name = "file.txt" + file.type = "" + + var req = { + url: "http://example.com", + method: "POST", + headers: { "content-type": "multipart/form-data" }, + body: { + id: "123", + file + } + } + + let curlified = curl(Im.fromJS(req)) + + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"file=@file.txt\"") + }) + + it("prints a curl post statement from an object", function () { + var req = { + url: "http://example.com", + method: "POST", + headers: { + accept: "application/json" + }, + body: { + id: 10101 + } + } + + let curlified = curl(Im.fromJS(req)) + + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"accept: application/json\" -d {\"id\":10101}") + }) + + it("prints a curl post statement from a string containing a single quote", function () { + var req = { + url: "http://example.com", + method: "POST", + headers: { + accept: "application/json" + }, + body: "{\"id\":\"foo'bar\"}" + } + + let curlified = curl(Im.fromJS(req)) + + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"accept: application/json\" -d \"{\\\"id\\\":\\\"foo'bar\\\"}\"") + }) + + context("given multiple entries with file", function () { + context("and with leading custom header", function () { + it("should print a proper curl -F", function () { + let file = new win.File() file.name = "file.txt" file.type = "text/plain" - var req = { - url: "http://example.com", - method: "POST", - headers: { "content-type": "multipart/form-data" }, - body: { - id: "123", - file - } + let req = { + url: "http://example.com", + method: "POST", + headers: { + "x-custom-name": "multipart/form-data", + "content-type": "multipart/form-data" + }, + body: { + id: "123", + file + } } let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"file=@file.txt;type=text/plain\"") + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"x-custom-name: multipart/form-data\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"file=@file.txt;type=text/plain\"") + }) }) - it("should print a curl without form data type if type is unknown", function() { - var file = new win.File() - file.name = "file.txt" - file.type = "" + context("and with trailing custom header; e.g. from requestInterceptor appending req.headers", function () { + it("should print a proper curl -F", function () { + let file = new win.File() + file.name = "file.txt" + file.type = "text/plain" - var req = { + let req = { + url: "http://example.com", + method: "POST", + headers: { + "content-type": "multipart/form-data", + "x-custom-name": "any-value" + }, + body: { + id: "123", + file + } + } + + let curlified = curl(Im.fromJS(req)) + + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -H \"x-custom-name: any-value\" -F \"id=123\" -F \"file=@file.txt;type=text/plain\"") + }) + }) + }) + + context("POST when header value is 'multipart/form-data' but header name is not 'content-type'", function () { + it("shoud print a proper curl as -d ", function () { + let file = new win.File() + file.name = "file.txt" + file.type = "text/plain" + + let req = { url: "http://example.com", method: "POST", - headers: { "content-type": "multipart/form-data" }, + headers: { "x-custom-name": "multipart/form-data" }, body: { id: "123", file @@ -211,112 +316,7 @@ describe("curlify", function() { let curlified = curl(Im.fromJS(req)) - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"file=@file.txt\"") - }) - - it("prints a curl post statement from an object", function() { - var req = { - url: "http://example.com", - method: "POST", - headers: { - accept: "application/json" - }, - body: { - id: 10101 - } - } - - let curlified = curl(Im.fromJS(req)) - - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"accept: application/json\" -d {\"id\":10101}") - }) - - it("prints a curl post statement from a string containing a single quote", function() { - var req = { - url: "http://example.com", - method: "POST", - headers: { - accept: "application/json" - }, - body: "{\"id\":\"foo'bar\"}" - } - - let curlified = curl(Im.fromJS(req)) - - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"accept: application/json\" -d \"{\\\"id\\\":\\\"foo'bar\\\"}\"") - }) - - context("given multiple entries with file", function() { - context("and with leading custom header", function() { - it("should print a proper curl -F", function() { - let file = new win.File() - file.name = "file.txt" - file.type = "text/plain" - - let req = { - url: "http://example.com", - method: "POST", - headers: { - "x-custom-name": "multipart/form-data", - "content-type": "multipart/form-data" - }, - body: { - id: "123", - file - } - } - - let curlified = curl(Im.fromJS(req)) - - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"x-custom-name: multipart/form-data\" -H \"content-type: multipart/form-data\" -F \"id=123\" -F \"file=@file.txt;type=text/plain\"") - }) - }) - - context("and with trailing custom header; e.g. from requestInterceptor appending req.headers", function() { - it("should print a proper curl -F", function() { - let file = new win.File() - file.name = "file.txt" - file.type = "text/plain" - - let req = { - url: "http://example.com", - method: "POST", - headers: { - "content-type": "multipart/form-data", - "x-custom-name": "any-value" - }, - body: { - id: "123", - file - } - } - - let curlified = curl(Im.fromJS(req)) - - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"content-type: multipart/form-data\" -H \"x-custom-name: any-value\" -F \"id=123\" -F \"file=@file.txt;type=text/plain\"") - }) - }) - }) - - context("POST when header value is 'multipart/form-data' but header name is not 'content-type'", function() { - it("shoud print a proper curl as -d ", function() { - let file = new win.File() - file.name = "file.txt" - file.type = "text/plain" - - let req = { - url: "http://example.com", - method: "POST", - headers: { "x-custom-name": "multipart/form-data" }, - body: { - id: "123", - file - } - } - - let curlified = curl(Im.fromJS(req)) - - expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"x-custom-name: multipart/form-data\" -d {\"id\":\"123\",\"file\":{\"name\":\"file.txt\",\"type\":\"text/plain\"}}") - }) + expect(curlified).toEqual("curl -X POST \"http://example.com\" -H \"x-custom-name: multipart/form-data\" -d {\"id\":\"123\",\"file\":{\"name\":\"file.txt\",\"type\":\"text/plain\"}}") }) + }) })