diff --git a/e2e/content-services/permissions-component.e2e.ts b/e2e/content-services/permissions-component.e2e.ts index 554beaab56..468e34fca5 100644 --- a/e2e/content-services/permissions-component.e2e.ts +++ b/e2e/content-services/permissions-component.e2e.ts @@ -25,7 +25,6 @@ import { ContentListPage } from '../pages/adf/dialog/contentListPage'; import AlfrescoApi = require('alfresco-js-api-node'); import { FileModel } from '../models/ACS/fileModel'; import { UploadActions } from '../actions/ACS/upload.actions'; -import { DataTablePage } from '../pages/adf/dataTablePage'; import { Util } from '../util/util'; import { browser } from 'protractor'; @@ -36,8 +35,7 @@ describe('Permissions Component', function () { let permissionsPage = new PermissionsPage(); let uploadActions = new UploadActions(); let contentList = new ContentListPage(); - let dataTablePage = new DataTablePage(); - let acsUser, file; + let fileOwnerUser, filePermissionUser, file; let fileModel = new FileModel({ 'name': resources.Files.ADF_DOCUMENTS.TXT_0B.file_name, @@ -50,20 +48,25 @@ describe('Permissions Component', function () { }; 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) => { - 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; @@ -72,63 +75,132 @@ describe('Permissions Component', function () { 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) => { - 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(); }); - 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(); + describe('Inherit and assigning permissions', function () { + + beforeEach(async (done) => { + await alfrescoJsApi.login(fileOwnerUser.id, fileOwnerUser.password); + + file = await uploadActions.uploadFile(alfrescoJsApi, fileModel.location, fileModel.name, '-my-'); + + 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', () => { - permissionsPage.checkAddPermissionButtonIsDisplayed(); - permissionsPage.clickAddPermissionButton(); - permissionsPage.checkAddPermissionDialogIsDisplayed(); - permissionsPage.checkSearchUserInputIsDisplayed(); - permissionsPage.searchUserOrGroup('GROUP_' + groupBody.id); - permissionsPage.clickUserOrGroup('GROUP_' + groupBody.id); - permissionsPage.checkUserOrGroupIsAdded('GROUP_' + groupBody.id); - }); + describe('Changing and duplicate Permissions', function () { + + beforeEach(async (done) => { + await alfrescoJsApi.login(fileOwnerUser.id, fileOwnerUser.password); + + file = await uploadActions.uploadFile(alfrescoJsApi, fileModel.location, fileModel.name, '-my-'); + + 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(); }); }); diff --git a/e2e/pages/adf/dataTablePage.ts b/e2e/pages/adf/dataTablePage.ts index 6f355536b5..9057415c00 100644 --- a/e2e/pages/adf/dataTablePage.ts +++ b/e2e/pages/adf/dataTablePage.ts @@ -274,4 +274,8 @@ export class DataTablePage { return this.allColumns.count(); } + getCellByNameAndColumn(content, columnName) { + return this.getRowByRowName(content).element(by.css(`div[title='${columnName}']`)); + } + } diff --git a/e2e/pages/adf/permissionsPage.ts b/e2e/pages/adf/permissionsPage.ts index 2bc404fd86..8ed15e4f82 100644 --- a/e2e/pages/adf/permissionsPage.ts +++ b/e2e/pages/adf/permissionsPage.ts @@ -20,6 +20,10 @@ import { element, by } from 'protractor'; import { Util } from '../../util/util'; import { DataTablePage } from './dataTablePage'; +let column = { + role: 'Role' +}; + export class PermissionsPage { 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(); permissionInheritedButtonText = this.permissionInheritedButton.element(by.css('span')); 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() { Util.waitUntilElementIsVisible(this.addPermissionButton); @@ -92,4 +99,32 @@ export class PermissionsPage { 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(); + } }