feat(e2e): Manage User Settings e2e tests (#27618)

Этот коммит содержится в:
yasserfaraazkhan
2024-07-16 20:40:00 +05:30
коммит произвёл GitHub
родитель e05ec0efc3
Коммит e917709be5
2 изменённых файлов: 179 добавлений и 0 удалений

Просмотреть файл

@@ -0,0 +1,162 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// ***************************************************************
// - [#] indicates a test step (e.g. # Go to a page)
// - [*] indicates an assertion (e.g. * Check the title)
// - Use element ID when selecting an element. Create one if none.
// ***************************************************************
// Stage: @prod
// Group: @channels @system_console
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
describe('User Management', () => {
let testTeam;
let testChannel;
let testUser;
let testUsersForRoles;
const roleNames = ['system_manager', 'system_user_manager', 'system_read_only_admin'];
before(() => {
cy.apiRequireLicense();
cy.apiInitSetup().then(({team, channel, user}) => {
testChannel = channel;
testTeam = team;
testUser = user;
});
testUsersForRoles = {};
Cypress._.forEach(roleNames, (roleName) => {
cy.apiCreateUser().then(({user}) => {
testUsersForRoles[roleName] = user;
cy.apiAddUserToTeam(testTeam.id, user.id);
});
});
});
it('MM-T5596 Verify Admin can change user\'s settings from the user management in admin console', () => {
cy.apiAdminLogin();
cy.visit('/admin_console/user_management/users');
gotoUserConfigurationPage(testUser);
verifyManageUserSettingModal(testUser);
cy.get('#replyNotificationsTitle').should('be.visible').should('have.text', 'Reply notifications').click();
cy.get('#notificationCommentsNever').should('be.checked');
cy.get('#notificationCommentsAny').check();
cy.get('button#saveSetting').last().scrollIntoView().click();
cy.apiLogout();
cy.apiLogin(testUser);
cy.visit(`/${testTeam.name}/channels/${testChannel.name}`);
cy.get('[aria-label="Settings"]').click();
cy.get('#replyNotificationsTitle').should('be.visible').should('have.text', 'Reply notifications').click();
cy.get('#notificationCommentsAny').should('be.checked');
cy.apiLogout();
});
roleNames.forEach((role) => {
it(`MM-T5597 Verify manage user's settings option is visible for role: ${role} with Can Edit access`, () => {
const writeAccess = true;
// TODO: remove below if loop after fixing Bug: https://mattermost.atlassian.net/browse/MM-59376
if (role !== 'system_manager' && role !== 'system_read_only_admin') {
// # Make the user a System User Manager
makeUserASystemRole(testUsersForRoles[role].email, role, writeAccess);
// * Login as the new user and verify the role permissions (ensure they really are a system user manager)
verifyAccessToUserSettings(testUsersForRoles[role], writeAccess);
}
});
});
roleNames.forEach((role) => {
it(`MM-T5597 Verify manage user's settings option is Not visible for role: ${role} with Read only access`, () => {
const writeAccess = false;
// TODO: remove below if loop after fixing Bug: https://mattermost.atlassian.net/browse/MM-59376
if (role !== 'system_manager' && role !== 'system_read_only_admin') {
// # Make the user a System User Manager
makeUserASystemRole(testUsersForRoles[role].email, role, writeAccess);
// * Login as the new user and verify the role permissions (ensure they really are a system user manager)
verifyAccessToUserSettings(testUsersForRoles[role], writeAccess);
}
});
});
function gotoUserConfigurationPage(user) {
cy.intercept('**api/v4/reports/users?**').as('getUserList');
cy.get('#input_searchTerm').clear().type(user.id);
cy.wait('@getUserList');
cy.get('#systemUsersTable-cell-0_emailColumn').should('have.text', user.email).click();
cy.url().should('include', `user_management/user/${user.id}`);
}
function verifyManageUserSettingModal(user, writeAccess) {
if (writeAccess) {
cy.get('.manageUserSettingsBtn').should('be.visible').should('have.text', 'Manage User Settings').click();
cy.get('#confirmModalLabel').should('be.visible').should('have.text', `Manage ${user.nickname}'s Settings`);
cy.get('#cancelModalButton').should('be.visible').should('have.text', 'Cancel');
cy.get('#confirmModalButton').should('be.visible').should('have.text', 'Manage User Settings').click();
cy.get('h1#accountSettingsModalLabel').should('be.visible').should('have.text', `Manage ${user.nickname}'s Settings`);
cy.get('.adminModeBadge').should('be.visible').should('have.text', 'Admin Mode');
} else {
cy.get('.manageUserSettingsBtn').should('not.exist');
}
}
function makeUserASystemRole(userEmail, role, writeAccess) {
// # Login as each new role.
cy.apiAdminLogin();
// # Go the system console.
cy.visit('/admin_console/user_management/system_roles');
cy.get('.admin-console__header').within(() => {
cy.findByText('System Roles', {timeout: TIMEOUTS.ONE_MIN}).should('exist').and('be.visible');
});
// # Click on edit for the role
cy.findByTestId(`${role}_edit`).click();
cy.get('button#systemRolePermissionDropdownuser_management_users').click();
cy.get('div.PermissionSectionDropdownOptions_label').filter(`:contains("${writeAccess ? 'Can edit' : 'Read only'}")`).should('have.text', writeAccess ? 'Can edit' : 'Read only').click();
// # Click Add People button
cy.findByRole('button', {name: 'Add People'}).click().wait(TIMEOUTS.HALF_SEC);
// # Type in user name
cy.findByRole('textbox', {name: 'Search for people'}).typeWithForce(`${userEmail}`);
// # Find the user and click on him
cy.get('#multiSelectList').should('be.visible').children().first().click({force: true});
// # Click add button
cy.findByRole('button', {name: 'Add'}).click().wait(TIMEOUTS.HALF_SEC);
// # Click save button
cy.findByRole('button', {name: 'Save'}).click().wait(TIMEOUTS.HALF_SEC);
cy.apiLogout();
}
function verifyAccessToUserSettings(user, writeAccess) {
// # Login as each new role.
cy.apiLogin(user);
// # Go the system console.
cy.visit('/admin_console/user_management/users');
gotoUserConfigurationPage(user);
verifyManageUserSettingModal(user, writeAccess);
cy.apiLogout();
}
});

Просмотреть файл

@@ -233,6 +233,23 @@ describe('User Management', () => {
cy.url().should('include', '/admin_console/about/license');
});
it('Admin cannot access Manage User Settings option on a unlicensed instance', () => {
// # Login as sysadmin.
cy.apiLogin(sysadmin);
cy.visit('/admin_console/user_management/users');
cy.intercept('**api/v4/reports/users?**').as('getUserList');
cy.get('#input_searchTerm').clear().type(testUser.id);
cy.wait('@getUserList');
cy.get('#systemUsersTable-cell-0_emailColumn').should('have.text', testUser.email).as('userRow');
cy.get('#actionMenuButton-systemUsersTable-0 > span').click();
cy.get('ul#actionMenu-systemUsersTable-0').should('be.visible').find('li').should('not.contain.text', 'Manage User Settings');
cy.get('@userRow').click({force: true});
cy.get('.manageUserSettingsBtn').
should('be.visible').
should('contain.text', 'Manage User Settings').
should('have.class', 'disabled');
});
function resetUserEmail(oldEmail, newEmail, errorMsg) {
cy.visit('/admin_console/user_management/users');