[ADF-3666] User info sso e2e tests (#4057)

* user info sso tests

* remove async await
This commit is contained in:
rgherghelas
2018-12-11 12:36:52 +02:00
committed by Eugenio Romano
parent ced1901c89
commit c32d331a9b
3 changed files with 185 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
/*!
* @license
* Copyright 2016 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ApiService } from '../APS-cloud/apiservice';
import { Util } from '../../util/util';
export class Identity {
api: ApiService = new ApiService();
constructor() {
}
async init(username, password) {
await this.api.login(username, password);
}
async createIdentityUser(username = Util.generateRandomString(5), password = Util.generateRandomString(5)) {
await this.createUser(username);
const user = await this.getUserInfoByUsername(username);
await this.resetPassword(user[0].id, password);
user[0].password = password;
return user;
}
async deleteIdentityUser(userId) {
await this.deleteUser(userId);
}
async createUser(username) {
const path = '/auth/admin/realms/springboot/users';
const method = 'POST';
const queryParams = {}, postBody = {
'username': username,
'firstName': username,
'lastName': 'LastName',
'enabled': true,
'email': username + '@alfresco.com'
};
const data = await this.api.performBpmOperation(path, method, queryParams, postBody);
return data;
}
async deleteUser(userId) {
const path = `/auth/admin/realms/springboot/users/${userId}`;
const method = 'DELETE';
const queryParams = {}, postBody = {
};
const data = await this.api.performBpmOperation(path, method, queryParams, postBody);
return data;
}
async getUserInfoByUsername(username) {
const path = `/auth/admin/realms/springboot/users`;
const method = 'GET';
const queryParams = { 'username' : username }, postBody = {};
const data = await this.api.performBpmOperation(path, method, queryParams, postBody);
return data;
}
async resetPassword(id, password) {
const path = `/auth/admin/realms/springboot/users/${id}/reset-password`;
const method = 'PUT';
const queryParams = {},
postBody = {'type': 'password', 'value': password, 'temporary': false};
const data = await this.api.performBpmOperation(path, method, queryParams, postBody);
return data;
}
async getRoleByName(roleName) {
const path = `/auth/admin/realms/springboot/roles/${roleName}`;
const method = 'GET';
const queryParams = {},
postBody = {};
const data = await this.api.performBpmOperation(path, method, queryParams, postBody);
return data;
}
async assignRole(userId, roleId, roleName) {
const path = `/auth/admin/realms/springboot/users/${userId}/role-mappings/realm`;
const method = 'POST';
const queryParams = {},
postBody = [{'id': roleId, 'name': roleName}];
const data = await this.api.performBpmOperation(path, method, queryParams, postBody);
return data;
}
}

View File

@@ -0,0 +1,61 @@
/*!
* @license
* Copyright 2016 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { LoginSSOPage } from '../pages/adf/loginSSOPage';
import { SettingsPage } from '../pages/adf/settingsPage';
import TestConfig = require('../test.config');
import { browser } from 'protractor';
import { NavigationBarPage } from '../pages/adf/NavigationBarPage';
import { UserInfoDialog } from '../pages/adf/dialog/userInfoDialog';
import { Identity } from '../actions/APS-cloud/identity';
describe('User Info - SSO', () => {
const settingsPage = new SettingsPage();
const loginSSOPage = new LoginSSOPage();
const navigationBarPage = new NavigationBarPage();
const userInfoDialog = new UserInfoDialog();
const identityService: Identity = new Identity();
const path = '/auth/realms/springboot';
let silentLogin, identityUser;
beforeAll(async () => {
await identityService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
identityUser = await identityService.createIdentityUser();
silentLogin = false;
settingsPage.setProviderBpmSso(TestConfig.adf.hostSso, TestConfig.adf.hostSso + path, silentLogin);
loginSSOPage.clickOnSSOButton();
browser.ignoreSynchronization = true;
loginSSOPage.loginAPS(identityUser['0'].username, identityUser['0'].password);
});
afterAll (() => {
identityService.deleteIdentityUser(identityUser[0].id);
});
it('[C290066] Should display UserInfo when login using SSO', () => {
navigationBarPage.navigateToProcessServicesCloudPage();
navigationBarPage.clickUserProfile();
expect(userInfoDialog.getSsoHeaderTitle()).toEqual(identityUser['0'].firstName + ' ' + identityUser['0'].lastName);
expect(userInfoDialog.getSsoTitle()).toEqual(identityUser['0'].firstName + ' ' + identityUser['0'].lastName);
expect(userInfoDialog.getSsoEmail()).toEqual(identityUser['0'].email);
userInfoDialog.closeUserProfile();
});
});

View File

@@ -34,6 +34,9 @@ export class UserInfoDialog {
apsImage = element(by.css('img[id="bpm-user-detail-image"]'));
acsImage = element(by.css('img[id="ecm-user-detail-image"]'));
initialImage = element.all(by.css('div[id="user-initials-image"]')).first();
userInfoSsoHeaderTitle = this.dialog.element(by.css('div[id="identity-username"]'));
userInfoSsoTitle = element(by.css('.adf-userinfo__detail-title'));
ssoEmail = element(by.id('identity-email'));
dialogIsDisplayed() {
Util.waitUntilElementIsVisible(this.dialog);
@@ -103,6 +106,21 @@ export class UserInfoDialog {
return this.processTenant.getText();
}
getSsoHeaderTitle () {
Util.waitUntilElementIsVisible(this.userInfoSsoHeaderTitle);
return this.userInfoSsoHeaderTitle.getText();
}
getSsoTitle() {
Util.waitUntilElementIsVisible(this.userInfoSsoTitle);
return this.userInfoSsoTitle.getText();
}
getSsoEmail() {
Util.waitUntilElementIsVisible(this.ssoEmail);
return this.ssoEmail.getText();
}
closeUserProfile() {
Util.waitUntilElementIsVisible(this.dialog);
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();