fix(plugin): allow Topbar plugin to read url param on load (#8168)
* fix(plugin): allow Topbar plugin to read url param on load * fix(plugin): add cypress tests for topbar w/o query config
This commit is contained in:
@@ -87,7 +87,8 @@ export default class Topbar extends React.Component {
|
|||||||
|
|
||||||
if(urls && urls.length) {
|
if(urls && urls.length) {
|
||||||
var targetIndex = this.state.selectedIndex
|
var targetIndex = this.state.selectedIndex
|
||||||
let primaryName = configs["urls.primaryName"]
|
let search = parseSearch()
|
||||||
|
let primaryName = search["urls.primaryName"] || configs["urls.primaryName"]
|
||||||
if(primaryName)
|
if(primaryName)
|
||||||
{
|
{
|
||||||
urls.forEach((spec, i) => {
|
urls.forEach((spec, i) => {
|
||||||
|
|||||||
80
test/e2e-cypress/static/pages/multiple-urls/index.html
Normal file
80
test/e2e-cypress/static/pages/multiple-urls/index.html
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
<!-- HTML for dev server -->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>Swagger UI</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/swagger-ui.css" >
|
||||||
|
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32" />
|
||||||
|
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16" />
|
||||||
|
<style>
|
||||||
|
html
|
||||||
|
{
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: -moz-scrollbars-vertical;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after
|
||||||
|
{
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin:0;
|
||||||
|
background: #fafafa;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="swagger-ui"></div>
|
||||||
|
|
||||||
|
<script src="/swagger-ui-bundle.js" charset="UTF-8"> </script>
|
||||||
|
<script src="/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
|
||||||
|
<script>
|
||||||
|
window.onload = function() {
|
||||||
|
window["SwaggerUIBundle"] = window["swagger-ui-bundle"]
|
||||||
|
window["SwaggerUIStandalonePreset"] = window["swagger-ui-standalone-preset"]
|
||||||
|
// Build a system
|
||||||
|
const ui = SwaggerUIBundle({
|
||||||
|
urls: [
|
||||||
|
{ name: "Petstore OAS", url: "/documents/petstore-expanded.openapi.yaml" },
|
||||||
|
{ name: "Petstore Swagger", url: "/documents/petstore.swagger.yaml" }
|
||||||
|
],
|
||||||
|
dom_id: '#swagger-ui',
|
||||||
|
presets: [
|
||||||
|
SwaggerUIBundle.presets.apis,
|
||||||
|
SwaggerUIStandalonePreset
|
||||||
|
],
|
||||||
|
plugins: [
|
||||||
|
SwaggerUIBundle.plugins.DownloadUrl
|
||||||
|
],
|
||||||
|
layout: "StandaloneLayout",
|
||||||
|
onComplete: () => {
|
||||||
|
if(window.completeCount) {
|
||||||
|
window.completeCount++
|
||||||
|
} else {
|
||||||
|
window.completeCount = 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
queryConfigEnabled: false,
|
||||||
|
})
|
||||||
|
|
||||||
|
window.ui = ui
|
||||||
|
|
||||||
|
ui.initOAuth({
|
||||||
|
clientId: "your-client-id",
|
||||||
|
clientSecret: "your-client-secret-if-required",
|
||||||
|
realm: "your-realms",
|
||||||
|
appName: "your-app-name",
|
||||||
|
scopeSeparator: " ",
|
||||||
|
additionalQueryStringParams: {}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
describe("Loading specs by url.primaryName param", () => {
|
||||||
|
describe("with no param", () => {
|
||||||
|
it("should load the default spec", () => {
|
||||||
|
cy.visit("/pages/multiple-urls/index.html")
|
||||||
|
.get("span.url")
|
||||||
|
.contains("/documents/petstore-expanded.openapi.yaml")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
describe("with an invalid param", () => {
|
||||||
|
it("should fall back to the default spec", () => {
|
||||||
|
cy.visit("/pages/multiple-urls/index.html?urls.primaryName=undefinedUrlName")
|
||||||
|
.get("span.url")
|
||||||
|
.contains("/documents/petstore-expanded.openapi.yaml")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
describe("with a valid url.primaryName param", () => {
|
||||||
|
it("should render the requested spec", () => {
|
||||||
|
cy.visit("/pages/multiple-urls/index.html?urls.primaryName=Petstore Swagger")
|
||||||
|
.get("span.url")
|
||||||
|
.contains("/documents/petstore.swagger.yaml")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user