swagger-ui
swagger-ui copied to clipboard
Added changes from @nicolashenry out of #9248
Description
This Pull Request should solve problems with window.opener not being available in some edge-cases when the oauth2-redirect.html is used with an external auth provider.
Motivation and Context
In the comments of #9248 there was a proper successor to solve the original problem.
The functionality started breaking when browsers introduced rel=noopener for target=_blank links.
The reasons why it breaks in some setups is described in #8315.
closes #8030 closes #8315
How Has This Been Tested?
I did not test it yet but others did in #9248.
Checklist
My PR contains...
- [ ] No code changes (
src/is unmodified: changes to documentation, CI, metadata, etc.) - [ ] Dependency changes (any modification to dependencies in
package.json) - [x] Bug fixes (non-breaking change which fixes an issue)
- [ ] Improvements (misc. changes to existing features)
- [ ] Features (non-breaking change which adds functionality)
My changes...
- [ ] are breaking changes to a public API (config options, System API, major UI change, etc).
- [ ] are breaking changes to a private API (Redux, component props, utility functions, etc.).
- [ ] are breaking changes to a developer API (npm script behavior changes, new dev system dependencies, etc).
- [x] are not breaking changes.
Documentation
- [x] My changes do not require a change to the project documentation.
- [ ] My changes require a change to the project documentation.
- [ ] If yes to above: I have updated the documentation accordingly.
Automated tests
- [ ] My changes can not or do not need to be tested.
- [ ] My changes can and should be tested by unit and/or integration tests.
- [ ] If yes to above: I have added tests to cover my changes.
- [ ] If yes to above: I have taken care to cover edge cases in my tests.
- [x] All new and existing tests passed.
Sorry I wanted to finalize it but there are some breaking tests due to my change and I did not had time to fix those. I was due to the introduction of BroadcastChannel global not existing in a NodeJs environment used in the tests if I remember correctly.
Any updates on this?
any news here?
@nicolashenry, do you know if https://www.npmjs.com/package/broadcast-channel would work to fix the broken tests?
UPDATE: that is not a polyfill, so it's not a drop-in replacement so won't work. Luckily, it looks like https://www.npmjs.com/package/broadcastchannel-polyfill will work. I'm not sure if this is the cleanest fix, but this makes npm run tests succeed...
First, I ran npm install --save-dev broadcastchannel-polyfill, and then I made this change:
diff --git a/test/unit/core/plugins/auth/actions.js b/test/unit/core/plugins/auth/actions.js
index d9c751be..62604056 100644
--- a/test/unit/core/plugins/auth/actions.js
+++ b/test/unit/core/plugins/auth/actions.js
@@ -1,3 +1,5 @@
+import { BroadcastChannel } from "broadcastchannel-polyfill"
+import { MessageChannel } from "node:worker_threads"
import { Map } from "immutable"
import win from "core/window"
import {
@@ -10,6 +12,9 @@ import {
} from "core/plugins/auth/actions"
import {authorizeAccessCodeWithBasicAuthentication, authPopup} from "../../../../../src/core/plugins/auth/actions"
+// broadcastchannel-polyfill expects MessageChannel to exist
+global.MessageChannel = MessageChannel
+
describe("auth plugin - actions", () => {
describe("authorizeRequest", () => {
any updates?
@ppena-LiveData should I add your change to this PR as well?
@Cellebyte, if you think my suggested change is good, then yes, please add it to the PR so that the unit tests can pass.
any updates on this?
I added now a fix for the tests and now we need to wait for a swagger-ui maintainer.