[ADF-4100] Automate Permission Role dropdown for User (#4331)

* in progress

* in progress

* ADF-4012 pull request ready

* crc's

* crc's - moved the methods ProcessListCloudComponent to dataTablePage, to keep it common.

* crc's - moved the methods ProcessListCloudComponent to dataTablePage, to keep it common.

* changed the locator to use data-automation-id

* linting fix

* test automated - C268974

* test automated - C268974

* crc's

* crc's

* crc's

* crc's

* linting fix

* added automation for C276980 - Duplicate User or Group

* merged the overlapping testcases

* Changed  checkUserHasRoleSelected to use datatable methods

* changed hte usernames to something more relevant and readable.
This commit is contained in:
gmandakini 2019-02-22 14:28:56 +00:00 committed by Eugenio Romano
parent bda7e07b52
commit c066a2f36b
3 changed files with 171 additions and 60 deletions

View File

@ -25,7 +25,6 @@ import { ContentListPage } from '../pages/adf/dialog/contentListPage';
import AlfrescoApi = require('alfresco-js-api-node'); import AlfrescoApi = require('alfresco-js-api-node');
import { FileModel } from '../models/ACS/fileModel'; import { FileModel } from '../models/ACS/fileModel';
import { UploadActions } from '../actions/ACS/upload.actions'; import { UploadActions } from '../actions/ACS/upload.actions';
import { DataTablePage } from '../pages/adf/dataTablePage';
import { Util } from '../util/util'; import { Util } from '../util/util';
import { browser } from 'protractor'; import { browser } from 'protractor';
@ -36,8 +35,7 @@ describe('Permissions Component', function () {
let permissionsPage = new PermissionsPage(); let permissionsPage = new PermissionsPage();
let uploadActions = new UploadActions(); let uploadActions = new UploadActions();
let contentList = new ContentListPage(); let contentList = new ContentListPage();
let dataTablePage = new DataTablePage(); let fileOwnerUser, filePermissionUser, file;
let acsUser, file;
let fileModel = new FileModel({ let fileModel = new FileModel({
'name': resources.Files.ADF_DOCUMENTS.TXT_0B.file_name, 'name': resources.Files.ADF_DOCUMENTS.TXT_0B.file_name,
@ -50,20 +48,25 @@ describe('Permissions Component', function () {
}; };
let groupId; let groupId;
let alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: TestConfig.adf.url
});
fileOwnerUser = new AcsUserModel();
filePermissionUser = new AcsUserModel();
const duplicateUserPermissionMessage = 'One or more of the permissions you have set is already present : authority -> ' + filePermissionUser.getId() + ' / role -> Contributor';
beforeAll(async (done) => { beforeAll(async (done) => {
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: TestConfig.adf.url
});
acsUser = new AcsUserModel(); await alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await alfrescoJsApi.core.peopleApi.addPerson(fileOwnerUser);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); await alfrescoJsApi.core.peopleApi.addPerson(filePermissionUser);
let group = await this.alfrescoJsApi.core.groupsApi.createGroup(groupBody); let group = await alfrescoJsApi.core.groupsApi.createGroup(groupBody);
groupId = group.entry.id; groupId = group.entry.id;
@ -72,63 +75,132 @@ describe('Permissions Component', function () {
done(); done();
}); });
beforeEach(async (done) => {
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
file = await uploadActions.uploadFile(this.alfrescoJsApi, fileModel.location, fileModel.name, '-my-');
loginPage.loginToContentServicesUsingUserModel(acsUser);
contentServicesPage.goToDocumentList();
contentList.checkContentIsDisplayed(fileModel.name);
contentList.rightClickOnRowNamed(fileModel.name);
contentList.pressContextMenuActionNamed('Permission');
done();
});
afterEach(async (done) => {
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, file.entry.id);
done();
});
afterAll(async (done) => { afterAll(async (done) => {
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.groupsApi.deleteGroup(groupId); await alfrescoJsApi.core.groupsApi.deleteGroup(groupId);
done(); done();
}); });
it('[C286272] Should be able to see results when searching for a user', () => { describe('Inherit and assigning permissions', function () {
permissionsPage.checkAddPermissionButtonIsDisplayed();
permissionsPage.clickAddPermissionButton(); beforeEach(async (done) => {
permissionsPage.checkAddPermissionDialogIsDisplayed(); await alfrescoJsApi.login(fileOwnerUser.id, fileOwnerUser.password);
permissionsPage.checkSearchUserInputIsDisplayed();
permissionsPage.searchUserOrGroup('a'); file = await uploadActions.uploadFile(alfrescoJsApi, fileModel.location, fileModel.name, '-my-');
permissionsPage.checkResultListIsDisplayed();
loginPage.loginToContentServicesUsingUserModel(fileOwnerUser);
contentServicesPage.goToDocumentList();
contentList.checkContentIsDisplayed(fileModel.name);
contentList.rightClickOnRowNamed(fileModel.name);
contentList.pressContextMenuActionNamed('Permission');
done();
});
afterEach(async (done) => {
await uploadActions.deleteFilesOrFolder(alfrescoJsApi, file.entry.id);
done();
});
it('[C286272] Should be able to see results when searching for a user', () => {
permissionsPage.checkAddPermissionButtonIsDisplayed();
permissionsPage.clickAddPermissionButton();
permissionsPage.checkAddPermissionDialogIsDisplayed();
permissionsPage.checkSearchUserInputIsDisplayed();
permissionsPage.searchUserOrGroup('a');
permissionsPage.checkResultListIsDisplayed();
});
it('[C276979] Should be able to give permissions to a group of people', () => {
permissionsPage.checkAddPermissionButtonIsDisplayed();
permissionsPage.clickAddPermissionButton();
permissionsPage.checkAddPermissionDialogIsDisplayed();
permissionsPage.checkSearchUserInputIsDisplayed();
permissionsPage.searchUserOrGroup('GROUP_' + groupBody.id);
permissionsPage.clickUserOrGroup('GROUP_' + groupBody.id);
permissionsPage.checkUserOrGroupIsAdded('GROUP_' + groupBody.id);
});
it('[C268974] Inherit Permission', () => {
permissionsPage.checkPermissionInheritedButtonIsDisplayed();
expect(permissionsPage.getPermissionInheritedButtonText()).toBe('Permission Inherited');
permissionsPage.checkPermissionsDatatableIsDisplayed();
permissionsPage.clickPermissionInheritedButton();
expect(permissionsPage.getPermissionInheritedButtonText()).toBe('Inherit Permission');
permissionsPage.checkNoPermissionsIsDisplayed();
permissionsPage.clickPermissionInheritedButton();
expect(permissionsPage.getPermissionInheritedButtonText()).toBe('Permission Inherited');
permissionsPage.checkPermissionsDatatableIsDisplayed();
});
}); });
it('[C276979] Should be able to give permissions to a group of people', () => { describe('Changing and duplicate Permissions', function () {
permissionsPage.checkAddPermissionButtonIsDisplayed();
permissionsPage.clickAddPermissionButton(); beforeEach(async (done) => {
permissionsPage.checkAddPermissionDialogIsDisplayed(); await alfrescoJsApi.login(fileOwnerUser.id, fileOwnerUser.password);
permissionsPage.checkSearchUserInputIsDisplayed();
permissionsPage.searchUserOrGroup('GROUP_' + groupBody.id); file = await uploadActions.uploadFile(alfrescoJsApi, fileModel.location, fileModel.name, '-my-');
permissionsPage.clickUserOrGroup('GROUP_' + groupBody.id);
permissionsPage.checkUserOrGroupIsAdded('GROUP_' + groupBody.id); loginPage.loginToContentServicesUsingUserModel(fileOwnerUser);
}); contentServicesPage.goToDocumentList();
contentList.checkContentIsDisplayed(fileModel.name);
contentList.rightClickOnRowNamed(fileModel.name);
contentList.pressContextMenuActionNamed('Permission');
permissionsPage.checkAddPermissionButtonIsDisplayed();
permissionsPage.clickAddPermissionButton();
permissionsPage.checkAddPermissionDialogIsDisplayed();
permissionsPage.checkSearchUserInputIsDisplayed();
permissionsPage.searchUserOrGroup(filePermissionUser.getId());
permissionsPage.clickUserOrGroup(filePermissionUser.getFirstName());
permissionsPage.checkUserOrGroupIsAdded(filePermissionUser.getId());
done();
});
afterEach(async (done) => {
await uploadActions.deleteFilesOrFolder(alfrescoJsApi, file.entry.id);
done();
});
it('[C274691] Should be able to add a new User with permission to the file and also change locally set permissions', () => {
expect(permissionsPage.getRoleCellValue(filePermissionUser.getId())).toEqual('Contributor');
permissionsPage.clickRoleDropdown();
expect(permissionsPage.getRoleDropdownOptions().count()).toBe(5);
expect(permissionsPage.getRoleDropdownOptions().get(0).getText()).toBe('Contributor');
expect(permissionsPage.getRoleDropdownOptions().get(1).getText()).toBe('Collaborator');
expect(permissionsPage.getRoleDropdownOptions().get(2).getText()).toBe('Coordinator');
expect(permissionsPage.getRoleDropdownOptions().get(3).getText()).toBe('Editor');
expect(permissionsPage.getRoleDropdownOptions().get(4).getText()).toBe('Consumer');
permissionsPage.selectOption('Collaborator');
expect(permissionsPage.getRoleCellValue(filePermissionUser.getId())).toEqual('Collaborator');
permissionsPage.clickRoleDropdown();
permissionsPage.selectOption('Coordinator');
expect(permissionsPage.getRoleCellValue(filePermissionUser.getId())).toEqual('Coordinator');
permissionsPage.clickRoleDropdown();
permissionsPage.selectOption('Editor');
expect(permissionsPage.getRoleCellValue(filePermissionUser.getId())).toEqual('Editor');
permissionsPage.clickRoleDropdown();
permissionsPage.selectOption('Consumer');
expect(permissionsPage.getRoleCellValue(filePermissionUser.getId())).toEqual('Consumer');
});
it('[C276980] Should not be able to duplicate User or Group to the locally set permissions', () => {
expect(permissionsPage.getRoleCellValue(filePermissionUser.getId())).toEqual('Contributor');
permissionsPage.clickAddPermissionButton();
permissionsPage.checkAddPermissionDialogIsDisplayed();
permissionsPage.checkSearchUserInputIsDisplayed();
permissionsPage.searchUserOrGroup(filePermissionUser.getId());
permissionsPage.clickUserOrGroup(filePermissionUser.getFirstName());
expect(permissionsPage.getAssignPermissionErrorText()).toBe(duplicateUserPermissionMessage);
});
it('[C268974] Inherit Permission', () => {
permissionsPage.checkPermissionInheritedButtonIsDisplayed();
expect(permissionsPage.getPermissionInheritedButtonText()).toBe('Permission Inherited');
permissionsPage.checkPermissionsDatatableIsDisplayed();
permissionsPage.clickPermissionInheritedButton();
expect(permissionsPage.getPermissionInheritedButtonText()).toBe('Inherit Permission');
permissionsPage.checkNoPermissionsIsDisplayed();
permissionsPage.clickPermissionInheritedButton();
expect(permissionsPage.getPermissionInheritedButtonText()).toBe('Permission Inherited');
permissionsPage.checkPermissionsDatatableIsDisplayed();
}); });
}); });

