From d1e258d83b45d94b7f53efe2dc8221c25e228d43 Mon Sep 17 00:00:00 2001 From: sebo <sebastian.bergandy@external.mgm-cp.com> Date: Wed, 12 Mar 2025 11:13:38 +0100 Subject: [PATCH] OZG-7837 change test to gherkins rules --- .../benutzer_rollen/benutzer-anlegen.cy.ts | 57 +++++++++++-------- .../src/helper/benutzer/benutzer.executor.ts | 14 +++++ .../src/helper/benutzer/benutzer.helper.ts | 22 +++++-- 3 files changed, 64 insertions(+), 29 deletions(-) diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts index c1caf19af7..c65fad43bb 100644 --- a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts +++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-anlegen.cy.ts @@ -1,4 +1,3 @@ -import UserRepresentation from '@keycloak/keycloak-admin-client/lib/defs/userRepresentation'; import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper'; import { E2EBenutzerVerifier } from 'apps/admin-e2e/src/helper/benutzer/benutzer.verifier'; import { getCypressEnv, interceptWithResponse, waitOfInterceptor } from 'apps/admin-e2e/src/support/cypress-helper'; @@ -16,7 +15,7 @@ describe('Benutzer anlegen', () => { const snackBar: SnackBarE2EComponent = new SnackBarE2EComponent(); const newUserPassword: string = 'TestTestTest'; - const newUser: AdminUserE2E = { + const newAdminUser: AdminUserE2E = { vorname: 'Theo', nachname: 'Testuser', username: 'testtheo', @@ -26,6 +25,15 @@ describe('Benutzer anlegen', () => { organisationseinheiten: [], }; + const newRegularUser: AdminUserE2E = { + vorname: 'Max', + nachname: 'Mustermann', + username: 'maxmust', + email: 'max.mustermann@ozg-sh.de', + isUser: true, + organisationseinheiten: [], + }; + before(() => { loginAsAriane(); }); @@ -38,7 +46,7 @@ describe('Benutzer anlegen', () => { interceptWithResponse(HttpMethodE2E.POST, url, { errorCode, errorBody }).as(interceptor); benutzerHelper.openNewBenutzerPage(); - benutzerHelper.addBenutzer(newUser); + benutzerHelper.addBenutzer(newAdminUser); benutzerHelper.saveBenutzer(); waitOfInterceptor(interceptor).then(() => { @@ -51,7 +59,7 @@ describe('Benutzer anlegen', () => { it('should show snackbar after save', () => { benutzerHelper.openNewBenutzerPage(); - benutzerHelper.addBenutzer(newUser); + benutzerHelper.addBenutzer(newAdminUser); benutzerHelper.saveBenutzer(); contains(snackBar.getMessage(), SnackbarMessagesE2E.NUTZER_ANGELEGT); @@ -59,46 +67,49 @@ describe('Benutzer anlegen', () => { }); it('should show created user in list', () => { - benutzerVerifier.verifyUserInList(newUser); + benutzerVerifier.verifyUserInList(newAdminUser); }); it('should remove benutzer', () => { - benutzerHelper.deleteBenutzer(newUser.username); - benutzerVerifier.verifyUserNotInList(newUser.username); + benutzerHelper.deleteBenutzer(newAdminUser.username); + benutzerVerifier.verifyUserNotInList(newAdminUser.username); }); - describe('admin user', () => { + describe('newly created admin user', () => { it('should create new admin user', () => { benutzerHelper.openNewBenutzerPage(); - benutzerHelper.addBenutzer(newUser); + benutzerHelper.addBenutzer(newAdminUser); benutzerHelper.saveBenutzer(); - benutzerVerifier.verifyUserInList(newUser); + benutzerVerifier.verifyUserInList(newAdminUser); }); - it('should set verified email and reset password', () => { - cy.findUser(newUser.username).then((userRepresentation: UserRepresentation) => - cy.verifyEmail(userRepresentation.id!).then(() => cy.resetPassword(userRepresentation.id!, newUserPassword)), - ); - }); + it('should create new regular user', () => { + benutzerHelper.openNewBenutzerPage(); - it('should login', () => { - loginByUsernameAndPassword(newUser.username, newUserPassword); - }); + benutzerHelper.addBenutzer(newRegularUser); + benutzerHelper.saveBenutzer(); - it('should navigate user list', () => { - benutzerHelper.openBenutzerListPage(); + benutzerVerifier.verifyUserInList(newRegularUser); }); - it('should navigate to Organisationseinheiten', () => { - organisationsEinheitHelper.openOrganisationsEinheitPage(); + it('should have rights to delete user', () => { + benutzerHelper.activateUser(newAdminUser.username, newUserPassword).then(() => { + loginByUsernameAndPassword(newAdminUser.username, newUserPassword); + benutzerHelper.openBenutzerListPage(); + benutzerVerifier.verifyUserInList(newRegularUser); + + benutzerHelper.deleteBenutzer(newRegularUser.username); + + benutzerVerifier.verifyUserNotInList(newRegularUser.username); + }); }); it('should delete user', () => { loginAsAriane(); - benutzerHelper.deleteBenutzer(newUser.username); + benutzerHelper.deleteBenutzer(newAdminUser.username); }); }); }); diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts index f0ed339c63..13e36ab09b 100644 --- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts +++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts @@ -1,3 +1,4 @@ +import UserRepresentation from '@keycloak/keycloak-admin-client/lib/defs/userRepresentation'; import { BenutzerDeleteDialogE2EComponent, BenutzerE2EComponent, @@ -7,6 +8,7 @@ import { SnackBarE2EComponent } from '../../components/ui/snackbar.e2e.component import { OrganisationsEinheitE2E } from '../../model/organisations-einheit'; import { AdminUserE2E } from '../../model/util'; import { exist, notExist } from '../../support/cypress.util'; +import Chainable = Cypress.Chainable; export class E2EBenutzerExecutor { private benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent(); @@ -58,4 +60,16 @@ export class E2EBenutzerExecutor { this.benutzerDeleteDialog.getDeleteButton().click(); exist(this.benutzerListPage.getList()); } + + public verifyEmail(userId: string): Chainable<Cypress.Response<void>> { + return cy.verifyEmail(userId); + } + + public resetPassword(userId: string, newPassword: string): Chainable<Cypress.Response<void>> { + return cy.resetPassword(userId, newPassword); + } + + public findUser(username: string): Chainable<UserRepresentation> { + return cy.findUser(username); + } } diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts index 2b06766322..9356907cb7 100644 --- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts +++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts @@ -1,3 +1,4 @@ +import UserRepresentation from '@keycloak/keycloak-admin-client/lib/defs/userRepresentation'; import { OrganisationsEinheitE2E } from '../../model/organisations-einheit'; import { AdminUserE2E } from '../../model/util'; import { E2EBenutzerExecutor } from './benutzer.executor'; @@ -5,7 +6,7 @@ import { E2EBenutzerNavigator } from './benutzer.navigator'; export class E2EBenutzerHelper { private navigator: E2EBenutzerNavigator = new E2EBenutzerNavigator(); - private executer: E2EBenutzerExecutor = new E2EBenutzerExecutor(); + private executor: E2EBenutzerExecutor = new E2EBenutzerExecutor(); public openBenutzerListPage(): void { this.navigator.openBenutzerListPage(); @@ -34,28 +35,37 @@ export class E2EBenutzerHelper { } private modifyBenutzer(user: AdminUserE2E): void { - this.executer.modifyBenutzer(user); + this.executor.modifyBenutzer(user); } public editOrganisationsEinheitenAndSave(organisationsEinheiten: OrganisationsEinheitE2E[]): void { - this.executer.modifyOrganisationsEinheiten(organisationsEinheiten); + this.executor.modifyOrganisationsEinheiten(organisationsEinheiten); this.saveAndCloseSnackbar(); } private saveAndCloseSnackbar(): void { - this.executer.saveAndCloseSnackbar(); + this.executor.saveAndCloseSnackbar(); } public saveBenutzer(): void { - this.executer.saveBenutzer(); + this.executor.saveBenutzer(); } public deleteBenutzer(userName: string): void { this.openBenutzerPage(userName); - this.executer.deleteBenutzer(); + this.executor.deleteBenutzer(); } public openBenutzerPage(userName: string): void { this.navigator.openBenutzerPage(userName); } + + public activateUser(username: string, newPassword: string): Cypress.Chainable<UserRepresentation> { + return cy + .findUser(username) + .then((userRepresentation: UserRepresentation) => cy.verifyEmail(userRepresentation.id!).then(() => userRepresentation)) + .then((userRepresentation: UserRepresentation) => + cy.resetPassword(userRepresentation.id!, newPassword).then(() => userRepresentation), + ); + } } -- GitLab