mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-28 00:06:53 +01:00
672a3f0b92
* fix: group project access inconsistencies * fix relative path * wip * refactor: make project tabs work as routes * refactor: finish refactoring project assign forms * fix: update snaps * fix: update snaps * add some basic cypress e2e tests to groups * add remaining cypress e2e tests for group CRUD * add groups e2e to gh workflows * refactor: simplify useMemo usage * add GO_BACK navigate const * fix: remove trailing slash on user creation request Co-authored-by: olav <mail@olav.io> Co-authored-by: Fredrik Strand Oseberg <fredrik.no@gmail.com>
161 lines
5.5 KiB
TypeScript
161 lines
5.5 KiB
TypeScript
/// <reference types="cypress" />
|
|
|
|
export {};
|
|
const baseUrl = Cypress.config().baseUrl;
|
|
const randomId = String(Math.random()).split('.')[1];
|
|
const groupName = `unleash-e2e-${randomId}`;
|
|
const userIds: any[] = [];
|
|
|
|
// Disable all active splash pages by visiting them.
|
|
const disableActiveSplashScreens = () => {
|
|
cy.visit(`/splash/operators`);
|
|
};
|
|
|
|
describe('groups', () => {
|
|
before(() => {
|
|
disableActiveSplashScreens();
|
|
cy.login();
|
|
for (let i = 1; i <= 2; i++) {
|
|
cy.request('POST', `${baseUrl}/api/admin/user-admin`, {
|
|
name: `unleash-e2e-user${i}-${randomId}`,
|
|
email: `unleash-e2e-user${i}-${randomId}@test.com`,
|
|
sendEmail: false,
|
|
rootRole: 3,
|
|
}).then(response => userIds.push(response.body.id));
|
|
}
|
|
});
|
|
|
|
after(() => {
|
|
userIds.forEach(id =>
|
|
cy.request('DELETE', `${baseUrl}/api/admin/user-admin/${id}`)
|
|
);
|
|
});
|
|
|
|
beforeEach(() => {
|
|
cy.login();
|
|
cy.visit('/admin/groups');
|
|
if (document.querySelector("[data-testid='CLOSE_SPLASH']")) {
|
|
cy.get("[data-testid='CLOSE_SPLASH']").click();
|
|
}
|
|
});
|
|
|
|
it('gives an error if a group does not have an owner', () => {
|
|
cy.get("[data-testid='NAVIGATE_TO_CREATE_GROUP']").click();
|
|
|
|
cy.intercept('POST', '/api/admin/groups').as('createGroup');
|
|
|
|
cy.get("[data-testid='UG_NAME_ID']").type(groupName);
|
|
cy.get("[data-testid='UG_DESC_ID']").type('hello-world');
|
|
cy.get("[data-testid='UG_USERS_ID']").click();
|
|
cy.contains(`unleash-e2e-user1-${randomId}`).click();
|
|
cy.get("[data-testid='UG_USERS_ADD_ID']").click();
|
|
|
|
cy.get("[data-testid='UG_CREATE_BTN_ID']").click();
|
|
cy.get("[data-testid='TOAST_TEXT']").contains(
|
|
'Group needs to have at least one Owner'
|
|
);
|
|
});
|
|
|
|
it('can create a group', () => {
|
|
cy.get("[data-testid='NAVIGATE_TO_CREATE_GROUP']").click();
|
|
|
|
cy.intercept('POST', '/api/admin/groups').as('createGroup');
|
|
|
|
cy.get("[data-testid='UG_NAME_ID']").type(groupName);
|
|
cy.get("[data-testid='UG_DESC_ID']").type('hello-world');
|
|
cy.get("[data-testid='UG_USERS_ID']").click();
|
|
cy.contains(`unleash-e2e-user1-${randomId}`).click();
|
|
cy.get("[data-testid='UG_USERS_ADD_ID']").click();
|
|
cy.get("[data-testid='UG_USERS_TABLE_ROLE_ID']").click();
|
|
cy.contains('Owner').click();
|
|
|
|
cy.get("[data-testid='UG_CREATE_BTN_ID']").click();
|
|
cy.wait('@createGroup');
|
|
cy.contains(groupName);
|
|
});
|
|
|
|
it('gives an error if a group exists with the same name', () => {
|
|
cy.get("[data-testid='NAVIGATE_TO_CREATE_GROUP']").click();
|
|
|
|
cy.intercept('POST', '/api/admin/groups').as('createGroup');
|
|
|
|
cy.get("[data-testid='UG_NAME_ID']").type(groupName);
|
|
cy.get("[data-testid='UG_DESC_ID']").type('hello-world');
|
|
cy.get("[data-testid='UG_USERS_ID']").click();
|
|
cy.contains(`unleash-e2e-user1-${randomId}`).click();
|
|
cy.get("[data-testid='UG_USERS_ADD_ID']").click();
|
|
cy.get("[data-testid='UG_USERS_TABLE_ROLE_ID']").click();
|
|
cy.contains('Owner').click();
|
|
|
|
cy.get("[data-testid='UG_CREATE_BTN_ID']").click();
|
|
cy.get("[data-testid='TOAST_TEXT']").contains(
|
|
'Group name already exists'
|
|
);
|
|
});
|
|
|
|
it('can edit a group', () => {
|
|
cy.contains(groupName).click();
|
|
|
|
cy.get("[data-testid='UG_EDIT_BTN_ID']").click();
|
|
|
|
cy.get("[data-testid='UG_DESC_ID']").type('-my edited description');
|
|
|
|
cy.get("[data-testid='UG_SAVE_BTN_ID']").click();
|
|
|
|
cy.contains('hello-world-my edited description');
|
|
});
|
|
|
|
it('can add user to a group', () => {
|
|
cy.contains(groupName).click();
|
|
|
|
cy.get("[data-testid='UG_ADD_USER_BTN_ID']").click();
|
|
|
|
cy.get("[data-testid='UG_USERS_ID']").click();
|
|
cy.contains(`unleash-e2e-user2-${randomId}`).click();
|
|
cy.get("[data-testid='UG_USERS_ADD_ID']").click();
|
|
|
|
cy.get("[data-testid='UG_SAVE_BTN_ID']").click();
|
|
|
|
cy.contains(`unleash-e2e-user1-${randomId}`);
|
|
cy.contains(`unleash-e2e-user2-${randomId}`);
|
|
cy.get("td span:contains('Owner')").should('have.length', 1);
|
|
cy.get("td span:contains('Member')").should('have.length', 1);
|
|
});
|
|
|
|
it('can edit user role in a group', () => {
|
|
cy.contains(groupName).click();
|
|
|
|
cy.get(`[data-testid='UG_EDIT_USER_BTN_ID-${userIds[1]}']`).click();
|
|
|
|
cy.get("[data-testid='UG_USERS_ROLE_ID']").click();
|
|
cy.get("li[data-value='Owner']").click();
|
|
|
|
cy.get("[data-testid='UG_SAVE_BTN_ID']").click();
|
|
|
|
cy.contains(`unleash-e2e-user1-${randomId}`);
|
|
cy.contains(`unleash-e2e-user2-${randomId}`);
|
|
cy.get("td span:contains('Owner')").should('have.length', 2);
|
|
cy.contains('Member').should('not.exist');
|
|
});
|
|
|
|
it('can remove user from a group', () => {
|
|
cy.contains(groupName).click();
|
|
|
|
cy.get(`[data-testid='UG_REMOVE_USER_BTN_ID-${userIds[1]}']`).click();
|
|
|
|
cy.get("[data-testid='DIALOGUE_CONFIRM_ID'").click();
|
|
|
|
cy.contains(`unleash-e2e-user1-${randomId}`);
|
|
cy.contains(`unleash-e2e-user2-${randomId}`).should('not.exist');
|
|
});
|
|
|
|
it('can delete a group', () => {
|
|
cy.contains(groupName).click();
|
|
|
|
cy.get("[data-testid='UG_DELETE_BTN_ID']").click();
|
|
cy.get("[data-testid='DIALOGUE_CONFIRM_ID'").click();
|
|
|
|
cy.contains(groupName).should('not.exist');
|
|
});
|
|
});
|