From bb034b23d2e73e034017a3fafaa5f571360f17a8 Mon Sep 17 00:00:00 2001 From: Nizamudeen A Date: Wed, 24 May 2023 22:15:59 +0530 Subject: [PATCH] mgr/dashboard: add more e2e for cephx users Fixes: https://tracker.ceph.com/issues/61421 Signed-off-by: Nizamudeen A (cherry picked from commit 6bac361b54eb6233b04dfb34c62086a9d3df3c43) --- .../cypress/e2e/cluster/users.e2e-spec.ts | 20 ++++++++++++ .../frontend/cypress/e2e/cluster/users.po.ts | 32 ++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.e2e-spec.ts index d3078937b608e..0d50d0a22d732 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.e2e-spec.ts @@ -15,6 +15,9 @@ describe('Cluster Ceph Users', () => { }); describe('Cluster users table', () => { + const entityName = 'client.test'; + const entity = 'mgr'; + const caps = 'allow r'; it('should verify the table is not empty', () => { users.checkForUsers(); }); @@ -22,5 +25,22 @@ describe('Cluster Ceph Users', () => { it('should verify the keys are hidden', () => { users.verifyKeysAreHidden(); }); + + it('should create a new user', () => { + users.navigateTo('create'); + users.create(entityName, entity, caps); + users.existTableCell(entityName, true); + }); + + it('should edit a user', () => { + const newCaps = 'allow *'; + users.edit(entityName, 'allow *'); + users.existTableCell(entityName, true); + users.checkCaps(entityName, [`${entity}: ${newCaps}`]); + }); + + it('should delete a user', () => { + users.delete(entityName); + }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.po.ts b/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.po.ts index bce659ff005c6..a5b32b72307f4 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.po.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/users.po.ts @@ -1,7 +1,8 @@ import { PageHelper } from '../page-helper.po'; const pages = { - index: { url: '#/ceph-users', id: 'cd-crud-table' } + index: { url: '#/ceph-users', id: 'cd-crud-table' }, + create: { url: '#/cluster/user/create', id: 'cd-crud-form' } }; export class UsersPageHelper extends PageHelper { @@ -26,4 +27,33 @@ export class UsersPageHelper extends PageHelper { expect(serviceInstances).not.contains(/^[a-z0-9]+$/i); }); } + + @PageHelper.restrictTo(pages.create.url) + create(entityName: string, entityType: string, caps: string) { + cy.get('#formly_2_string_user_entity_0').type(entityName); + cy.get('#formly_5_string_entity_0').type(entityType); + cy.get('#formly_5_string_cap_1').type(caps); + cy.get("[aria-label='Create User']").should('exist').click(); + cy.get('cd-crud-table').should('exist'); + } + + edit(name: string, newCaps: string) { + this.navigateEdit(name); + cy.get('#formly_5_string_cap_1').clear().type(newCaps); + cy.get("[aria-label='Edit User']").should('exist').click(); + cy.get('cd-crud-table').should('exist'); + } + + checkCaps(entityName: string, capabilities: string[]) { + this.getTableCell(this.columnIndex.entity, entityName) + .click() + .parent() + .find(`datatable-body-cell:nth-child(${this.columnIndex.capabilities}) .badge`) + .should(($ele) => { + const newCaps = $ele.toArray().map((v) => v.innerText); + for (const cap of capabilities) { + expect(newCaps).to.include(cap); + } + }); + } } -- 2.39.5