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:
Lenz Grimmer 2019-08-23 14:00:16 +00:00 committed by GitHub
commit 862876d900
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 189 additions and 0 deletions

View File

@ -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();
}
/**

View 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);
});
});
});

View 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);
});
}
}