mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
fix(editor): Use BroadcastChannel instead of window.opener for OAuth callback window (#9779)
This commit is contained in:
committed by
GitHub
parent
a1046607bf
commit
87cb199745
46
cypress/e2e/43-oauth-flow.cy.ts
Normal file
46
cypress/e2e/43-oauth-flow.cy.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { CredentialsPage, CredentialsModal } from '../pages';
|
||||
|
||||
const credentialsPage = new CredentialsPage();
|
||||
const credentialsModal = new CredentialsModal();
|
||||
|
||||
describe('Credentials', () => {
|
||||
it('create and connect with Google OAuth2', () => {
|
||||
// Open credentials page
|
||||
cy.visit(credentialsPage.url, {
|
||||
onBeforeLoad(win) {
|
||||
cy.stub(win, 'open').as('windowOpen');
|
||||
},
|
||||
});
|
||||
|
||||
// Add a new Google OAuth2 credential
|
||||
credentialsPage.getters.emptyListCreateCredentialButton().click();
|
||||
credentialsModal.getters.newCredentialTypeOption('Google OAuth2 API').click();
|
||||
credentialsModal.getters.newCredentialTypeButton().click();
|
||||
|
||||
// Fill in the key/secret and save
|
||||
credentialsModal.actions.fillField('clientId', 'test-key');
|
||||
credentialsModal.actions.fillField('clientSecret', 'test-secret');
|
||||
credentialsModal.actions.save();
|
||||
|
||||
// Connect to Google
|
||||
credentialsModal.getters.oauthConnectButton().click();
|
||||
cy.get('@windowOpen').should(
|
||||
'have.been.calledOnceWith',
|
||||
Cypress.sinon.match(
|
||||
'https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent&client_id=test-key&redirect_uri=http%3A%2F%2Flocalhost%3A5678%2Frest%2Foauth2-credential%2Fcallback&response_type=code',
|
||||
),
|
||||
'OAuth Authorization',
|
||||
'scrollbars=no,resizable=yes,status=no,titlebar=noe,location=no,toolbar=no,menubar=no,width=500,height=700',
|
||||
);
|
||||
|
||||
// Emulate successful save using BroadcastChannel
|
||||
cy.window().then(() => {
|
||||
const channel = new BroadcastChannel('oauth-callback');
|
||||
channel.postMessage('success');
|
||||
});
|
||||
|
||||
// Check that the credential was saved and connected successfully
|
||||
credentialsModal.getters.saveButton().should('contain.text', 'Saved');
|
||||
credentialsModal.getters.oauthConnectSuccessBanner().should('be.visible');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user