Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FAT-12945-FAT-12945 #3543

Merged
merged 11 commits into from Apr 29, 2024
52 changes: 52 additions & 0 deletions cypress/e2e/eureka/authorization-roles/delete-empty-role.cy.js
@@ -0,0 +1,52 @@
import Users from '../../../support/fragments/users/users';
import TopMenu from '../../../support/fragments/topMenu';
import getRandomPostfix from '../../../support/utils/stringTools';
import AuthorizationRoles from '../../../support/fragments/settings/authorization-roles/authorizationRoles';

describe('Eureka', () => {
describe('Settings', () => {
describe('Authorization roles', () => {
const testData = {
roleName: `Auto Role C446119 ${getRandomPostfix()}`,
roleDescription: `Description C446119 ${getRandomPostfix()}`,
};

before('Create role, user', () => {
cy.createTempUser([]).then((createdUserProperties) => {
testData.user = createdUserProperties;
cy.createAuthorizationRoleApi(testData.roleName, testData.roleDescription).then(
(role) => {
testData.roleId = role.id;
cy.login(testData.user.username, testData.user.password, {
path: TopMenu.settingsAuthorizationRoles,
waiter: AuthorizationRoles.waitContentLoading,
});
},
);
});
});

after('Delete role, user', () => {
cy.getAdminToken();
Users.deleteViaApi(testData.user.userId);
cy.deleteAuthorizationRoleApi(testData.roleId, true);
});

it(
'C446119 Delete a role without capabilities and users (eureka)',
{ tags: ['smoke', 'eureka', 'eurekaPhase1'] },
() => {
AuthorizationRoles.searchRole(testData.roleName);
AuthorizationRoles.clickOnRoleName(testData.roleName);
AuthorizationRoles.checkCapabilitiesAccordionCounter('0');
AuthorizationRoles.checkCapabilitySetsAccordionCounter('0');
AuthorizationRoles.checkUsersAccordion();
AuthorizationRoles.clickDeleteRole();
AuthorizationRoles.cancelDeleteRole(testData.roleName);
AuthorizationRoles.clickDeleteRole();
AuthorizationRoles.confirmDeleteRole(testData.roleName);
},
);
});
});
});
68 changes: 68 additions & 0 deletions cypress/e2e/eureka/authorization-roles/delete-role.cy.js
@@ -0,0 +1,68 @@
import Users from '../../../support/fragments/users/users';
import TopMenu from '../../../support/fragments/topMenu';
import getRandomPostfix from '../../../support/utils/stringTools';
import AuthorizationRoles from '../../../support/fragments/settings/authorization-roles/authorizationRoles';

describe('Eureka', () => {
describe('Settings', () => {
describe('Authorization roles', () => {
const testData = {
roleName: `Auto Role C446120 ${getRandomPostfix()}`,
roleDescription: `Description C446120 ${getRandomPostfix()}`,
};

before('Create role, user', () => {
cy.createTempUser([]).then((createdUserProperties) => {
testData.user = createdUserProperties;
cy.createAuthorizationRoleApi(testData.roleName, testData.roleDescription).then(
(role) => {
testData.roleId = role.id;
cy.getCapabilitiesApi(10).then((capabs) => {
cy.getCapabilitySetsApi(3).then((capabSets) => {
cy.getUserRoleIdByNameApi(testData.roleName).then((roleId) => {
testData.roleId = roleId;
cy.addCapabilitiesToNewRoleApi(
roleId,
capabs.map((capab) => capab.id),
);
cy.addCapabilitySetsToNewRoleApi(
roleId,
capabSets.map((capab) => capab.id),
);
cy.addRolesToNewUserApi(createdUserProperties.userId, [roleId]);
});
});
});
cy.login(testData.user.username, testData.user.password, {
path: TopMenu.settingsAuthorizationRoles,
waiter: AuthorizationRoles.waitContentLoading,
});
},
);
});
});

after('Delete role, user', () => {
cy.getAdminToken();
Users.deleteViaApi(testData.user.userId);
cy.deleteAuthorizationRoleApi(testData.roleId, true);
});

it(
'C446120 Delete a role with capabilities and users assigned (eureka)',
{ tags: ['smoke', 'eureka', 'eurekaPhase1'] },
() => {
AuthorizationRoles.searchRole(testData.roleName);
AuthorizationRoles.clickOnRoleName(testData.roleName);
AuthorizationRoles.checkCapabilitiesAccordionCounter('10');
AuthorizationRoles.checkCapabilitySetsAccordionCounter('3');
AuthorizationRoles.checkUsersAccordion(1);
AuthorizationRoles.clickDeleteRole();
AuthorizationRoles.cancelDeleteRole(testData.roleName);
AuthorizationRoles.clickDeleteRole();
AuthorizationRoles.confirmDeleteRole(testData.roleName);
},
);
});
});
});
3 changes: 2 additions & 1 deletion cypress/support/api/permissions.js
Expand Up @@ -177,11 +177,12 @@ Cypress.Commands.add(
},
);

