From 93679076b4e74a2a513b33f07f98b98ae008aa42 Mon Sep 17 00:00:00 2001 From: Csaba Tuncsik Date: Thu, 23 May 2024 17:07:40 +0200 Subject: [PATCH] fix(editor): Hard load after logout to reset stores (no-changelog) (#9500) --- cypress/e2e/18-user-management.cy.ts | 21 ++++++++++++++++++++ cypress/e2e/39-projects.cy.ts | 11 +++++++++- cypress/pages/sidebar/main-sidebar.ts | 5 +++-- packages/editor-ui/src/views/SignoutView.vue | 2 +- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/cypress/e2e/18-user-management.cy.ts b/cypress/e2e/18-user-management.cy.ts index 0dc1264739..fdd78cf1f2 100644 --- a/cypress/e2e/18-user-management.cy.ts +++ b/cypress/e2e/18-user-management.cy.ts @@ -34,6 +34,27 @@ describe('User Management', { disableAutoLogin: true }, () => { cy.enableFeature('sharing'); }); + it.only('should login and logout', () => { + cy.visit('/'); + cy.get('input[name="email"]').type(INSTANCE_OWNER.email); + cy.get('input[name="password"]').type(INSTANCE_OWNER.password); + cy.getByTestId('form-submit-button').click(); + mainSidebar.getters.logo().should('be.visible'); + mainSidebar.actions.goToSettings(); + settingsSidebar.getters.users().should('be.visible'); + + mainSidebar.actions.closeSettings(); + mainSidebar.actions.openUserMenu(); + cy.getByTestId('user-menu-item-logout').click(); + + cy.get('input[name="email"]').type(INSTANCE_MEMBERS[0].email); + cy.get('input[name="password"]').type(INSTANCE_MEMBERS[0].password); + cy.getByTestId('form-submit-button').click(); + mainSidebar.getters.logo().should('be.visible'); + mainSidebar.actions.goToSettings(); + cy.getByTestId('menu-item').filter('#settings-users').should('not.exist'); + }); + it('should prevent non-owners to access UM settings', () => { usersSettingsPage.actions.loginAndVisit( INSTANCE_MEMBERS[0].email, diff --git a/cypress/e2e/39-projects.cy.ts b/cypress/e2e/39-projects.cy.ts index a3758b1fda..20cff22b95 100644 --- a/cypress/e2e/39-projects.cy.ts +++ b/cypress/e2e/39-projects.cy.ts @@ -15,7 +15,7 @@ const credentialsModal = new CredentialsModal(); const executionsTab = new WorkflowExecutionsTab(); describe('Projects', () => { - beforeEach(() => { + before(() => { cy.resetDatabase(); cy.enableFeature('sharing'); cy.enableFeature('advancedPermissions'); @@ -219,4 +219,13 @@ describe('Projects', () => { menuItems.filter('[class*=active_]').should('have.length', 1); menuItems.filter(':contains("Development")[class*=active_]').should('exist'); }); + + it('should not show project add button and projects to a member if not invited to any project', () => { + cy.signout(); + cy.signin(INSTANCE_MEMBERS[1]); + cy.visit(workflowsPage.url); + + projects.getAddProjectButton().should('not.exist'); + projects.getMenuItems().should('not.exist'); + }); }); diff --git a/cypress/pages/sidebar/main-sidebar.ts b/cypress/pages/sidebar/main-sidebar.ts index 348d4aa148..7b30de7a4e 100644 --- a/cypress/pages/sidebar/main-sidebar.ts +++ b/cypress/pages/sidebar/main-sidebar.ts @@ -7,6 +7,7 @@ export class MainSidebar extends BasePage { getters = { menuItem: (id: string) => cy.getByTestId('menu-item').get('#' + id), settings: () => this.getters.menuItem('settings'), + settingsBack: () => cy.getByTestId('settings-back'), templates: () => this.getters.menuItem('templates'), workflows: () => this.getters.menuItem('workflows'), credentials: () => this.getters.menuItem('credentials'), @@ -30,8 +31,8 @@ export class MainSidebar extends BasePage { openUserMenu: () => { this.getters.userMenu().click(); }, - openUserMenu: () => { - this.getters.userMenu().click(); + closeSettings: () => { + this.getters.settingsBack().click(); }, signout: () => { const workflowsPage = new WorkflowsPage(); diff --git a/packages/editor-ui/src/views/SignoutView.vue b/packages/editor-ui/src/views/SignoutView.vue index 02dcc6aa34..b98eff2c66 100644 --- a/packages/editor-ui/src/views/SignoutView.vue +++ b/packages/editor-ui/src/views/SignoutView.vue @@ -22,7 +22,7 @@ export default defineComponent({ async logout() { try { await this.usersStore.logout(); - void this.$router.replace({ name: VIEWS.SIGNIN }); + window.location.href = this.$router.resolve({ name: VIEWS.SIGNIN }).href; } catch (e) { this.showError(e, this.$locale.baseText('auth.signout.error')); }