[ADF-4278][ADF-4277] - Should fetch the preselect users (#4535)

* C305033 Preselect Users automated.

* fix the LastName issue failing.

* C305041 automated

* in progress

* in progress

* in progress

* in progress

* lint fix

* moving the assignee filed to PeopleCloudComponent

* moving the assignee filed to PeopleCloudComponent

* split the tests into smaller chunks for easy understandability.

* added the missing check and renamed the method appropriately.

* fixes for flakiness
This commit is contained in:
gmandakini 2019-04-10 19:48:20 +01:00 committed by Eugenio Romano
parent 7a2a8a1ed3
commit 1336fbee0e
9 changed files with 335 additions and 22 deletions

View File

@ -24,7 +24,7 @@
</mat-form-field> </mat-form-field>
<mat-form-field *ngIf="isPeopleAppNameSelected()" class="adf-preselect-value"> <mat-form-field *ngIf="isPeopleAppNameSelected()" class="adf-preselect-value">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }}</mat-label> <mat-label>{{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }}</mat-label>
<input matInput (input)="setPeopleAppName($event)" /> <input matInput (input)="setPeopleAppName($event)" data-automation-id="adf-people-app-input" />
</mat-form-field> </mat-form-field>
<mat-form-field class="adf-preselect-value-full"> <mat-form-field class="adf-preselect-value-full">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }}: {{ DEFAULT_PEOPLE_PLACEHOLDER }}</mat-label> <mat-label>{{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }}: {{ DEFAULT_PEOPLE_PLACEHOLDER }}</mat-label>
@ -81,7 +81,7 @@
</mat-form-field> </mat-form-field>
<mat-form-field *ngIf="isGroupAppNameSelected()" class="adf-preselect-value"> <mat-form-field *ngIf="isGroupAppNameSelected()" class="adf-preselect-value">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }}</mat-label> <mat-label>{{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }}</mat-label>
<input matInput (input)="setGroupAppName($event)" /> <input matInput (input)="setGroupAppName($event)" data-automation-id="adf-group-app-input"/>
</mat-form-field> </mat-form-field>
<mat-form-field class="adf-preselect-value-full"> <mat-form-field class="adf-preselect-value-full">
<mat-label>Preselect: {{ DEFAULT_GROUP_PLACEHOLDER }}</mat-label> <mat-label>Preselect: {{ DEFAULT_GROUP_PLACEHOLDER }}</mat-label>

View File

