swagger-ui icon indicating copy to clipboard operation
swagger-ui copied to clipboard

Added changes from @nicolashenry out of #9248

Open Cellebyte opened this issue 1 year ago • 9 comments

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.

Cellebyte avatar Jun 01 '24 22:06 Cellebyte

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.

nicolashenry avatar Jun 02 '24 00:06 nicolashenry

Any updates on this?

pasha-vuiko avatar Jul 03 '24 17:07 pasha-vuiko

any news here?

MaksSlesarenko avatar Jul 08 '24 14:07 MaksSlesarenko

@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", () => {

ppena-LiveData avatar Jul 11 '24 16:07 ppena-LiveData

any updates?

delepster avatar Sep 11 '24 20:09 delepster

@ppena-LiveData should I add your change to this PR as well?

Cellebyte avatar Sep 11 '24 21:09 Cellebyte

@Cellebyte, if you think my suggested change is good, then yes, please add it to the PR so that the unit tests can pass.

ppena-LiveData avatar Sep 12 '24 15:09 ppena-LiveData

any updates on this?

codedoga avatar Jan 28 '25 11:01 codedoga

I added now a fix for the tests and now we need to wait for a swagger-ui maintainer.

Cellebyte avatar May 07 '25 20:05 Cellebyte