diff options
Diffstat (limited to 'cypress/e2e/settings/users.cy.ts')
-rw-r--r-- | cypress/e2e/settings/users.cy.ts | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/cypress/e2e/settings/users.cy.ts b/cypress/e2e/settings/users.cy.ts new file mode 100644 index 00000000000..5b8726e92ca --- /dev/null +++ b/cypress/e2e/settings/users.cy.ts @@ -0,0 +1,129 @@ +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/// <reference types="cypress-if" /> +import { User } from '@nextcloud/cypress' +import { getUserListRow, handlePasswordConfirmation } from './usersUtils' + +const admin = new User('admin', 'admin') +const john = new User('john', '123456') + +describe('Settings: Create and delete accounts', function() { + beforeEach(function() { + cy.listUsers().then((users) => { + if ((users as string[]).includes(john.userId)) { + // ensure created user is deleted + cy.deleteUser(john) + } + }) + cy.login(admin) + // open the User settings + cy.visit('/settings/users') + }) + + it('Can create a user', function() { + // open the New user modal + cy.get('button#new-user-button').click() + + cy.get('form[data-test="form"]').within(() => { + // see that the username is "" + cy.get('input[data-test="username"]').should('exist').and('have.value', '') + // set the username to john + cy.get('input[data-test="username"]').type(john.userId) + // see that the username is john + cy.get('input[data-test="username"]').should('have.value', john.userId) + // see that the password is "" + cy.get('input[type="password"]').should('exist').and('have.value', '') + // set the password to 123456 + cy.get('input[type="password"]').type(john.password) + // see that the password is 123456 + cy.get('input[type="password"]').should('have.value', john.password) + }) + + cy.get('form[data-test="form"]').parents('[role="dialog"]').within(() => { + // submit the new user form + cy.get('button[type="submit"]').click({ force: true }) + }) + + // Make sure no confirmation modal is shown + handlePasswordConfirmation(admin.password) + + // see that the created user is in the list + getUserListRow(john.userId) + // see that the list of users contains the user john + .contains(john.userId).should('exist') + }) + + it('Can create a user with additional field data', function() { + // open the New user modal + cy.get('button#new-user-button').click() + + cy.get('form[data-test="form"]').within(() => { + // set the username + cy.get('input[data-test="username"]').should('exist').and('have.value', '') + cy.get('input[data-test="username"]').type(john.userId) + cy.get('input[data-test="username"]').should('have.value', john.userId) + // set the display name + cy.get('input[data-test="displayName"]').should('exist').and('have.value', '') + cy.get('input[data-test="displayName"]').type('John Smith') + cy.get('input[data-test="displayName"]').should('have.value', 'John Smith') + // set the email + cy.get('input[data-test="email"]').should('exist').and('have.value', '') + cy.get('input[data-test="email"]').type('john@example.org') + cy.get('input[data-test="email"]').should('have.value', 'john@example.org') + // set the password + cy.get('input[type="password"]').should('exist').and('have.value', '') + cy.get('input[type="password"]').type(john.password) + cy.get('input[type="password"]').should('have.value', john.password) + }) + + cy.get('form[data-test="form"]').parents('[role="dialog"]').within(() => { + // submit the new user form + cy.get('button[type="submit"]').click({ force: true }) + }) + + // Make sure no confirmation modal is shown + handlePasswordConfirmation(admin.password) + + // see that the created user is in the list + getUserListRow(john.userId) + // see that the list of users contains the user john + .contains(john.userId) + .should('exist') + }) + + it('Can delete a user', function() { + let testUser + // create user + cy.createRandomUser() + .then(($user) => { + testUser = $user + }) + cy.login(admin) + // ensure created user is present + cy.reload().then(() => { + // see that the user is in the list + getUserListRow(testUser.userId).within(() => { + // see that the list of users contains the user testUser + cy.contains(testUser.userId).should('exist') + // open the actions menu for the user + cy.get('[data-cy-user-list-cell-actions]') + .find('button.action-item__menutoggle') + .click({ force: true }) + }) + + // The "Delete account" action in the actions menu is shown and clicked + cy.get('.action-item__popper .action').contains('Delete account').should('exist').click({ force: true }) + + // Make sure no confirmation modal is shown + handlePasswordConfirmation(admin.password) + + // And confirmation dialog accepted + cy.get('.nc-generic-dialog button').contains(`Delete ${testUser.userId}`).click({ force: true }) + + // deleted clicked the user is not shown anymore + getUserListRow(testUser.userId).should('not.exist') + }) + }) +}) |