create: '/#/rgw/user/create'
};
- create(username, fullname, email, maxbuckets) {
- this.navigateTo('create');
+ async create(username, fullname, email, maxbuckets) {
+ await this.navigateTo('create');
- expect(this.getBreadcrumbText()).toBe('Create');
+ expect(await this.getBreadcrumbText()).toBe('Create');
// Enter in username
- element(by.id('uid')).sendKeys(username);
+ await element(by.id('uid')).sendKeys(username);
// Enter in full name
- this.moveClick(element(by.id('display_name')));
- element(by.id('display_name')).sendKeys(fullname);
+ await element(by.id('display_name')).click();
+ await element(by.id('display_name')).sendKeys(fullname);
// Enter in email
- this.moveClick(element(by.id('email')));
- element(by.id('email')).sendKeys(email);
+ await element(by.id('email')).click();
+ await element(by.id('email')).sendKeys(email);
- // Eneter max buckets
- this.moveClick(element(by.id('max_buckets')));
- element(by.id('max_buckets')).clear();
- element(by.id('max_buckets')).sendKeys(maxbuckets);
+ // Enter max buckets
+ await element(by.id('max_buckets')).click();
+ await element(by.id('max_buckets')).clear();
+ await element(by.id('max_buckets')).sendKeys(maxbuckets);
// 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)), 10000);
- });
+ await element(by.cssContainingText('button', 'Create User')).click();
+ await browser.wait(Helper.EC.presenceOf(this.getTableCell(username)), 10000);
}
- edit(name, new_fullname, new_email, new_maxbuckets) {
- this.navigateTo();
+ async edit(name, new_fullname, new_email, new_maxbuckets) {
+ await this.navigateTo();
- browser.wait(Helper.EC.elementToBeClickable(this.getTableCell(name)), 10000); // wait for table to load
- this.getTableCell(name).click(); // click on the bucket you want to edit in the table
- element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
+ await browser.wait(Helper.EC.elementToBeClickable(this.getTableCell(name)), 10000); // wait for table to load
+ await this.getTableCell(name).click(); // click on the bucket you want to edit in the table
+ await element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
- expect(this.getBreadcrumbText()).toEqual('Edit');
+ expect(await this.getBreadcrumbText()).toEqual('Edit');
// Change the full name field
- this.moveClick(element(by.id('display_name')));
- element(by.id('display_name')).clear();
- element(by.id('display_name')).sendKeys(new_fullname);
+ await element(by.id('display_name')).click();
+ await element(by.id('display_name')).clear();
+ await element(by.id('display_name')).sendKeys(new_fullname);
// Change the email field
- this.moveClick(element(by.id('email')));
- element(by.id('email')).clear();
- element(by.id('email')).sendKeys(new_email);
+ await element(by.id('email')).click();
+ await element(by.id('email')).clear();
+ await element(by.id('email')).sendKeys(new_email);
// Change the max buckets field
- this.moveClick(element(by.id('max_buckets')));
- element(by.id('max_buckets')).clear();
- element(by.id('max_buckets')).sendKeys(new_maxbuckets);
+ await element(by.id('max_buckets')).click();
+ await element(by.id('max_buckets')).clear();
+ await element(by.id('max_buckets')).sendKeys(new_maxbuckets);
const editbutton = element(by.cssContainingText('button', 'Edit User'));
- this.moveClick(editbutton).then(() => {
- browser.wait(Helper.EC.elementToBeClickable(this.getTableCell(name)), 10000).then(() => {
- // Click the user and check its details table for updated content
- this.getTableCell(name).click();
- expect($('.active.tab-pane').getText()).toMatch(new_fullname); // check full name was changed
- expect($('.active.tab-pane').getText()).toMatch(new_email); // check email was changed
- expect($('.active.tab-pane').getText()).toMatch(new_maxbuckets); // check max buckets was changed
- });
- });
+ await editbutton.click();
+ await browser.wait(Helper.EC.elementToBeClickable(this.getTableCell(name)), 10000);
+ // Click the user and check its details table for updated content
+ await this.getTableCell(name).click();
+ expect(await $('.active.tab-pane').getText()).toMatch(new_fullname); // check full name was changed
+ expect(await $('.active.tab-pane').getText()).toMatch(new_email); // check email was changed
+ expect(await $('.active.tab-pane').getText()).toMatch(new_maxbuckets); // check max buckets was changed
}
- delete(name) {
- this.navigateTo();
+ async delete(name) {
+ await this.navigateTo();
// wait for table to load
const my_user = this.getFirstTableCellWithText(name);
- browser.wait(Helper.EC.elementToBeClickable(my_user), 10000);
+ await browser.wait(Helper.EC.elementToBeClickable(my_user), 10000);
- my_user.click(); // click on the user you want to delete in the table
- $('.table-actions button.dropdown-toggle').click(); // click toggle menu
- $('li.delete a').click(); // click delete
+ await my_user.click(); // click on the user you want to delete in the table
+ await $('.table-actions button.dropdown-toggle').click(); // click toggle menu
+ await $('li.delete a').click(); // click delete
// wait for pop-up to be visible (checks for title of pop-up)
- browser.wait(Helper.EC.visibilityOf($('.modal-title.float-left')), 10000).then(() => {
- browser.wait(Helper.EC.visibilityOf($('.custom-control-label')), 5000);
- $('.custom-control-label').click(); // click confirmation checkbox
- element(by.cssContainingText('button', 'Delete user'))
- .click()
- .then(() => {
- browser.wait(
- Helper.EC.not(Helper.EC.presenceOf(this.getFirstTableCellWithText(name))),
- 10000
- );
- });
- });
+ await browser.wait(Helper.EC.visibilityOf($('.modal-title.float-left')), 10000);
+ await browser.wait(Helper.EC.visibilityOf($('.custom-control-label')), 5000);
+ await $('.custom-control-label').click(); // click confirmation checkbox
+ await element(by.cssContainingText('button', 'Delete user')).click();
+ await browser.wait(
+ Helper.EC.not(Helper.EC.presenceOf(this.getFirstTableCellWithText(name))),
+ 10000
+ );
}
- invalidCreate() {
+ async invalidCreate() {
const uname = '000invalid_create_user';
// creating this user in order to check that you can't give two users the same name
- this.create(uname, 'xxx', 'xxx@xxx', '1');
+ await this.create(uname, 'xxx', 'xxx@xxx', '1');
- this.navigateTo('create');
+ await this.navigateTo('create');
const username_field = element(by.id('uid'));
// No username had been entered. Field should be invalid
- expect(username_field.getAttribute('class')).toContain('ng-invalid');
+ expect(await username_field.getAttribute('class')).toContain('ng-invalid');
// Try to give user already taken name. Should make field invalid.
- username_field.clear().then(() => {
- username_field.sendKeys(uname).then(() => {
- browser
- .wait(function() {
- return username_field.getAttribute('class').then(function(classValue) {
- return classValue.indexOf('ng-pending') === -1;
- });
- }, 6000)
- .then(() => {
- expect(username_field.getAttribute('class')).toContain('ng-invalid');
- this.moveClick(element(by.id('display_name'))); // trigger validation check
- expect(element(by.css('#uid + .invalid-feedback')).getText()).toMatch(
- 'The chosen user ID is already in use.'
- );
- });
- });
- });
+ await username_field.clear();
+ await username_field.sendKeys(uname);
+ await browser.wait(
+ async () => !(await username_field.getAttribute('class')).includes('ng-pending'),
+ 6000
+ );
+ expect(await username_field.getAttribute('class')).toContain('ng-invalid');
+ await element(by.id('display_name')).click(); // trigger validation check
+ expect(await element(by.css('#uid + .invalid-feedback')).getText()).toMatch(
+ 'The chosen user ID is already in use.'
+ );
// check that username field is marked invalid if username has been cleared off
for (let i = 0; i < uname.length; i++) {
- username_field.sendKeys(protractor.Key.BACK_SPACE);
+ await username_field.sendKeys(protractor.Key.BACK_SPACE);
}
- expect(username_field.getAttribute('class')).toContain('ng-invalid');
- this.moveClick(element(by.id('display_name'))); // trigger validation check
- expect(element(by.css('#uid + .invalid-feedback')).getText()).toMatch(
+ expect(await username_field.getAttribute('class')).toContain('ng-invalid');
+ await element(by.id('display_name')).click(); // trigger validation check
+ expect(await element(by.css('#uid + .invalid-feedback')).getText()).toMatch(
'This field is required.'
);
// No display name has been given so field should be invalid
- expect(element(by.id('display_name')).getAttribute('class')).toContain('ng-invalid');
+ expect(await element(by.id('display_name')).getAttribute('class')).toContain('ng-invalid');
// display name field should also be marked invalid if given input then emptied
- this.moveClick(element(by.id('display_name')));
- element(by.id('display_name')).sendKeys('a');
- element(by.id('display_name')).sendKeys(protractor.Key.BACK_SPACE);
- expect(element(by.id('display_name')).getAttribute('class')).toContain('ng-invalid');
- this.moveClick(username_field); // trigger validation check
- expect(element(by.css('#display_name + .invalid-feedback')).getText()).toMatch(
+ await element(by.id('display_name')).click();
+ await element(by.id('display_name')).sendKeys('a');
+ await element(by.id('display_name')).sendKeys(protractor.Key.BACK_SPACE);
+ expect(await element(by.id('display_name')).getAttribute('class')).toContain('ng-invalid');
+ await username_field.click(); // trigger validation check
+ expect(await element(by.css('#display_name + .invalid-feedback')).getText()).toMatch(
'This field is required.'
);
// put invalid email to make field invalid
- this.moveClick(element(by.id('email')));
- element(by.id('email')).sendKeys('a');
- expect(element(by.id('email')).getAttribute('class')).toContain('ng-invalid');
- this.moveClick(username_field); // trigger validation check
- expect(element(by.css('#email + .invalid-feedback')).getText()).toMatch(
+ await element(by.id('email')).click();
+ await element(by.id('email')).sendKeys('a');
+ expect(await element(by.id('email')).getAttribute('class')).toContain('ng-invalid');
+ await username_field.click(); // trigger validation check
+ expect(await element(by.css('#email + .invalid-feedback')).getText()).toMatch(
'This is not a valid email address.'
);
// put negative max buckets to make field invalid
- this.moveClick(element(by.id('max_buckets')));
- element(by.id('max_buckets')).clear();
- element(by.id('max_buckets')).sendKeys('-5');
- expect(element(by.id('max_buckets')).getAttribute('class')).toContain('ng-invalid');
- this.moveClick(username_field); // trigger validation check
- expect(element(by.css('#max_buckets + .invalid-feedback')).getText()).toMatch(
+ await element(by.id('max_buckets')).click();
+ await element(by.id('max_buckets')).clear();
+ await element(by.id('max_buckets')).sendKeys('-5');
+ expect(await element(by.id('max_buckets')).getAttribute('class')).toContain('ng-invalid');
+ await username_field.click(); // trigger validation check
+ expect(await element(by.css('#max_buckets + .invalid-feedback')).getText()).toMatch(
'The entered value must be >= 0.'
);
- this.delete(uname);
+ await this.delete(uname);
}
- invalidEdit() {
+ async invalidEdit() {
const uname = '000invalid_edit_user';
// creating this user to edit for the test
- this.create(uname, 'xxx', 'xxx@xxx', '1');
+ await this.create(uname, 'xxx', 'xxx@xxx', '1');
- this.navigateTo();
+ await this.navigateTo();
- browser.wait(Helper.EC.elementToBeClickable(this.getTableCell(uname)), 10000); // wait for table to load
- this.getTableCell(uname).click(); // click on the bucket you want to edit in the table
- element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
+ await browser.wait(Helper.EC.elementToBeClickable(this.getTableCell(uname)), 10000); // wait for table to load
+ await this.getTableCell(uname).click(); // click on the bucket you want to edit in the table
+ await element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
- expect(this.getBreadcrumbText()).toEqual('Edit');
+ expect(await this.getBreadcrumbText()).toEqual('Edit');
// put invalid email to make field invalid
- this.moveClick(element(by.id('email')));
- element(by.id('email')).clear();
- element(by.id('email')).sendKeys('a');
- browser
- .wait(function() {
- return element(by.id('email'))
- .getAttribute('class')
- .then(function(classValue) {
- return classValue.indexOf('ng-pending') === -1;
- });
- }, 6000)
- .then(() => {
- expect(element(by.id('email')).getAttribute('class')).toContain('ng-invalid');
- this.moveClick(element(by.id('display_name'))); // trigger validation check
- expect(element(by.css('#email + .invalid-feedback')).getText()).toMatch(
- 'This is not a valid email address.'
- );
- });
+ await element(by.id('email')).click();
+ await element(by.id('email')).clear();
+ await element(by.id('email')).sendKeys('a');
+ await browser.wait(
+ async () => !(await element(by.id('email')).getAttribute('class')).includes('ng-pending'),
+ 6000
+ );
+ expect(await element(by.id('email')).getAttribute('class')).toContain('ng-invalid');
+ await element(by.id('display_name')).click(); // trigger validation check
+ expect(await element(by.css('#email + .invalid-feedback')).getText()).toMatch(
+ 'This is not a valid email address.'
+ );
// empty the display name field making it invalid
- this.moveClick(element(by.id('display_name')));
+ await element(by.id('display_name')).click();
for (let i = 0; i < 3; i++) {
- element(by.id('display_name')).sendKeys(protractor.Key.BACK_SPACE);
+ await element(by.id('display_name')).sendKeys(protractor.Key.BACK_SPACE);
}
- expect(element(by.id('display_name')).getAttribute('class')).toContain('ng-invalid');
- this.moveClick(element(by.id('email'))); // trigger validation check
- expect(element(by.css('#display_name + .invalid-feedback')).getText()).toMatch(
+ expect(await element(by.id('display_name')).getAttribute('class')).toContain('ng-invalid');
+ await element(by.id('email')).click(); // trigger validation check
+ expect(await element(by.css('#display_name + .invalid-feedback')).getText()).toMatch(
'This field is required.'
);
// put negative max buckets to make field invalid
- this.moveClick(element(by.id('max_buckets')));
- element(by.id('max_buckets')).clear();
- element(by.id('max_buckets')).sendKeys('-5');
- expect(element(by.id('max_buckets')).getAttribute('class')).toContain('ng-invalid');
- this.moveClick(element(by.id('email'))); // trigger validation check
- expect(element(by.css('#max_buckets + .invalid-feedback')).getText()).toMatch(
+ await element(by.id('max_buckets')).click();
+ await element(by.id('max_buckets')).clear();
+ await element(by.id('max_buckets')).sendKeys('-5');
+ expect(await element(by.id('max_buckets')).getAttribute('class')).toContain('ng-invalid');
+ await element(by.id('email')).click(); // trigger validation check
+ expect(await element(by.css('#max_buckets + .invalid-feedback')).getText()).toMatch(
'The entered value must be >= 0.'
);
- this.delete(uname);
+ await this.delete(uname);
}
}