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
This commit is contained in:
Geeta Mandakini Ayyalasomayajula 2019-06-06 11:12:05 +01:00 committed by Eugenio Romano
parent 3d73e94b5d
commit e65e32e0cf
30 changed files with 504 additions and 253 deletions

View File

@ -126,7 +126,6 @@
"uncheck", "uncheck",
"subfolders", "subfolders",
"ECMBPM", "ECMBPM",
"candidateuserapp",
"processwithvariables" "processwithvariables"
], ],
"dictionaries": [ "dictionaries": [

View File

@ -887,7 +887,7 @@
}, },
"alfresco-deployed-apps": [ "alfresco-deployed-apps": [
{ {
"name": "candidateuserapp" "name": "candidatebaseapp"
}, },
{ {
"name": "simpleapp" "name": "simpleapp"

View File

@ -16,7 +16,7 @@
*/ */
import { browser } from 'protractor'; 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 { AppListCloudPage } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import resources = require('../util/resources'); import resources = require('../util/resources');
@ -28,13 +28,25 @@ describe('Applications list', () => {
const settingsPage = new SettingsPage(); const settingsPage = new SettingsPage();
const appListCloudPage = new AppListCloudPage(); const appListCloudPage = new AppListCloudPage();
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; 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) => { 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( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

View File

@ -16,7 +16,7 @@
*/ */
import { browser } from 'protractor'; 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 { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage';
@ -34,13 +34,30 @@ describe('Edit process filters cloud', () => {
const settingsPage = new SettingsPage(); const settingsPage = new SettingsPage();
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; 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) => { 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( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

View File

@ -16,7 +16,7 @@
*/ */
import { browser } from 'protractor'; 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 { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
@ -31,15 +31,24 @@ describe('Edit task filters cloud', () => {
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const settingsPage = new SettingsPage(); const settingsPage = new SettingsPage();
let tasksService: TasksService; 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 simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
const completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString(); const completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString();
beforeAll(async (done) => { 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.identityAdmin.email, browser.params.identityAdmin.password);
await apiService.login(browser.params.identityUser.email, browser.params.identityUser.password); identityService = new IdentityService(apiService);
groupIdentityService = new GroupIdentityService(apiService);
tasksService = new TasksService(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); const assignedTask = await tasksService.createStandaloneTask(assignedTaskName, simpleApp);
await tasksService.claimTask(assignedTask.entry.id, simpleApp); await tasksService.claimTask(assignedTask.entry.id, simpleApp);
await tasksService.createAndCompleteTask(completedTaskName, simpleApp); await tasksService.createAndCompleteTask(completedTaskName, simpleApp);
@ -48,7 +57,13 @@ describe('Edit task filters cloud', () => {
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

View File

@ -20,10 +20,9 @@ import { PeopleGroupCloudComponentPage } from '../pages/adf/demo-shell/process-s
import { GroupCloudComponentPage, PeopleCloudComponentPage, SettingsPage } from '@alfresco/adf-testing'; import { GroupCloudComponentPage, PeopleCloudComponentPage, SettingsPage } from '@alfresco/adf-testing';
import { browser } from 'protractor'; import { browser } from 'protractor';
import { LoginSSOPage, IdentityService, GroupIdentityService, RolesService, ApiService } from '@alfresco/adf-testing'; import { LoginSSOPage, IdentityService, GroupIdentityService, RolesService, ApiService } from '@alfresco/adf-testing';
import CONSTANTS = require('../util/constants');
import resources = require('../util/resources'); import resources = require('../util/resources');
xdescribe('People Groups Cloud Component', () => { describe('People Groups Cloud Component', () => {
describe('People Groups Cloud Component', () => { describe('People Groups Cloud Component', () => {
const loginSSOPage = new LoginSSOPage(); const loginSSOPage = new LoginSSOPage();
@ -35,15 +34,17 @@ xdescribe('People Groups Cloud Component', () => {
let groupIdentityService: GroupIdentityService; let groupIdentityService: GroupIdentityService;
let rolesService: RolesService; let rolesService: RolesService;
const settingsPage = new SettingsPage(); 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 activitiUser;
let noRoleUser; let noRoleUser;
let groupAps; let groupAps;
let groupActiviti; let groupActiviti;
let groupNoRole; let groupNoRole;
let apsUserRoleId;
let activitiUserRoleId;
let apsAdminRoleId; let apsAdminRoleId;
let activitiAdminRoleId; let activitiAdminRoleId;
let clientActivitiAdminRoleId, clientActivitiUserRoleId; let clientActivitiAdminRoleId, clientActivitiUserRoleId;
@ -52,10 +53,7 @@ xdescribe('People Groups Cloud Component', () => {
let clientId; let clientId;
beforeAll(async (done) => { 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); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService); identityService = new IdentityService(apiService);
@ -63,40 +61,38 @@ xdescribe('People Groups Cloud Component', () => {
groupIdentityService = new GroupIdentityService(apiService); groupIdentityService = new GroupIdentityService(apiService);
clientId = await groupIdentityService.getClientIdByApplicationName(resources.ACTIVITI7_APPS.SIMPLE_APP.name); clientId = await groupIdentityService.getClientIdByApplicationName(resources.ACTIVITI7_APPS.SIMPLE_APP.name);
groupActiviti = await groupIdentityService.createIdentityGroup(); groupActiviti = await groupIdentityService.createIdentityGroup();
clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_ADMIN); clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_admin);
clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_USER); clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_user);
apsUser = await identityService.createIdentityUser(); testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]);
apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); apsUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]);
await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.ROLES.APS_USER); activitiUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.activiti_user]);
activitiUser = await identityService.createIdentityUser();
activitiUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_USER);
await identityService.assignRole(activitiUser.idIdentityService, activitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER);
noRoleUser = await identityService.createIdentityUser(); noRoleUser = await identityService.createIdentityUser();
await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin);
await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, identityService.roles.activiti_user);
groupAps = await groupIdentityService.createIdentityGroup(); groupAps = await groupIdentityService.createIdentityGroup();
apsAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_ADMIN); apsAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.aps_admin);
await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, CONSTANTS.ROLES.APS_ADMIN); await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, identityService.roles.aps_admin);
activitiAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_ADMIN); activitiAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.activiti_admin);
await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, identityService.roles.activiti_admin);
groupNoRole = await groupIdentityService.createIdentityGroup(); groupNoRole = await groupIdentityService.createIdentityGroup();
await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin);
await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin);
users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`]; users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`, `${testUser.idIdentityService}`];
groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`]; groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`];
await settingsPage.setProviderBpmSso( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); browser.params.config.identityHost);
loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password);
done(); done();
}); });
afterAll(async (done) => { afterAll(async (done) => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
for (let i = 0; i < users.length; i++) { for (let i = 0; i < users.length; i++) {
await identityService.deleteIdentityUser(users[i]); await identityService.deleteIdentityUser(users[i]);
} }
@ -135,7 +131,7 @@ xdescribe('People Groups Cloud Component', () => {
}); });
it('One role filtering', () => { it('One role filtering', () => {
peopleGroupCloudComponentPage.enterPeopleRoles(`["${CONSTANTS.ROLES.APS_USER}"]`); peopleGroupCloudComponentPage.enterPeopleRoles(`["${identityService.roles.aps_user}"]`);
peopleCloudComponent.searchAssignee(apsUser.lastName); peopleCloudComponent.searchAssignee(apsUser.lastName);
peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`); peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`);
peopleCloudComponent.searchAssignee(activitiUser.lastName); peopleCloudComponent.searchAssignee(activitiUser.lastName);
@ -145,7 +141,7 @@ xdescribe('People Groups Cloud Component', () => {
}); });
it('Multiple roles filtering', () => { 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.searchAssignee(apsUser.lastName);
peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`); peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`);
peopleCloudComponent.searchAssignee(activitiUser.lastName); peopleCloudComponent.searchAssignee(activitiUser.lastName);
@ -173,7 +169,7 @@ xdescribe('People Groups Cloud Component', () => {
}); });
it('One role filtering', () => { it('One role filtering', () => {
peopleGroupCloudComponentPage.enterGroupRoles(`["${CONSTANTS.ROLES.APS_ADMIN}"]`); peopleGroupCloudComponentPage.enterGroupRoles(`["${identityService.roles.aps_admin}"]`);
groupCloudComponentPage.searchGroups(groupAps.name); groupCloudComponentPage.searchGroups(groupAps.name);
groupCloudComponentPage.checkGroupIsDisplayed(`${groupAps.name}`); groupCloudComponentPage.checkGroupIsDisplayed(`${groupAps.name}`);
groupCloudComponentPage.searchGroups(groupActiviti.name); groupCloudComponentPage.searchGroups(groupActiviti.name);
@ -183,7 +179,7 @@ xdescribe('People Groups Cloud Component', () => {
}); });
it('Multiple roles filtering', () => { 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.searchGroups(groupActiviti.name);
groupCloudComponentPage.checkGroupIsDisplayed(`${groupActiviti.name}`); groupCloudComponentPage.checkGroupIsDisplayed(`${groupActiviti.name}`);
groupCloudComponentPage.searchGroups(groupAps.name); groupCloudComponentPage.searchGroups(groupAps.name);

View File

@ -20,10 +20,9 @@ import { PeopleGroupCloudComponentPage } from '../pages/adf/demo-shell/process-s
import { GroupCloudComponentPage, PeopleCloudComponentPage, SettingsPage } from '@alfresco/adf-testing'; import { GroupCloudComponentPage, PeopleCloudComponentPage, SettingsPage } from '@alfresco/adf-testing';
import { browser } from 'protractor'; import { browser } from 'protractor';
import { LoginSSOPage, IdentityService, GroupIdentityService, RolesService, ApiService } from '@alfresco/adf-testing'; import { LoginSSOPage, IdentityService, GroupIdentityService, RolesService, ApiService } from '@alfresco/adf-testing';
import CONSTANTS = require('../util/constants');
import resources = require('../util/resources'); import resources = require('../util/resources');
xdescribe('People Groups Cloud Component', () => { describe('People Groups Cloud Component', () => {
describe('People Groups Cloud Component', () => { describe('People Groups Cloud Component', () => {
const loginSSOPage = new LoginSSOPage(); const loginSSOPage = new LoginSSOPage();
@ -32,18 +31,20 @@ xdescribe('People Groups Cloud Component', () => {
const peopleCloudComponent = new PeopleCloudComponentPage(); const peopleCloudComponent = new PeopleCloudComponentPage();
const groupCloudComponentPage = new GroupCloudComponentPage(); const groupCloudComponentPage = new GroupCloudComponentPage();
const settingsPage = new SettingsPage(); 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 identityService: IdentityService;
let groupIdentityService: GroupIdentityService; let groupIdentityService: GroupIdentityService;
let rolesService: RolesService; let rolesService: RolesService;
let apsUser; let apsUser, testUser;
let activitiUser; let activitiUser;
let noRoleUser; let noRoleUser;
let groupAps; let groupAps;
let groupActiviti; let groupActiviti;
let groupNoRole; let groupNoRole;
let apsUserRoleId;
let activitiUserRoleId;
let apsAdminRoleId; let apsAdminRoleId;
let activitiAdminRoleId; let activitiAdminRoleId;
let clientActivitiAdminRoleId, clientActivitiUserRoleId; let clientActivitiAdminRoleId, clientActivitiUserRoleId;
@ -52,10 +53,6 @@ xdescribe('People Groups Cloud Component', () => {
let clientId; let clientId;
beforeAll(async (done) => { 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); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService); identityService = new IdentityService(apiService);
@ -63,40 +60,38 @@ xdescribe('People Groups Cloud Component', () => {
groupIdentityService = new GroupIdentityService(apiService); groupIdentityService = new GroupIdentityService(apiService);
clientId = await groupIdentityService.getClientIdByApplicationName(resources.ACTIVITI7_APPS.SIMPLE_APP.name); clientId = await groupIdentityService.getClientIdByApplicationName(resources.ACTIVITI7_APPS.SIMPLE_APP.name);
groupActiviti = await groupIdentityService.createIdentityGroup(); groupActiviti = await groupIdentityService.createIdentityGroup();
clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_ADMIN); clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_admin);
clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_USER); clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, identityService.roles.activiti_user);
apsUser = await identityService.createIdentityUser(); testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]);
apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); apsUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]);
await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.ROLES.APS_USER); activitiUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.activiti_user]);
activitiUser = await identityService.createIdentityUser();
activitiUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_USER);
await identityService.assignRole(activitiUser.idIdentityService, activitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER);
noRoleUser = await identityService.createIdentityUser(); noRoleUser = await identityService.createIdentityUser();
await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin);
await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, identityService.roles.activiti_user);
groupAps = await groupIdentityService.createIdentityGroup(); groupAps = await groupIdentityService.createIdentityGroup();
apsAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_ADMIN); apsAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.aps_admin);
await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, CONSTANTS.ROLES.APS_ADMIN); await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, identityService.roles.aps_admin);
activitiAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_ADMIN); activitiAdminRoleId = await rolesService.getRoleIdByRoleName(identityService.roles.activiti_admin);
await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, identityService.roles.activiti_admin);
groupNoRole = await groupIdentityService.createIdentityGroup(); groupNoRole = await groupIdentityService.createIdentityGroup();
await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN ); await groupIdentityService.addClientRole(groupAps.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin );
await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN ); await groupIdentityService.addClientRole(groupActiviti.id, clientId, clientActivitiAdminRoleId, identityService.roles.activiti_admin );
users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`]; users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`, `${testUser.idIdentityService}`];
groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`]; groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`];
await settingsPage.setProviderBpmSso( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); browser.params.config.identityHost);
loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password);
done(); done();
}); });
afterAll(async () => { afterAll(async () => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
for (let i = 0; i < users.length; i++) { for (let i = 0; i < users.length; i++) {
await identityService.deleteIdentityUser(users[i]); await identityService.deleteIdentityUser(users[i]);
} }

View File

@ -17,7 +17,8 @@
import { import {
TasksService, QueryService, ProcessDefinitionsService, ProcessInstancesService, 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 { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; 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 resources = require('../util/resources');
import { browser } from 'protractor'; import { browser } from 'protractor';
xdescribe('Process list cloud', () => { describe('Process list cloud', () => {
describe('Process List', () => { describe('Process List', () => {
const loginSSOPage = new LoginSSOPage(); const loginSSOPage = new LoginSSOPage();
@ -34,17 +35,54 @@ xdescribe('Process list cloud', () => {
const processCloudDemoPage = new ProcessCloudDemoPage(); const processCloudDemoPage = new ProcessCloudDemoPage();
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const settingsPage = new SettingsPage(); 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 tasksService: TasksService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let processDefinitionService: ProcessDefinitionsService; let processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; let processInstancesService: ProcessInstancesService;
let queryService: QueryService; let queryService: QueryService;
let completedProcess, runningProcessInstance, switchProcessInstance, noOfApps; let completedProcess, runningProcessInstance, switchProcessInstance, noOfApps, testUser, groupInfo;
const candidateuserapp = resources.ACTIVITI7_APPS.CANDIDATE_USER_APP.name; const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name;
beforeAll(async (done) => { 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({ await LocalStorageUtil.setConfigField('adf-edit-process-filter', JSON.stringify({
'filterProperties': [ 'filterProperties': [
'appName', 'appName',
@ -66,48 +104,24 @@ xdescribe('Process list cloud', () => {
'delete' 'delete'
] ]
})); }));
done();
}, 5 * 60 * 1000);
const apiService = new ApiService( afterAll(async(done) => {
browser.params.config.oauth2.clientId, await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers await identityService.deleteIdentityUser(testUser.idIdentityService);
);
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);
done(); done();
}); });
beforeEach(() => { beforeEach(() => {
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
appListCloudComponent.checkApsContainer(); appListCloudComponent.checkApsContainer();
appListCloudComponent.goToApp(candidateuserapp); appListCloudComponent.goToApp(candidateBaseApp);
tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded(); tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded();
processCloudDemoPage.clickOnProcessFilters(); 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') processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING')
.setSortFilterDropDown('Name').setOrderFilterDropDown('ASC'); .setSortFilterDropDown('Name').setOrderFilterDropDown('ASC');
processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) { processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) {
@ -172,7 +186,7 @@ xdescribe('Process list cloud', () => {
expect(processCloudDemoPage.editProcessFilterCloudComponent().checkAppNamesAreUnique()).toBe(true); expect(processCloudDemoPage.editProcessFilterCloudComponent().checkAppNamesAreUnique()).toBe(true);
BrowserActions.closeMenuAndDialogs(); BrowserActions.closeMenuAndDialogs();
processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING') processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING')
.setAppNameDropDown(candidateuserapp).setProcessInstanceId(runningProcessInstance.entry.id); .setAppNameDropDown(candidateBaseApp).setProcessInstanceId(runningProcessInstance.entry.id);
processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(runningProcessInstance.entry.id); processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(runningProcessInstance.entry.id);
expect(processCloudDemoPage.editProcessFilterCloudComponent().getNumberOfAppNameOptions()).toBe(noOfApps); expect(processCloudDemoPage.editProcessFilterCloudComponent().getNumberOfAppNameOptions()).toBe(noOfApps);
@ -187,7 +201,7 @@ xdescribe('Process list cloud', () => {
expect(processCloudDemoPage.editProcessFilterCloudComponent().getProcessInstanceId()).toEqual(runningProcessInstance.entry.id); expect(processCloudDemoPage.editProcessFilterCloudComponent().getProcessInstanceId()).toEqual(runningProcessInstance.entry.id);
processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING') processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING')
.setAppNameDropDown(candidateuserapp).setProcessInstanceId(switchProcessInstance.entry.id); .setAppNameDropDown(candidateBaseApp).setProcessInstanceId(switchProcessInstance.entry.id);
processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(switchProcessInstance.entry.id); processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(switchProcessInstance.entry.id);
processCloudDemoPage.editProcessFilterCloudComponent().clickSaveAsButton(); processCloudDemoPage.editProcessFilterCloudComponent().clickSaveAsButton();

View File

@ -16,12 +16,21 @@
*/ */
import { browser } from 'protractor'; 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 { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { AppListCloudPage } from '@alfresco/adf-testing'; import { AppListCloudPage } from '@alfresco/adf-testing';
import resources = require('../util/resources'); import resources = require('../util/resources');
describe('Process filters cloud', () => { describe('Process filters cloud', () => {
@ -33,46 +42,61 @@ describe('Process filters cloud', () => {
const processCloudDemoPage = new ProcessCloudDemoPage(); const processCloudDemoPage = new ProcessCloudDemoPage();
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const settingsPage = new SettingsPage(); 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 tasksService: TasksService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let processDefinitionService: ProcessDefinitionsService; let processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; let processInstancesService: ProcessInstancesService;
let queryService: QueryService; let queryService: QueryService;
let runningProcess, completedProcess; let runningProcess, completedProcess, testUser, groupInfo;
const simpleApp = resources.ACTIVITI7_APPS.CANDIDATE_USER_APP.name; const candidateBaseApp = resources.ACTIVITI7_APPS.CANDIDATE_BASE_APP.name;
beforeAll(async (done) => { beforeAll(async (done) => {
const apiService = new ApiService( await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
browser.params.config.oauth2.clientId, identityService = new IdentityService(apiService);
browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers groupIdentityService = new GroupIdentityService(apiService);
); 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);
processDefinitionService = new ProcessDefinitionsService(apiService); processDefinitionService = new ProcessDefinitionsService(apiService);
const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); const processDefinition = await processDefinitionService.getProcessDefinitionByName('candidateGroupProcess', candidateBaseApp);
processInstancesService = new ProcessInstancesService(apiService); 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); 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); tasksService = new TasksService(apiService);
const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, simpleApp); const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateBaseApp);
await tasksService.completeTask(claimedTask.entry.id, simpleApp); await tasksService.completeTask(claimedTask.entry.id, candidateBaseApp);
await settingsPage.setProviderBpmSso( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });
beforeEach((done) => { beforeEach((done) => {
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
appListCloudComponent.checkApsContainer(); appListCloudComponent.checkApsContainer();
appListCloudComponent.goToApp(simpleApp); appListCloudComponent.goToApp(candidateBaseApp);
tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded(); tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded();
processCloudDemoPage.clickOnProcessFilters(); processCloudDemoPage.clickOnProcessFilters();
done(); done();

View File

@ -20,7 +20,17 @@ import CONSTANTS = require('../util/constants');
import moment = require('moment'); import moment = require('moment');
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; 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 { AppListCloudPage } from '@alfresco/adf-testing';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { ProcessHeaderCloudPage } from '@alfresco/adf-testing'; import { ProcessHeaderCloudPage } from '@alfresco/adf-testing';
@ -44,20 +54,30 @@ describe('Process Header cloud component', () => {
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const processCloudDemoPage = new ProcessCloudDemoPage(); const processCloudDemoPage = new ProcessCloudDemoPage();
const settingsPage = new SettingsPage(); 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 processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; let processInstancesService: ProcessInstancesService;
let queryService: QueryService; let queryService: QueryService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let testUser, groupInfo;
let runningProcess, runningCreatedDate, parentCompleteProcess, childCompleteProcess, completedCreatedDate; let runningProcess, runningCreatedDate, parentCompleteProcess, childCompleteProcess, completedCreatedDate;
beforeAll(async (done) => { 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); processDefinitionService = new ProcessDefinitionsService(apiService);
const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp);
const childProcessDefinition = await processDefinitionService.getProcessDefinitions(subProcessApp); const childProcessDefinition = await processDefinitionService.getProcessDefinitions(subProcessApp);
@ -80,7 +100,13 @@ describe('Process Header cloud component', () => {
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

View File

@ -16,7 +16,7 @@
*/ */
import { browser } from 'protractor'; 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 { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage';
import { AppListCloudPage } from '@alfresco/adf-testing'; import { AppListCloudPage } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; 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 { ProcessDefinitionsService, ApiService } from '@alfresco/adf-testing';
import { ProcessInstancesService } from '@alfresco/adf-testing'; import { ProcessInstancesService } from '@alfresco/adf-testing';
import resources = require('../util/resources'); import resources = require('../util/resources');
describe('Process list cloud', () => { describe('Process list cloud', () => {
@ -39,21 +38,31 @@ describe('Process list cloud', () => {
let processDefinitionService: ProcessDefinitionsService; let processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; let processInstancesService: ProcessInstancesService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let testUser, groupInfo;
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; 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 noOfProcesses = 3;
const processInstances = []; const processInstances = [];
beforeAll(async (done) => { 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); processDefinitionService = new ProcessDefinitionsService(apiService);
const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); const processDefinition = await processDefinitionService.getProcessDefinitionByName('simpleProcess', simpleApp);
processInstancesService = new ProcessInstancesService(apiService); processInstancesService = new ProcessInstancesService(apiService);
for (let i = 0; i < noOfProcesses; i++) { 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); processInstances.push(response.entry.id);
} }
@ -61,11 +70,17 @@ describe('Process list cloud', () => {
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); browser.params.config.identityHost);
loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password);
done(); done();
}); });
afterAll(async(done) => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
await identityService.deleteIdentityUser(testUser.idIdentityService);
done();
});
beforeEach(() => { beforeEach(() => {
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
expect(processInstances.length).toEqual(noOfProcesses, 'Wrong preconditions'); expect(processInstances.length).toEqual(noOfProcesses, 'Wrong preconditions');

View File

@ -22,14 +22,13 @@ import {
LoginSSOPage, LoginSSOPage,
ApiService, ApiService,
LocalStorageUtil, LocalStorageUtil,
SettingsPage SettingsPage, IdentityService, GroupIdentityService
} from '@alfresco/adf-testing'; } from '@alfresco/adf-testing';
import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage';
import { AppListCloudPage } from '@alfresco/adf-testing'; import { AppListCloudPage } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { ProcessListCloudConfiguration } from './processListCloud.config'; import { ProcessListCloudConfiguration } from './processListCloud.config';
import resources = require('../util/resources'); import resources = require('../util/resources');
describe('Process list cloud', () => { describe('Process list cloud', () => {
@ -40,28 +39,44 @@ describe('Process list cloud', () => {
const appListCloudComponent = new AppListCloudPage(); const appListCloudComponent = new AppListCloudPage();
const processCloudDemoPage = new ProcessCloudDemoPage(); const processCloudDemoPage = new ProcessCloudDemoPage();
const settingsPage = new SettingsPage(); 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 processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; 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 jsonFile;
let runningProcess; let runningProcess;
beforeAll(async (done) => { 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.identityAdmin.email, browser.params.identityAdmin.password);
await apiService.login(browser.params.identityUser.email, browser.params.identityUser.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); processDefinitionService = new ProcessDefinitionsService(apiService);
const processDefinition = await processDefinitionService.getProcessDefinitions(candidateuserapp); const processDefinition = await processDefinitionService.getProcessDefinitionByName('candidateGroupProcess', candidateBaseApp);
processInstancesService = new ProcessInstancesService(apiService); 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( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });
@ -73,7 +88,7 @@ describe('Process list cloud', () => {
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
appListCloudComponent.checkApsContainer(); appListCloudComponent.checkApsContainer();
appListCloudComponent.goToApp(candidateuserapp); appListCloudComponent.goToApp(candidateBaseApp);
processCloudDemoPage.clickOnProcessFilters(); processCloudDemoPage.clickOnProcessFilters();
processCloudDemoPage.runningProcessesFilter().checkProcessFilterIsDisplayed(); processCloudDemoPage.runningProcessesFilter().checkProcessFilterIsDisplayed();
processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); processCloudDemoPage.runningProcessesFilter().clickProcessFilter();

View File

@ -15,7 +15,7 @@
* limitations under the License. * 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 { AppListCloudPage, StartProcessCloudPage } from '@alfresco/adf-testing';
import { browser } from 'protractor'; import { browser } from 'protractor';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
@ -31,6 +31,10 @@ describe('Start Process', () => {
const processCloudDemoPage = new ProcessCloudDemoPage(); const processCloudDemoPage = new ProcessCloudDemoPage();
const startProcessPage = new StartProcessCloudPage(); const startProcessPage = new StartProcessCloudPage();
const settingsPage = new SettingsPage(); 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 processDefinitionWithoutName = 'process-bc59fd64-d0b1-4eda-8b02-2ef38062cf39';
const processName = StringUtil.generateRandomString(10); const processName = StringUtil.generateRandomString(10);
@ -39,19 +43,34 @@ describe('Start Process', () => {
const lengthValidationError = 'Length exceeded, 255 characters max.'; const lengthValidationError = 'Length exceeded, 255 characters max.';
const requiredError = 'Process Name is required'; const requiredError = 'Process Name is required';
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let testUser, groupInfo;
beforeAll(async (done) => { 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( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); browser.params.config.identityHost);
loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password);
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
appListCloudComponent.checkApsContainer(); appListCloudComponent.checkApsContainer();
done(); done();
}); });
afterAll(async(done) => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
await identityService.deleteIdentityUser(testUser.idIdentityService);
done();
});
afterEach((done) => { afterEach((done) => {
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
appListCloudComponent.checkApsContainer(); appListCloudComponent.checkApsContainer();

View File

@ -20,13 +20,12 @@ import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { import {
LoginSSOPage, AppListCloudPage, StringUtil, TaskHeaderCloudPage, LoginSSOPage, AppListCloudPage, StringUtil, TaskHeaderCloudPage,
StartTasksCloudPage, PeopleCloudComponentPage, TasksService, ApiService, IdentityService, RolesService, SettingsPage StartTasksCloudPage, PeopleCloudComponentPage, TasksService, ApiService, IdentityService, SettingsPage, GroupIdentityService
} from '@alfresco/adf-testing'; } from '@alfresco/adf-testing';
import { TaskDetailsCloudDemoPage } from '../pages/adf/demo-shell/process-services/taskDetailsCloudDemoPage'; import { TaskDetailsCloudDemoPage } from '../pages/adf/demo-shell/process-services/taskDetailsCloudDemoPage';
import resources = require('../util/resources'); import resources = require('../util/resources');
import CONSTANTS = require('../util/constants');
xdescribe('Start Task', () => { describe('Start Task', () => {
const loginSSOPage = new LoginSSOPage(); const loginSSOPage = new LoginSSOPage();
const taskHeaderCloudPage = new TaskHeaderCloudPage(); const taskHeaderCloudPage = new TaskHeaderCloudPage();
@ -37,6 +36,10 @@ xdescribe('Start Task', () => {
const peopleCloudComponent = new PeopleCloudComponentPage(); const peopleCloudComponent = new PeopleCloudComponentPage();
const taskDetailsCloudDemoPage = new TaskDetailsCloudDemoPage(); const taskDetailsCloudDemoPage = new TaskDetailsCloudDemoPage();
const settingsPage = new SettingsPage(); 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 standaloneTaskName = StringUtil.generateRandomString(5);
const reassignTaskName = StringUtil.generateRandomString(5); const reassignTaskName = StringUtil.generateRandomString(5);
@ -46,37 +49,36 @@ xdescribe('Start Task', () => {
const lengthValidationError = 'Length exceeded, 255 characters max.'; const lengthValidationError = 'Length exceeded, 255 characters max.';
const requiredError = 'Field required'; const requiredError = 'Field required';
const dateValidationError = 'Date format DD/MM/YYYY'; const dateValidationError = 'Date format DD/MM/YYYY';
let apsUser; let apsUser, testUser, activitiUser, groupInfo;
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
let activitiUser;
let identityService: IdentityService; let identityService: IdentityService;
let apiService: ApiService; let groupIdentityService: GroupIdentityService;
beforeAll(async (done) => { 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); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService); identityService = new IdentityService(apiService);
apsUser = await identityService.createActivitiUserWithRole(apiService); groupIdentityService = new GroupIdentityService(apiService);
testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]);
const rolesService = new RolesService(apiService); apsUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user, identityService.roles.activiti_user]);
const apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER);
await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.ROLES.APS_USER);
activitiUser = await identityService.createIdentityUser(); 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( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); browser.params.config.identityHost);
loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password);
done(); done();
}); });
afterAll(async (done) => { afterAll(async (done) => {
try { 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 tasksService = new TasksService(apiService);
const tasks = [standaloneTaskName, unassignedTaskName, reassignTaskName]; const tasks = [standaloneTaskName, unassignedTaskName, reassignTaskName];
@ -88,6 +90,7 @@ xdescribe('Start Task', () => {
} }
await identityService.deleteIdentityUser(activitiUser.idIdentityService); await identityService.deleteIdentityUser(activitiUser.idIdentityService);
await identityService.deleteIdentityUser(apsUser.idIdentityService); await identityService.deleteIdentityUser(apsUser.idIdentityService);
await identityService.deleteIdentityUser(testUser.idIdentityService);
} catch (error) { } catch (error) {
} }
done(); done();
@ -101,7 +104,7 @@ xdescribe('Start Task', () => {
tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); 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(); tasksCloudDemoPage.openNewTaskForm();
startTask.checkFormIsDisplayed(); startTask.checkFormIsDisplayed();
peopleCloudComponent.clearAssignee(); peopleCloudComponent.clearAssignee();

View File

@ -16,7 +16,7 @@
*/ */
import { browser } from 'protractor'; 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 { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import resources = require('../util/resources'); import resources = require('../util/resources');
@ -30,20 +30,35 @@ describe('Task filters cloud', () => {
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const settingsPage = new SettingsPage(); const settingsPage = new SettingsPage();
let tasksService: TasksService; 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 newTask = StringUtil.generateRandomString(5), completedTask = StringUtil.generateRandomString(5);
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
beforeAll(async(done) => { 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( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

View File

@ -39,7 +39,7 @@ describe('Task form cloud component', () => {
let queryService: QueryService; let queryService: QueryService;
let completedTask, createdTask, assigneeTask, toBeCompletedTask, completedProcess, claimedTask; 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(); const completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString();
beforeAll(async (done) => { beforeAll(async (done) => {
@ -48,26 +48,26 @@ describe('Task form cloud component', () => {
tasksService = new TasksService(apiService); tasksService = new TasksService(apiService);
queryService = new QueryService(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); assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp);
await tasksService.claimTask(assigneeTask.entry.id, candidateuserapp); await tasksService.claimTask(assigneeTask.entry.id, candidateBaseApp);
toBeCompletedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateuserapp); toBeCompletedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp);
await tasksService.claimTask(toBeCompletedTask.entry.id, candidateuserapp); await tasksService.claimTask(toBeCompletedTask.entry.id, candidateBaseApp);
completedTask = await tasksService.createStandaloneTask(assignedTaskName, candidateuserapp); completedTask = await tasksService.createStandaloneTask(assignedTaskName, candidateBaseApp);
await tasksService.claimTask(completedTask.entry.id, candidateuserapp); await tasksService.claimTask(completedTask.entry.id, candidateBaseApp);
await tasksService.createAndCompleteTask(completedTaskName, candidateuserapp); await tasksService.createAndCompleteTask(completedTaskName, candidateBaseApp);
processDefinitionService = new ProcessDefinitionsService(apiService); processDefinitionService = new ProcessDefinitionsService(apiService);
const processDefinition = await processDefinitionService.getProcessDefinitions(candidateuserapp); const processDefinition = await processDefinitionService.getProcessDefinitionByName('candidateUserProcess', candidateBaseApp);
processInstancesService = new ProcessInstancesService(apiService); 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); const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, candidateBaseApp);
claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateuserapp); claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, candidateBaseApp);
await settingsPage.setProviderBpmSso( await settingsPage.setProviderBpmSso(
browser.params.config.bpmHost, browser.params.config.bpmHost,
@ -75,12 +75,12 @@ describe('Task form cloud component', () => {
browser.params.config.identityHost); browser.params.config.identityHost);
loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password); loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password);
done(); done();
}); }, 5 * 60 * 1000);
it('[C307032] Should display the appropriate title for the unclaim option of a Task', async () => { it('[C307032] Should display the appropriate title for the unclaim option of a Task', async () => {
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
appListCloudComponent.checkApsContainer(); appListCloudComponent.checkApsContainer();
appListCloudComponent.goToApp(candidateuserapp); appListCloudComponent.goToApp(candidateBaseApp);
tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); tasksCloudDemoPage.myTasksFilter().clickTaskFilter();
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(assigneeTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(assigneeTask.entry.name);
tasksCloudDemoPage.taskListCloudComponent().selectRow(assigneeTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().selectRow(assigneeTask.entry.name);
@ -92,7 +92,7 @@ describe('Task form cloud component', () => {
beforeEach((done) => { beforeEach((done) => {
navigationBarPage.navigateToProcessServicesCloudPage(); navigationBarPage.navigateToProcessServicesCloudPage();
appListCloudComponent.checkApsContainer(); appListCloudComponent.checkApsContainer();
appListCloudComponent.goToApp(candidateuserapp); appListCloudComponent.goToApp(candidateBaseApp);
done(); done();
}); });

View File

@ -16,7 +16,7 @@
*/ */
import CONSTANTS = require('../util/constants'); 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 moment = require('moment');
import { browser } from 'protractor'; import { browser } from 'protractor';
@ -35,6 +35,7 @@ describe('Task Header cloud component', () => {
let subTask; let subTask;
let subTaskCreatedDate; let subTaskCreatedDate;
let completedEndDate; let completedEndDate;
let groupInfo, testUser;
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
const priority = 30; const priority = 30;
const description = 'descriptionTask'; const description = 'descriptionTask';
@ -47,11 +48,20 @@ describe('Task Header cloud component', () => {
const appListCloudComponent = new AppListCloudPage(); const appListCloudComponent = new AppListCloudPage();
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const settingsPage = new SettingsPage(); 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 tasksService: TasksService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
beforeAll(async (done) => { 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);
await apiService.login(browser.params.identityUser.email, browser.params.identityUser.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); tasksService = new TasksService(apiService);
@ -77,7 +87,13 @@ describe('Task Header cloud component', () => {
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

View File

@ -20,7 +20,7 @@ import {
StringUtil, TasksService, StringUtil, TasksService,
ProcessDefinitionsService, ProcessInstancesService, ProcessDefinitionsService, ProcessInstancesService,
LoginSSOPage, ApiService, LoginSSOPage, ApiService,
AppListCloudPage, LocalStorageUtil, IdentityService, RolesService, SettingsPage AppListCloudPage, LocalStorageUtil, IdentityService, SettingsPage, GroupIdentityService
} from '@alfresco/adf-testing'; } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
@ -30,9 +30,8 @@ import moment = require('moment');
import { DateUtil } from '../util/dateUtil'; import { DateUtil } from '../util/dateUtil';
import resources = require('../util/resources'); 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 loginSSOPage = new LoginSSOPage();
const navigationBarPage = new NavigationBarPage(); const navigationBarPage = new NavigationBarPage();
@ -44,12 +43,13 @@ xdescribe('Edit task filters and task list properties', () => {
let processDefinitionService: ProcessDefinitionsService; let processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; let processInstancesService: ProcessInstancesService;
let identityService: IdentityService; 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 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'; 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 priority = 30;
const beforeDate = moment().add(-1, 'days').format('DD/MM/YYYY'); 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'); const afterDate = moment().add(1, 'days').format('DD/MM/YYYY');
beforeAll(async (done) => { 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); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService); identityService = new IdentityService(apiService);
rolesService = new RolesService(apiService); groupIdentityService = new GroupIdentityService(apiService);
tasksService = new TasksService(apiService); tasksService = new TasksService(apiService);
const settingsPage = new SettingsPage(); const settingsPage = new SettingsPage();
const apsUser = await identityService.createIdentityUser(); testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.roles.aps_user]);
const apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER);
await identityService.assignRole(apsUser.idIdentityService, apsUserRoleId, CONSTANTS.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); otherOwnerTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp);
await tasksService.claimTask(otherOwnerTask.entry.id, 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); notAssigned = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp);
priorityTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {priority: priority}); priorityTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {priority: priority});
await tasksService.claimTask(priorityTask.entry.id, simpleApp); await tasksService.claimTask(priorityTask.entry.id, simpleApp);
notDisplayedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateUserApp); notDisplayedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp);
await tasksService.claimTask(notDisplayedTask.entry.id, candidateUserApp); await tasksService.claimTask(notDisplayedTask.entry.id, candidateBaseApp);
processDefinitionService = new ProcessDefinitionsService(apiService); processDefinitionService = new ProcessDefinitionsService(apiService);
processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); processDefinition = await processDefinitionService.getProcessDefinitionByName('simpleProcess', simpleApp);
processInstancesService = new ProcessInstancesService(apiService); 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}); subTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {'parentTaskId': createdTask.entry.id});
await tasksService.claimTask(subTask.entry.id, simpleApp); await tasksService.claimTask(subTask.entry.id, simpleApp);
const jsonFile = new TaskListCloudConfiguration().getConfiguration(); 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-cloud-task-list', JSON.stringify(jsonFile));
await LocalStorageUtil.setConfigField('adf-edit-task-filter', JSON.stringify({ await LocalStorageUtil.setConfigField('adf-edit-task-filter', JSON.stringify({
'filterProperties': [ 'filterProperties': [
@ -127,12 +132,12 @@ xdescribe('Edit task filters and task list properties', () => {
'delete' 'delete'
] ]
})); }));
done();
}, 5 * 60 * 1000);
await settingsPage.setProviderBpmSso( afterAll(async(done) => {
browser.params.config.bpmHost, await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
browser.params.config.oauth2.host, await identityService.deleteIdentityUser(testUser.idIdentityService);
browser.params.config.identityHost);
loginSSOPage.loginSSOIdentityService(browser.params.identityUser.email, browser.params.identityUser.password);
done(); done();
}); });
@ -155,8 +160,8 @@ xdescribe('Edit task filters and task list properties', () => {
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(notDisplayedTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(notDisplayedTask.entry.name);
tasksCloudDemoPage.editTaskFilterCloudComponent().setAppNameDropDown(candidateUserApp); tasksCloudDemoPage.editTaskFilterCloudComponent().setAppNameDropDown(candidateBaseApp);
expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getAppNameDropDownValue()).toEqual(candidateUserApp); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getAppNameDropDownValue()).toEqual(candidateBaseApp);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(notDisplayedTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(notDisplayedTask.entry.name);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name);
@ -279,7 +284,7 @@ xdescribe('Edit task filters and task list properties', () => {
tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed();
expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); 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(notAssigned.entry.name);
tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name);

View File

@ -17,7 +17,7 @@
import { browser } from 'protractor'; 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 { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { AppListCloudPage } from '@alfresco/adf-testing'; import { AppListCloudPage } from '@alfresco/adf-testing';
@ -32,20 +32,29 @@ describe('Task list cloud - selection', () => {
const appListCloudComponent = new AppListCloudPage(); const appListCloudComponent = new AppListCloudPage();
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const settingsPage = new SettingsPage(); 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 tasksService: TasksService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
const noOfTasks = 3; const noOfTasks = 3;
let response; let response, testUser, groupInfo;
const tasks = []; const tasks = [];
beforeAll(async (done) => { beforeAll(async (done) => {
const apiService = new ApiService( await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
browser.params.config.oauth2.clientId, identityService = new IdentityService(apiService);
browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers groupIdentityService = new GroupIdentityService(apiService);
); 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);
tasksService = new TasksService(apiService); tasksService = new TasksService(apiService);
@ -59,7 +68,13 @@ describe('Task list cloud - selection', () => {
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

View File

@ -25,12 +25,11 @@ import {
ProcessInstancesService, ProcessInstancesService,
LoginSSOPage, LoginSSOPage,
ApiService, ApiService,
SettingsPage SettingsPage, IdentityService, GroupIdentityService
} from '@alfresco/adf-testing'; } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { AppListCloudPage } from '@alfresco/adf-testing'; import { AppListCloudPage } from '@alfresco/adf-testing';
import resources = require('../util/resources'); import resources = require('../util/resources');
describe('Task filters cloud', () => { describe('Task filters cloud', () => {
@ -41,7 +40,13 @@ describe('Task filters cloud', () => {
const appListCloudComponent = new AppListCloudPage(); const appListCloudComponent = new AppListCloudPage();
const tasksCloudDemoPage = new TasksCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage();
const settingsPage = new SettingsPage(); 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 tasksService: TasksService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let processDefinitionService: ProcessDefinitionsService; let processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; let processInstancesService: ProcessInstancesService;
let queryService: QueryService; let queryService: QueryService;
@ -50,17 +55,20 @@ describe('Task filters cloud', () => {
completedTaskName = StringUtil.generateRandomString(), completedTaskName = StringUtil.generateRandomString(),
assignedTaskName = StringUtil.generateRandomString(), deletedTaskName = StringUtil.generateRandomString(); assignedTaskName = StringUtil.generateRandomString(), deletedTaskName = StringUtil.generateRandomString();
const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name; const simpleApp = resources.ACTIVITI7_APPS.SIMPLE_APP.name;
let assignedTask, deletedTask, suspendedTasks; let assignedTask, deletedTask, suspendedTasks, testUser, groupInfo;
const orderByNameAndPriority = ['cCreatedTask', 'dCreatedTask', 'eCreatedTask']; const orderByNameAndPriority = ['cCreatedTask', 'dCreatedTask', 'eCreatedTask'];
let priority = 30; let priority = 30;
const nrOfTasks = 3; const nrOfTasks = 3;
beforeAll(async (done) => { beforeAll(async (done) => {
const apiService = new ApiService( await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
browser.params.config.oauth2.clientId, identityService = new IdentityService(apiService);
browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers groupIdentityService = new GroupIdentityService(apiService);
); 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);
tasksService = new TasksService(apiService); tasksService = new TasksService(apiService);
await tasksService.createStandaloneTask(createdTaskName, simpleApp); await tasksService.createStandaloneTask(createdTaskName, simpleApp);
@ -76,10 +84,10 @@ describe('Task filters cloud', () => {
} }
processDefinitionService = new ProcessDefinitionsService(apiService); processDefinitionService = new ProcessDefinitionsService(apiService);
const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); const processDefinition = await processDefinitionService.getProcessDefinitionByName('simpleProcess', simpleApp);
processInstancesService = new ProcessInstancesService(apiService); processInstancesService = new ProcessInstancesService(apiService);
const processInstance = 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.list.entries[0].entry.key, simpleApp); const secondProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp);
queryService = new QueryService(apiService); queryService = new QueryService(apiService);
suspendedTasks = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); suspendedTasks = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp);
@ -92,7 +100,13 @@ describe('Task filters cloud', () => {
browser.params.config.bpmHost, browser.params.config.bpmHost,
browser.params.config.oauth2.host, browser.params.config.oauth2.host,
browser.params.config.identityHost); 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(); done();
}); });

Binary file not shown.

View File

@ -110,13 +110,6 @@ exports.APP_ICON = {
USER: "person" 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_END_DATE = "No date";
exports.PROCESS_CATEGORY = "http://www.activiti.org/processdef"; exports.PROCESS_CATEGORY = "http://www.activiti.org/processdef";

View File

@ -514,9 +514,9 @@ exports.Files = {
}; };
exports.ACTIVITI7_APPS = { exports.ACTIVITI7_APPS = {
CANDIDATE_USER_APP: { CANDIDATE_BASE_APP: {
name: "candidateuserapp", name: "candidatebaseapp",
file_location: "/resources/activiti7/candidateuserapp.zip" file_location: "/resources/activiti7/candidatebaseapp.zip"
}, },
SIMPLE_APP: { SIMPLE_APP: {
name: "simpleapp", name: "simpleapp",

View File

@ -28,12 +28,21 @@ export class IdentityService {
this.api = api; 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 rolesService = new RolesService(apiService);
const apsUser = await this.createIdentityUser(); const user = await this.createIdentityUser();
const apsUserRoleId = await rolesService.getRoleIdByRoleName(role); for (let i = 0; i < roles.length; i++) {
await this.assignRole(apsUser.idIdentityService, apsUserRoleId, role); const roleId = await rolesService.getRoleIdByRoleName(roles[i]);
return apsUser; await this.assignRole(user.idIdentityService, roleId, roles[i]);
}
return user;
} }
async createIdentityUser(user: UserModel = new UserModel()) { async createIdentityUser(user: UserModel = new UserModel()) {
@ -106,7 +115,7 @@ export class IdentityService {
async getUserInfoByUsername(username) { async getUserInfoByUsername(username) {
const path = `/users`; const path = `/users`;
const method = 'GET'; const method = 'GET';
const queryParams = { 'username': username }, postBody = {}; const queryParams = {'username': username}, postBody = {};
const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); const data = await this.api.performIdentityOperation(path, method, queryParams, postBody);
return data[0]; return data[0];
@ -116,16 +125,30 @@ export class IdentityService {
const path = `/users/${id}/reset-password`; const path = `/users/${id}/reset-password`;
const method = 'PUT'; const method = 'PUT';
const queryParams = {}, 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); 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) { async assignRole(userId, roleId, roleName) {
const path = `/users/${userId}/role-mappings/realm`; const path = `/users/${userId}/role-mappings/realm`;
const method = 'POST'; const method = 'POST';
const queryParams = {}, const queryParams = {},
postBody = [{ 'id': roleId, 'name': roleName }]; postBody = [{'id': roleId, 'name': roleName}];
return await this.api.performIdentityOperation(path, method, queryParams, postBody); return await this.api.performIdentityOperation(path, method, queryParams, postBody);
} }

View File

@ -39,7 +39,7 @@ export class TasksService {
return await this.api.performBpmOperation(path, method, queryParams, postBody); return await this.api.performBpmOperation(path, method, queryParams, postBody);
} catch (error) { } catch (error) {
// tslint:disable-next-line:no-console // 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)));
} }
} }

View File

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

View File

@ -263,7 +263,7 @@ async function deployApp(apiService, app, name) {
"version": app.entry.name, "version": app.entry.name,
"security": [{"role": "APS_ADMIN", "groups": [], "users": ["admin.adf"]}, { "security": [{"role": "APS_ADMIN", "groups": [], "users": ["admin.adf"]}, {
"role": "APS_USER", "role": "APS_USER",
"groups": [], "groups": ["hr"],
"users": ["admin.adf"] "users": ["admin.adf"]
}] }]
}; };

View File

@ -17,6 +17,8 @@ show_help() {
echo "--env" echo "--env"
echo "-u or --username" echo "-u or --username"
echo "-p or --password" echo "-p or --password"
echo "-identity_admin_email"
echo "-identity_admin_password"
echo "-e or --email" echo "-e or --email"
echo "-b or --browser run the test in the browser (No headless mode)" echo "-b or --browser run the test in the browser (No headless mode)"
echo "-s or --spec run a single test file" echo "-s or --spec run a single test file"
@ -46,6 +48,14 @@ set_password(){
PASSWORD=$1 PASSWORD=$1
export PASSWORD_ADF=$PASSWORD 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(){ set_email(){
EMAIL=$1 EMAIL=$1
export EMAIL_ADF=$EMAIL export EMAIL_ADF=$EMAIL
@ -149,6 +159,8 @@ while [[ $1 == -* ]]; do
-h|--help|-\?) show_help; exit 0;; -h|--help|-\?) show_help; exit 0;;
-u|--username) set_username $2; shift 2;; -u|--username) set_username $2; shift 2;;
-p|--password) set_password $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;; -e|--email) set_email $2; shift 2;;
-f|--folder) set_test_folder $2; shift 2;; -f|--folder) set_test_folder $2; shift 2;;
-timeout|--timeout) set_timeout $2; shift 2;; -timeout|--timeout) set_timeout $2; shift 2;;

View File

@ -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")"; 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_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" ]]; if [[ $AFFECTED_LIBS =~ "$CONTEXT_ENV$" || $TRAVIS_PULL_REQUEST == "false" ]];
then then