@ -21,17 +21,24 @@ import { BrowserVisibility } from '@alfresco/adf-testing';
export class PeopleGroupCloudComponentPage { export class PeopleGroupCloudComponentPage {
peopleCloudSingleSelection = element(by.css('mat-radio-button[data-automation-id="adf-people-single-mode"]')); peopleCloudSingleSelection = element(by.css('mat-radio-button[data-automation-id="adf-people-single-mode"]'));
peopleCloudSingleSelectionChecked = element(by.css('mat-radio-button[data-automation-id="adf-people-single-mode"][class*="mat-radio-checked"]'));
peopleCloudMultipleSelection = element(by.css('mat-radio-button[data-automation-id="adf-people-multiple-mode"]')); peopleCloudMultipleSelection = element(by.css('mat-radio-button[data-automation-id="adf-people-multiple-mode"]'));
peopleCloudFilterRole = element(by.css('mat-radio-button[data-automation-id="adf-people-filter-role"]')); peopleCloudFilterRole = element(by.css('mat-radio-button[data-automation-id="adf-people-filter-role"]'));
groupCloudSingleSelection = element(by.css('mat-radio-button[data-automation-id="adf-group-single-mode"]')); groupCloudSingleSelection = element(by.css('mat-radio-button[data-automation-id="adf-group-single-mode"]'));
groupCloudMultipleSelection = element(by.css('mat-radio-button[data-automation-id="adf-group-multiple-mode"]')); groupCloudMultipleSelection = element(by.css('mat-radio-button[data-automation-id="adf-group-multiple-mode"]'));
groupCloudFilterRole = element(by.css('mat-radio-button[data-automation-id="adf-group-filter-role"]')); groupCloudFilterRole = element(by.css('mat-radio-button[data-automation-id="adf-group-filter-role"]'));
peopleRoleInput = element(by.css('input[data-automation-id="adf-people-roles-input"]')); peopleRoleInput = element(by.css('input[data-automation-id="adf-people-roles-input"]'));
peopleAppInput = element(by.css('input[data-automation-id="adf-people-app-input"]'));
peoplePreselect = element(by.css('input[data-automation-id="adf-people-preselect-input"]')); peoplePreselect = element(by.css('input[data-automation-id="adf-people-preselect-input"]'));
groupRoleInput = element(by.css('input[data-automation-id="adf-group-roles-input"]')); groupRoleInput = element(by.css('input[data-automation-id="adf-group-roles-input"]'));
groupAppInput = element(by.css('input[data-automation-id="adf-group-app-input"]'));
groupPreselect = element(by.css('input[data-automation-id="adf-group-preselect-input"]')); groupPreselect = element(by.css('input[data-automation-id="adf-group-preselect-input"]'));
peopleCloudComponentTitle = element(by.cssContainingText('mat-card-title', 'People Cloud Component')); peopleCloudComponentTitle = element(by.cssContainingText('mat-card-title', 'People Cloud Component'));
groupCloudComponentTitle = element(by.cssContainingText('mat-card-title', 'Groups Cloud Component')); groupCloudComponentTitle = element(by.cssContainingText('mat-card-title', 'Groups Cloud Component'));
preselectValidation = element(by.css('mat-checkbox.adf-preselect-value'));
preselectValidationStatus = element(by.css('mat-checkbox.adf-preselect-value label input'));
peopleFilterByAppName = element(by.css('.people-control-options mat-radio-button[value="appName"]'));
groupFilterByAppName = element(by.css('.groups-control-options mat-radio-button[value="appName"]'));
checkPeopleCloudComponentTitleIsDisplayed() { checkPeopleCloudComponentTitleIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudComponentTitle); BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudComponentTitle);
@ -48,6 +55,15 @@ export class PeopleGroupCloudComponentPage {
this.peopleCloudMultipleSelection.click(); this.peopleCloudMultipleSelection.click();
} }
clickPeopleCloudSingleSelection() {
BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSingleSelection);
this.peopleCloudSingleSelection.click();
}
checkPeopleCloudSingleSelectionIsSelected() {
BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSingleSelectionChecked);
}
clickPeopleCloudFilterRole() { clickPeopleCloudFilterRole() {
BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudFilterRole); BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudFilterRole);
this.peopleCloudFilterRole.click(); this.peopleCloudFilterRole.click();
@ -65,6 +81,13 @@ export class PeopleGroupCloudComponentPage {
return this; return this;
} }
enterPeoplePreselect(preselect) {
BrowserVisibility.waitUntilElementIsVisible(this.peoplePreselect);
this.peoplePreselect.clear();
this.peoplePreselect.sendKeys(preselect);
return this;
}
clearField(locator) { clearField(locator) {
BrowserVisibility.waitUntilElementIsVisible(locator); BrowserVisibility.waitUntilElementIsVisible(locator);
locator.getAttribute('value').then((result) => { locator.getAttribute('value').then((result) => {
@ -74,6 +97,11 @@ export class PeopleGroupCloudComponentPage {
}); });
} }
clickGroupCloudSingleSelection() {
BrowserVisibility.waitUntilElementIsVisible(this.groupCloudSingleSelection);
this.groupCloudSingleSelection.click();
}
clickGroupCloudMultipleSelection() { clickGroupCloudMultipleSelection() {
BrowserVisibility.waitUntilElementIsVisible(this.groupCloudMultipleSelection); BrowserVisibility.waitUntilElementIsVisible(this.groupCloudMultipleSelection);
this.groupCloudMultipleSelection.click(); this.groupCloudMultipleSelection.click();
@ -86,4 +114,38 @@ export class PeopleGroupCloudComponentPage {
return this; return this;
} }
clickPreselectValidation() {
BrowserVisibility.waitUntilElementIsVisible(this.preselectValidation);
this.preselectValidation.click();
}
getPreselectValidationStatus() {
BrowserVisibility.waitUntilElementIsVisible(this.preselectValidationStatus);
return this.preselectValidationStatus.getAttribute('aria-checked');
}
clickPeopleFilerByApp() {
BrowserVisibility.waitUntilElementIsVisible(this.peopleFilterByAppName);
return this.peopleFilterByAppName.click();
}
clickGroupFilerByApp() {
BrowserVisibility.waitUntilElementIsVisible(this.groupFilterByAppName);
return this.groupFilterByAppName.click();
}
enterPeopleAppName(appName) {
BrowserVisibility.waitUntilElementIsVisible(this.peopleAppInput);
this.peopleAppInput.clear();
this.peopleAppInput.sendKeys(appName);
return this;
}
enterGroupAppName(appName) {
BrowserVisibility.waitUntilElementIsVisible(this.groupAppInput);
this.groupAppInput.clear();
this.groupAppInput.sendKeys(appName);
return this;
}
} }

