diff --git a/config.default.json b/config.default.json index 48a0d178c..7fbd6fe8b 100644 --- a/config.default.json +++ b/config.default.json @@ -10,6 +10,10 @@ "ACCEPT_IAC": "tf,yaml,yml,json,tpl", "ACCEPT_LARGE_MANIFESTS": true, "ACCEPT_CUSTOM_PR_TEMPLATES": true, + "REMOTE_WORKLOAD_NAME":"BrokerWorkload", + "REMOTE_WORKLOAD_MODULE_PATH":"../broker-workload/websocketRequests", + "CLIENT_WORKLOAD_NAME": "BrokerClientRequestWorkload", + "CLIENT_WORKLOAD_MODULE_PATH": "../broker-workload/clientRequests", "BROKER_SERVER_UNIVERSAL_CONFIG_ENABLED": false, "SUPPORTED_BROKER_TYPES": [ "apprisk", diff --git a/lib/broker-workload/clientRequest.ts b/lib/broker-workload/clientRequests.ts similarity index 79% rename from lib/broker-workload/clientRequest.ts rename to lib/broker-workload/clientRequests.ts index 5a263605e..66831533c 100644 --- a/lib/broker-workload/clientRequest.ts +++ b/lib/broker-workload/clientRequests.ts @@ -3,18 +3,24 @@ import { HybridClientRequestHandler } from '../hybrid-sdk/clientRequestHelpers'; import { incrementHttpRequestsTotal } from '../common/utils/metrics'; import { filterClientRequest } from './requestFiltering'; import { log as logger } from '../logs/logger'; +import { + LocalClientWorkloadRuntimeParams, + Workload, + WorkloadType, +} from '../hybrid-sdk/workloadFactory'; -export class BrokerClientRequestWorkload { +export class BrokerClientRequestWorkload extends Workload { req: Request; res: Response; options; constructor(req, res, options) { + super('broker', WorkloadType['local-client']); this.req = req; this.res = res; this.options = options; } - async handler(makeRequestOverHttp = false) { + async handler(data: LocalClientWorkloadRuntimeParams) { const hybridClientRequestHandler = new HybridClientRequestHandler( this.req, this.res, @@ -38,7 +44,7 @@ export class BrokerClientRequestWorkload { } else { hybridClientRequestHandler.makeRequest( filterResponse, - makeRequestOverHttp, + data.makeRequestOverHttp, ); incrementHttpRequestsTotal(false, 'inbound-request'); } diff --git a/lib/common/utils/content-length.ts b/lib/broker-workload/content-length.ts similarity index 100% rename from lib/common/utils/content-length.ts rename to lib/broker-workload/content-length.ts diff --git a/lib/common/utils/correlation-headers.ts b/lib/broker-workload/correlation-headers.ts similarity index 100% rename from lib/common/utils/correlation-headers.ts rename to lib/broker-workload/correlation-headers.ts diff --git a/lib/common/utils/headers-value-constants.ts b/lib/broker-workload/headers-value-constants.ts similarity index 100% rename from lib/common/utils/headers-value-constants.ts rename to lib/broker-workload/headers-value-constants.ts diff --git a/lib/common/relay/prepareRequest.ts b/lib/broker-workload/prepareRequest.ts similarity index 92% rename from lib/common/relay/prepareRequest.ts rename to lib/broker-workload/prepareRequest.ts index c7653e63b..7bed362bc 100644 --- a/lib/common/relay/prepareRequest.ts +++ b/lib/broker-workload/prepareRequest.ts @@ -1,37 +1,30 @@ import { format, parse } from 'url'; -import { TestResult } from '../types/filter'; -import version from '../utils/version'; -import tryJSONParse from '../utils/try-json-parse'; -import { replace } from '../utils/replace-vars'; +import { TestResult } from '../common/types/filter'; +import version from '../common/utils/version'; +import tryJSONParse from '../common/utils/try-json-parse'; +import { replace } from '../common/utils/replace-vars'; import undefsafe from 'undefsafe'; -import { log as logger } from '../../logs/logger'; +import { log as logger } from '../logs/logger'; import { gitHubCommitSigningEnabled, gitHubTreeCheckNeeded, signGitHubCommit, validateGitHubTreePayload, -} from '../../client/scm'; -import { getConfigForIdentifier } from '../config/universal'; -import { computeContentLength } from '../utils/content-length'; +} from '../client/scm'; +import { getConfigForIdentifier } from '../common/config/universal'; +import { computeContentLength } from './content-length'; import { contentLengthHeader, contentTypeHeader, urlencoded, -} from '../utils/headers-value-constants'; +} from './headers-value-constants'; +import { PostFilterPreparedRequest } from '../hybrid-sdk/types'; export interface PostFilterPreparingRequestError { status: number; errorMsg: string; } -export interface PostFilterPreparedRequest { - url: string; - headers: Object; - method: string; - body?: any; - timeoutMs?: number; -} - export const prepareRequestFromFilterResult = async ( result: TestResult, payload, diff --git a/lib/broker-workload/index.ts b/lib/broker-workload/websocketRequests.ts similarity index 89% rename from lib/broker-workload/index.ts rename to lib/broker-workload/websocketRequests.ts index f4c3478b9..167ae07db 100644 --- a/lib/broker-workload/index.ts +++ b/lib/broker-workload/websocketRequests.ts @@ -1,8 +1,8 @@ import { runPreRequestPlugins } from '../client/brokerClientPlugins/pluginManager'; -import { prepareRequestFromFilterResult } from '../common/relay/prepareRequest'; +import { prepareRequestFromFilterResult } from './prepareRequest'; import { ExtendedLogContext } from '../common/types/log'; -import { computeContentLength } from '../common/utils/content-length'; -import { contentLengthHeader } from '../common/utils/headers-value-constants'; +import { computeContentLength } from './content-length'; +import { contentLengthHeader } from './headers-value-constants'; import { incrementWebSocketRequestsTotal, incrementHttpRequestsTotal, @@ -10,15 +10,20 @@ import { import { maskToken, hashToken } from '../common/utils/token'; import { log as logger } from '../logs/logger'; import { HybridResponseHandler } from '../hybrid-sdk/responseSenders'; -import { getCorrelationDataFromHeaders } from '../common/utils/correlation-headers'; +import { getCorrelationDataFromHeaders } from './correlation-headers'; import { filterRequest } from './requestFiltering'; import { makeRequestToDownstream, makeStreamingRequestToDownstream, } from '../hybrid-sdk/http/request'; import { logError } from '../logs/log'; +import { + RemoteServerWorkloadRuntimeParams, + Workload, + WorkloadType, +} from '../hybrid-sdk/workloadFactory'; -export class BrokerWorkload { +export class BrokerWorkload extends Workload { options; connectionIdentifier: string; websocketConnectionHandler; @@ -27,12 +32,15 @@ export class BrokerWorkload { options, websocketConnectionHandler, ) { + super('broker', WorkloadType['remote-server']); this.options = options; this.connectionIdentifier = connectionIdentifier; this.websocketConnectionHandler = websocketConnectionHandler; } - async handler(payload, websocketResponseHandler) { + async handler(data: RemoteServerWorkloadRuntimeParams) { + const { payload, websocketHandler } = data; + const websocketResponseHandler = websocketHandler; if (this.options.config.universalBrokerEnabled) { payload.connectionIdentifier = this.connectionIdentifier; } diff --git a/lib/client/auth/oauth.ts b/lib/client/auth/oauth.ts index 0a9cbd36f..1d07a6b8b 100644 --- a/lib/client/auth/oauth.ts +++ b/lib/client/auth/oauth.ts @@ -1,5 +1,5 @@ import { makeRequestToDownstream } from '../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import { log as logger } from '../../logs/logger'; interface tokenExchangeResponse { access_token: string; diff --git a/lib/client/brokerClientPlugins/abstractBrokerPlugin.ts b/lib/client/brokerClientPlugins/abstractBrokerPlugin.ts index 559e53204..fef985fab 100644 --- a/lib/client/brokerClientPlugins/abstractBrokerPlugin.ts +++ b/lib/client/brokerClientPlugins/abstractBrokerPlugin.ts @@ -3,7 +3,7 @@ import { HttpResponse, makeRequestToDownstream, } from '../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import { log as logger } from '../../logs/logger'; export default abstract class BrokerPlugin { diff --git a/lib/client/brokerClientPlugins/pluginManager.ts b/lib/client/brokerClientPlugins/pluginManager.ts index 12b3446e2..bf1737e1d 100644 --- a/lib/client/brokerClientPlugins/pluginManager.ts +++ b/lib/client/brokerClientPlugins/pluginManager.ts @@ -2,7 +2,7 @@ import { readdir } from 'fs/promises'; import { log as logger } from '../../logs/logger'; import BrokerPlugin from './abstractBrokerPlugin'; import { existsSync } from 'fs'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import { getPluginsConfig } from '../../common/config/pluginsConfig'; export const loadPlugins = async (pluginsFolderPath: string, clientOpts) => { diff --git a/lib/client/brokerClientPlugins/plugins/githubServerAppAuth.ts b/lib/client/brokerClientPlugins/plugins/githubServerAppAuth.ts index a793a26e5..b6da14c3d 100644 --- a/lib/client/brokerClientPlugins/plugins/githubServerAppAuth.ts +++ b/lib/client/brokerClientPlugins/plugins/githubServerAppAuth.ts @@ -3,7 +3,7 @@ import { existsSync, readFileSync } from 'node:fs'; import BrokerPlugin from '../abstractBrokerPlugin'; import { createPrivateKey } from 'node:crypto'; import { sign } from 'jsonwebtoken'; -import { PostFilterPreparedRequest } from '../../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../../hybrid-sdk/types'; import { makeRequestToDownstream } from '../../../hybrid-sdk/http/request'; import { maskSCMToken } from '../../../common/utils/token'; import { getPluginsConfig } from '../../../common/config/pluginsConfig'; diff --git a/lib/client/checks/config/brokerClientVersionCheck.ts b/lib/client/checks/config/brokerClientVersionCheck.ts index 1d67f16cb..f353e0c91 100644 --- a/lib/client/checks/config/brokerClientVersionCheck.ts +++ b/lib/client/checks/config/brokerClientVersionCheck.ts @@ -1,5 +1,5 @@ import { makeSingleRawRequestToDownstream } from '../../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../../hybrid-sdk/types'; import version from '../../../common/utils/version'; import { CheckOptions, CheckResult } from '../types'; diff --git a/lib/client/config/remoteConfig.ts b/lib/client/config/remoteConfig.ts index 1d723ac95..c2c41cac7 100644 --- a/lib/client/config/remoteConfig.ts +++ b/lib/client/config/remoteConfig.ts @@ -1,6 +1,6 @@ import { readFileSync, writeFileSync } from 'fs'; import { makeRequestToDownstream } from '../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import { ClientOpts } from '../../common/types/options'; import { BrokerConnectionApiResponse } from '../types/api'; import { capitalizeKeys } from '../utils/configurations'; diff --git a/lib/client/dispatcher/client/api.ts b/lib/client/dispatcher/client/api.ts index 8288eca75..0f489b8b3 100644 --- a/lib/client/dispatcher/client/api.ts +++ b/lib/client/dispatcher/client/api.ts @@ -1,5 +1,5 @@ import { makeRequestToDownstream } from '../../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../../hybrid-sdk/types'; import { log as logger } from '../../../logs/logger'; import { CreateConnectionRequestData, diff --git a/lib/client/utils/connectionValidation.ts b/lib/client/utils/connectionValidation.ts index d7ae494e8..4c847c3c5 100644 --- a/lib/client/utils/connectionValidation.ts +++ b/lib/client/utils/connectionValidation.ts @@ -1,5 +1,5 @@ import { makeSingleRawRequestToDownstream } from '../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import version from '../../common/utils/version'; import { ConnectionConfig } from '../types/config'; import { log as logger } from '../../logs/logger'; diff --git a/lib/common/filter/utils.ts b/lib/common/filter/utils.ts index b4e3b273c..3e8611607 100644 --- a/lib/common/filter/utils.ts +++ b/lib/common/filter/utils.ts @@ -1,7 +1,7 @@ import path from 'node:path'; import fs from 'fs'; import { makeSingleRawRequestToDownstream } from '../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import version from '../utils/version'; import { findProjectRoot } from '../config/config'; import { log as logger } from '../../logs/logger'; diff --git a/lib/common/relay/forwardHttpRequest.ts b/lib/common/relay/forwardHttpRequest.ts index 5159f9af7..fcf1a3005 100644 --- a/lib/common/relay/forwardHttpRequest.ts +++ b/lib/common/relay/forwardHttpRequest.ts @@ -1,7 +1,12 @@ import { Request, Response } from 'express'; import { LoadedClientOpts, LoadedServerOpts } from '../types/options'; -import { BrokerClientRequestWorkload } from '../../broker-workload/clientRequest'; +import { + LocalClientWorkloadRuntimeParams, + Workload, + WorkloadType, +} from '../../hybrid-sdk/workloadFactory'; +import { BrokerClientRequestWorkload } from '../../broker-workload/clientRequests'; // 1. Request coming in over HTTP conn (logged) // 2. Filter for rule match (log and block if no match) @@ -13,7 +18,19 @@ export const forwardHttpRequest = ( makeHttpRequest = false, ) => { return async (req: Request, res: Response) => { - const workload = new BrokerClientRequestWorkload(req, res, options); - await workload.handler(makeHttpRequest); + const workloadName = options.config.clientWorkloadName; + const workloadModulePath = options.config.clientWorkloadModulePath; + + const workload = (await Workload.instantiate( + workloadName, + workloadModulePath, + WorkloadType.localClient, + { req, res, options }, + )) as BrokerClientRequestWorkload; + + const data: LocalClientWorkloadRuntimeParams = { + makeRequestOverHttp: makeHttpRequest, + }; + await workload.handler(data); }; }; diff --git a/lib/common/relay/forwardWebsocketRequest.ts b/lib/common/relay/forwardWebsocketRequest.ts index f21c40b55..f262f92e7 100644 --- a/lib/common/relay/forwardWebsocketRequest.ts +++ b/lib/common/relay/forwardWebsocketRequest.ts @@ -1,7 +1,13 @@ import { RequestPayload } from '../types/http'; import { WebSocketConnection } from '../../client/types/client'; import { LoadedClientOpts, LoadedServerOpts } from '../types/options'; -import { BrokerWorkload } from '../../broker-workload'; +import { + RemoteServerWorkloadRuntimeParams, + Workload, + WorkloadType, +} from '../../hybrid-sdk/workloadFactory'; +import { BrokerWorkload } from '../../broker-workload/websocketRequests'; +// import { BrokerWorkload } from '../../broker-workload/websocketRequests'; export const forwardWebSocketRequest = ( options: LoadedClientOpts | LoadedServerOpts, @@ -14,11 +20,19 @@ export const forwardWebSocketRequest = ( // 5. Send response over websocket conn return (connectionIdentifier) => async (payload: RequestPayload, emit) => { - const workload = new BrokerWorkload( - connectionIdentifier, - options, - websocketConnectionHandler, - ); - await workload.handler(payload, emit); + const workloadName = options.config.remoteWorkloadName; + const workloadModulePath = options.config.remoteWorkloadModulePath; + const workload = (await Workload.instantiate( + workloadName, + workloadModulePath, + WorkloadType.remoteServer, + { connectionIdentifier, options, websocketConnectionHandler }, + )) as BrokerWorkload; + + const data: RemoteServerWorkloadRuntimeParams = { + payload, + websocketHandler: emit, + }; + await workload.handler(data); }; }; diff --git a/lib/hybrid-sdk/http/request.ts b/lib/hybrid-sdk/http/request.ts index de6d94502..810c10189 100644 --- a/lib/hybrid-sdk/http/request.ts +++ b/lib/hybrid-sdk/http/request.ts @@ -3,7 +3,7 @@ import https from 'https'; import { getProxyForUrl } from 'proxy-from-env'; import { bootstrap } from 'global-agent'; import { log as logger } from '../../logs/logger'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../types'; import { getConfig } from '../../common/config/config'; import { switchToInsecure } from './utils'; export interface HttpResponse { diff --git a/lib/hybrid-sdk/requestsHelper.ts b/lib/hybrid-sdk/requestsHelper.ts index a29f1330a..cea9f3f18 100644 --- a/lib/hybrid-sdk/requestsHelper.ts +++ b/lib/hybrid-sdk/requestsHelper.ts @@ -2,7 +2,7 @@ import { makeRequestToDownstream, makeStreamingRequestToDownstream, } from './http/request'; -import { PostFilterPreparedRequest } from '../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from './types'; import { log as logger } from '../logs/logger'; import { logError, logResponse } from '../logs/log'; import { isJson } from '../common/utils/json'; diff --git a/lib/hybrid-sdk/types.ts b/lib/hybrid-sdk/types.ts index 138abf7bd..65ff37392 100644 --- a/lib/hybrid-sdk/types.ts +++ b/lib/hybrid-sdk/types.ts @@ -1,7 +1,14 @@ -import { CorrelationHeaders } from '../common/utils/correlation-headers'; +import { CorrelationHeaders } from '../broker-workload/correlation-headers'; export type RequestMetadata = { connectionIdentifier: string; payloadStreamingId: string; // streamResponse: boolean; } & CorrelationHeaders; +export interface PostFilterPreparedRequest { + url: string; + headers: Object; + method: string; + body?: any; + timeoutMs?: number; +} diff --git a/lib/hybrid-sdk/workloadFactory.ts b/lib/hybrid-sdk/workloadFactory.ts new file mode 100644 index 000000000..3cfbdc6a1 --- /dev/null +++ b/lib/hybrid-sdk/workloadFactory.ts @@ -0,0 +1,100 @@ +export enum WorkloadType { + remoteServer = 'remoteServer', + localClient = 'localClient', +} + +export interface RemoteServerWorkloadParams { + connectionIdentifier: string; + options: any; + websocketConnectionHandler: any; +} + +export interface LocalClientWorkloadParams { + req: any; + res: any; + options: any; +} + +export interface RemoteServerWorkloadRuntimeParams { + payload: any; + websocketHandler: any; +} +export interface LocalClientWorkloadRuntimeParams { + makeRequestOverHttp?: boolean; +} + +type WorkloadRuntimeParamType< + T extends WorkloadType.localClient | WorkloadType.remoteServer, +> = T extends WorkloadType.remoteServer + ? RemoteServerWorkloadRuntimeParams + : T extends WorkloadType.localClient + ? LocalClientWorkloadRuntimeParams + : never; +export type WorkloadRuntimeReturnType = Promise | Promise; + +interface WorkloadModule { + default: new ( + connectionIdentifier: string, + options: any, + websocketConnectionHandler: any, + ) => Workload; +} + +export abstract class Workload< + T extends WorkloadType.localClient | WorkloadType.remoteServer, +> { + type: WorkloadType; + name: string; + + constructor(name: string, type: WorkloadType) { + this.name = name; + this.type = type; + } + abstract handler( + data: WorkloadRuntimeParamType, + ): WorkloadRuntimeReturnType; + + private static async instantiateRemoteServerWorkload( + name: string, + path: string, + params: RemoteServerWorkloadParams, + ): Promise> { + const { connectionIdentifier, options, websocketConnectionHandler } = + params; + const importedModule = (await import(path)) as WorkloadModule; + const WorkloadClass = importedModule[name]; + return new WorkloadClass( + connectionIdentifier, + options, + websocketConnectionHandler, + ); + } + private static async instantiateLocalClientWorkload( + name: string, + path: string, + params: LocalClientWorkloadParams, + ): Promise> { + const { req, res, options } = params; + const importedModule = (await import(path)) as WorkloadModule; + const WorkloadClass = importedModule[name]; + return new WorkloadClass(req, res, options); + } + + static async instantiate( + name: string, + path: string, + type: WorkloadType.localClient | WorkloadType.remoteServer, + params, + ): Promise< + Workload | Workload + > { + switch (type) { + case WorkloadType.remoteServer: + return await this.instantiateRemoteServerWorkload(name, path, params); + case WorkloadType.localClient: + return await this.instantiateLocalClientWorkload(name, path, params); + default: + throw new Error(`Error loading workload - unknown type ${type}`); + } + } +} diff --git a/lib/server/routesHandlers/connectionStatusHandler.ts b/lib/server/routesHandlers/connectionStatusHandler.ts index 2b09b4c59..9b7a9c380 100644 --- a/lib/server/routesHandlers/connectionStatusHandler.ts +++ b/lib/server/routesHandlers/connectionStatusHandler.ts @@ -3,7 +3,7 @@ import { getDesensitizedToken } from '../utils/token'; import { getSocketConnections } from '../socket'; import { log as logger } from '../../logs/logger'; import { hostname } from 'node:os'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import { makeStreamingRequestToDownstream } from '../../hybrid-sdk/http/request'; export const connectionStatusHandler = async (req: Request, res: Response) => { diff --git a/lib/server/routesHandlers/httpRequestHandler.ts b/lib/server/routesHandlers/httpRequestHandler.ts index 2293c0b39..537252f20 100644 --- a/lib/server/routesHandlers/httpRequestHandler.ts +++ b/lib/server/routesHandlers/httpRequestHandler.ts @@ -5,7 +5,7 @@ import { getSocketConnections } from '../socket'; import { incrementHttpRequestsTotal } from '../../common/utils/metrics'; import { hostname } from 'node:os'; import { makeStreamingRequestToDownstream } from '../../hybrid-sdk/http/request'; -import { PostFilterPreparedRequest } from '../../common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../hybrid-sdk/types'; import { URL, URLSearchParams } from 'node:url'; export const overloadHttpRequestWithConnectionDetailsMiddleware = async ( diff --git a/test/unit/plugins/pluginManager.test.ts b/test/unit/plugins/pluginManager.test.ts index 3f7e8f906..214e17ff8 100644 --- a/test/unit/plugins/pluginManager.test.ts +++ b/test/unit/plugins/pluginManager.test.ts @@ -4,7 +4,7 @@ import { runStartupPlugins, } from '../../../lib/client/brokerClientPlugins/pluginManager'; import { findProjectRoot } from '../../../lib/common/config/config'; -import { PostFilterPreparedRequest } from '../../../lib/common/relay/prepareRequest'; +import { PostFilterPreparedRequest } from '../../../lib/hybrid-sdk/types'; describe('Plugin Manager', () => { const pluginsFolderPath = `${findProjectRoot( diff --git a/test/unit/relay-response-body-client.test.ts b/test/unit/relay-response-body-client.test.ts index ceae11eae..aa9838db9 100644 --- a/test/unit/relay-response-body-client.test.ts +++ b/test/unit/relay-response-body-client.test.ts @@ -75,6 +75,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', brokerType: 'client', @@ -141,6 +145,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', disableBodyVarsSubstitution: true, @@ -201,6 +209,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', disableBodyVarsSubstitution: true, diff --git a/test/unit/relay-response-body-form-url-encoded.test.ts b/test/unit/relay-response-body-form-url-encoded.test.ts index 52ff312aa..5c9ee9f4f 100644 --- a/test/unit/relay-response-body-form-url-encoded.test.ts +++ b/test/unit/relay-response-body-form-url-encoded.test.ts @@ -74,6 +74,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', supportedBrokerTypes: [], @@ -132,6 +136,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', supportedBrokerTypes: [], @@ -187,6 +195,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', disableBodyVarsSubstitution: true, @@ -242,6 +254,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', disableBodyVarsSubstitution: true, diff --git a/test/unit/relay-response-body-universal-form-url-encoded.test.ts b/test/unit/relay-response-body-universal-form-url-encoded.test.ts index 04a24ca6c..6e4e5c68c 100644 --- a/test/unit/relay-response-body-universal-form-url-encoded.test.ts +++ b/test/unit/relay-response-body-universal-form-url-encoded.test.ts @@ -74,6 +74,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), connections: { @@ -143,6 +147,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), connections: { @@ -205,6 +213,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), connections: { diff --git a/test/unit/relay-response-body-universal.test.ts b/test/unit/relay-response-body-universal.test.ts index a50aa76b2..1013e7df1 100644 --- a/test/unit/relay-response-body-universal.test.ts +++ b/test/unit/relay-response-body-universal.test.ts @@ -84,6 +84,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), brokerType: 'client', @@ -157,6 +161,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', disableBodyVarsSubstitution: true, universalBrokerEnabled: true, plugins: new Map(), diff --git a/test/unit/relay-response-body.test.ts b/test/unit/relay-response-body.test.ts index bbb7edfd0..2c24da3cb 100644 --- a/test/unit/relay-response-body.test.ts +++ b/test/unit/relay-response-body.test.ts @@ -74,6 +74,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', supportedBrokerTypes: [], @@ -138,6 +142,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', disableBodyVarsSubstitution: true, @@ -195,6 +203,10 @@ describe('body relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', HOST: 'localhost', PORT: '8001', disableBodyVarsSubstitution: true, diff --git a/test/unit/relay-response-headers-form-url-headers.test.ts b/test/unit/relay-response-headers-form-url-headers.test.ts index eb516a5a2..2a0198c19 100644 --- a/test/unit/relay-response-headers-form-url-headers.test.ts +++ b/test/unit/relay-response-headers-form-url-headers.test.ts @@ -71,6 +71,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', SECRET_TOKEN: 'very-secret', VALUE: 'some-special-value', supportedBrokerTypes: [], @@ -129,6 +133,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', SECRET_TOKEN: 'very-secret', VALUE: 'some-special-value', supportedBrokerTypes: [], @@ -183,6 +191,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', SECRET_TOKEN: 'very-secret', VALUE: 'some-special-value', disableHeaderVarsSubstitution: true, @@ -238,6 +250,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', SECRET_TOKEN: 'very-secret', VALUE: 'some-special-value', disableHeaderVarsSubstitution: true, diff --git a/test/unit/relay-response-headers-universal-form-url-headers.test.ts b/test/unit/relay-response-headers-universal-form-url-headers.test.ts index c4aa9817a..84afd9c3a 100644 --- a/test/unit/relay-response-headers-universal-form-url-headers.test.ts +++ b/test/unit/relay-response-headers-universal-form-url-headers.test.ts @@ -71,6 +71,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), connections: { @@ -140,6 +144,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), connections: { diff --git a/test/unit/relay-response-headers-universal.test.ts b/test/unit/relay-response-headers-universal.test.ts index 34be20a1a..d365e2bb4 100644 --- a/test/unit/relay-response-headers-universal.test.ts +++ b/test/unit/relay-response-headers-universal.test.ts @@ -71,6 +71,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), connections: { @@ -134,6 +138,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', universalBrokerEnabled: true, plugins: new Map(), connections: { diff --git a/test/unit/relay-response-headers.test.ts b/test/unit/relay-response-headers.test.ts index 0f31a9843..4194f602f 100644 --- a/test/unit/relay-response-headers.test.ts +++ b/test/unit/relay-response-headers.test.ts @@ -71,6 +71,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', SECRET_TOKEN: 'very-secret', VALUE: 'some-special-value', supportedBrokerTypes: [], @@ -125,6 +129,10 @@ describe('header relay', () => { const brokerToken = 'test-broker'; const config: CONFIGURATION = { + remoteWorkloadName: 'BrokerWorkload', + remoteWorkloadModulePath: '../broker-workload/websocketRequests', + clientWorkloadName: 'BrokerClientRequestWorkload', + clientWorkloadModulePath: '../broker-workload/clientRequests', SECRET_TOKEN: 'very-secret', VALUE: 'some-special-value', disableHeaderVarsSubstitution: true, diff --git a/test/unit/utils.test.ts b/test/unit/utils.test.ts index 41e2569b1..2205f7a43 100644 --- a/test/unit/utils.test.ts +++ b/test/unit/utils.test.ts @@ -1,5 +1,5 @@ -import { PostFilterPreparedRequest } from '../../lib/common/relay/prepareRequest'; -import { computeContentLength } from '../../lib/common/utils/content-length'; +import { computeContentLength } from '../../lib/broker-workload/content-length'; +import { PostFilterPreparedRequest } from '../../lib/hybrid-sdk/types'; describe('utils', () => { it('computeContentLength 0 for bodylessr requests', () => {