mirror of
https://github.com/ceph/ceph
synced 2025-02-24 11:37:37 +00:00
mgr/dashboard: User Management E2E tests (#29641)
mgr/dashboard: User Management E2E tests Reviewed-by: Tiago Melo <tmelo@suse.com> Reviewed-by: Stephan Müller <smueller@suse.com>
This commit is contained in:
commit
862876d900
@ -17,6 +17,7 @@ import { PoolPageHelper } from './pools/pools.po';
|
||||
import { BucketsPageHelper } from './rgw/buckets.po';
|
||||
import { DaemonsPageHelper } from './rgw/daemons.po';
|
||||
import { UsersPageHelper } from './rgw/users.po';
|
||||
import { UserMgmtPageHelper } from './user-mgmt.po';
|
||||
|
||||
export class Helper {
|
||||
static EC = browser.ExpectedConditions;
|
||||
@ -40,6 +41,7 @@ export class Helper {
|
||||
iscsi: IscsiPageHelper;
|
||||
mirroring: MirroringPageHelper;
|
||||
dashboard: DashboardPageHelper;
|
||||
usermgmt: UserMgmtPageHelper;
|
||||
|
||||
constructor() {
|
||||
this.buckets = new BucketsPageHelper();
|
||||
@ -60,6 +62,7 @@ export class Helper {
|
||||
this.iscsi = new IscsiPageHelper();
|
||||
this.mirroring = new MirroringPageHelper();
|
||||
this.dashboard = new DashboardPageHelper();
|
||||
this.usermgmt = new UserMgmtPageHelper();
|
||||
}
|
||||
|
||||
/**
|
||||
|
65
src/pybind/mgr/dashboard/frontend/e2e/user-mgmt.e2e-spec.ts
Normal file
65
src/pybind/mgr/dashboard/frontend/e2e/user-mgmt.e2e-spec.ts
Normal file
@ -0,0 +1,65 @@
|
||||
import { Helper } from './helper.po';
|
||||
|
||||
describe('User Management page', () => {
|
||||
let usermgmt: Helper['usermgmt'];
|
||||
const user_name = 'user_mgmt_create_edit_delete_user';
|
||||
const role_name = 'user_mgmt_create_edit_delete_role';
|
||||
|
||||
beforeAll(() => {
|
||||
usermgmt = new Helper().usermgmt;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
Helper.checkConsole();
|
||||
});
|
||||
|
||||
describe('breadcrumb tests', () => {
|
||||
it('should check breadcrumb on users tab of user management page', () => {
|
||||
usermgmt.navigateTo('users');
|
||||
expect(usermgmt.getBreadcrumbText()).toEqual('Users');
|
||||
});
|
||||
|
||||
it('should check breadcrumb on roles tab of user management page', () => {
|
||||
usermgmt.navigateTo('roles');
|
||||
expect(usermgmt.getBreadcrumbText()).toEqual('Roles');
|
||||
});
|
||||
|
||||
it('should check breadcrumb on user creation page', () => {
|
||||
usermgmt.navigateTo('userCreate');
|
||||
expect(usermgmt.getBreadcrumbText()).toEqual('Create');
|
||||
});
|
||||
|
||||
it('should check breadcrumb on role creation page', () => {
|
||||
usermgmt.navigateTo('roleCreate');
|
||||
expect(usermgmt.getBreadcrumbText()).toEqual('Create');
|
||||
});
|
||||
});
|
||||
|
||||
describe('user create, edit & delete test', () => {
|
||||
it('should create a user', () => {
|
||||
usermgmt.userCreate(user_name, 'cool_password', 'Jeff', 'realemail@realwebsite.com');
|
||||
});
|
||||
|
||||
it('should edit a user', () => {
|
||||
usermgmt.userEdit(user_name, 'cool_password_number_2', 'Geoff', 'w@m');
|
||||
});
|
||||
|
||||
it('should delete a user', () => {
|
||||
usermgmt.userDelete(user_name);
|
||||
});
|
||||
});
|
||||
|
||||
describe('role create, edit & delete test', () => {
|
||||
it('should create a role', () => {
|
||||
usermgmt.roleCreate(role_name, 'An interesting description');
|
||||
});
|
||||
|
||||
it('should edit a role', () => {
|
||||
usermgmt.roleEdit(role_name, 'A far more interesting description');
|
||||
});
|
||||
|
||||
it('should delete a role', () => {
|
||||
usermgmt.roleDelete(role_name);
|
||||
});
|
||||
});
|
||||
});
|
121
src/pybind/mgr/dashboard/frontend/e2e/user-mgmt.po.ts
Normal file
121
src/pybind/mgr/dashboard/frontend/e2e/user-mgmt.po.ts
Normal file
@ -0,0 +1,121 @@
|
||||
import { $, browser, by, element } from 'protractor';
|
||||
import { Helper } from './helper.po';
|
||||
import { PageHelper } from './page-helper.po';
|
||||
|
||||
export class UserMgmtPageHelper extends PageHelper {
|
||||
pages = {
|
||||
index: '/#/user-management',
|
||||
users: '/#/user-management/users',
|
||||
userCreate: '/#/user-management/users/create',
|
||||
roles: '/#/user-management/roles',
|
||||
roleCreate: '/#/user-management/roles/create'
|
||||
};
|
||||
|
||||
userCreate(username, password, name, email) {
|
||||
this.navigateTo('userCreate');
|
||||
|
||||
// fill in fields
|
||||
element(by.id('username')).sendKeys(username);
|
||||
element(by.id('password')).sendKeys(password);
|
||||
element(by.id('confirmpassword')).sendKeys(password);
|
||||
element(by.id('name')).sendKeys(name);
|
||||
element(by.id('email')).sendKeys(email);
|
||||
|
||||
// Click the create button and wait for user to be made
|
||||
const createButton = element(by.cssContainingText('button', 'Create User'));
|
||||
this.moveClick(createButton).then(() => {
|
||||
browser.wait(Helper.EC.presenceOf(this.getTableCell(username)), Helper.TIMEOUT);
|
||||
});
|
||||
}
|
||||
|
||||
userEdit(username, password, name, email) {
|
||||
this.navigateTo('users');
|
||||
|
||||
this.getTableCell(username).click(); // select user from table
|
||||
element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
|
||||
|
||||
// fill in fields with new values
|
||||
element(by.id('password')).clear();
|
||||
element(by.id('password')).sendKeys(password);
|
||||
element(by.id('confirmpassword')).clear();
|
||||
element(by.id('confirmpassword')).sendKeys(password);
|
||||
element(by.id('name')).clear();
|
||||
element(by.id('name')).sendKeys(name);
|
||||
element(by.id('email')).clear();
|
||||
element(by.id('email')).sendKeys(email);
|
||||
|
||||
// Click the edit button and check new values are present in table
|
||||
const editButton = element(by.cssContainingText('button', 'Edit User'));
|
||||
this.moveClick(editButton).then(() => {
|
||||
browser.wait(Helper.EC.presenceOf(this.getTableCell(email)), Helper.TIMEOUT);
|
||||
browser.wait(Helper.EC.presenceOf(this.getTableCell(name)), Helper.TIMEOUT);
|
||||
});
|
||||
}
|
||||
|
||||
userDelete(username) {
|
||||
this.navigateTo('users');
|
||||
|
||||
this.getTableCell(username).click(); // select user from table
|
||||
$('.table-actions button.dropdown-toggle').click(); // click toggle menu
|
||||
$('li.delete a').click(); // click delete
|
||||
|
||||
browser.wait(Helper.EC.visibilityOf($('.custom-control-label')), Helper.TIMEOUT);
|
||||
$('.custom-control-label').click(); // click confirmation checkbox
|
||||
element(by.cssContainingText('button', 'Delete User')) // click delete user button
|
||||
.click()
|
||||
.then(() => {
|
||||
browser.wait(
|
||||
Helper.EC.stalenessOf(this.getFirstTableCellWithText(username)),
|
||||
Helper.TIMEOUT
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
roleCreate(name, description) {
|
||||
this.navigateTo('roleCreate');
|
||||
|
||||
// fill in fields
|
||||
element(by.id('name')).sendKeys(name);
|
||||
element(by.id('description')).sendKeys(description);
|
||||
|
||||
// Click the create button and wait for user to be made
|
||||
const createButton = element(by.cssContainingText('button', 'Create Role'));
|
||||
this.moveClick(createButton).then(() => {
|
||||
browser.wait(Helper.EC.presenceOf(this.getTableCell(name)), Helper.TIMEOUT);
|
||||
});
|
||||
}
|
||||
|
||||
roleEdit(name, description) {
|
||||
this.navigateTo('roles');
|
||||
|
||||
this.getTableCell(name).click(); // select role from table
|
||||
element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
|
||||
|
||||
// fill in fields with new values
|
||||
element(by.id('description')).clear();
|
||||
element(by.id('description')).sendKeys(description);
|
||||
|
||||
// Click the edit button and check new values are present in table
|
||||
const editButton = element(by.cssContainingText('button', 'Edit Role'));
|
||||
this.moveClick(editButton).then(() => {
|
||||
browser.wait(Helper.EC.presenceOf(this.getTableCell(name)), Helper.TIMEOUT);
|
||||
browser.wait(Helper.EC.presenceOf(this.getTableCell(description)), Helper.TIMEOUT);
|
||||
});
|
||||
}
|
||||
|
||||
roleDelete(name) {
|
||||
this.navigateTo('roles');
|
||||
|
||||
this.getTableCell(name).click(); // select role from table
|
||||
$('.table-actions button.dropdown-toggle').click(); // click toggle menu
|
||||
$('li.delete a').click(); // click delete
|
||||
|
||||
browser.wait(Helper.EC.visibilityOf($('.custom-control-label')), Helper.TIMEOUT);
|
||||
$('.custom-control-label').click(); // click confirmation checkbox
|
||||
element(by.cssContainingText('button', 'Delete Role')) // click delete user button
|
||||
.click()
|
||||
.then(() => {
|
||||
browser.wait(Helper.EC.stalenessOf(this.getFirstTableCellWithText(name)), Helper.TIMEOUT);
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user