diff --git a/tests/e2e/driver/CheReporter.ts b/tests/e2e/driver/CheReporter.ts index 3fe5cc8f834..91355df6cec 100644 --- a/tests/e2e/driver/CheReporter.ts +++ b/tests/e2e/driver/CheReporter.ts @@ -19,6 +19,7 @@ import { DriverHelper } from '../utils/DriverHelper'; import { ScreenCatcher } from '../utils/ScreenCatcher'; import { ITestWorkspaceUtil } from '../utils/workspace/ITestWorkspaceUtil'; import { PreferencesHandler, AskForConfirmationType } from '../utils/PreferencesHandler'; +import { CheApiRequestHandler } from '../utils/requestHandlers/CheApiRequestHandler'; const e2eContainer = inversifyConfig.e2eContainer; const driver: IDriver = e2eContainer.get(TYPES.Driver); @@ -67,6 +68,10 @@ class CheReporter extends mocha.reporters.Spec { console.log(launchInformation); rm.sync(TestConstants.TS_SELENIUM_REPORT_FOLDER); + if (TestConstants.TS_SELENIUM_LOG_LEVEL === 'TRACE') { + CheApiRequestHandler.enableRequestInteceptor(); + CheApiRequestHandler.enableResponseInterceptor(); + } preferencesHalder.setConfirmExit(AskForConfirmationType.never); }); diff --git a/tests/e2e/utils/requestHandlers/CheApiRequestHandler.ts b/tests/e2e/utils/requestHandlers/CheApiRequestHandler.ts index 4d9ab66fa91..48ef828d303 100644 --- a/tests/e2e/utils/requestHandlers/CheApiRequestHandler.ts +++ b/tests/e2e/utils/requestHandlers/CheApiRequestHandler.ts @@ -8,7 +8,7 @@ * SPDX-License-Identifier: EPL-2.0 **********************************************************************/ -import axios, { AxiosResponse } from 'axios'; +import axios, { AxiosResponse, AxiosRequestConfig } from 'axios'; import { TestConstants } from '../../TestConstants'; import { TYPES } from '../../inversify.types'; import { inject, injectable } from 'inversify'; @@ -16,6 +16,46 @@ import { IAuthorizationHeaderHandler } from './headers/IAuthorizationHeaderHandl @injectable() export class CheApiRequestHandler { + + /** + * This method adds a request interceptor into axios request interceptors list and returns an ID of the interceptor + */ + public static enableRequestInteceptor(): number { + console.log(`CheApiRequestHandler.enableRequestInterceptor`); + return axios.interceptors.request.use( request => { + try { + let request_censored: AxiosRequestConfig = JSON.parse(JSON.stringify(request)); + request_censored.headers['Authorization'] = 'CENSORED'; + console.log(`RequestHandler request:\n`, request_censored); + } catch (err) { + console.log(`RequestHandler request: Failed to deep clone AxiosRequestConfig:`, err); + } + return request; + }); + } + + /** + * This method adds a response interceptor into axios response interceptors list and returns an ID of the interceptor + */ + public static enableResponseInterceptor(): number { + console.log(`CheApiRequestHandler.enableResponseRedirects`); + return axios.interceptors.response.use( response => { + try { + let response_censored: AxiosResponse = JSON.parse(JSON.stringify(response, (key, value) => { + switch (key) { + case 'request': return 'CENSORED'; + default: return value; + } + })); + response_censored.config.headers['Authorization'] = 'CENSORED'; + console.log(`RequestHandler response:\n`, response_censored); + } catch (err) { + console.log(`RequestHandler response: Failed to deep clone AxiosResponse:`, err); + } + return response; + }); + } + constructor(@inject(TYPES.IAuthorizationHeaderHandler) private readonly headerHandler: IAuthorizationHeaderHandler) { } async get(relativeUrl: string): Promise {