From 7f590c35da58d710ccea0e7970a0912b359af460 Mon Sep 17 00:00:00 2001 From: Saad Jutt Date: Fri, 1 Oct 2021 15:42:04 +0500 Subject: [PATCH] test(RequestClient): fixed to use actual axios --- src/request/RequestClient.ts | 25 ++++++++++++------------- src/test/RequestClient.spec.ts | 9 +++++++++ src/test/SessionManager.spec.ts | 1 - src/utils/createAxiosInstance.ts | 7 +++++++ src/utils/index.ts | 1 + 5 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 src/utils/createAxiosInstance.ts diff --git a/src/request/RequestClient.ts b/src/request/RequestClient.ts index ba2d3ce..409b6ba 100644 --- a/src/request/RequestClient.ts +++ b/src/request/RequestClient.ts @@ -12,7 +12,11 @@ import { SASjsRequest } from '../types' import { parseWeboutResponse } from '../utils/parseWeboutResponse' import { prefixMessage } from '@sasjs/utils/error' import { SAS9AuthError } from '../types/errors/SAS9AuthError' -import { parseGeneratedCode, parseSourceCode } from '../utils' +import { + parseGeneratedCode, + parseSourceCode, + createAxiosInstance +} from '../utils' import { HttpsAgent } from '../types/HttpsAgent' export interface HttpClient { @@ -519,7 +523,7 @@ export class RequestClient implements HttpClient { const https = require('https') const { selfSigned, clientCA, allowInsecure } = httpsAgentConfiguration - const httpsAgentConfig = selfSigned + const httpsAgentOptions = selfSigned ? { ca: selfSigned.ca } : clientCA ? { key: clientCA.key, cert: clientCA.cert, requestCert: true } @@ -527,17 +531,12 @@ export class RequestClient implements HttpClient { ? { rejectUnauthorized: !allowInsecure } : undefined - if (httpsAgentConfig && https.Agent) { - const httpsAgent = new https.Agent(httpsAgentConfig) - this.httpClient = axios.create({ - baseURL: baseUrl, - httpsAgent - }) - } else { - this.httpClient = axios.create({ - baseURL: baseUrl - }) - } + const httpsAgent = + httpsAgentOptions && https.Agent + ? new https.Agent(httpsAgentOptions) + : undefined + + this.httpClient = createAxiosInstance(baseUrl, httpsAgent) this.httpClient.defaults.validateStatus = (status) => status >= 200 && status < 305 diff --git a/src/test/RequestClient.spec.ts b/src/test/RequestClient.spec.ts index b40c578..f947f1b 100644 --- a/src/test/RequestClient.spec.ts +++ b/src/test/RequestClient.spec.ts @@ -4,6 +4,15 @@ import * as https from 'https' import { app, mockedAuthResponse } from './SAS_server_app' import { ServerType } from '@sasjs/utils' import SASjs from '../SASjs' +import * as axiosModules from '../utils/createAxiosInstance' + +const axiosActual = jest.requireActual('axios') + +jest + .spyOn(axiosModules, 'createAxiosInstance') + .mockImplementation((baseURL: string, httpsAgent?: https.Agent) => + axiosActual.create({ baseURL, httpsAgent }) + ) const PORT = 8000 const SERVER_URL = `https://localhost:${PORT}/` diff --git a/src/test/SessionManager.spec.ts b/src/test/SessionManager.spec.ts index ace8526..d37305b 100644 --- a/src/test/SessionManager.spec.ts +++ b/src/test/SessionManager.spec.ts @@ -1,6 +1,5 @@ import { SessionManager } from '../SessionManager' import { RequestClient } from '../request/RequestClient' -import { NoSessionStateError } from '../types/errors' import * as dotenv from 'dotenv' import axios from 'axios' import { Logger, LogLevel } from '@sasjs/utils' diff --git a/src/utils/createAxiosInstance.ts b/src/utils/createAxiosInstance.ts new file mode 100644 index 0000000..d129a01 --- /dev/null +++ b/src/utils/createAxiosInstance.ts @@ -0,0 +1,7 @@ +import axios from 'axios' +import * as https from 'https' + +export const createAxiosInstance = ( + baseURL: string, + httpsAgent?: https.Agent +) => axios.create({ baseURL, httpsAgent }) diff --git a/src/utils/index.ts b/src/utils/index.ts index 14def48..065dd87 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,6 +1,7 @@ export * from './asyncForEach' export * from './compareTimestamps' export * from './convertToCsv' +export * from './createAxiosInstance' export * from './delay' export * from './isNode' export * from './isRelativePath'