diff --git a/src/core/plugins/oas3/components/servers.jsx b/src/core/plugins/oas3/components/servers.jsx index 9c536d12b982cf69ab846e1533e68773287fd67a..948b4296f442dccb932d94cb3121f286e85a9649 100644 --- a/src/core/plugins/oas3/components/servers.jsx +++ b/src/core/plugins/oas3/components/servers.jsx @@ -30,9 +30,9 @@ export default class Servers extends React.Component { servers, setServerVariableValue, getServerVariable - } = this.props + } = nextProps - if(this.props.currentServer !== nextProps.currentServer) { + if (this.props.currentServer !== nextProps.currentServer || this.props.servers !== nextProps.servers) { // Server has changed, we may need to set default values let currentServerDefinition = servers .find(v => v.get("url") === nextProps.currentServer) diff --git a/test/e2e-cypress/static/documents/features/oas3-multiple-servers-switch.yaml b/test/e2e-cypress/static/documents/features/oas3-multiple-servers-switch.yaml new file mode 100644 index 0000000000000000000000000000000000000000..33e255a83343a75e88aac1f960d61f105108e694 --- /dev/null +++ b/test/e2e-cypress/static/documents/features/oas3-multiple-servers-switch.yaml @@ -0,0 +1,16 @@ +openapi: 3.0.2 +servers: + - url: /test-url-switch-1 + - url: /test-url-switch-2 +info: + title: multi-server test, switch + version: 0.0.1 + description: |- + a simple test to select different servers +paths: + /: + get: + summary: an operation + responses: + "200": + description: OK diff --git a/test/e2e-cypress/static/documents/features/oas3-multiple-servers.yaml b/test/e2e-cypress/static/documents/features/oas3-multiple-servers.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3206a4af27d2c4613495c95ae81345553fd73c25 --- /dev/null +++ b/test/e2e-cypress/static/documents/features/oas3-multiple-servers.yaml @@ -0,0 +1,16 @@ +openapi: 3.0.2 +servers: + - url: /test-url-1 + - url: /test-url-2 +info: + title: multi-server test + version: 0.0.1 + description: |- + a simple test to select different servers +paths: + /: + get: + summary: an operation + responses: + "200": + description: OK diff --git a/test/e2e-cypress/tests/features/oas3-multiple-servers.js b/test/e2e-cypress/tests/features/oas3-multiple-servers.js new file mode 100644 index 0000000000000000000000000000000000000000..fdcb855b2efd2d9bcf8aabe89ee737f2421d683a --- /dev/null +++ b/test/e2e-cypress/tests/features/oas3-multiple-servers.js @@ -0,0 +1,82 @@ +/** + * @prettier + */ + +describe("OpenAPI 3.0 Multiple Servers", () => { + it("should render and execute for server '/test-url-1'", () => { + cy.visit( + "/?url=/documents/features/oas3-multiple-servers.yaml" + ) + .get(".scheme-container .schemes .servers label > select") + .select("/test-url-1") + .get("#operations-default-get_") + .click() + // Expand Try It Out + .get(".try-out__btn") + .click() + // Execute + .get(".execute.opblock-control__btn") + .click() + .get(".responses-wrapper .request-url") + .should("contains.text", "/test-url-1") + }) + it("should render and execute for server '/test-url-2'", () => { + cy.visit( + "/?url=/documents/features/oas3-multiple-servers.yaml" + ) + .get(".scheme-container .schemes .servers label > select") + .select("/test-url-2") + .get("#operations-default-get_") + .click() + // Expand Try It Out + .get(".try-out__btn") + .click() + // Execute + .get(".execute.opblock-control__btn") + .click() + .get(".responses-wrapper .request-url") + .should("contains.text", "/test-url-2") + }) + it("should render and execute for server '/test-url-1' after sequence: select '/test-url-2' -> Try-It-Out -> select '/test-url-1'", () => { + cy.visit( + "/?url=/documents/features/oas3-multiple-servers.yaml" + ) + .get(".scheme-container .schemes .servers label > select") + .select("/test-url-2") + .get("#operations-default-get_") + .click() + // Expand Try It Out + .get(".try-out__btn") + .click() + // Select a different server + .get(".scheme-container .schemes .servers label > select") + .select("/test-url-1") + // Execute + .get(".execute.opblock-control__btn") + .click() + .get(".responses-wrapper .request-url") + .should("contains.text", "/test-url-1") + }) + it("should render and execute for server '/test-url-switch-1' after changing api defintion", () => { + cy.visit( + "/?url=/documents/features/oas3-multiple-servers.yaml" + ) + .get(".scheme-container .schemes .servers label > select") + .select("/test-url-2") + cy.visit( + "/?url=/documents/features/oas3-multiple-servers-switch.yaml" + ) + .get(".scheme-container .schemes .servers label > select") + .select("/test-url-switch-2") + .get("#operations-default-get_") + .click() + // Expand Try It Out + .get(".try-out__btn") + .click() + // Execute + .get(".execute.opblock-control__btn") + .click() + .get(".responses-wrapper .request-url") + .should("contains.text", "/test-url-switch-2") + }) +})