Skip to content

Commit 5ae51ee

Browse files
Yonas BerheYonas Berhe
Yonas Berhe
authored and
Yonas Berhe
committed
select all custom permissions
1 parent 4421b73 commit 5ae51ee

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

Diff for: cypress/e2e/po/pages/explorer/cluster-project-members.po.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import AsyncButtonPo from '@/cypress/e2e/po/components/async-button.po';
55
import RadioGroupInputPo from '@/cypress/e2e/po/components/radio-group-input.po';
66
import CheckboxInputPo from '@/cypress/e2e/po/components/checkbox-input.po';
77
import SortableTablePo from '@/cypress/e2e/po/components/sortable-table.po';
8-
8+
import BannersPo from '@/cypress/e2e/po/components/banners.po';
99
export default class ClusterProjectMembersPo extends PagePo {
1010
private static createPath(clusterId: string, tabId: string) {
1111
return `/c/${ clusterId }/explorer/members#${ tabId }`;
@@ -45,6 +45,10 @@ export default class ClusterProjectMembersPo extends PagePo {
4545
permissionOptions.set(3);
4646
}
4747

48+
customPermissionsCheckboxes() {
49+
return cy.get('.custom-permissions').find('.checkbox-container');
50+
}
51+
4852
checkTheseProjectCustomPermissions(permissionIndices: number[]) {
4953
permissionIndices.forEach((permissionIndex) => {
5054
const checkbox = new CheckboxInputPo(`[data-testid="custom-permission-${ permissionIndex }"]`);
@@ -66,6 +70,10 @@ export default class ClusterProjectMembersPo extends PagePo {
6670
return new AsyncButtonPo('[data-testid="form-cancel"]', this.self());
6771
}
6872

73+
createFormErrorBanner(): BannersPo {
74+
return new BannersPo('.card-body [data-testid="banner-content"]');
75+
}
76+
6977
resourcesList() {
7078
return new BaseResourceList(this.self());
7179
}

Diff for: cypress/e2e/tests/pages/explorer2/cluster-project-members.spec.ts

+26-4
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ describe('Cluster Project and Members', { tags: ['@explorer2', '@adminUser'] },
6161
});
6262
});
6363
});
64+
6465
it('Clicking cancel should return to Cluster and Project members ', () => {
6566
HomePagePo.goTo();
6667
const clusterMembership = new ClusterProjectMembersPo('local', 'cluster-membership');
@@ -73,6 +74,7 @@ describe('Cluster Project and Members', { tags: ['@explorer2', '@adminUser'] },
7374
clusterMembership.cancelCreateForm().click();
7475
clusterMembership.waitForPageWithExactUrl();
7576
});
77+
7678
it('Can create a member with custom permissions', () => {
7779
// add user to Cluster membership
7880
const projectMembership = new ClusterProjectMembersPo('local', 'project-membership');
@@ -82,12 +84,28 @@ describe('Cluster Project and Members', { tags: ['@explorer2', '@adminUser'] },
8284
projectMembership.triggerAddProjectMemberAction('default');
8385
projectMembership.selectProjectCustomPermission();
8486
projectMembership.selectClusterOrProjectMember(username);
85-
projectMembership.checkTheseProjectCustomPermissions([0, 1]);
87+
88+
// testing https://github.com/rancher/dashboard/issues/13764
89+
// select all project roles
90+
projectMembership.customPermissionsCheckboxes().then(($checkboxes) => {
91+
const indexes = Array.from({ length: $checkboxes.length }, (_, i) => i);
92+
93+
projectMembership.checkTheseProjectCustomPermissions(indexes);
94+
});
95+
96+
// store checkbox labels in an alias
97+
projectMembership.customPermissionsCheckboxes().find('span.checkbox-label').then(($labels) => {
98+
const labels = $labels.toArray().map((label) => Cypress.$(label).text().trim());
99+
100+
cy.wrap(labels).as('checkboxLabels');
101+
});
86102

87103
cy.intercept('POST', '/v3/projectroletemplatebindings').as('createProjectMembership');
88104
projectMembership.submitProjectCreateButton();
89-
cy.wait('@createProjectMembership');
105+
cy.wait('@createProjectMembership').its('response.statusCode').should('eq', 201);
106+
projectMembership.createFormErrorBanner().checkNotExists();
90107
cy.get('.modal-overlay').should('not.exist');
108+
projectMembership.waitForPage();
91109

92110
projectMembership.goTo();
93111
projectMembership.waitForPageWithSpecificUrl('/c/local/explorer/members#project-membership');
@@ -96,12 +114,16 @@ describe('Cluster Project and Members', { tags: ['@explorer2', '@adminUser'] },
96114
if (el.find('tr.no-rows').is(':visible')) {
97115
cy.reload();
98116
}
117+
});
99118

119+
// retrieve the labels and assert UI contains each label
120+
cy.get('@checkboxLabels').then((labels: any) => {
100121
projectMembership.projectTable().rowElementWithName(username).find('td:nth-of-type(3)').first()
101122
.invoke('text')
102123
.then((t) => {
103-
expect(t).to.include('Create Namespaces');
104-
expect(t).to.include('Manage Config Maps');
124+
labels.forEach((label) => {
125+
expect(t).to.include(label);
126+
});
105127
});
106128
});
107129
});

0 commit comments

Comments
 (0)