mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			166 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
///<reference path="../../global.d.ts" />
 | 
						|
 | 
						|
import {
 | 
						|
    PA_ASSIGN_BUTTON_ID,
 | 
						|
    PA_ASSIGN_CREATE_ID,
 | 
						|
    PA_EDIT_BUTTON_ID,
 | 
						|
    PA_REMOVE_BUTTON_ID,
 | 
						|
    PA_ROLE_ID,
 | 
						|
    PA_USERS_GROUPS_ID,
 | 
						|
    PA_USERS_GROUPS_TITLE_ID,
 | 
						|
    //@ts-ignore
 | 
						|
} from '../../../src/utils/testIds';
 | 
						|
 | 
						|
describe('project-access', () => {
 | 
						|
    const baseUrl = Cypress.config().baseUrl;
 | 
						|
    const randomId = String(Math.random()).split('.')[1];
 | 
						|
    const groupAndProjectName = `group-e2e-${randomId}`;
 | 
						|
    const userName = `user-e2e-${randomId}`;
 | 
						|
    const groupIds: any[] = [];
 | 
						|
    const userIds: any[] = [];
 | 
						|
 | 
						|
    before(() => {
 | 
						|
        cy.runBefore();
 | 
						|
        cy.login_UI();
 | 
						|
        for (let i = 1; i <= 2; i++) {
 | 
						|
            const name = `${i}-${userName}`;
 | 
						|
            cy.request('POST', `${baseUrl}/api/admin/user-admin`, {
 | 
						|
                name: name,
 | 
						|
                email: `${name}@test.com`,
 | 
						|
                sendEmail: false,
 | 
						|
                rootRole: 3,
 | 
						|
            })
 | 
						|
                .as(name)
 | 
						|
                .then((response) => {
 | 
						|
                    const id = response.body.id;
 | 
						|
                    userIds.push(id);
 | 
						|
                    cy.request('POST', `${baseUrl}/api/admin/groups`, {
 | 
						|
                        name: `${i}-${groupAndProjectName}`,
 | 
						|
                        users: [{ user: { id: id } }],
 | 
						|
                    }).then((response) => {
 | 
						|
                        const id = response.body.id;
 | 
						|
                        groupIds.push(id);
 | 
						|
                    });
 | 
						|
                });
 | 
						|
        }
 | 
						|
        cy.request('POST', `${baseUrl}/api/admin/projects`, {
 | 
						|
            id: groupAndProjectName,
 | 
						|
            name: groupAndProjectName,
 | 
						|
        });
 | 
						|
    });
 | 
						|
 | 
						|
    after(() => {
 | 
						|
        userIds.forEach((id) =>
 | 
						|
            cy.request('DELETE', `${baseUrl}/api/admin/user-admin/${id}`),
 | 
						|
        );
 | 
						|
        groupIds.forEach((id) =>
 | 
						|
            cy.request('DELETE', `${baseUrl}/api/admin/groups/${id}`),
 | 
						|
        );
 | 
						|
 | 
						|
        cy.request(
 | 
						|
            'DELETE',
 | 
						|
            `${baseUrl}/api/admin/projects/${groupAndProjectName}`,
 | 
						|
        );
 | 
						|
    });
 | 
						|
 | 
						|
    beforeEach(() => {
 | 
						|
        cy.login_UI();
 | 
						|
 | 
						|
        cy.visit(`/projects/${groupAndProjectName}/settings/access`);
 | 
						|
        if (document.querySelector("[data-testid='CLOSE_SPLASH']")) {
 | 
						|
            cy.get("[data-testid='CLOSE_SPLASH']").click();
 | 
						|
        }
 | 
						|
    });
 | 
						|
 | 
						|
    it('can assign permissions to user', () => {
 | 
						|
        cy.get(`[data-testid='${PA_ASSIGN_BUTTON_ID}']`).click();
 | 
						|
 | 
						|
        cy.intercept(
 | 
						|
            'POST',
 | 
						|
            `/api/admin/projects/${groupAndProjectName}/access`,
 | 
						|
        ).as('assignAccess');
 | 
						|
 | 
						|
        cy.get(`[data-testid='${PA_USERS_GROUPS_ID}']`).click();
 | 
						|
        cy.contains(`1-${userName}`).click();
 | 
						|
        cy.get(`[data-testid='${PA_USERS_GROUPS_TITLE_ID}']`).click();
 | 
						|
        cy.get(`[data-testid='${PA_ROLE_ID}']`).click();
 | 
						|
        cy.contains('full control over the project').click({ force: true });
 | 
						|
 | 
						|
        cy.get(`[data-testid='${PA_ASSIGN_CREATE_ID}']`).click();
 | 
						|
        cy.wait('@assignAccess');
 | 
						|
        cy.contains(`1-${userName}`);
 | 
						|
    });
 | 
						|
 | 
						|
    it('can assign permissions to group', () => {
 | 
						|
        cy.get(`[data-testid='${PA_ASSIGN_BUTTON_ID}']`).click();
 | 
						|
 | 
						|
        cy.intercept(
 | 
						|
            'POST',
 | 
						|
            `/api/admin/projects/${groupAndProjectName}/access`,
 | 
						|
        ).as('assignAccess');
 | 
						|
 | 
						|
        cy.get(`[data-testid='${PA_USERS_GROUPS_ID}']`).click();
 | 
						|
        cy.contains(`1-${groupAndProjectName}`).click({ force: true });
 | 
						|
        cy.get(`[data-testid='${PA_USERS_GROUPS_TITLE_ID}']`).click();
 | 
						|
        cy.get(`[data-testid='${PA_ROLE_ID}']`).click();
 | 
						|
        cy.contains('full control over the project').click({ force: true });
 | 
						|
 | 
						|
        cy.get(`[data-testid='${PA_ASSIGN_CREATE_ID}']`).click();
 | 
						|
        cy.wait('@assignAccess');
 | 
						|
        cy.contains(`1-${groupAndProjectName}`);
 | 
						|
    });
 | 
						|
 | 
						|
    it('can edit role', () => {
 | 
						|
        cy.get(`[data-testid='${PA_EDIT_BUTTON_ID}']`).first().click();
 | 
						|
 | 
						|
        cy.intercept(
 | 
						|
            'PUT',
 | 
						|
            `/api/admin/projects/${groupAndProjectName}/groups/${groupIds[0]}/roles`,
 | 
						|
        ).as('editAccess');
 | 
						|
 | 
						|
        cy.get(`[data-testid='CancelIcon']`).last().click();
 | 
						|
        cy.get(`[data-testid='${PA_ROLE_ID}']`).click();
 | 
						|
        cy.contains('update feature flags within a project').click({
 | 
						|
            force: true,
 | 
						|
        });
 | 
						|
 | 
						|
        cy.get(`[data-testid='${PA_ASSIGN_CREATE_ID}']`).click();
 | 
						|
        cy.wait('@editAccess');
 | 
						|
        cy.get("td span:contains('Owner')").should('have.length', 2);
 | 
						|
        cy.get("td span:contains('Member')").should('have.length', 1);
 | 
						|
    });
 | 
						|
 | 
						|
    it('can edit role to multiple roles', () => {
 | 
						|
        cy.get(`[data-testid='${PA_EDIT_BUTTON_ID}']`).first().click();
 | 
						|
 | 
						|
        cy.intercept(
 | 
						|
            'PUT',
 | 
						|
            `/api/admin/projects/${groupAndProjectName}/groups/${groupIds[0]}/roles`,
 | 
						|
        ).as('editAccess');
 | 
						|
 | 
						|
        cy.get(`[data-testid='${PA_ROLE_ID}']`).click();
 | 
						|
        cy.contains('full control over the project').click({
 | 
						|
            force: true,
 | 
						|
        });
 | 
						|
 | 
						|
        cy.get(`[data-testid='${PA_ASSIGN_CREATE_ID}']`).click();
 | 
						|
        cy.wait('@editAccess');
 | 
						|
        cy.get("td span:contains('Owner')").should('have.length', 2);
 | 
						|
        cy.get("td span:contains('2 roles')").should('have.length', 1);
 | 
						|
    });
 | 
						|
 | 
						|
    it('can remove access', () => {
 | 
						|
        cy.get(`[data-testid='${PA_REMOVE_BUTTON_ID}']`).first().click();
 | 
						|
 | 
						|
        cy.intercept(
 | 
						|
            'DELETE',
 | 
						|
            `/api/admin/projects/${groupAndProjectName}/groups/${groupIds[0]}/roles`,
 | 
						|
        ).as('removeAccess');
 | 
						|
 | 
						|
        cy.contains("Yes, I'm sure").click();
 | 
						|
 | 
						|
        cy.wait('@removeAccess');
 | 
						|
        cy.contains(`1-${groupAndProjectName} has been removed from project`);
 | 
						|
    });
 | 
						|
});
 |