From e65e32e0cfac146102e9d8ef42fa687a4fa059c7 Mon Sep 17 00:00:00 2001 From: Geeta Mandakini Ayyalasomayajula <45559635+gmandakini@users.noreply.github.com> Date: Thu, 6 Jun 2019 11:12:05 +0100 Subject: [PATCH] Enable tests and add a newly created user to run the tests. (#4796) * enabled tests and added the new user to run the tests. * lint fix * adding a new user and add the user to hr group which will be used when deploying the apps. * Test commit * adding a new user and add the user to hr group which will be used when deploying the apps. * linting fixes * crc's moved the roles constants to identityService. * crc's moved the roles constants to identityService. * wrapped the createIdentityUser and assign Role calls into 1 method and used in the tests. * wrapped the createIdentityUser and assign Role calls into 1 method and used in the tests. * Added a method in identityService to pass the required roles to be added in a string array. * linting fixes * added the command line arguments to run the e2e tests -identity_admin_email and -identity_admin_password * added the command line arguments to run the e2e tests -identity_admin_email and -identity_admin_password * crc's, removed the step to add user to the hr group, as not needed in this test. * renamed the E2E travis variable to end with identity. * replaced the candidateuserapp with candidatebaseapp * replaced candidateuserapp with candidatebaseapp * replaced candidateuserapp with candidatebaseapp * replaced candidateuserapp with candidatebaseapp * timeout wait for the test to pass. * crc's --- cspell.json | 1 - demo-shell/src/app.config.json | 2 +- .../apps-section-cloud.e2e.ts | 16 +++- .../edit-process-filters-component.e2e.ts | 21 ++++- .../edit-task-filters-component.e2e.ts | 25 ++++- .../people-group-cloud-component.e2e.ts | 58 ++++++------ ...people-group-cloud-filter-component.e2e.ts | 49 +++++----- .../process-custom-filters.e2e.ts | 88 ++++++++++-------- .../process-filters-cloud.e2e.ts | 58 ++++++++---- .../process-header-cloud.e2e.ts | 40 ++++++-- .../process-list-selection-cloud.e2e.ts | 29 ++++-- .../processList-cloud-component.e2e.ts | 33 +++++-- .../start-process-cloud.e2e.ts | 23 ++++- .../start-task-custom-app-cloud.e2e.ts | 33 ++++--- .../task-filters-cloud.e2e.ts | 25 ++++- .../task-form-cloud-component.e2e.ts | 32 +++---- .../task-header-cloud.e2e.ts | 24 ++++- .../task-list-properties.e2e.ts | 53 ++++++----- .../task-list-selection.e2e.ts | 31 ++++-- .../tasks-custom-filters.e2e.ts | 38 +++++--- e2e/resources/activiti7/candidatebaseapp.zip | Bin 0 -> 4517 bytes e2e/resources/activiti7/candidateuserapp.zip | Bin 1619 -> 0 bytes e2e/util/constants.js | 7 -- e2e/util/resources.js | 6 +- .../core/actions/identity/identity.service.ts | 39 ++++++-- .../core/actions/identity/tasks.service.ts | 2 +- .../actions/process-definitions.service.ts | 8 ++ scripts/check-env/check-activiti-env.js | 2 +- scripts/test-e2e-lib.sh | 12 +++ .../travis/e2e/process-services-cloud-e2e.sh | 2 +- 30 files changed, 504 insertions(+), 253 deletions(-) create mode 100644 e2e/resources/activiti7/candidatebaseapp.zip delete mode 100644 e2e/resources/activiti7/candidateuserapp.zip diff --git a/cspell.json b/cspell.json index fc8475a2ba..473b064741 100644 --- a/cspell.json +++ b/cspell.json @@ -126,7 +126,6 @@ "uncheck", "subfolders", "ECMBPM", - "candidateuserapp", "processwithvariables" ], "dictionaries": [ diff --git a/demo-shell/src/app.config.json b/demo-shell/src/app.config.json index 0c0f8fa2c5..538a71df95 100644 --- a/demo-shell/src/app.config.json +++ b/demo-shell/src/app.config.json @@ -887,7 +887,7 @@ }, "alfresco-deployed-apps": [ { - "name": "candidateuserapp" + "name": "candidatebaseapp" }, { "name": "simpleapp" diff --git a/e2e/process-services-cloud/apps-section-cloud.e2e.ts b/e2e/process-services-cloud/apps-section-cloud.e2e.ts index cce9cd8015..a5e12182f9 100644 --- a/e2e/process-services-cloud/apps-section-cloud.e2e.ts +++ b/e2e/process-services-cloud/apps-section-cloud.e2e.ts @@ -16,7 +16,7 @@ */ import { browser } from 'protractor'; -import { LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; +import { ApiService, IdentityService, LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; import { AppListCloudPage } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import resources = require('../util/resources'); @@ -28,13 +28,25 @@ describe('Applications list', () => { const settingsPage = new SettingsPage(); const appListCloudPage = new AppListCloudPage(); const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; + let identityService: IdentityService; + let testUser; + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); beforeAll(async (done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/process-services-cloud/edit-process-filters-component.e2e.ts b/e2e/process-services-cloud/edit-process-filters-component.e2e.ts index a4ae17e25b..3b0826153c 100644 --- a/e2e/process-services-cloud/edit-process-filters-component.e2e.ts +++ b/e2e/process-services-cloud/edit-process-filters-component.e2e.ts @@ -16,7 +16,7 @@ */ import { browser } from 'protractor'; -import { LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; +import { ApiService, GroupIdentityService, IdentityService, LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; @@ -34,13 +34,30 @@ describe('Edit process filters cloud', () => { const settingsPage = new SettingsPage(); const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let testUser, groupInfo; + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); beforeAll(async (done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts index 30edb0093d..3f72f7a338 100644 --- a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts +++ b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts @@ -16,7 +16,7 @@ */ import { browser } from 'protractor'; -import { AppListCloudPage, StringUtil, ApiService, LoginSSOPage, TasksService, SettingsPage } from '@alfresco/adf-testing'; +import { AppListCloudPage, StringUtil, ApiService, LoginSSOPage, TasksService, SettingsPage, IdentityService, GroupIdentityService } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; @@ -31,15 +31,24 @@ describe('Edit task filters cloud', () => { const tasksCloudDemoPage = new TasksCloudDemoPage(); const settingsPage = new SettingsPage(); let tasksService: TasksService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let testUser, groupInfo; + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString(); beforeAll(async (done) => { - const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); - + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); tasksService = new TasksService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + + await apiService.login(testUser.email, testUser.password); const assignedTask = await tasksService.createStandaloneTask(assignedTaskName, simpleApp); await tasksService.claimTask(assignedTask.entry.id, simpleApp); await tasksService.createAndCompleteTask(completedTaskName, simpleApp); @@ -48,7 +57,13 @@ describe('Edit task filters cloud', () => { browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/process-services-cloud/people-group-cloud-component.e2e.ts b/e2e/process-services-cloud/people-group-cloud-component.e2e.ts index fec033eb60..d12da7fd44 100644 --- a/e2e/process-services-cloud/people-group-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/people-group-cloud-component.e2e.ts @@ -20,10 +20,9 @@ import { PeopleGroupCloudComponentPage } from '../pages/adf/demo-shell/process-s import { GroupCloudComponentPage, PeopleCloudComponentPage, SettingsPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; import { LoginSSOPage, IdentityService, GroupIdentityService, RolesService, ApiService } from '@alfresco/adf-testing'; -import CONSTANTS = require('../util/constants'); import resources = require('../util/resources'); -xdescribe('People Groups Cloud Component', () => { +describe('People Groups Cloud Component', () => { describe('People Groups Cloud Component', () => { const loginSSOPage = new LoginSSOPage(); @@ -35,15 +34,17 @@ xdescribe('People Groups Cloud Component', () => { let groupIdentityService: GroupIdentityService; let rolesService: RolesService; const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); - let apsUser; + let apsUser, testUser; let activitiUser; let noRoleUser; let groupAps; let groupActiviti; let groupNoRole; - let apsUserRoleId; - let activitiUserRoleId; let apsAdminRoleId; let activitiAdminRoleId; let clientActivitiAdminRoleId, clientActivitiUserRoleId; @@ -52,10 +53,7 @@ xdescribe('People Groups Cloud Component', () => { let clientId; beforeAll(async (done) => { - const apiService = new ApiService( - browser.params.config.oauth2.clientId, - browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers - ); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); identityService = new IdentityService(apiService); @@ -63,40 +61,38 @@ xdescribe('People Groups Cloud Component', () => { groupIdentityService = new GroupIdentityService(apiService); clientId = await groupIdentityService.getClientIdByApplicationName(resources.ACTIVITI7_APPS.SIMPLE_APP.name); groupActiviti = await groupIdentityService.createIdentityGroup(); - clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_ADMIN); - clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_USER); + clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_admin); + clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_user); - apsUser = await identityService.createIdentityUser(); - apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); - await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.ROLES.APS_USER); - activitiUser = await identityService.createIdentityUser(); - activitiUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_USER); - await identityService.assignRole(activitiUser.idIdentityService, activitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + apsUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + activitiUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.activiti_user]); noRoleUser = await identityService.createIdentityUser(); - await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); - await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); + await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin); + await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, identityService.roles.activiti_user); groupAps = await groupIdentityService.createIdentityGroup(); - apsAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_ADMIN); - await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, CONSTANTS.ROLES.APS_ADMIN); - activitiAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_ADMIN); - await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); + apsAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.aps_admin); + await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, identityService.roles.aps_admin); + activitiAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.activiti_admin); + await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, identityService.roles.activiti_admin); groupNoRole = await groupIdentityService.createIdentityGroup(); - await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); - await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); - users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`]; + await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin); + await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin); + users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`, `${testUser.idIdentityService}`]; groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`]; await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); done(); }); afterAll(async (done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); for (let i = 0; i < users.length; i++) { await identityService.deleteIdentityUser(users[i]); } @@ -135,7 +131,7 @@ xdescribe('People Groups Cloud Component', () => { }); it('One role filtering', () => { - peopleGroupCloudComponentPage.enterPeopleRoles(`["${CONSTANTS.ROLES.APS_USER}"]`); + peopleGroupCloudComponentPage.enterPeopleRoles(`["${identityService.roles.aps_user}"]`); peopleCloudComponent.searchAssignee(apsUser.lastName); peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`); peopleCloudComponent.searchAssignee(activitiUser.lastName); @@ -145,7 +141,7 @@ xdescribe('People Groups Cloud Component', () => { }); it('Multiple roles filtering', () => { - peopleGroupCloudComponentPage.enterPeopleRoles(`["${CONSTANTS.ROLES.APS_USER}", "${CONSTANTS.ROLES.ACTIVITI_USER}"]`); + peopleGroupCloudComponentPage.enterPeopleRoles(`["${identityService.roles.aps_user}", "${identityService.roles.activiti_user}"]`); peopleCloudComponent.searchAssignee(apsUser.lastName); peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`); peopleCloudComponent.searchAssignee(activitiUser.lastName); @@ -173,7 +169,7 @@ xdescribe('People Groups Cloud Component', () => { }); it('One role filtering', () => { - peopleGroupCloudComponentPage.enterGroupRoles(`["${CONSTANTS.ROLES.APS_ADMIN}"]`); + peopleGroupCloudComponentPage.enterGroupRoles(`["${identityService.roles.aps_admin}"]`); groupCloudComponentPage.searchGroups(groupAps.name); groupCloudComponentPage.checkGroupIsDisplayed(`${groupAps.name}`); groupCloudComponentPage.searchGroups(groupActiviti.name); @@ -183,7 +179,7 @@ xdescribe('People Groups Cloud Component', () => { }); it('Multiple roles filtering', () => { - peopleGroupCloudComponentPage.enterGroupRoles(`["${CONSTANTS.ROLES.APS_ADMIN}", "${CONSTANTS.ROLES.ACTIVITI_ADMIN}"]`); + peopleGroupCloudComponentPage.enterGroupRoles(`["${identityService.roles.aps_admin}", "${identityService.roles.activiti_admin}"]`); groupCloudComponentPage.searchGroups(groupActiviti.name); groupCloudComponentPage.checkGroupIsDisplayed(`${groupActiviti.name}`); groupCloudComponentPage.searchGroups(groupAps.name); diff --git a/e2e/process-services-cloud/people-group-cloud-filter-component.e2e.ts b/e2e/process-services-cloud/people-group-cloud-filter-component.e2e.ts index 9148f5f269..ea8cbfaec1 100644 --- a/e2e/process-services-cloud/people-group-cloud-filter-component.e2e.ts +++ b/e2e/process-services-cloud/people-group-cloud-filter-component.e2e.ts @@ -20,10 +20,9 @@ import { PeopleGroupCloudComponentPage } from '../pages/adf/demo-shell/process-s import { GroupCloudComponentPage, PeopleCloudComponentPage, SettingsPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; import { LoginSSOPage, IdentityService, GroupIdentityService, RolesService, ApiService } from '@alfresco/adf-testing'; -import CONSTANTS = require('../util/constants'); import resources = require('../util/resources'); -xdescribe('People Groups Cloud Component', () => { +describe('People Groups Cloud Component', () => { describe('People Groups Cloud Component', () => { const loginSSOPage = new LoginSSOPage(); @@ -32,18 +31,20 @@ xdescribe('People Groups Cloud Component', () => { const peopleCloudComponent = new PeopleCloudComponentPage(); const groupCloudComponentPage = new GroupCloudComponentPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); let identityService: IdentityService; let groupIdentityService: GroupIdentityService; let rolesService: RolesService; - let apsUser; + let apsUser, testUser; let activitiUser; let noRoleUser; let groupAps; let groupActiviti; let groupNoRole; - let apsUserRoleId; - let activitiUserRoleId; let apsAdminRoleId; let activitiAdminRoleId; let clientActivitiAdminRoleId, clientActivitiUserRoleId; @@ -52,10 +53,6 @@ xdescribe('People Groups Cloud Component', () => { let clientId; beforeAll(async (done) => { - const apiService = new ApiService( - browser.params.config.oauth2.clientId, - browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers - ); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); identityService = new IdentityService(apiService); @@ -63,40 +60,38 @@ xdescribe('People Groups Cloud Component', () => { groupIdentityService = new GroupIdentityService(apiService); clientId = await groupIdentityService.getClientIdByApplicationName(resources.ACTIVITI7_APPS.SIMPLE_APP.name); groupActiviti = await groupIdentityService.createIdentityGroup(); - clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_ADMIN); - clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_USER); + clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_admin); + clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_user); - apsUser = await identityService.createIdentityUser(); - apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); - await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.ROLES.APS_USER); - activitiUser = await identityService.createIdentityUser(); - activitiUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_USER); - await identityService.assignRole(activitiUser.idIdentityService, activitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + apsUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + activitiUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.activiti_user]); noRoleUser = await identityService.createIdentityUser(); - await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); - await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); + await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin); + await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, identityService.roles.activiti_user); groupAps = await groupIdentityService.createIdentityGroup(); - apsAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_ADMIN); - await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, CONSTANTS.ROLES.APS_ADMIN); - activitiAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_ADMIN); - await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); + apsAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.aps_admin); + await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, identityService.roles.aps_admin); + activitiAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.activiti_admin); + await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, identityService.roles.activiti_admin); groupNoRole = await groupIdentityService.createIdentityGroup(); - await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN ); - await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN ); - users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`]; + await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin ); + await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin ); + users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`, `${testUser.idIdentityService}`]; groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`]; await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); done(); }); afterAll(async () => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); for (let i = 0; i < users.length; i++) { await identityService.deleteIdentityUser(users[i]); } diff --git a/e2e/process-services-cloud/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process-custom-filters.e2e.ts index 662db46fe3..9693462a44 100644 --- a/e2e/process-services-cloud/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process-custom-filters.e2e.ts @@ -17,7 +17,8 @@ import { TasksService, QueryService, ProcessDefinitionsService, ProcessInstancesService, - LoginSSOPage, ApiService, SettingsPage } from '@alfresco/adf-testing'; + LoginSSOPage, ApiService, SettingsPage, IdentityService, GroupIdentityService +} from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; @@ -25,7 +26,7 @@ import { AppListCloudPage, LocalStorageUtil, BrowserActions } from '@alfresco/ad import resources = require('../util/resources'); import { browser } from 'protractor'; -xdescribe('Process list cloud', () => { +describe('Process list cloud', () => { describe('Process List', () => { const loginSSOPage = new LoginSSOPage(); @@ -34,17 +35,54 @@ xdescribe('Process list cloud', () => { const processCloudDemoPage = new ProcessCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); let tasksService: TasksService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; let processDefinitionService: ProcessDefinitionsService; let processInstancesService: ProcessInstancesService; let queryService: QueryService; - let completedProcess, runningProcessInstance, switchProcessInstance, noOfApps; - const candidateuserapp = resources.ACTIVITI7_APPS.CANDIDATE_USER_APP.name; + let completedProcess, runningProcessInstance, switchProcessInstance, noOfApps, testUser, groupInfo; + const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name; beforeAll(async (done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await apiService.login(testUser.email, testUser.password); + + processDefinitionService = new ProcessDefinitionsService(apiService); + const processDefinition = await processDefinitionService.getProcessDefinitionByName('candidateGroupProcess', candidateBaseApp); + + processInstancesService = new ProcessInstancesService(apiService); + await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); + + runningProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); + switchProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); + + completedProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); + queryService = new QueryService(apiService); + + const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, candidateBaseApp); + tasksService = new TasksService(apiService); + const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateBaseApp); + await tasksService.completeTask(claimedTask.entry.id, candidateBaseApp); + + await settingsPage.setProviderBpmSso( + browser.params.config.bpmHost, + browser.params.config.oauth2.host, + browser.params.config.identityHost); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); await LocalStorageUtil.setConfigField('adf-edit-process-filter', JSON.stringify({ 'filterProperties': [ 'appName', @@ -66,48 +104,24 @@ xdescribe('Process list cloud', () => { 'delete' ] })); + done(); + }, 5 * 60 * 1000); - const apiService = new ApiService( - browser.params.config.oauth2.clientId, - browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers - ); - - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); - - processDefinitionService = new ProcessDefinitionsService(apiService); - const processDefinition = await processDefinitionService.getProcessDefinitions(candidateuserapp); - - processInstancesService = new ProcessInstancesService(apiService); - await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, candidateuserapp); - - runningProcessInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, candidateuserapp); - switchProcessInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, candidateuserapp); - - completedProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, candidateuserapp); - queryService = new QueryService(apiService); - - const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, candidateuserapp); - tasksService = new TasksService(apiService); - const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateuserapp); - await tasksService.completeTask(claimedTask.entry.id, candidateuserapp); - - await settingsPage.setProviderBpmSso( - browser.params.config.bpmHost, - browser.params.config.oauth2.host, - browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); beforeEach(() => { navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); - appListCloudComponent.goToApp(candidateuserapp); + appListCloudComponent.goToApp(candidateBaseApp); tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded(); processCloudDemoPage.clickOnProcessFilters(); }); - xit('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async () => { + it('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async () => { processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING') .setSortFilterDropDown('Name').setOrderFilterDropDown('ASC'); processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) { @@ -172,7 +186,7 @@ xdescribe('Process list cloud', () => { expect(processCloudDemoPage.editProcessFilterCloudComponent().checkAppNamesAreUnique()).toBe(true); BrowserActions.closeMenuAndDialogs(); processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING') - .setAppNameDropDown(candidateuserapp).setProcessInstanceId(runningProcessInstance.entry.id); + .setAppNameDropDown(candidateBaseApp).setProcessInstanceId(runningProcessInstance.entry.id); processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(runningProcessInstance.entry.id); expect(processCloudDemoPage.editProcessFilterCloudComponent().getNumberOfAppNameOptions()).toBe(noOfApps); @@ -187,7 +201,7 @@ xdescribe('Process list cloud', () => { expect(processCloudDemoPage.editProcessFilterCloudComponent().getProcessInstanceId()).toEqual(runningProcessInstance.entry.id); processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING') - .setAppNameDropDown(candidateuserapp).setProcessInstanceId(switchProcessInstance.entry.id); + .setAppNameDropDown(candidateBaseApp).setProcessInstanceId(switchProcessInstance.entry.id); processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(switchProcessInstance.entry.id); processCloudDemoPage.editProcessFilterCloudComponent().clickSaveAsButton(); diff --git a/e2e/process-services-cloud/process-filters-cloud.e2e.ts b/e2e/process-services-cloud/process-filters-cloud.e2e.ts index ba51574b6f..ba0d5a89ce 100644 --- a/e2e/process-services-cloud/process-filters-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-filters-cloud.e2e.ts @@ -16,12 +16,21 @@ */ import { browser } from 'protractor'; -import { TasksService, QueryService, ProcessDefinitionsService, ProcessInstancesService, LoginSSOPage, ApiService, SettingsPage } from '@alfresco/adf-testing'; +import { + TasksService, + QueryService, + ProcessDefinitionsService, + ProcessInstancesService, + LoginSSOPage, + ApiService, + SettingsPage, + IdentityService, + GroupIdentityService +} from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; - import resources = require('../util/resources'); describe('Process filters cloud', () => { @@ -33,46 +42,61 @@ describe('Process filters cloud', () => { const processCloudDemoPage = new ProcessCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); let tasksService: TasksService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; let processDefinitionService: ProcessDefinitionsService; let processInstancesService: ProcessInstancesService; let queryService: QueryService; - let runningProcess, completedProcess; - const simpleApp = resources.ACTIVITI7_APPS.CANDIDATE_USER_APP.name; + let runningProcess, completedProcess, testUser, groupInfo; + const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name; beforeAll(async (done) => { - const apiService = new ApiService( - browser.params.config.oauth2.clientId, - browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers - ); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await apiService.login(testUser.email, testUser.password); processDefinitionService = new ProcessDefinitionsService(apiService); - const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); + const processDefinition = await processDefinitionService.getProcessDefinitionByName('candidateGroupProcess', candidateBaseApp); processInstancesService = new ProcessInstancesService(apiService); - runningProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); + runningProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); - completedProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); + completedProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); queryService = new QueryService(apiService); - const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, simpleApp); + const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, candidateBaseApp); tasksService = new TasksService(apiService); - const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, simpleApp); - await tasksService.completeTask(claimedTask.entry.id, simpleApp); + const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateBaseApp); + await tasksService.completeTask(claimedTask.entry.id, candidateBaseApp); await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }, 5 * 60 * 1000); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); beforeEach((done) => { navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); - appListCloudComponent.goToApp(simpleApp); + appListCloudComponent.goToApp(candidateBaseApp); tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded(); processCloudDemoPage.clickOnProcessFilters(); done(); diff --git a/e2e/process-services-cloud/process-header-cloud.e2e.ts b/e2e/process-services-cloud/process-header-cloud.e2e.ts index 18bd0d92f3..d6a917ea5d 100644 --- a/e2e/process-services-cloud/process-header-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-header-cloud.e2e.ts @@ -20,7 +20,17 @@ import CONSTANTS = require('../util/constants'); import moment = require('moment'); import { NavigationBarPage } from '../pages/adf/navigationBarPage'; -import { ApiService, StringUtil, LoginSSOPage, ProcessDefinitionsService, ProcessInstancesService, QueryService, SettingsPage } from '@alfresco/adf-testing'; +import { + ApiService, + StringUtil, + LoginSSOPage, + ProcessDefinitionsService, + ProcessInstancesService, + QueryService, + SettingsPage, + IdentityService, + GroupIdentityService +} from '@alfresco/adf-testing'; import { AppListCloudPage } from '@alfresco/adf-testing'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { ProcessHeaderCloudPage } from '@alfresco/adf-testing'; @@ -44,20 +54,30 @@ describe('Process Header cloud component', () => { const tasksCloudDemoPage = new TasksCloudDemoPage(); const processCloudDemoPage = new ProcessCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); let processDefinitionService: ProcessDefinitionsService; let processInstancesService: ProcessInstancesService; let queryService: QueryService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let testUser, groupInfo; let runningProcess, runningCreatedDate, parentCompleteProcess, childCompleteProcess, completedCreatedDate; beforeAll(async (done) => { - const apiService = new ApiService( - browser.params.config.oauth2.clientId, - browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers - ); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + + await apiService.login(testUser.email, testUser.password); processDefinitionService = new ProcessDefinitionsService(apiService); const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); const childProcessDefinition = await processDefinitionService.getProcessDefinitions(subProcessApp); @@ -80,7 +100,13 @@ describe('Process Header cloud component', () => { browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts b/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts index bcfbaf8fab..e3e8cf2295 100644 --- a/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts @@ -16,7 +16,7 @@ */ import { browser } from 'protractor'; -import { LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; +import { GroupIdentityService, IdentityService, LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; @@ -24,7 +24,6 @@ import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tas import { ProcessDefinitionsService, ApiService } from '@alfresco/adf-testing'; import { ProcessInstancesService } from '@alfresco/adf-testing'; - import resources = require('../util/resources'); describe('Process list cloud', () => { @@ -39,21 +38,31 @@ describe('Process list cloud', () => { let processDefinitionService: ProcessDefinitionsService; let processInstancesService: ProcessInstancesService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let testUser, groupInfo; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); const noOfProcesses = 3; const processInstances = []; beforeAll(async (done) => { - const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + + await apiService.login(testUser.email, testUser.password); processDefinitionService = new ProcessDefinitionsService(apiService); - const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); + const processDefinition = await processDefinitionService.getProcessDefinitionByName('simpleProcess', simpleApp); processInstancesService = new ProcessInstancesService(apiService); for (let i = 0; i < noOfProcesses; i++) { - const response = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); + const response = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); processInstances.push(response.entry.id); } @@ -61,11 +70,17 @@ describe('Process list cloud', () => { browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); done(); }); + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); + done(); + }); + beforeEach(() => { navigationBarPage.navigateToProcessServicesCloudPage(); expect(processInstances.length).toEqual(noOfProcesses, 'Wrong preconditions'); diff --git a/e2e/process-services-cloud/processList-cloud-component.e2e.ts b/e2e/process-services-cloud/processList-cloud-component.e2e.ts index fc7f5edafc..f60548f3ee 100644 --- a/e2e/process-services-cloud/processList-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/processList-cloud-component.e2e.ts @@ -22,14 +22,13 @@ import { LoginSSOPage, ApiService, LocalStorageUtil, - SettingsPage + SettingsPage, IdentityService, GroupIdentityService } from '@alfresco/adf-testing'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ProcessListCloudConfiguration } from './processListCloud.config'; - import resources = require('../util/resources'); describe('Process list cloud', () => { @@ -40,28 +39,44 @@ describe('Process list cloud', () => { const appListCloudComponent = new AppListCloudPage(); const processCloudDemoPage = new ProcessCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); let processDefinitionService: ProcessDefinitionsService; let processInstancesService: ProcessInstancesService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let testUser, groupInfo; - const candidateuserapp = resources.ACTIVITI7_APPS.CANDIDATE_USER_APP.name; + const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name; let jsonFile; let runningProcess; beforeAll(async (done) => { - const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + + await apiService.login(testUser.email, testUser.password); processDefinitionService = new ProcessDefinitionsService(apiService); - const processDefinition = await processDefinitionService.getProcessDefinitions(candidateuserapp); + const processDefinition = await processDefinitionService.getProcessDefinitionByName('candidateGroupProcess', candidateBaseApp); processInstancesService = new ProcessInstancesService(apiService); - runningProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, candidateuserapp); + runningProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); @@ -73,7 +88,7 @@ describe('Process list cloud', () => { navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); - appListCloudComponent.goToApp(candidateuserapp); + appListCloudComponent.goToApp(candidateBaseApp); processCloudDemoPage.clickOnProcessFilters(); processCloudDemoPage.runningProcessesFilter().checkProcessFilterIsDisplayed(); processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); diff --git a/e2e/process-services-cloud/start-process-cloud.e2e.ts b/e2e/process-services-cloud/start-process-cloud.e2e.ts index ef69147338..b4f8c31aae 100644 --- a/e2e/process-services-cloud/start-process-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-process-cloud.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; +import { ApiService, GroupIdentityService, IdentityService, LoginSSOPage, SettingsPage } from '@alfresco/adf-testing'; import { AppListCloudPage, StartProcessCloudPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; @@ -31,6 +31,10 @@ describe('Start Process', () => { const processCloudDemoPage = new ProcessCloudDemoPage(); const startProcessPage = new StartProcessCloudPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); const processDefinitionWithoutName = 'process-bc59fd64-d0b1-4eda-8b02-2ef38062cf39'; const processName = StringUtil.generateRandomString(10); @@ -39,19 +43,34 @@ describe('Start Process', () => { const lengthValidationError = 'Length exceeded, 255 characters max.'; const requiredError = 'Process Name is required'; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let testUser, groupInfo; beforeAll(async (done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); done(); }); + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); + done(); + }); + afterEach((done) => { navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); diff --git a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts index eb4156c619..26d4a96a78 100644 --- a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts @@ -20,13 +20,12 @@ import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { LoginSSOPage, AppListCloudPage, StringUtil, TaskHeaderCloudPage, - StartTasksCloudPage, PeopleCloudComponentPage, TasksService, ApiService, IdentityService, RolesService, SettingsPage + StartTasksCloudPage, PeopleCloudComponentPage, TasksService, ApiService, IdentityService, SettingsPage, GroupIdentityService } from '@alfresco/adf-testing'; import { TaskDetailsCloudDemoPage } from '../pages/adf/demo-shell/process-services/taskDetailsCloudDemoPage'; import resources = require('../util/resources'); -import CONSTANTS = require('../util/constants'); -xdescribe('Start Task', () => { +describe('Start Task', () => { const loginSSOPage = new LoginSSOPage(); const taskHeaderCloudPage = new TaskHeaderCloudPage(); @@ -37,6 +36,10 @@ xdescribe('Start Task', () => { const peopleCloudComponent = new PeopleCloudComponentPage(); const taskDetailsCloudDemoPage = new TaskDetailsCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); const standaloneTaskName = StringUtil.generateRandomString(5); const reassignTaskName = StringUtil.generateRandomString(5); @@ -46,37 +49,36 @@ xdescribe('Start Task', () => { const lengthValidationError = 'Length exceeded, 255 characters max.'; const requiredError = 'Field required'; const dateValidationError = 'Date format DD/MM/YYYY'; - let apsUser; + let apsUser, testUser, activitiUser, groupInfo; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; - let activitiUser; let identityService: IdentityService; - let apiService: ApiService; + let groupIdentityService: GroupIdentityService; beforeAll(async (done) => { - apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); identityService = new IdentityService(apiService); - apsUser = await identityService.createActivitiUserWithRole(apiService); - - const rolesService = new RolesService(apiService); - const apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); - await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.ROLES.APS_USER); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + apsUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user, identityService.roles.activiti_user]); activitiUser = await identityService.createIdentityUser(); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await apiService.login(testUser.email, testUser.password); await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); done(); }); afterAll(async (done) => { try { - await apiService.login(apsUser.email, apsUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); const tasksService = new TasksService(apiService); const tasks = [standaloneTaskName, unassignedTaskName, reassignTaskName]; @@ -88,6 +90,7 @@ xdescribe('Start Task', () => { } await identityService.deleteIdentityUser(activitiUser.idIdentityService); await identityService.deleteIdentityUser(apsUser.idIdentityService); + await identityService.deleteIdentityUser(testUser.idIdentityService); } catch (error) { } done(); @@ -101,7 +104,7 @@ xdescribe('Start Task', () => { tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); }); - xit('[C297675] Should create a task unassigned when assignee field is empty in Start Task form', () => { + it('[C297675] Should create a task unassigned when assignee field is empty in Start Task form', () => { tasksCloudDemoPage.openNewTaskForm(); startTask.checkFormIsDisplayed(); peopleCloudComponent.clearAssignee(); diff --git a/e2e/process-services-cloud/task-filters-cloud.e2e.ts b/e2e/process-services-cloud/task-filters-cloud.e2e.ts index f48b972288..6096af3f4d 100644 --- a/e2e/process-services-cloud/task-filters-cloud.e2e.ts +++ b/e2e/process-services-cloud/task-filters-cloud.e2e.ts @@ -16,7 +16,7 @@ */ import { browser } from 'protractor'; -import { LoginSSOPage, TasksService, ApiService, AppListCloudPage, StringUtil, SettingsPage } from '@alfresco/adf-testing'; +import { LoginSSOPage, TasksService, ApiService, AppListCloudPage, StringUtil, SettingsPage, IdentityService, GroupIdentityService } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import resources = require('../util/resources'); @@ -30,20 +30,35 @@ describe('Task filters cloud', () => { const tasksCloudDemoPage = new TasksCloudDemoPage(); const settingsPage = new SettingsPage(); let tasksService: TasksService; - let apiService: ApiService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let testUser, groupInfo; + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); const newTask = StringUtil.generateRandomString(5), completedTask = StringUtil.generateRandomString(5); const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; beforeAll(async(done) => { - apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM'); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + + await apiService.login(testUser.email, testUser.password); await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/process-services-cloud/task-form-cloud-component.e2e.ts b/e2e/process-services-cloud/task-form-cloud-component.e2e.ts index efa1a53430..925fbf7740 100644 --- a/e2e/process-services-cloud/task-form-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/task-form-cloud-component.e2e.ts @@ -39,7 +39,7 @@ describe('Task form cloud component', () => { let queryService: QueryService; let completedTask, createdTask, assigneeTask, toBeCompletedTask, completedProcess, claimedTask; - const candidateuserapp = resources.ACTIVITI7_APPS.CANDIDATE_USER_APP.name; + const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name; const completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString(); beforeAll(async (done) => { @@ -48,26 +48,26 @@ describe('Task form cloud component', () => { tasksService = new TasksService(apiService); queryService = new QueryService(apiService); - createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateuserapp); + createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); - assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateuserapp); - await tasksService.claimTask(assigneeTask.entry.id, candidateuserapp); + assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); + await tasksService.claimTask(assigneeTask.entry.id, candidateBaseApp); - toBeCompletedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateuserapp); - await tasksService.claimTask(toBeCompletedTask.entry.id, candidateuserapp); + toBeCompletedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); + await tasksService.claimTask(toBeCompletedTask.entry.id, candidateBaseApp); - completedTask = await tasksService.createStandaloneTask(assignedTaskName, candidateuserapp); - await tasksService.claimTask(completedTask.entry.id, candidateuserapp); - await tasksService.createAndCompleteTask(completedTaskName, candidateuserapp); + completedTask = await tasksService.createStandaloneTask(assignedTaskName, candidateBaseApp); + await tasksService.claimTask(completedTask.entry.id, candidateBaseApp); + await tasksService.createAndCompleteTask(completedTaskName, candidateBaseApp); processDefinitionService = new ProcessDefinitionsService(apiService); - const processDefinition = await processDefinitionService.getProcessDefinitions(candidateuserapp); + const processDefinition = await processDefinitionService.getProcessDefinitionByName('candidateUserProcess', candidateBaseApp); processInstancesService = new ProcessInstancesService(apiService); - completedProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, candidateuserapp); + completedProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); - const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, candidateuserapp); - claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateuserapp); + const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, candidateBaseApp); + claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateBaseApp); await settingsPage.setProviderBpmSso( browser.params.config.bpmHost, @@ -75,12 +75,12 @@ describe('Task form cloud component', () => { browser.params.config.identityHost); loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); done(); - }); + }, 5 * 60 * 1000); it('[C307032] Should display the appropriate title for the unclaim option of a Task', async () => { navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); - appListCloudComponent.goToApp(candidateuserapp); + appListCloudComponent.goToApp(candidateBaseApp); tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(assigneeTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().selectRow(assigneeTask.entry.name); @@ -92,7 +92,7 @@ describe('Task form cloud component', () => { beforeEach((done) => { navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); - appListCloudComponent.goToApp(candidateuserapp); + appListCloudComponent.goToApp(candidateBaseApp); done(); }); diff --git a/e2e/process-services-cloud/task-header-cloud.e2e.ts b/e2e/process-services-cloud/task-header-cloud.e2e.ts index 0dce10bd02..ae28db3401 100644 --- a/e2e/process-services-cloud/task-header-cloud.e2e.ts +++ b/e2e/process-services-cloud/task-header-cloud.e2e.ts @@ -16,7 +16,7 @@ */ import CONSTANTS = require('../util/constants'); -import { ApiService, StringUtil, SettingsPage } from '@alfresco/adf-testing'; +import { ApiService, StringUtil, SettingsPage, IdentityService, GroupIdentityService } from '@alfresco/adf-testing'; import moment = require('moment'); import { browser } from 'protractor'; @@ -35,6 +35,7 @@ describe('Task Header cloud component', () => { let subTask; let subTaskCreatedDate; let completedEndDate; + let groupInfo, testUser; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const priority = 30; const description = 'descriptionTask'; @@ -47,11 +48,20 @@ describe('Task Header cloud component', () => { const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers); let tasksService: TasksService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; beforeAll(async (done) => { - const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await apiService.login(testUser.email, testUser.password); tasksService = new TasksService(apiService); @@ -77,7 +87,13 @@ describe('Task Header cloud component', () => { browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/process-services-cloud/task-list-properties.e2e.ts b/e2e/process-services-cloud/task-list-properties.e2e.ts index 58326d8379..1b881bfb48 100644 --- a/e2e/process-services-cloud/task-list-properties.e2e.ts +++ b/e2e/process-services-cloud/task-list-properties.e2e.ts @@ -20,7 +20,7 @@ import { StringUtil, TasksService, ProcessDefinitionsService, ProcessInstancesService, LoginSSOPage, ApiService, - AppListCloudPage, LocalStorageUtil, IdentityService, RolesService, SettingsPage + AppListCloudPage, LocalStorageUtil, IdentityService, SettingsPage, GroupIdentityService } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; @@ -30,9 +30,8 @@ import moment = require('moment'); import { DateUtil } from '../util/dateUtil'; import resources = require('../util/resources'); -import CONSTANTS = require('../util/constants'); -xdescribe('Edit task filters and task list properties', () => { +describe('Edit task filters and task list properties', () => { const loginSSOPage = new LoginSSOPage(); const navigationBarPage = new NavigationBarPage(); @@ -44,12 +43,13 @@ xdescribe('Edit task filters and task list properties', () => { let processDefinitionService: ProcessDefinitionsService; let processInstancesService: ProcessInstancesService; let identityService: IdentityService; - let rolesService: RolesService; + let groupIdentityService: GroupIdentityService; + const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers); const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; - const candidateUserApp = resources.ACTIVITI7_APPS.CANDIDATE_USER_APP.name; + const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name; const noTasksFoundMessage = 'No Tasks Found'; - let createdTask, notAssigned, notDisplayedTask, processDefinition, processInstance, priorityTask, subTask, otherOwnerTask; + let createdTask, notAssigned, notDisplayedTask, processDefinition, processInstance, priorityTask, subTask, otherOwnerTask, testUser, groupInfo; const priority = 30; const beforeDate = moment().add(-1, 'days').format('DD/MM/YYYY'); @@ -57,18 +57,18 @@ xdescribe('Edit task filters and task list properties', () => { const afterDate = moment().add(1, 'days').format('DD/MM/YYYY'); beforeAll(async (done) => { - const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); identityService = new IdentityService(apiService); - rolesService = new RolesService(apiService); + groupIdentityService = new GroupIdentityService(apiService); tasksService = new TasksService(apiService); const settingsPage = new SettingsPage(); - const apsUser = await identityService.createIdentityUser(); - const apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); - await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.ROLES.APS_USER); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await apiService.login(testUser.email, testUser.password); otherOwnerTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp); await tasksService.claimTask(otherOwnerTask.entry.id, simpleApp); @@ -77,19 +77,24 @@ xdescribe('Edit task filters and task list properties', () => { notAssigned = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp); priorityTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {priority: priority}); await tasksService.claimTask(priorityTask.entry.id, simpleApp); - notDisplayedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateUserApp); - await tasksService.claimTask(notDisplayedTask.entry.id, candidateUserApp); + notDisplayedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); + await tasksService.claimTask(notDisplayedTask.entry.id, candidateBaseApp); processDefinitionService = new ProcessDefinitionsService(apiService); - processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); + processDefinition = await processDefinitionService.getProcessDefinitionByName('simpleProcess', simpleApp); processInstancesService = new ProcessInstancesService(apiService); - processInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); + processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); subTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {'parentTaskId': createdTask.entry.id}); await tasksService.claimTask(subTask.entry.id, simpleApp); const jsonFile = new TaskListCloudConfiguration().getConfiguration(); + await settingsPage.setProviderBpmSso( + browser.params.config.bpmHost, + browser.params.config.oauth2.host, + browser.params.config.identityHost); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); await LocalStorageUtil.setConfigField('adf-cloud-task-list', JSON.stringify(jsonFile)); await LocalStorageUtil.setConfigField('adf-edit-task-filter', JSON.stringify({ 'filterProperties': [ @@ -127,12 +132,12 @@ xdescribe('Edit task filters and task list properties', () => { 'delete' ] })); + done(); + }, 5 * 60 * 1000); - await settingsPage.setProviderBpmSso( - browser.params.config.bpmHost, - browser.params.config.oauth2.host, - browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); @@ -155,8 +160,8 @@ xdescribe('Edit task filters and task list properties', () => { tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(notDisplayedTask.entry.name); - tasksCloudDemoPage.editTaskFilterCloudComponent().setAppNameDropDown(candidateUserApp); - expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getAppNameDropDownValue()).toEqual(candidateUserApp); + tasksCloudDemoPage.editTaskFilterCloudComponent().setAppNameDropDown(candidateBaseApp); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getAppNameDropDownValue()).toEqual(candidateBaseApp); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(notDisplayedTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); @@ -279,7 +284,7 @@ xdescribe('Edit task filters and task list properties', () => { tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); - tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ALL').clearAssignee().setOwner('admin.adf'); + tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('ALL').clearAssignee().setOwner(testUser.username); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(notAssigned.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); diff --git a/e2e/process-services-cloud/task-list-selection.e2e.ts b/e2e/process-services-cloud/task-list-selection.e2e.ts index dd153525f6..be4d40612f 100644 --- a/e2e/process-services-cloud/task-list-selection.e2e.ts +++ b/e2e/process-services-cloud/task-list-selection.e2e.ts @@ -17,7 +17,7 @@ import { browser } from 'protractor'; -import { ApiService, LoginSSOPage, TasksService, SettingsPage } from '@alfresco/adf-testing'; +import { ApiService, LoginSSOPage, TasksService, SettingsPage, IdentityService, GroupIdentityService } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; @@ -32,20 +32,29 @@ describe('Task list cloud - selection', () => { const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); let tasksService: TasksService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const noOfTasks = 3; - let response; + let response, testUser, groupInfo; const tasks = []; beforeAll(async (done) => { - const apiService = new ApiService( - browser.params.config.oauth2.clientId, - browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers - ); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await apiService.login(testUser.email, testUser.password); tasksService = new TasksService(apiService); @@ -59,7 +68,13 @@ describe('Task list cloud - selection', () => { browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts index 0abd3602bc..a7c06c31bd 100644 --- a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts @@ -25,12 +25,11 @@ import { ProcessInstancesService, LoginSSOPage, ApiService, - SettingsPage + SettingsPage, IdentityService, GroupIdentityService } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; - import resources = require('../util/resources'); describe('Task filters cloud', () => { @@ -41,7 +40,13 @@ describe('Task filters cloud', () => { const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); const settingsPage = new SettingsPage(); + const apiService = new ApiService( + browser.params.config.oauth2.clientId, + browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers + ); let tasksService: TasksService; + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; let processDefinitionService: ProcessDefinitionsService; let processInstancesService: ProcessInstancesService; let queryService: QueryService; @@ -50,17 +55,20 @@ describe('Task filters cloud', () => { completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString(), deletedTaskName = StringUtil.generateRandomString(); const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; - let assignedTask, deletedTask, suspendedTasks; + let assignedTask, deletedTask, suspendedTasks, testUser, groupInfo; const orderByNameAndPriority = ['cCreatedTask', 'dCreatedTask', 'eCreatedTask']; let priority = 30; const nrOfTasks = 3; beforeAll(async (done) => { - const apiService = new ApiService( - browser.params.config.oauth2.clientId, - browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers - ); - await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + identityService = new IdentityService(apiService); + groupIdentityService = new GroupIdentityService(apiService); + testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]); + + groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); + await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); + await apiService.login(testUser.email, testUser.password); tasksService = new TasksService(apiService); await tasksService.createStandaloneTask(createdTaskName, simpleApp); @@ -76,10 +84,10 @@ describe('Task filters cloud', () => { } processDefinitionService = new ProcessDefinitionsService(apiService); - const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); + const processDefinition = await processDefinitionService.getProcessDefinitionByName('simpleProcess', simpleApp); processInstancesService = new ProcessInstancesService(apiService); - const processInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); - const secondProcessInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); + const processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); + const secondProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); queryService = new QueryService(apiService); suspendedTasks = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); @@ -92,7 +100,13 @@ describe('Task filters cloud', () => { browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.identityHost); - loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); + loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password); + done(); + }, 5 * 60 * 1000 ); + + afterAll(async(done) => { + await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); + await identityService.deleteIdentityUser(testUser.idIdentityService); done(); }); diff --git a/e2e/resources/activiti7/candidatebaseapp.zip b/e2e/resources/activiti7/candidatebaseapp.zip new file mode 100644 index 0000000000000000000000000000000000000000..83d8f45b5a072657bad0e4154f3447a3ee31acf6 GIT binary patch literal 4517 zcmb_g2{e@J8=o12k+Dl5Qe=ysai2$Ux1hcbowRg0)@kE(m zP#(xX*MQlgU0kIlVcsszSTqa(9MDNdZmzY1M^Vav>s?9au*qfi=J}A5n%c-N?V%jQ zdllR+mX4Eg!9s+Kl45d)e3p+0f(N^tODUO6x1P@rJiqp77S_k*7Kh2eaeC0mNe7-1 z$rihnojPVo(&#nYV+3+)&5zR?jAM!Jc&UC(thf*-M(fDR)TLbEO%snT_46*X8Yr2F zA2(+@HWuY;+yqwAE3fj%ueTcTDjZ>&*YBiZbvA6IKF=a+pujq#`${EDj$70_`B33h z;j0k;-7fyU1T7)fE4*^IF9rE~2J3Zq1%2t~=39FLv`2nwa8Gcl6JT$G>%|>F^9Fkp z=)OWV&^ksDyf3@oidNv6^nx$HQ@LJ@jP-2{=IpuU#3TTF{8%#DF(r=${qPy16N#t# zE*k%glW8V?=CWE09wcL(`wWVlAm9%zX~$`Ue$%QDZ|L#N{=8 z@BEWO8TYe`uue}(Ay4LQ_H>JI4HNZmoYW>v?c-mJOq9I5O_}!Ddv?Jp)9R$|AM;Hb-EUk2b;)HpO~oVZ&3U#0hkEO z4Nk6@_!1zOn_6u}jPfhrtVaoyM@8`$HS#ot{B%3%u0SZL7zyA~P0L zu5ptK{IEPJjd<3sW~0#kT1{lrbzZPt|NOd8QGm?P3f1s%!=isi3=#mKD>zN$Cq@3k zrO4FM?S|yuE0d2@{e@^i=8@W>Sgky*2~+W+GI{cA*lC7TTehxmOPmc(X4mb;lYGMqdBYZvzvQW?@H-GqNtdZj}B8X=-R5P{u~2me27YE8XevHjOZwQ zRPi|_{JX2jYu%y6eQ5&bfHq+y|NII-G}6{kXE#9_%C`FCspY#kbdxRUyA`EM4 zs|0o#^XZF($urF#Bk#_&QAlB!41k$k8q%yMGMw>udkazFDYf!C_@shmvUuj804+c7 z8)5BAV<9LtXJnutk^?zKbt)+jLYl*M)rB02d(bW0LT)dT`@$L>QqV7iyPNErBGrch zaqP)3-6QvcRR?Z1O&MA0c88n@yKCpHJYMlmVTs1l=$pr5_k6AVZ=u9M4n!aCGtCbf ze8-=nv~H;w%WGEpmFFq!aVSmZi+^t%Ur{Dd=c8tq?dMQ@NpP8u?LnrpNx`d$F8OhU zg+oFVUpzzgX;QD1mqhK5V5nP8w3Jf-HEmWTn9=+)8J^e2|5hS$>Av;C`Ky;wA2qs@ z4uKqWm#e>>gheGWpk&||IyG>XFX1V=PQ+pB)fzYa)GHYsJCEks0_z3!YY>joKSG$A zm+Nl~h2@>45RaIY#0r2Nlv`wU0y@Wz%Xd@dFgBJ4-OefypUH2O_xh-wUht8ta#pxJ zSUt^>ID*UYYZx)Fygt;R;%uN}nPZWhf*@Q(w2dy333C_C6AMo!nF{z<&nUqwXhJl? z4Xm|_eG|!2@oS8{#k!nxAAoHs@WXpqvT1XrPaZ%W7cLknHlYgl8197^M(V#-eV6Z= z=c)Litjm#TnK|8}49VnP;GYS;& z?5Sri-L9TyH|7ExW{6}O^QtSlW>gW(MB||q<8FZuvWbz!Rj2;GmAOwppN;Qpwuzn9-2zh18xb%^iSvB8mWgu z-$%CF4PMoJc?te5sGPavuH!6$Pa7oO0Wu+{Oa|e^xb2@GBy?j>F3&C$t2wcrNS222 zoy;MMqLq9M_OeGP3u;zdDyy`JL(l9_Pnlb=lM8UTV0+n-^4T{tymRViUt#i8QH#RW zu9mpH?A3wKC5M@J8|@X41V;vHsS?5xzBrE$0$!K3PRfM|=IOzwm=6d?8ZE0~ zll+L?w3ab-Guj3P!PgTZEJXUtJ(UHqLWvO?&RE$Q!GciFGqa7ivSZ?p?PC-Vu)Pcs z*6H#Bl5f&P$DK+)jGbOg$ud@T<4--6kN|oJB(P|otXIoc?NoHaQL#z|q&}d&jgqnA z>=D#;NQ&f3C{jF=P-#3TjvrC$YxVv^Xdg=6LLwjBxg^ZO!SgM3l4XQ zu-SNDI`PNFV(Eu=5{QqeJHCY2Ybu7tuqjv9qn4P@a%N69aJ7tR(5~1naQtn;v2O7D zP;rj=oO$0x0W0hmo+`cS%IrBGzg-1|uTztI8j7s$OflLsVE&v`Q>9m%e9Bo{V?JlX6W0j+!}?P*6p0P= zNfFrJuB{UdlKyu@^P|q+2B_^+@m=Tdnv`k#B?Py7{75b|<8ERc&-s{bB&Ak{-grN+ zWoCMvHQ0wJ%I9GzDXiKnSZ3{H-^8Z4KUzxeWjil>GfAK)%_ww&2j4t&2a2Wcwbs@d zdo+A(qr8>t6_lOHWjBBq@b@TUYlA`ApwWNHFD?MEZcz#Q)29ziTM_NLCOAWFy>>*4 zj+U5~uC|z-u9z^g%Rm$%E=p|gpwiAb+ynYPQO!m0*NU#ICXw&T2?$~b{5YVkzl86$ zF`)fuoBQ~aaSe(1G1OKiy7AgJO?UlvGt}P|{lA8_?TKtviW|ar)BLD*N@V*1`HwPq zdrDio>V`z!G!*!!Dg8oyV$uIvux?LfYuDRoz>% literal 0 HcmV?d00001 diff --git a/e2e/resources/activiti7/candidateuserapp.zip b/e2e/resources/activiti7/candidateuserapp.zip deleted file mode 100644 index 395cc1ab668491f46e4f08c6c69b0b1ad96a0902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1619 zcmWIWW@Zs#;Nak3$St+^V?Y9248jZrMfu68#l@+``lSW@42&PY%d#Pam>B}R**QQu zn4sDMa2h7gpnzl;)C@zttm6E<(gGO<#y<;#IT0qK$gd9bTC3rCR{PwU^V(sXR)uMK z>zwlOIpwMQ%~wa`#2IgP&TFqUL`9y8FAeBf%(u3;m7nL`Kf@4yeRoRsp2BSS-dSDp3@J2EZ% zcHh_E59@l(R2tQMCEGQX7Py|wk<#-{;!Lr0ymt2T;l&;gZ+ts5H;UhW`s&|yLYLP& zO}Dp_aa(S9I+ee0wSfGF4349Wg3I3@l5Kr$rm`W7kEe_IK*FT_&Q8r9?imcthn3X+ z2&%O_6%b@yFDN`K(r4BUHG#I@XOGpkDNGNwKJ32uUh&(LeTf@(81!u0P&rZY(2Ob9 z?PkB2Z9Mnp#WQmhuNyD#lb(6O^@7XiN|$GRF4O&3dO}WwNw~*MSX;(2RmLrP8^o(Ano%uHY8$+fRae0k7`C|&2}zKfhTPdYyH#l@qu{%E=$p0qnRtkrMd z@!djkk2?fU|OBLa&gnXl6#+((>!u!(nnE_h6n7&>=@pK)L3hE{ZwO^UYwA_(QCe^a@!QCY>jlE=Um61 zJmG1Z!I#?Sn-#D3ReQ&I*Yic16|YR2(&PMZdffTG(c&%J)(ic;b(zPNwyZY#b^7JT zs;@Xc GzyJV-_gU=# diff --git a/e2e/util/constants.js b/e2e/util/constants.js index f7bf434583..8b517c5eed 100644 --- a/e2e/util/constants.js +++ b/e2e/util/constants.js @@ -110,13 +110,6 @@ exports.APP_ICON = { USER: "person" }; -exports.ROLES = { - APS_USER: "APS_USER", - ACTIVITI_USER: "ACTIVITI_USER", - APS_ADMIN: "APS_ADMIN", - ACTIVITI_ADMIN: "ACTIVITI_ADMIN" -}; - exports.PROCESS_END_DATE = "No date"; exports.PROCESS_CATEGORY = "http://www.activiti.org/processdef"; diff --git a/e2e/util/resources.js b/e2e/util/resources.js index bdbac09c60..731d0b6a65 100644 --- a/e2e/util/resources.js +++ b/e2e/util/resources.js @@ -514,9 +514,9 @@ exports.Files = { }; exports.ACTIVITI7_APPS = { - CANDIDATE_USER_APP: { - name: "candidateuserapp", - file_location: "/resources/activiti7/candidateuserapp.zip" + CANDIDATE_BASE_APP: { + name: "candidatebaseapp", + file_location: "/resources/activiti7/candidatebaseapp.zip" }, SIMPLE_APP: { name: "simpleapp", diff --git a/lib/testing/src/lib/core/actions/identity/identity.service.ts b/lib/testing/src/lib/core/actions/identity/identity.service.ts index 4e848c812e..79dd66773c 100644 --- a/lib/testing/src/lib/core/actions/identity/identity.service.ts +++ b/lib/testing/src/lib/core/actions/identity/identity.service.ts @@ -28,12 +28,21 @@ export class IdentityService { this.api = api; } - async createActivitiUserWithRole(apiService, role: string = 'ACTIVITI_USER') { + roles = { + aps_user: 'APS_USER', + activiti_user: 'ACTIVITI_USER', + aps_admin: 'APS_ADMIN', + activiti_admin: 'ACTIVITI_ADMIN' + }; + + async createIdentityUserWithRole(apiService: ApiService, roles: string[]) { const rolesService = new RolesService(apiService); - const apsUser = await this.createIdentityUser(); - const apsUserRoleId = await rolesService.getRoleIdByRoleName(role); - await this.assignRole(apsUser.idIdentityService, apsUserRoleId, role); - return apsUser; + const user = await this.createIdentityUser(); + for (let i = 0; i < roles.length; i++) { + const roleId = await rolesService.getRoleIdByRoleName(roles[i]); + await this.assignRole(user.idIdentityService, roleId, roles[i]); + } + return user; } async createIdentityUser(user: UserModel = new UserModel()) { @@ -106,7 +115,7 @@ export class IdentityService { async getUserInfoByUsername(username) { const path = `/users`; const method = 'GET'; - const queryParams = { 'username': username }, postBody = {}; + const queryParams = {'username': username}, postBody = {}; const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); return data[0]; @@ -116,16 +125,30 @@ export class IdentityService { const path = `/users/${id}/reset-password`; const method = 'PUT'; const queryParams = {}, - postBody = { 'type': 'password', 'value': password, 'temporary': false }; + postBody = {'type': 'password', 'value': password, 'temporary': false}; return await this.api.performIdentityOperation(path, method, queryParams, postBody); } + async addUserToGroup(userId, groupId) { + try { + const path = `/users/${userId}/groups/${groupId}`; + const method = 'PUT'; + const queryParams = {}, + postBody = {'realm': 'alfresco', 'userId': userId, 'groupId': groupId}; + + return await this.api.performIdentityOperation(path, method, queryParams, postBody); + } catch (error) { + // tslint:disable-next-line:no-console + console.log('Add User To Group - Service error, Response: ', JSON.parse(JSON.stringify(error))); + } + } + async assignRole(userId, roleId, roleName) { const path = `/users/${userId}/role-mappings/realm`; const method = 'POST'; const queryParams = {}, - postBody = [{ 'id': roleId, 'name': roleName }]; + postBody = [{'id': roleId, 'name': roleName}]; return await this.api.performIdentityOperation(path, method, queryParams, postBody); } diff --git a/lib/testing/src/lib/core/actions/identity/tasks.service.ts b/lib/testing/src/lib/core/actions/identity/tasks.service.ts index 35cdbf9eb1..3d266413c4 100644 --- a/lib/testing/src/lib/core/actions/identity/tasks.service.ts +++ b/lib/testing/src/lib/core/actions/identity/tasks.service.ts @@ -39,7 +39,7 @@ export class TasksService { return await this.api.performBpmOperation(path, method, queryParams, postBody); } catch (error) { // tslint:disable-next-line:no-console - console.log('Create Task - Service error, Response: ', JSON.parse(JSON.stringify(error)).response.text); + console.log('Create Task - Service error, Response: ', JSON.parse(JSON.stringify(error))); } } diff --git a/lib/testing/src/lib/process-services-cloud/actions/process-definitions.service.ts b/lib/testing/src/lib/process-services-cloud/actions/process-definitions.service.ts index 8176bc9c85..7fe13379bf 100644 --- a/lib/testing/src/lib/process-services-cloud/actions/process-definitions.service.ts +++ b/lib/testing/src/lib/process-services-cloud/actions/process-definitions.service.ts @@ -44,4 +44,12 @@ export class ProcessDefinitionsService { } } } + + async getProcessDefinitionByName(processDefinitionName: string, appName: string) { + const processDefinitions = await this.getProcessDefinitions(appName); + return processDefinitions.list.entries.find((el) => { + if (el.entry.name === processDefinitionName) { + return el; + }}); + } } diff --git a/scripts/check-env/check-activiti-env.js b/scripts/check-env/check-activiti-env.js index 043735970a..8cef521345 100755 --- a/scripts/check-env/check-activiti-env.js +++ b/scripts/check-env/check-activiti-env.js @@ -263,7 +263,7 @@ async function deployApp(apiService, app, name) { "version": app.entry.name, "security": [{"role": "APS_ADMIN", "groups": [], "users": ["admin.adf"]}, { "role": "APS_USER", - "groups": [], + "groups": ["hr"], "users": ["admin.adf"] }] }; diff --git a/scripts/test-e2e-lib.sh b/scripts/test-e2e-lib.sh index 12287c4183..9b6f9dfba9 100755 --- a/scripts/test-e2e-lib.sh +++ b/scripts/test-e2e-lib.sh @@ -17,6 +17,8 @@ show_help() { echo "--env" echo "-u or --username" echo "-p or --password" + echo "-identity_admin_email" + echo "-identity_admin_password" echo "-e or --email" echo "-b or --browser run the test in the browser (No headless mode)" echo "-s or --spec run a single test file" @@ -46,6 +48,14 @@ set_password(){ PASSWORD=$1 export PASSWORD_ADF=$PASSWORD } +set_identity_admin_email(){ + IDENTITY_ADMIN_EMAIL=$1 + export IDENTITY_ADMIN_EMAIL=$IDENTITY_ADMIN_EMAIL +} +set_identity_admin_password(){ + IDENTITY_ADMIN_PASSWORD=$1 + export IDENTITY_ADMIN_PASSWORD=$IDENTITY_ADMIN_PASSWORD +} set_email(){ EMAIL=$1 export EMAIL_ADF=$EMAIL @@ -149,6 +159,8 @@ while [[ $1 == -* ]]; do -h|--help|-\?) show_help; exit 0;; -u|--username) set_username $2; shift 2;; -p|--password) set_password $2; shift 2;; + -identity_admin_email) set_identity_admin_email $2; shift 2;; + -identity_admin_password) set_identity_admin_password $2; shift 2;; -e|--email) set_email $2; shift 2;; -f|--folder) set_test_folder $2; shift 2;; -timeout|--timeout) set_timeout $2; shift 2;; diff --git a/scripts/travis/e2e/process-services-cloud-e2e.sh b/scripts/travis/e2e/process-services-cloud-e2e.sh index 2949765474..e36506552e 100755 --- a/scripts/travis/e2e/process-services-cloud-e2e.sh +++ b/scripts/travis/e2e/process-services-cloud-e2e.sh @@ -12,7 +12,7 @@ AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV")"; RUN_CHECK=$(echo node ./scripts/check-env/check-activiti-env.js --host "$E2E_HOST_BPM" --oauth "$E2E_HOST_SSO" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" --client 'activiti' || exit 1 ) -RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST_BPM" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" -host_sso "$E2E_HOST_SSO" -host_bpm "$E2E_HOST_BPM" -host_identity "$E2E_HOST_IDENTITY" --use-dist ) +RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST_BPM" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" -host_sso "$E2E_HOST_SSO" -host_bpm "$E2E_HOST_BPM" -host_identity "$E2E_HOST_IDENTITY" -identity_admin_email "$E2E_ADMIN_EMAIL_IDENTITY" -identity_admin_password "$E2E_ADMIN_PASSWORD_IDENTITY" --use-dist ) if [[ $AFFECTED_LIBS =~ "$CONTEXT_ENV$" || $TRAVIS_PULL_REQUEST == "false" ]]; then