View File

@ -274,4 +274,8 @@ export class DataTablePage {
return this.allColumns.count(); return this.allColumns.count();
} }
getCellByNameAndColumn(content, columnName) {
return this.getRowByRowName(content).element(by.css(`div[title='${columnName}']`));
}
} }

View File

@ -20,6 +20,10 @@ import { element, by } from 'protractor';
import { Util } from '../../util/util'; import { Util } from '../../util/util';
import { DataTablePage } from './dataTablePage'; import { DataTablePage } from './dataTablePage';
let column = {
role: 'Role'
};
export class PermissionsPage { export class PermissionsPage {
addPermissionButton = element(by.css("button[data-automation-id='adf-add-permission-button']")); addPermissionButton = element(by.css("button[data-automation-id='adf-add-permission-button']"));
@ -30,6 +34,9 @@ export class PermissionsPage {
permissionInheritedButton = element.all(by.css("div[class='adf-inherit_permission_button'] button")).first(); permissionInheritedButton = element.all(by.css("div[class='adf-inherit_permission_button'] button")).first();
permissionInheritedButtonText = this.permissionInheritedButton.element(by.css('span')); permissionInheritedButtonText = this.permissionInheritedButton.element(by.css('span'));
noPermissions = element(by.css('div[id="adf-no-permissions-template"]')); noPermissions = element(by.css('div[id="adf-no-permissions-template"]'));
roleDropdown = element(by.id('adf-select-role-permission'));
roleDropdownOptions = element.all(by.css('.mat-option-text'));
assignPermissionError = element(by.css('simple-snack-bar'));
checkAddPermissionButtonIsDisplayed() { checkAddPermissionButtonIsDisplayed() {
Util.waitUntilElementIsVisible(this.addPermissionButton); Util.waitUntilElementIsVisible(this.addPermissionButton);
@ -92,4 +99,32 @@ export class PermissionsPage {
return new DataTablePage(element(by.css('[class*="adf-datatable-permission"]'))); return new DataTablePage(element(by.css('[class*="adf-datatable-permission"]')));
} }
getRoleCellValue(rowName) {
let locator = new DataTablePage().getCellByNameAndColumn(rowName, column.role);
Util.waitUntilElementIsVisible(locator);
return locator.getText();
}
clickRoleDropdown() {
Util.waitUntilElementIsVisible(this.roleDropdown);
return this.roleDropdown.click();
}
getRoleDropdownOptions() {
Util.waitUntilElementIsVisible(this.roleDropdownOptions);
return this.roleDropdownOptions;
}
selectOption(name) {
let selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name));
Util.waitUntilElementIsVisible(selectProcessDropdown);
Util.waitUntilElementIsClickable(selectProcessDropdown);
selectProcessDropdown.click();
return this;
}
getAssignPermissionErrorText() {
Util.waitUntilElementIsVisible(this.assignPermissionError);
return this.assignPermissionError.getText();
}
} }