Cypress.Commands.add('deleteAuthorizationRoleApi', (roleId) => {
Cypress.Commands.add('deleteAuthorizationRoleApi', (roleId, ignoreErrors = false) => {
cy.okapiRequest({
method: 'DELETE',
path: `roles/${roleId}`,
isDefaultSearchParamsRequired: false,
failOnStatusCode: !ignoreErrors,
});
});

Expand Down
Expand Up @@ -20,6 +20,8 @@ const rolesPane = Pane('Authorization roles');
const newButton = Button('+ New');
const actionsButton = Button('Actions');
const editButton = Button('Edit');
const deleteButton = Button('Delete');
const cancelButton = Button('Cancel');
const createRolePane = Pane('Create role');
const editRolePane = Pane('Edit role');
const roleNameInput = TextField('Name*');
Expand Down Expand Up @@ -48,6 +50,11 @@ const capabilityTables = {
Procedural: MultiColumnList({ dataTestId: 'capabilities-procedural-type' }),
};

const roleSearchInputField = rolesPane.find(TextField({ testid: 'search-field' }));
const roleSearchButton = rolesPane.find(Button({ dataTestID: 'search-button' }));
const usersAccordion = Accordion('Assigned users');
const deleteRoleModal = Modal('Delete role');

const getResultsListByColumn = (columnIndex) => {
const cells = [];

Expand Down Expand Up @@ -190,6 +197,7 @@ export default {
cy.do(rolesPane.find(HTML(roleName, { className: including('root') })).click());
cy.expect([
Pane(roleName).exists(),
Spinner().absent(),
capabilitiesAccordion.has({ open: false }),
capabilitySetsAccordion.has({ open: false }),
]);
Expand Down Expand Up @@ -306,4 +314,49 @@ export default {
verifyCapabilitySetTableAbsent(tableName) {
cy.expect(capabilitySetsAccordion.find(capabilityTables[tableName]).absent());
},

searchRole: (roleName) => {
cy.do([roleSearchInputField.fillIn(roleName), roleSearchButton.click()]);
},

checkCapabilitiesAccordionCounter: (expectedCount) => {
cy.expect(capabilitiesAccordion.has({ counter: expectedCount }));
},

checkCapabilitySetsAccordionCounter: (expectedCount) => {
cy.expect(capabilitySetsAccordion.has({ counter: expectedCount }));
},

checkUsersAccordion: (expectedCount = false) => {
cy.expect(usersAccordion.has({ open: true }));
if (expectedCount) cy.expect(usersAccordion.find(MultiColumnList({ rowCount: expectedCount })).exists());
else cy.expect(usersAccordion.find(MultiColumnList()).absent());
},

clickDeleteRole: () => {
cy.do([actionsButton.click(), deleteButton.click()]);
cy.expect([
deleteRoleModal.find(deleteButton).exists(),
deleteRoleModal.find(cancelButton).exists(),
]);
},

cancelDeleteRole: (roleName) => {
cy.do(deleteRoleModal.find(cancelButton).click());
cy.expect([deleteRoleModal.absent(), Pane(roleName).exists()]);
},

confirmDeleteRole: (roleName) => {
cy.do(deleteRoleModal.find(deleteButton).click());
cy.expect([
deleteRoleModal.absent(),
Pane(roleName).absent(),
rolesPane.find(HTML(roleName, { className: including('root') })).absent(),
]);
},

clickOnUsersAccordion: (checkOpen = true) => {
cy.do(usersAccordion.clickHeader());
if (checkOpen) cy.expect(usersAccordion.has({ open: true }));
},
};
1 change: 1 addition & 0 deletions interactors/accordion.js
Expand Up @@ -57,6 +57,7 @@ export default HTML.extend('accordion')
inputNames: (el) => [...el.querySelectorAll('input')].map((input) => input.getAttribute('name')),
isWrapper: (el) => /accordionsWrapper/.test(el.className),
validationMessage: (el) => el.querySelector('[class*=validationMessage]').textContent,
counter: (el) => el.querySelector('span[class^=badge] [class^=label]').textContent,
})
.actions({
clickHeader: ({ perform }) => perform((el) => el.querySelector('[class^=labelArea-]').click()),
Expand Down