View File

@ -49,8 +49,10 @@ describe('People Groups Cloud Component', () => {
let activitiUserRoleId; let activitiUserRoleId;
let apsAdminRoleId; let apsAdminRoleId;
let activitiAdminRoleId; let activitiAdminRoleId;
let clientActivitiAdminRoleId, clientActivitiUserRoleId;
let users = []; let users = [];
let groups = []; let groups = [];
let clientId;
beforeAll(async () => { beforeAll(async () => {
@ -58,6 +60,11 @@ describe('People Groups Cloud Component', () => {
await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
identityService = new IdentityService(apiService); identityService = new IdentityService(apiService);
rolesService = new RolesService(apiService); rolesService = new RolesService(apiService);
groupIdentityService = new GroupIdentityService(apiService);
clientId = await groupIdentityService.getClientIdByApplicationName('simple-app');
groupActiviti = await groupIdentityService.createIdentityGroup();
clientActivitiAdminRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_ADMIN);
clientActivitiUserRoleId = await rolesService.getClientRoleIdByRoleName(groupActiviti.id, clientId, CONSTANTS.ROLES.ACTIVITI_USER);
apsUser = await identityService.createIdentityUser(); apsUser = await identityService.createIdentityUser();
apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER);
@ -66,14 +73,18 @@ describe('People Groups Cloud Component', () => {
activitiUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_USER); activitiUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_USER);
await identityService.assignRole(activitiUser.idIdentityService, activitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); await identityService.assignRole(activitiUser.idIdentityService, activitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER);
noRoleUser = await identityService.createIdentityUser(); noRoleUser = await identityService.createIdentityUser();
groupIdentityService = new GroupIdentityService(apiService); await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN);
await identityService.deleteClientRole(noRoleUser.idIdentityService, clientId, clientActivitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER);
groupAps = await groupIdentityService.createIdentityGroup(); groupAps = await groupIdentityService.createIdentityGroup();
apsAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_ADMIN); apsAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_ADMIN);
await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, CONSTANTS.ROLES.APS_ADMIN); await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, CONSTANTS.ROLES.APS_ADMIN);
groupActiviti = await groupIdentityService.createIdentityGroup();
activitiAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_ADMIN); activitiAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_ADMIN);
await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN); await groupIdentityService.assignRole(groupActiviti.id, activitiAdminRoleId, CONSTANTS.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(groupActiviti.id, clientId, clientActivitiAdminRoleId, CONSTANTS.ROLES.ACTIVITI_ADMIN );
users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`]; users = [`${apsUser.idIdentityService}`, `${activitiUser.idIdentityService}`, `${noRoleUser.idIdentityService}`];
groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`]; groups = [`${groupAps.id}`, `${groupActiviti.id}`, `${groupNoRole.id}`];
silentLogin = false; silentLogin = false;
@ -104,11 +115,11 @@ describe('People Groups Cloud Component', () => {
peopleGroupCloudComponentPage.clickPeopleCloudFilterRole(); peopleGroupCloudComponentPage.clickPeopleCloudFilterRole();
peopleGroupCloudComponentPage.enterPeopleRoles(`["${CONSTANTS.ROLES.APS_USER}"]`); peopleGroupCloudComponentPage.enterPeopleRoles(`["${CONSTANTS.ROLES.APS_USER}"]`);
peopleCloudComponent.searchAssignee('LastName'); peopleCloudComponent.searchAssignee('LastName');
peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkUserIsNotDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsNotDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleCloudComponent.selectAssigneeFromList(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}` + 'LastName'); peopleCloudComponent.selectAssigneeFromList(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}` + 'LastName'); peopleCloudComponent.checkSelectedPeople(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
}); });
it('[C297674] Add more than one role filtering to PeopleCloudComponent', () => { it('[C297674] Add more than one role filtering to PeopleCloudComponent', () => {
@ -116,22 +127,22 @@ describe('People Groups Cloud Component', () => {
peopleGroupCloudComponentPage.clickPeopleCloudFilterRole(); peopleGroupCloudComponentPage.clickPeopleCloudFilterRole();
peopleGroupCloudComponentPage.enterPeopleRoles(`["${CONSTANTS.ROLES.APS_USER}", "${CONSTANTS.ROLES.ACTIVITI_USER}"]`); peopleGroupCloudComponentPage.enterPeopleRoles(`["${CONSTANTS.ROLES.APS_USER}", "${CONSTANTS.ROLES.ACTIVITI_USER}"]`);
peopleCloudComponent.searchAssignee('LastName'); peopleCloudComponent.searchAssignee('LastName');
peopleCloudComponent.checkUserIsDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleCloudComponent.selectAssigneeFromList(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}` + 'LastName'); peopleCloudComponent.selectAssigneeFromList(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${activitiUser.lastName}` + 'LastName'); peopleCloudComponent.checkSelectedPeople(`${activitiUser.lastName}`);
}); });
it('[C297674] Add no role filters to PeopleCloudComponent', () => { it('[C297674] Add no role filters to PeopleCloudComponent', () => {
peopleGroupCloudComponentPage.clickPeopleCloudMultipleSelection(); peopleGroupCloudComponentPage.clickPeopleCloudMultipleSelection();
peopleGroupCloudComponentPage.clickPeopleCloudFilterRole(); peopleGroupCloudComponentPage.clickPeopleCloudFilterRole();
peopleCloudComponent.searchAssignee('LastName'); peopleCloudComponent.searchAssignee('LastName');
peopleCloudComponent.checkUserIsDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkUserIsDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}` + 'LastName'); peopleCloudComponent.checkUserIsDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.selectAssigneeFromList(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}` + 'LastName'); peopleCloudComponent.selectAssigneeFromList(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}` + 'LastName'); peopleCloudComponent.checkSelectedPeople(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
}); });
it('[C297674] Add role filtering to GroupCloudComponent', () => { it('[C297674] Add role filtering to GroupCloudComponent', () => {
@ -170,6 +181,148 @@ describe('People Groups Cloud Component', () => {
groupCloudComponentPage.checkSelectedGroup(`${groupNoRole.name}`); groupCloudComponentPage.checkSelectedGroup(`${groupNoRole.name}`);
}); });
it('[C305033] Should fetch the preselect users based on the Validate flag set to True in Single mode selection', () => {
peopleGroupCloudComponentPage.checkPeopleCloudSingleSelectionIsSelected();
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('true');
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"id":"${noRoleUser.idIdentityService}"}]`);
browser.sleep(100);
expect(peopleCloudComponent.getAssigneeFieldContent()).toBe(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('false');
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('true');
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"email":"${apsUser.email}"}]`);
browser.sleep(100);
expect(peopleCloudComponent.getAssigneeFieldContent()).toBe(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('false');
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('true');
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"username":"${activitiUser.username}"}]`);
browser.sleep(100);
expect(peopleCloudComponent.getAssigneeFieldContent()).toBe(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleGroupCloudComponentPage.enterPeoplePreselect('[{"id":"12345","username":"someUsername","email":"someEmail"}]');
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('false');
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('true');
browser.sleep(100);
expect(peopleCloudComponent.getAssigneeFieldContent()).toBe('');
});
it('[C305033] Should fetch the preselect users based on the Validate flag set to True in Multiple mode selection', () => {
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"id":"${apsUser.idIdentityService}"},{"id":"${activitiUser.idIdentityService}"},` +
`{"id":"${noRoleUser.idIdentityService}"}]`);
peopleGroupCloudComponentPage.clickPeopleCloudMultipleSelection();
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('true');
peopleCloudComponent.checkSelectedPeople(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"email":"${apsUser.email}"},{"email":"${activitiUser.email}"},{"email":"${noRoleUser.email}"}]`);
peopleCloudComponent.checkSelectedPeople(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"username":"${apsUser.username}"},{"username":"${activitiUser.username}"},` +
`{"username":"${noRoleUser.username}"}]`);
peopleCloudComponent.checkSelectedPeople(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleCloudComponent.searchAssigneeToExisting('LastName');
peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
peopleCloudComponent.checkUserIsNotDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkUserIsNotDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
});
it('[C305033] Should populate the Users without any validation when the Preselect flag is set to false', () => {
peopleGroupCloudComponentPage.clickPeopleCloudMultipleSelection();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('false');
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"firstName":"TestFirstName1","lastName":"TestLastName1"},` +
`{"firstName":"TestFirstName2","lastName":"TestLastName2"},{"firstName":"TestFirstName3","lastName":"TestLastName3"}]`);
peopleCloudComponent.checkSelectedPeople('TestFirstName1 TestLastName1');
peopleCloudComponent.checkSelectedPeople('TestFirstName2 TestLastName2');
peopleCloudComponent.checkSelectedPeople('TestFirstName3 TestLastName3');
});
it('[C305033] Should not fetch the preselect users when mandatory parameters Id, Email and username are missing', () => {
peopleGroupCloudComponentPage.clickPeopleCloudMultipleSelection();
peopleGroupCloudComponentPage.clickPreselectValidation();
expect(peopleGroupCloudComponentPage.getPreselectValidationStatus()).toBe('true');
peopleGroupCloudComponentPage.enterPeoplePreselect(`[{"firstName":"${apsUser.firstName}","lastName":"${apsUser.lastName},"` +
`{"firstName":"${activitiUser.firstName}","lastName":"${activitiUser.lastName}",{"firstName":"${noRoleUser.firstName}","lastName":"${noRoleUser.lastName}"]`);
browser.sleep(100);
expect(peopleCloudComponent.getAssigneeFieldContent()).toBe('');
});
it('[C305041] Should filter the People Single Selection with the Application name filter', () => {
peopleGroupCloudComponentPage.checkPeopleCloudSingleSelectionIsSelected();
peopleGroupCloudComponentPage.clickPeopleFilerByApp();
peopleGroupCloudComponentPage.enterPeopleAppName('simple-app');
peopleCloudComponent.searchAssignee(`${activitiUser.firstName}`);
peopleCloudComponent.checkUserIsDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.selectAssigneeFromList(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
browser.sleep(100);
expect(peopleCloudComponent.getAssigneeFieldContent()).toBe(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
});
it('[C305041] Should filter the People Multiple Selection with the Application name filter', () => {
peopleGroupCloudComponentPage.clickPeopleCloudMultipleSelection();
peopleGroupCloudComponentPage.clickPeopleFilerByApp();
peopleGroupCloudComponentPage.enterPeopleAppName('simple-app');
peopleCloudComponent.searchAssignee(`${apsUser.firstName}`);
peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.selectAssigneeFromList(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${apsUser.firstName}` + ' ' + `${apsUser.lastName}`);
peopleCloudComponent.searchAssigneeToExisting(`${activitiUser.firstName}`);
peopleCloudComponent.checkUserIsDisplayed(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.selectAssigneeFromList(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.checkSelectedPeople(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`);
peopleCloudComponent.searchAssigneeToExisting(`${noRoleUser.firstName}`);
peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName}` + ' ' + `${noRoleUser.lastName}`);
});
it('[C305041] Should filter the Groups Single Selection with the Application name filter', () => {
peopleGroupCloudComponentPage.clickGroupCloudSingleSelection();
peopleGroupCloudComponentPage.clickGroupFilerByApp();
peopleGroupCloudComponentPage.enterGroupAppName('simple-app');
groupCloudComponentPage.searchGroups(`${groupActiviti.name}`);
groupCloudComponentPage.checkGroupIsDisplayed(`${groupActiviti.name}`);
groupCloudComponentPage.selectGroupFromList(`${groupActiviti.name}`);
expect(groupCloudComponentPage.getGroupsFieldContent()).toBe(`${groupActiviti.name}`);
});
it('[C305041] Should filter the Groups Multiple Selection with the Application name filter', () => {
peopleGroupCloudComponentPage.clickGroupCloudMultipleSelection();
peopleGroupCloudComponentPage.clickGroupFilerByApp();
peopleGroupCloudComponentPage.enterGroupAppName('simple-app');
groupCloudComponentPage.searchGroups(`${groupAps.name}`);
groupCloudComponentPage.checkGroupIsDisplayed(`${groupAps.name}`);
groupCloudComponentPage.selectGroupFromList(`${groupAps.name}`);
groupCloudComponentPage.checkSelectedGroup(`${groupAps.name}`);
groupCloudComponentPage.searchGroupsToExisting(`${groupActiviti.name}`);
groupCloudComponentPage.checkGroupIsDisplayed(`${groupActiviti.name}`);
groupCloudComponentPage.selectGroupFromList(`${groupActiviti.name}`);
groupCloudComponentPage.checkSelectedGroup(`${groupActiviti.name}`);
groupCloudComponentPage.searchGroupsToExisting(`${groupNoRole.name}`);
groupCloudComponentPage.checkGroupIsNotDisplayed(`${groupNoRole.name}`);
});
}); });
}); });

View File

@ -74,4 +74,38 @@ export class GroupIdentityService {
return data; return data;
} }
/**
* Add client roles.
* @param groupId ID of the target group
* @param clientId ID of the client
* @param roleId ID of the clientRole
* @param roleName of the clientRole
*/
async addClientRole(groupId: string, clientId: string, roleId: string, roleName: string) {
const path = `/groups/${groupId}/role-mappings/clients/${clientId}`;
const method = 'POST', queryParams = {},
postBody = [{
'id': roleId,
'name': roleName,
'composite': false,
'clientRole': true,
'containerId': clientId
}];
const data = await this.api.performIdentityOperation(path, method, queryParams, postBody);
return data;
}
/**
* Gets the client ID using the app name.
* @param applicationName Name of the app
* @returns client ID string
*/
async getClientIdByApplicationName(applicationName: string) {
const path = `/clients`;
const method = 'GET', queryParams = {clientId: applicationName}, postBody = {};
const data = await this.api.performIdentityOperation(path, method, queryParams, postBody);
return data[0].id;
}
} }

View File

@ -29,7 +29,7 @@ export class IdentityService {
async createIdentityUser(user: UserModel = new UserModel()) { async createIdentityUser(user: UserModel = new UserModel()) {
await this.createUser(user); await this.createUser(user);
const userIdentity = await this.getUserInfoByUsername(user.email); const userIdentity = await this.getUserInfoByUsername(user.username);
await this.resetPassword(userIdentity.id, user.password); await this.resetPassword(userIdentity.id, user.password);
user.idIdentityService = userIdentity.id; user.idIdentityService = userIdentity.id;
return user; return user;
@ -63,7 +63,7 @@ export class IdentityService {
const path = '/users'; const path = '/users';
const method = 'POST'; const method = 'POST';
const queryParams = {}, postBody = { const queryParams = {}, postBody = {
'username': user.email, 'username': user.username,
'firstName': user.firstName, 'firstName': user.firstName,
'lastName': user.lastName, 'lastName': user.lastName,
'enabled': true, 'enabled': true,
@ -110,4 +110,18 @@ export class IdentityService {
return data; return data;
} }
async deleteClientRole(userId: string, clientId: string, roleId: string, roleName: string) {
const path = `/users/${userId}/role-mappings/clients/${clientId}`;
const method = 'DELETE', queryParams = {},
postBody = [{
'id': roleId,
'name': roleName,
'composite': false,
'clientRole': true,
'containerId': clientId
}];
const data = await this.api.performIdentityOperation(path, method, queryParams, postBody);
return data;
}
} }

View File

@ -40,4 +40,19 @@ export class RolesService {
return roleId; return roleId;
} }
async getClientRoleIdByRoleName(groupId, clientId, clientRoleName) {
const path = `/groups/${groupId}/role-mappings/clients/${clientId}/available`;
const method = 'GET';
let clientRoleId;
const queryParams = {}, postBody = {};
const data = await this.api.performIdentityOperation(path, method, queryParams, postBody);
for (const key in data) {
if (data[key].name === clientRoleName) {
clientRoleId = data[key].id;
}
}
return clientRoleId;
}
} }

View File

@ -20,9 +20,10 @@ import { StringUtil } from '../string.util';
export class UserModel { export class UserModel {
firstName: string = StringUtil.generateRandomString(); firstName: string = StringUtil.generateRandomString();
lastName: string = StringUtil.generateRandomString(); lastName: string = StringUtil.generateRandomString() + 'LastName';
password: string = StringUtil.generateRandomString(); password: string = StringUtil.generateRandomString();
email: string = StringUtil.generateRandomEmail('@alfresco.com'); email: string = StringUtil.generateRandomEmail('@alfresco.com');
username: string = StringUtil.generateRandomString().toLowerCase();
idIdentityService: string; idIdentityService: string;
constructor(details?: any) { constructor(details?: any) {

View File

@ -34,6 +34,22 @@ export class GroupCloudComponentPage {
return this; return this;
} }
searchGroupsToExisting(name) {
BrowserVisibility.waitUntilElementIsVisible(this.groupCloudSearch);
for (let i = 0; i < name.length; i++) {
this.groupCloudSearch.sendKeys(name[i]);
}
this.groupCloudSearch.sendKeys(protractor.Key.BACK_SPACE);
this.groupCloudSearch.sendKeys(name[name.length - 1]);
return this;
}
getGroupsFieldContent() {
BrowserVisibility.waitUntilElementIsVisible(this.groupCloudSearch);
return this.groupCloudSearch.getAttribute('value');
}
selectGroupFromList(name) { selectGroupFromList(name) {
const groupRow = element.all(by.cssContainingText('mat-option span', name)).first(); const groupRow = element.all(by.cssContainingText('mat-option span', name)).first();
BrowserVisibility.waitUntilElementIsVisible(groupRow); BrowserVisibility.waitUntilElementIsVisible(groupRow);

View File

@ -21,6 +21,7 @@ import { BrowserVisibility } from '../../core/browser-visibility';
export class PeopleCloudComponentPage { export class PeopleCloudComponentPage {
peopleCloudSearch = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]')); peopleCloudSearch = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]'));
assigneeField = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]'));
searchAssigneeAndSelect(name) { searchAssigneeAndSelect(name) {
BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch); BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch);
@ -32,6 +33,7 @@ export class PeopleCloudComponentPage {
searchAssignee(name) { searchAssignee(name) {
BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch); BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch);
BrowserVisibility.waitUntilElementIsClickable(this.peopleCloudSearch);
this.peopleCloudSearch.clear().then(() => { this.peopleCloudSearch.clear().then(() => {
for (let i = 0; i < name.length; i++) { for (let i = 0; i < name.length; i++) {
this.peopleCloudSearch.sendKeys(name[i]); this.peopleCloudSearch.sendKeys(name[i]);
@ -42,6 +44,16 @@ export class PeopleCloudComponentPage {
return this; return this;
} }
searchAssigneeToExisting(name) {
BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch);
for (let i = 0; i < name.length; i++) {
this.peopleCloudSearch.sendKeys(name[i]);
}
this.peopleCloudSearch.sendKeys(protractor.Key.BACK_SPACE);
this.peopleCloudSearch.sendKeys(name[name.length - 1]);
return this;
}
selectAssigneeFromList(name) { selectAssigneeFromList(name) {
const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name)); const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name));
BrowserVisibility.waitUntilElementIsVisible(assigneeRow); BrowserVisibility.waitUntilElementIsVisible(assigneeRow);
@ -72,4 +84,10 @@ export class PeopleCloudComponentPage {
return this; return this;
} }
getAssigneeFieldContent() {
BrowserVisibility.waitUntilElementIsVisible(this.assigneeField);
return this.assigneeField.getAttribute('value');
}
} }