diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index df76626c4d..f2bb331279 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -392,15 +392,6 @@ jobs: check-cs-env: "true" check-ps-cloud-env: "true" deps: "testing" - - description: "Process Cloud: People" - test-id: "process-services-cloud" - folder: "process-services-cloud/people" - provider: "ALL" - auth: "OAUTH" - apa-proxy: true - check-cs-env: "true" - check-ps-cloud-env: "true" - deps: "testing" - description: "Process Cloud: Process" test-id: "process-services-cloud" folder: "process-services-cloud/process" diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js index 729ca318c0..2d0c6a5161 100644 --- a/e2e/protractor.conf.js +++ b/e2e/protractor.conf.js @@ -285,7 +285,7 @@ exports.config = { // @ts-ignore if (browser.params.testConfig.appConfig.authType === 'OAUTH') { - + Logger.info(`Configure demo shell OAUTH`); // @ts-ignore await LocalStorageUtil.setStorageItem('identityHost', browser.params.testConfig.appConfig.identityHost); // @ts-ignore diff --git a/lib/core/src/lib/api-factories/alfresco-api-v2-loader.service.ts b/lib/core/src/lib/api-factories/alfresco-api-v2-loader.service.ts index 482c662584..a35ba78039 100644 --- a/lib/core/src/lib/api-factories/alfresco-api-v2-loader.service.ts +++ b/lib/core/src/lib/api-factories/alfresco-api-v2-loader.service.ts @@ -20,6 +20,7 @@ import { Injectable } from '@angular/core'; import { AppConfigService, AppConfigValues } from '../app-config/app-config.service'; import { AlfrescoApiService } from '../services/alfresco-api.service'; import { StorageService } from '../common/services/storage.service'; +import { AuthenticationService, BasicAlfrescoAuthService } from "../auth"; export function createAlfrescoApiInstance(angularAlfrescoApiService: AlfrescoApiLoaderService) { return () => angularAlfrescoApiService.init(); @@ -29,10 +30,22 @@ export function createAlfrescoApiInstance(angularAlfrescoApiService: AlfrescoApi providedIn: 'root' }) export class AlfrescoApiLoaderService { - constructor(private readonly appConfig: AppConfigService, private readonly apiService: AlfrescoApiService, private storageService: StorageService) {} + constructor(private readonly appConfig: AppConfigService, + private readonly apiService: AlfrescoApiService, + private readonly basicAlfrescoAuthService: BasicAlfrescoAuthService, + private readonly authService: AuthenticationService, + private storageService: StorageService) { + } async init(): Promise { await this.appConfig.load(); + + this.authService.onLogin.subscribe(async () => { + if (this.authService.isOauth() && (this.authService.isALLProvider() || this.authService.isECMProvider())) { + await this.basicAlfrescoAuthService.requireAlfTicket(); + } + }); + return this.initAngularAlfrescoApi(); } diff --git a/lib/core/src/lib/auth/basic-auth/basic-alfresco-auth.service.ts b/lib/core/src/lib/auth/basic-auth/basic-alfresco-auth.service.ts index a053b878b8..d514ebf084 100644 --- a/lib/core/src/lib/auth/basic-auth/basic-alfresco-auth.service.ts +++ b/lib/core/src/lib/auth/basic-auth/basic-alfresco-auth.service.ts @@ -56,7 +56,7 @@ export class BasicAlfrescoAuthService extends BaseAuthenticationService { this.appConfig.onLoad .subscribe(() => { - if (this.isLoggedIn()) { + if (!this.isOauth() && this.isLoggedIn()) { this.onLogin.next('logged-in'); } }); @@ -201,18 +201,18 @@ export class BasicAlfrescoAuthService extends BaseAuthenticationService { return this.contentAuth.getToken(); } else if (this.isALLProvider()) { return this.contentAuth.getToken(); - }else{ + } else { return ''; } } /** @deprecated */ - getTicketEcm(): string{ + getTicketEcm(): string { return this.contentAuth.getToken(); } /** @deprecated */ - getTicketBpm(): string{ + getTicketBpm(): string { return this.processAuth.getToken(); } @@ -330,6 +330,9 @@ export class BasicAlfrescoAuthService extends BaseAuthenticationService { return header.set('Authorization', ticket); } + async requireAlfTicket(): Promise { + return this.contentAuth.requireAlfTicket(); + } /** * Gets the BPM ticket from the Storage in Base 64 format. diff --git a/lib/core/src/lib/auth/basic-auth/content-auth.ts b/lib/core/src/lib/auth/basic-auth/content-auth.ts index 8b08e5ed3f..e74d912f24 100644 --- a/lib/core/src/lib/auth/basic-auth/content-auth.ts +++ b/lib/core/src/lib/auth/basic-auth/content-auth.ts @@ -163,7 +163,7 @@ export class ContentAuth { * Get the current Ticket * */ getToken(): string { - if(!this.ticket){ + if (!this.ticket) { this.onError.next('error'); } @@ -202,6 +202,11 @@ export class ContentAuth { return this.adfHttpClient.post(this.basePath + '/tickets', {bodyParam: ticketBodyCreate}); } + async requireAlfTicket(): Promise { + const ticket = await this.adfHttpClient.get(this.basePath + '/tickets/-me-'); + this.setTicket(ticket.entry.id); + } + deleteTicket(): Promise { return this.adfHttpClient.delete(this.basePath + '/tickets/-me-'); } diff --git a/lib/core/src/lib/auth/services/oidc-authentication.service.ts b/lib/core/src/lib/auth/services/oidc-authentication.service.ts index b1dab190d6..8b68ba30ee 100644 --- a/lib/core/src/lib/auth/services/oidc-authentication.service.ts +++ b/lib/core/src/lib/auth/services/oidc-authentication.service.ts @@ -127,7 +127,7 @@ export class OidcAuthenticationService extends BaseAuthenticationService { } ssoImplicitLogin() { - this.oauthService.initLoginFlow(); + this.auth.login(); } ssoCodeFlowLogin() { diff --git a/lib/testing/src/lib/protractor/content-services/actions/upload.actions.ts b/lib/testing/src/lib/protractor/content-services/actions/upload.actions.ts index 3bc90f3aa8..22e3223f4d 100644 --- a/lib/testing/src/lib/protractor/content-services/actions/upload.actions.ts +++ b/lib/testing/src/lib/protractor/content-services/actions/upload.actions.ts @@ -37,7 +37,7 @@ export class UploadActions { async uploadFile(fileLocation, fileName, parentFolderId): Promise { const file = fs.createReadStream(fileLocation); - return this.uploadApi.uploadFile( + const uploadPromise = this.uploadApi.uploadFile( file, '', parentFolderId, @@ -48,6 +48,12 @@ export class UploadActions { renditions: 'doclib' } ); + + uploadPromise.then(() => { + Logger.info(`${fileName} uploaded in ${parentFolderId}`); + }) + + return uploadPromise; } async createEmptyFiles(emptyFileNames: string[], parentFolderId): Promise { @@ -74,6 +80,7 @@ export class UploadActions { async deleteFileOrFolder(nodeId: string) { const apiCall = async () => { try { + Logger.error(`Deleting ${nodeId}`); return this.nodesApi.deleteNode(nodeId, { permanent: true }); } catch (error) { Logger.error('Error delete file or folder'); @@ -91,8 +98,18 @@ export class UploadActions { if (files && files.length > 0) { for (const fileName of files) { const pathFile = path.join(sourcePath, fileName); - promises.push(this.uploadFile(pathFile, fileName, folder)); + + const uploadPromise = this.uploadFile(pathFile, fileName, folder); + + await uploadPromise.then(() => { + Logger.info(`File ${fileName} uploaded successfully in ${folder}!`); + }).catch(() => { + Logger.error(`File ${fileName} error during the upload in ${folder}!`); + }); + + promises.push(uploadPromise); } + uploadedFiles = await Promise.all(promises); } diff --git a/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts b/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts index d07d49a87c..d4ac9955c2 100644 --- a/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts +++ b/lib/testing/src/lib/protractor/core/actions/identity/identity.service.ts @@ -83,6 +83,14 @@ export class IdentityService { const queryParams = {}; const postBody = {}; return this.api.performIdentityOperation(path, method, queryParams, postBody); + + const deletePromise = this.api.performIdentityOperation(path, method, queryParams, postBody) + + deletePromise.then(() => { + Logger.info(`user ${userId} delete`); + }) + + return deletePromise; } async getUserInfoByUsername(username: string): Promise { diff --git a/lib/testing/src/lib/protractor/core/pages/login.page.ts b/lib/testing/src/lib/protractor/core/pages/login.page.ts index 598345bb0e..62bd09fc6b 100644 --- a/lib/testing/src/lib/protractor/core/pages/login.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/login.page.ts @@ -66,6 +66,8 @@ export class LoginPage { Logger.log('Login With ' + username); const authType = await LocalStorageUtil.getConfigField('authType'); + Logger.log(`AuthType ${authType}`); + if (!authType || authType === 'OAUTH') { await this.loginSSOIdentityService(username, password, options); } else { @@ -83,7 +85,10 @@ export class LoginPage { await BrowserActions.getUrl(loginURL); if (oauth2 && oauth2.silentLogin === false) { + Logger.log(`Login SSO`); await this.clickOnSSOButton(); + }else{ + Logger.log(`Login SSO silent login`); } await BrowserVisibility.waitUntilElementIsVisible(this.usernameField); @@ -98,6 +103,8 @@ export class LoginPage { } async loginBasicAuth(username: string, password: string, options: LoginOptions = { waitForUserIcon: true }): Promise { + Logger.log(`Login Basic`); + await this.goToLoginPage(); await this.enterUsernameBasicAuth(username); diff --git a/lib/testing/src/lib/protractor/core/utils/file-browser.util.ts b/lib/testing/src/lib/protractor/core/utils/file-browser.util.ts index f02394ee0a..3617fdc607 100644 --- a/lib/testing/src/lib/protractor/core/utils/file-browser.util.ts +++ b/lib/testing/src/lib/protractor/core/utils/file-browser.util.ts @@ -23,7 +23,7 @@ export class FileBrowserUtil { static async isFileDownloaded(fileName: string): Promise { const DEFAULT_ROOT_PATH = browser.params.testConfig ? browser.params.testConfig.main.rootPath : __dirname; - const file = await browser.driver.wait(() => fs.existsSync(path.join(DEFAULT_ROOT_PATH, 'downloads', fileName)), 30000); + const file = await browser.driver.wait(() => fs.existsSync(path.join(DEFAULT_ROOT_PATH, 'downloads', fileName)), 30000,`${fileName} not downloaded`); await expect(file).toBe(true, `${fileName} not downloaded`);