@webex/calling 3.12.0-next.51 → 3.12.0-next.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallingClient/CallingClient.js +25 -78
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +322 -122
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +29 -2
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +88 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/constants.js +1 -0
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/registration/register.js +10 -0
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +69 -0
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/utils/request.js +20 -0
- package/dist/CallingClient/utils/request.js.map +1 -1
- package/dist/CallingClient/utils/request.test.js +31 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/Utils.js +18 -7
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +79 -0
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/index.js +25 -5
- package/dist/index.js.map +1 -1
- package/dist/module/CallingClient/CallingClient.js +17 -39
- package/dist/module/CallingClient/calling/callManager.js +13 -1
- package/dist/module/CallingClient/constants.js +1 -0
- package/dist/module/CallingClient/registration/register.js +3 -0
- package/dist/module/CallingClient/utils/request.js +7 -0
- package/dist/module/common/Utils.js +8 -5
- package/dist/module/index.js +2 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +1 -0
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +1 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/request.d.ts +1 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +26 -25
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +2 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_request","require","_constants","_constants2","_types","_impl","_SDKConnector","_interopRequireDefault","_types2","_types3","_call4","_Logger","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","callManager","CallManager","exports","_Eventing","webex","indicator","_this","_classCallCheck2","_defineProperty2","direction","deviceId","lineId","destination","log","info","concat","METHOD_START_MESSAGE","file","CALL_MANAGER_FILE","method","METHODS","CREATE_CALL","newCall","createCall","activeMobiusUrl","correlationId","callCollection","activeCalls","_keys","getActiveCalls","length","getCorrelationId","emit","CALLING_CLIENT_EVENT_KEYS","ALL_CALLS_CLEARED","serviceIndicator","sdkConnector","SDKConnector","getWebex","setWebex","lineDict","apiRequest","APIRequest","getInstance","listenForWsEvents","_inherits2","_createClass2","key","value","updateActiveMobius","url","UPDATE_ACTIVE_MOBIUS","_this2","isSocketEnabled","registerListener","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","dequeueWsEvents","stop","_x","arguments","REGISTER_SESSIONS_LISTENER","_this3","DEQUEUE_WS_EVENTS","mobiusEvent","_ref2","data","callId","eventType","MobiusEventType","CALL_SETUP","midCallService","forEach","midCallEvent","getCall","handleMidCallEvent","newId","find","id","getCallId","getLineId","CallDirection","INBOUND","setCallId","broadworksCorrelationInfo","setBroadworksCorrelationInfo","callerId","startCallerIdResolution","LINE_EVENT_KEYS","INCOMING_CALL","sendCallStateMachineEvt","type","CALL_PROGRESS","CALL_INFO","CALL_MEDIA","activeCall","_mobiusEvent$data$mes","_mobiusEvent$data$mes2","_mobiusEvent$data$mes3","_mobiusEvent$data$mes4","_mobiusEvent$data$mes5","message","sdp","messageType","seq","version","mediaState","MediaState","OFFER","sendMediaStateMachineEvt","ANSWER","OFFER_REQUEST","OK","mediaOk","received","ERROR","CALL_CONNECTED","CALL_DISCONNECTED","updateLine","line","UPDATE_LINE","Eventing","getCallManager"],"sources":["callManager.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable valid-jsdoc */\nimport {APIRequest} from '../utils/request';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {CALL_MANAGER_FILE, METHODS} from '../constants';\nimport {CALLING_CLIENT_EVENT_KEYS, CallEventTypes, LINE_EVENT_KEYS} from '../../Events/types';\nimport {Eventing} from '../../Events/impl';\nimport SDKConnector from '../../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallDetails, CallDirection, CorrelationId, ServiceIndicator} from '../../common/types';\nimport {\n ICall,\n ICallManager,\n MediaState,\n MidCallEvent,\n MobiusAsyncEvent,\n MobiusCallData,\n MobiusEventType,\n} from './types';\nimport {createCall} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\n\nlet callManager: ICallManager;\n\n/**\n *\n */\nexport class CallManager extends Eventing<CallEventTypes> implements ICallManager {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callCollection: Record<CorrelationId, ICall>;\n\n private activeMobiusUrl!: string;\n\n private serviceIndicator: ServiceIndicator;\n\n private lineDict: Record<string, ILine>;\n\n private apiRequest: APIRequest;\n\n /**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\n constructor(webex: WebexSDK, indicator: ServiceIndicator) {\n super();\n this.sdkConnector = SDKConnector;\n this.serviceIndicator = indicator;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.lineDict = {};\n this.webex = this.sdkConnector.getWebex();\n this.apiRequest = APIRequest.getInstance({webex: this.webex});\n this.callCollection = {};\n this.activeMobiusUrl = '';\n this.listenForWsEvents();\n }\n\n /**\n * @param direction -.\n * @param deviceId -.\n * @param destination -.\n */\n public createCall = (\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n destination?: CallDetails\n ): ICall => {\n log.info(`${METHOD_START_MESSAGE} with ${direction}, ${deviceId} and ${lineId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n log.log('Creating call object', {});\n const newCall = createCall(\n this.activeMobiusUrl,\n this.webex,\n direction,\n deviceId,\n lineId,\n (correlationId: CorrelationId) => {\n delete this.callCollection[correlationId];\n const activeCalls = Object.keys(this.getActiveCalls()).length;\n\n log.info(\n `DELETE:: Deleted corelationId: ${newCall.getCorrelationId()} from CallManager, Number of call records :- ${activeCalls}`,\n {}\n );\n if (activeCalls === 0) {\n /* Notify CallingClient when all calls are cleared. */\n this.emit(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);\n log.log('All calls have been cleared', {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n }\n },\n this.serviceIndicator,\n destination\n );\n\n this.callCollection[newCall.getCorrelationId()] = newCall;\n log.log(`New call created with correlationId: ${newCall.getCorrelationId()}`, {});\n log.info(\n `ADD:: Added corelationId: ${newCall.getCorrelationId()} to CallManager , Number of call records now:- ${\n Object.keys(this.getActiveCalls()).length\n }`,\n {}\n );\n\n return newCall;\n };\n\n /**\n * Update Active Mobius Url.\n *\n * @param url - Mobius Url.\n */\n public updateActiveMobius(url: string) {\n this.activeMobiusUrl = url;\n log.log(`Successfully updated active Mobius URL to: ${url}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n });\n }\n\n /**\n * A listener for Mobius events.\n */\n private listenForWsEvents() {\n if (!this.apiRequest.isSocketEnabled()) {\n this.sdkConnector.registerListener('event:mobius', async (event) => {\n this.dequeueWsEvents(event);\n });\n log.info('Successfully registered listener for Mobius events', {\n file: CALL_MANAGER_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n }\n }\n\n /**\n * This a Queue where Mobius Events are reported by the underlying Mercury\n * Connection. We handle the events in the order they are posted here. New call\n * Objects are generated from here.\n *\n * @param event - Mobius Events.\n */\n public dequeueWsEvents(event: MobiusAsyncEvent | unknown) {\n log.info(`${METHOD_START_MESSAGE} with event ${event}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mobiusEvent = event as MobiusAsyncEvent;\n\n const {callId, correlationId} = mobiusEvent.data as MobiusCallData;\n\n switch (mobiusEvent.data.eventType) {\n case MobiusEventType.CALL_SETUP: {\n log.log(`Received call Setup message for call: ${callId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n /* Check whether MidCall or not */\n if (mobiusEvent.data.midCallService) {\n mobiusEvent.data.midCallService.forEach((midCallEvent: MidCallEvent) => {\n const call = this.getCall(correlationId);\n\n if (call) {\n call.handleMidCallEvent(midCallEvent);\n } else {\n log.info(\n `Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n }\n });\n\n return;\n }\n /* Check if the Call.Media was processed before Call.Setup.\n * In that case , the Call Object is already created while processing\n * Media message.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n let newCall: ICall;\n\n if (!newId) {\n /* This means it's a new call ...\n * Create an incoming call object and add to our records\n */\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n newCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from Call Setup message: ${newCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setCallId(callId);\n if (mobiusEvent.data.broadworksCorrelationInfo) {\n log.info(\n `Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);\n }\n } else {\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall = this.getCall(newId);\n }\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n newCall.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n /* Signal Line */\n\n this.emit(LINE_EVENT_KEYS.INCOMING_CALL, newCall);\n\n newCall.sendCallStateMachineEvt({type: 'E_RECV_CALL_SETUP', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_PROGRESS: {\n log.log(`Received call progress mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n call.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data});\n break;\n }\n case MobiusEventType.CALL_INFO: {\n log.log(`Received call info mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call && mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n call.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n break;\n }\n case MobiusEventType.CALL_MEDIA: {\n log.log(`Received call media mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n\n let activeCall: ICall;\n\n if (correlationId) {\n /* The Call.Media message had correlation id (Except the first message) */\n activeCall = this.getCall(correlationId);\n } else {\n /* This is possibly the first Media message for the call.\n * We should scan our record to see if we can find a call with\n * this callId.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n\n if (newId) {\n /* Call.Media arrived after Call.Setup but the correlationId was Null. */\n\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall = this.getCall(newId);\n } else {\n /* If Call.Media arrived before Call.Setup , we create the Call Object here */\n\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n activeCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from ROAP Message: ${activeCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall.setCallId(callId);\n }\n }\n\n if (activeCall) {\n /* Only Handle if the call is present */\n\n log.info(`SDP from mobius ${mobiusEvent.data.message?.sdp}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n log.log(\n `ROAP message from mobius with type: ${mobiusEvent.data.message?.messageType}, seq: ${mobiusEvent.data.message?.seq} , version: ${mobiusEvent.data.message?.version}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n const mediaState = mobiusEvent.data.message?.messageType;\n\n switch (mediaState) {\n case MediaState.OFFER: {\n log.log('Received OFFER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.ANSWER: {\n log.log('Received ANSWER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_ANSWER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OFFER_REQUEST: {\n log.log('Received OFFER_REQUEST', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OK: {\n log.log('Received OK', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mediaOk = {\n received: true,\n message: mobiusEvent.data.message,\n };\n\n activeCall.sendMediaStateMachineEvt({\n type: 'E_ROAP_OK',\n data: mediaOk,\n });\n break;\n }\n case MediaState.ERROR: {\n log.log('Received Error...', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n break;\n }\n default: {\n log.log(`Unknown Media mobiusEvent: ${mediaState} `, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n } else {\n log.info(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n // TODO: Maybe add a queue for these mobiusEvents per callID and handle them once the call is setup ?\n }\n break;\n }\n case MobiusEventType.CALL_CONNECTED: {\n log.log(`Received call connect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_CONNECT', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_DISCONNECTED: {\n log.log(`Received call disconnect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call) {\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n }\n break;\n }\n default: {\n log.log(`Unknown Call Event mobiusEvent: ${mobiusEvent.data.eventType}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n }\n\n /**\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callCollection[correlationId];\n };\n\n /**\n *\n */\n public getActiveCalls = (): Record<string, ICall> => {\n return this.callCollection;\n };\n\n /**\n * Adds line instance to lineDict\n */\n public updateLine(deviceId: string, line: ILine) {\n this.lineDict[deviceId] = line;\n log.log(`Successfully updated line for deviceId: ${deviceId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_LINE,\n });\n }\n\n /**\n * Retrieves line id\n */\n private getLineId(deviceId: string) {\n return this.lineDict[deviceId].lineId;\n }\n}\n\n/**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\nexport const getCallManager = (webex: WebexSDK, indicator: ServiceIndicator): ICallManager => {\n if (!callManager) {\n callManager = new CallManager(webex, indicator);\n }\n\n return callManager;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_request","require","_constants","_constants2","_types","_impl","_SDKConnector","_interopRequireDefault","_types2","_types3","_call4","_Logger","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","callManager","CallManager","exports","_Eventing","webex","indicator","_this","_classCallCheck2","_defineProperty2","direction","deviceId","lineId","destination","log","info","concat","METHOD_START_MESSAGE","file","CALL_MANAGER_FILE","method","METHODS","CREATE_CALL","newCall","createCall","activeMobiusUrl","correlationId","callCollection","activeCalls","_keys","getActiveCalls","length","getCorrelationId","emit","CALLING_CLIENT_EVENT_KEYS","ALL_CALLS_CLEARED","serviceIndicator","sdkConnector","SDKConnector","getWebex","setWebex","lineDict","apiRequest","APIRequest","getInstance","listenForWsEvents","_inherits2","_createClass2","key","value","updateActiveMobius","url","UPDATE_ACTIVE_MOBIUS","_this2","socketEnabled","isSocketEnabled","isMobiusSocketListenerRegistered","registerListener","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_context","prev","next","dequeueWsEvents","stop","_x","arguments","REGISTER_SESSIONS_LISTENER","unregisterListener","_this3","DEQUEUE_WS_EVENTS","mobiusEvent","_ref2","data","callId","eventType","MobiusEventType","CALL_SETUP","midCallService","forEach","midCallEvent","getCall","handleMidCallEvent","newId","find","id","getCallId","getLineId","CallDirection","INBOUND","setCallId","broadworksCorrelationInfo","setBroadworksCorrelationInfo","callerId","startCallerIdResolution","LINE_EVENT_KEYS","INCOMING_CALL","sendCallStateMachineEvt","type","CALL_PROGRESS","CALL_INFO","CALL_MEDIA","activeCall","_mobiusEvent$data$mes","_mobiusEvent$data$mes2","_mobiusEvent$data$mes3","_mobiusEvent$data$mes4","_mobiusEvent$data$mes5","message","sdp","messageType","seq","version","mediaState","MediaState","OFFER","sendMediaStateMachineEvt","ANSWER","OFFER_REQUEST","OK","mediaOk","received","ERROR","CALL_CONNECTED","CALL_DISCONNECTED","updateLine","line","UPDATE_LINE","Eventing","getCallManager"],"sources":["callManager.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable valid-jsdoc */\nimport {APIRequest} from '../utils/request';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {CALL_MANAGER_FILE, METHODS} from '../constants';\nimport {CALLING_CLIENT_EVENT_KEYS, CallEventTypes, LINE_EVENT_KEYS} from '../../Events/types';\nimport {Eventing} from '../../Events/impl';\nimport SDKConnector from '../../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {CallDetails, CallDirection, CorrelationId, ServiceIndicator} from '../../common/types';\nimport {\n ICall,\n ICallManager,\n MediaState,\n MidCallEvent,\n MobiusAsyncEvent,\n MobiusCallData,\n MobiusEventType,\n} from './types';\nimport {createCall} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\n\nlet callManager: ICallManager;\n\n/**\n *\n */\nexport class CallManager extends Eventing<CallEventTypes> implements ICallManager {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callCollection: Record<CorrelationId, ICall>;\n\n private activeMobiusUrl!: string;\n\n private serviceIndicator: ServiceIndicator;\n\n private lineDict: Record<string, ILine>;\n\n private apiRequest: APIRequest;\n\n private isMobiusSocketListenerRegistered = false;\n\n /**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\n constructor(webex: WebexSDK, indicator: ServiceIndicator) {\n super();\n this.sdkConnector = SDKConnector;\n this.serviceIndicator = indicator;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.lineDict = {};\n this.webex = this.sdkConnector.getWebex();\n this.apiRequest = APIRequest.getInstance({webex: this.webex});\n this.callCollection = {};\n this.activeMobiusUrl = '';\n this.listenForWsEvents();\n }\n\n /**\n * @param direction -.\n * @param deviceId -.\n * @param destination -.\n */\n public createCall = (\n direction: CallDirection,\n deviceId: string,\n lineId: string,\n destination?: CallDetails\n ): ICall => {\n log.info(`${METHOD_START_MESSAGE} with ${direction}, ${deviceId} and ${lineId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n log.log('Creating call object', {});\n const newCall = createCall(\n this.activeMobiusUrl,\n this.webex,\n direction,\n deviceId,\n lineId,\n (correlationId: CorrelationId) => {\n delete this.callCollection[correlationId];\n const activeCalls = Object.keys(this.getActiveCalls()).length;\n\n log.info(\n `DELETE:: Deleted corelationId: ${newCall.getCorrelationId()} from CallManager, Number of call records :- ${activeCalls}`,\n {}\n );\n if (activeCalls === 0) {\n /* Notify CallingClient when all calls are cleared. */\n this.emit(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);\n log.log('All calls have been cleared', {\n file: CALL_MANAGER_FILE,\n method: METHODS.CREATE_CALL,\n });\n }\n },\n this.serviceIndicator,\n destination\n );\n\n this.callCollection[newCall.getCorrelationId()] = newCall;\n log.log(`New call created with correlationId: ${newCall.getCorrelationId()}`, {});\n log.info(\n `ADD:: Added corelationId: ${newCall.getCorrelationId()} to CallManager , Number of call records now:- ${\n Object.keys(this.getActiveCalls()).length\n }`,\n {}\n );\n\n return newCall;\n };\n\n /**\n * Update Active Mobius Url.\n *\n * @param url - Mobius Url.\n */\n public updateActiveMobius(url: string) {\n this.activeMobiusUrl = url;\n log.log(`Successfully updated active Mobius URL to: ${url}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n });\n\n /*\n * The active transport is resolved per Mobius server group during registration: a\n * group with no WSS URL falls back to HTTP even while the Mobius socket feature is\n * enabled, so the final transport is only known once registration succeeds. Re-align\n * the Mobius event source with that transport now that the device has registered.\n */\n this.listenForWsEvents();\n }\n\n /**\n * Aligns the Mobius event source with the active transport.\n *\n * Call events reach {@link dequeueWsEvents} over one of two paths:\n * - HTTP transport: a Mercury `event:mobius` listener owned by this CallManager.\n * - WebSocket transport: CallingClient forwards Mobius socket events to dequeueWsEvents().\n *\n * Because the transport can fall back from WSS to HTTP per server group during\n * registration, this is invoked both at construction and whenever the active Mobius\n * URL changes. It registers the Mercury listener for HTTP and removes it for the\n * WebSocket transport, and is idempotent so repeated calls do not duplicate listeners.\n */\n private listenForWsEvents() {\n const socketEnabled = this.apiRequest.isSocketEnabled();\n\n if (!socketEnabled && !this.isMobiusSocketListenerRegistered) {\n this.sdkConnector.registerListener('event:mobius', async (event) => {\n this.dequeueWsEvents(event);\n });\n this.isMobiusSocketListenerRegistered = true;\n log.info('Successfully registered listener for Mobius events', {\n file: CALL_MANAGER_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n } else if (socketEnabled && this.isMobiusSocketListenerRegistered) {\n this.sdkConnector.unregisterListener('event:mobius');\n this.isMobiusSocketListenerRegistered = false;\n log.info('Unregistered Mercury listener for Mobius events; using WebSocket transport', {\n file: CALL_MANAGER_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n }\n }\n\n /**\n * This a Queue where Mobius Events are reported by the underlying Mercury\n * Connection. We handle the events in the order they are posted here. New call\n * Objects are generated from here.\n *\n * @param event - Mobius Events.\n */\n public dequeueWsEvents(event: MobiusAsyncEvent | unknown) {\n log.info(`${METHOD_START_MESSAGE} with event ${event}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mobiusEvent = event as MobiusAsyncEvent;\n\n const {callId, correlationId} = mobiusEvent.data as MobiusCallData;\n\n switch (mobiusEvent.data.eventType) {\n case MobiusEventType.CALL_SETUP: {\n log.log(`Received call Setup message for call: ${callId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n /* Check whether MidCall or not */\n if (mobiusEvent.data.midCallService) {\n mobiusEvent.data.midCallService.forEach((midCallEvent: MidCallEvent) => {\n const call = this.getCall(correlationId);\n\n if (call) {\n call.handleMidCallEvent(midCallEvent);\n } else {\n log.info(\n `Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n }\n });\n\n return;\n }\n /* Check if the Call.Media was processed before Call.Setup.\n * In that case , the Call Object is already created while processing\n * Media message.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n let newCall: ICall;\n\n if (!newId) {\n /* This means it's a new call ...\n * Create an incoming call object and add to our records\n */\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n newCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from Call Setup message: ${newCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setCallId(callId);\n if (mobiusEvent.data.broadworksCorrelationInfo) {\n log.info(\n `Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);\n }\n } else {\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n newCall = this.getCall(newId);\n }\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n newCall.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n /* Signal Line */\n\n this.emit(LINE_EVENT_KEYS.INCOMING_CALL, newCall);\n\n newCall.sendCallStateMachineEvt({type: 'E_RECV_CALL_SETUP', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_PROGRESS: {\n log.log(`Received call progress mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n call.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data});\n break;\n }\n case MobiusEventType.CALL_INFO: {\n log.log(`Received call info mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call && mobiusEvent.data.callerId) {\n log.info('Processing Caller-Id data', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n call.startCallerIdResolution(mobiusEvent.data.callerId);\n }\n break;\n }\n case MobiusEventType.CALL_MEDIA: {\n log.log(`Received call media mobiusEvent for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n\n let activeCall: ICall;\n\n if (correlationId) {\n /* The Call.Media message had correlation id (Except the first message) */\n activeCall = this.getCall(correlationId);\n } else {\n /* This is possibly the first Media message for the call.\n * We should scan our record to see if we can find a call with\n * this callId.\n */\n\n const newId = (Object.keys(this.callCollection) as Array<string>).find(\n (id) => this.callCollection[id].getCallId() === callId\n );\n\n if (newId) {\n /* Call.Media arrived after Call.Setup but the correlationId was Null. */\n\n log.info(\n `Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall = this.getCall(newId);\n } else {\n /* If Call.Media arrived before Call.Setup , we create the Call Object here */\n\n const lineId = this.getLineId(mobiusEvent.data.deviceId);\n activeCall = this.createCall(\n CallDirection.INBOUND,\n mobiusEvent.data.deviceId,\n lineId,\n {} as CallDetails\n );\n log.log(\n `New incoming call created with correlationId from ROAP Message: ${activeCall.getCorrelationId()}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n activeCall.setCallId(callId);\n }\n }\n\n if (activeCall) {\n /* Only Handle if the call is present */\n\n log.info(`SDP from mobius ${mobiusEvent.data.message?.sdp}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n log.log(\n `ROAP message from mobius with type: ${mobiusEvent.data.message?.messageType}, seq: ${mobiusEvent.data.message?.seq} , version: ${mobiusEvent.data.message?.version}`,\n {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n }\n );\n const mediaState = mobiusEvent.data.message?.messageType;\n\n switch (mediaState) {\n case MediaState.OFFER: {\n log.log('Received OFFER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.ANSWER: {\n log.log('Received ANSWER', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_ANSWER',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OFFER_REQUEST: {\n log.log('Received OFFER_REQUEST', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n activeCall.sendMediaStateMachineEvt({\n type: 'E_RECV_ROAP_OFFER_REQUEST',\n data: mobiusEvent.data.message,\n });\n break;\n }\n case MediaState.OK: {\n log.log('Received OK', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const mediaOk = {\n received: true,\n message: mobiusEvent.data.message,\n };\n\n activeCall.sendMediaStateMachineEvt({\n type: 'E_ROAP_OK',\n data: mediaOk,\n });\n break;\n }\n case MediaState.ERROR: {\n log.log('Received Error...', {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n break;\n }\n default: {\n log.log(`Unknown Media mobiusEvent: ${mediaState} `, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n } else {\n log.info(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n // TODO: Maybe add a queue for these mobiusEvents per callID and handle them once the call is setup ?\n }\n break;\n }\n case MobiusEventType.CALL_CONNECTED: {\n log.log(`Received call connect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_CONNECT', data: mobiusEvent.data});\n\n break;\n }\n case MobiusEventType.CALL_DISCONNECTED: {\n log.log(`Received call disconnect for call: ${correlationId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n const call = this.getCall(correlationId);\n\n if (call) {\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n }\n break;\n }\n default: {\n log.log(`Unknown Call Event mobiusEvent: ${mobiusEvent.data.eventType}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.DEQUEUE_WS_EVENTS,\n });\n }\n }\n }\n\n /**\n * @param correlationId -.\n */\n public getCall = (correlationId: CorrelationId): ICall => {\n return this.callCollection[correlationId];\n };\n\n /**\n *\n */\n public getActiveCalls = (): Record<string, ICall> => {\n return this.callCollection;\n };\n\n /**\n * Adds line instance to lineDict\n */\n public updateLine(deviceId: string, line: ILine) {\n this.lineDict[deviceId] = line;\n log.log(`Successfully updated line for deviceId: ${deviceId}`, {\n file: CALL_MANAGER_FILE,\n method: METHODS.UPDATE_LINE,\n });\n }\n\n /**\n * Retrieves line id\n */\n private getLineId(deviceId: string) {\n return this.lineDict[deviceId].lineId;\n }\n}\n\n/**\n * @param webex -.\n * @param indicator - Service Indicator.\n */\nexport const getCallManager = (webex: WebexSDK, indicator: ServiceIndicator): ICallManager => {\n if (!callManager) {\n callManager = new CallManager(webex, indicator);\n }\n\n return callManager;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -773,4 +773,92 @@ describe('Coverage for Events listener', function () {
|
|
|
773
773
|
}, _callee17);
|
|
774
774
|
})));
|
|
775
775
|
});
|
|
776
|
+
describe('Mobius event transport alignment', function () {
|
|
777
|
+
var callManager;
|
|
778
|
+
var mercuryOnSpy;
|
|
779
|
+
var mercuryOffSpy;
|
|
780
|
+
var isSocketEnabledSpy;
|
|
781
|
+
var httpUrl = 'https://mobius.example.com/api/v1/calling/web/';
|
|
782
|
+
var wssUrl = 'wss://mobius.example.com/api/v1/calling/web/';
|
|
783
|
+
|
|
784
|
+
// SDKConnector.registerListener/unregisterListener delegate to mercury.on/off, so the
|
|
785
|
+
// Mercury listener lifecycle is observed through those mocks on the shared webex instance.
|
|
786
|
+
var getMobiusListenerWrapper = function getMobiusListenerWrapper() {
|
|
787
|
+
var _mercuryOnSpy$mock$ca;
|
|
788
|
+
return (_mercuryOnSpy$mock$ca = mercuryOnSpy.mock.calls.find(function (call) {
|
|
789
|
+
return call[0] === 'event:mobius';
|
|
790
|
+
})) === null || _mercuryOnSpy$mock$ca === void 0 ? void 0 : _mercuryOnSpy$mock$ca[1];
|
|
791
|
+
};
|
|
792
|
+
beforeEach(function () {
|
|
793
|
+
callManager = (0, _callManager.getCallManager)(webex, defaultServiceIndicator);
|
|
794
|
+
mercuryOnSpy = webex.internal.mercury.on;
|
|
795
|
+
mercuryOffSpy = webex.internal.mercury.off;
|
|
796
|
+
mercuryOnSpy.mockClear();
|
|
797
|
+
mercuryOffSpy.mockClear();
|
|
798
|
+
isSocketEnabledSpy = jest.spyOn(callManager['apiRequest'], 'isSocketEnabled');
|
|
799
|
+
});
|
|
800
|
+
afterEach(function () {
|
|
801
|
+
isSocketEnabledSpy.mockRestore();
|
|
802
|
+
});
|
|
803
|
+
it('updateActiveMobius stores the active Mobius URL', function () {
|
|
804
|
+
isSocketEnabledSpy.mockReturnValue(false);
|
|
805
|
+
callManager.updateActiveMobius(httpUrl);
|
|
806
|
+
expect(callManager['activeMobiusUrl']).toBe(httpUrl);
|
|
807
|
+
});
|
|
808
|
+
it('registers the Mercury listener when the transport falls back to HTTP', function () {
|
|
809
|
+
callManager['isMobiusSocketListenerRegistered'] = false;
|
|
810
|
+
isSocketEnabledSpy.mockReturnValue(false);
|
|
811
|
+
callManager.updateActiveMobius(httpUrl);
|
|
812
|
+
expect(mercuryOnSpy).toHaveBeenCalledWith('event:mobius', expect.any(Function));
|
|
813
|
+
expect(callManager['isMobiusSocketListenerRegistered']).toBe(true);
|
|
814
|
+
expect(mercuryOffSpy).not.toHaveBeenCalled();
|
|
815
|
+
});
|
|
816
|
+
it('removes the Mercury listener when the transport switches to WebSocket', function () {
|
|
817
|
+
callManager['isMobiusSocketListenerRegistered'] = true;
|
|
818
|
+
isSocketEnabledSpy.mockReturnValue(true);
|
|
819
|
+
callManager.updateActiveMobius(wssUrl);
|
|
820
|
+
expect(mercuryOffSpy).toHaveBeenCalledWith('event:mobius');
|
|
821
|
+
expect(callManager['isMobiusSocketListenerRegistered']).toBe(false);
|
|
822
|
+
expect(mercuryOnSpy).not.toHaveBeenCalled();
|
|
823
|
+
});
|
|
824
|
+
it('does not re-register the Mercury listener when already registered on HTTP', function () {
|
|
825
|
+
callManager['isMobiusSocketListenerRegistered'] = true;
|
|
826
|
+
isSocketEnabledSpy.mockReturnValue(false);
|
|
827
|
+
callManager.updateActiveMobius(httpUrl);
|
|
828
|
+
expect(mercuryOnSpy).not.toHaveBeenCalled();
|
|
829
|
+
expect(mercuryOffSpy).not.toHaveBeenCalled();
|
|
830
|
+
expect(callManager['isMobiusSocketListenerRegistered']).toBe(true);
|
|
831
|
+
});
|
|
832
|
+
it('does nothing when socket is enabled and no Mercury listener is registered', function () {
|
|
833
|
+
callManager['isMobiusSocketListenerRegistered'] = false;
|
|
834
|
+
isSocketEnabledSpy.mockReturnValue(true);
|
|
835
|
+
callManager.updateActiveMobius(wssUrl);
|
|
836
|
+
expect(mercuryOnSpy).not.toHaveBeenCalled();
|
|
837
|
+
expect(mercuryOffSpy).not.toHaveBeenCalled();
|
|
838
|
+
expect(callManager['isMobiusSocketListenerRegistered']).toBe(false);
|
|
839
|
+
});
|
|
840
|
+
it('routes Mobius events to dequeueWsEvents through the registered Mercury listener', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18() {
|
|
841
|
+
var dequeueSpy, mobiusListenerWrapper;
|
|
842
|
+
return _regenerator.default.wrap(function (_context18) {
|
|
843
|
+
while (1) switch (_context18.prev = _context18.next) {
|
|
844
|
+
case 0:
|
|
845
|
+
callManager['isMobiusSocketListenerRegistered'] = false;
|
|
846
|
+
isSocketEnabledSpy.mockReturnValue(false);
|
|
847
|
+
dequeueSpy = jest.spyOn(callManager, 'dequeueWsEvents').mockImplementation(function () {
|
|
848
|
+
return undefined;
|
|
849
|
+
});
|
|
850
|
+
callManager.updateActiveMobius(httpUrl);
|
|
851
|
+
mobiusListenerWrapper = getMobiusListenerWrapper();
|
|
852
|
+
_context18.next = 1;
|
|
853
|
+
return mobiusListenerWrapper(setupEvent);
|
|
854
|
+
case 1:
|
|
855
|
+
expect(dequeueSpy).toHaveBeenCalledWith(setupEvent);
|
|
856
|
+
dequeueSpy.mockRestore();
|
|
857
|
+
case 2:
|
|
858
|
+
case "end":
|
|
859
|
+
return _context18.stop();
|
|
860
|
+
}
|
|
861
|
+
}, _callee18);
|
|
862
|
+
})));
|
|
863
|
+
});
|
|
776
864
|
//# sourceMappingURL=callManager.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Utils","_interopRequireWildcard","require","utils","_types","_testUtil","_callManager","_types2","_call","_Logger","_interopRequireDefault","_types3","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","webex","getTestUtilsWebex","defaultServiceIndicator","ServiceIndicator","CALLING","mediaEvent","id","data","message","messageType","sdp","seq","version","callId","callUrl","deviceId","correlationId","eventType","timestamp","trackingId","alertType","headers","sequenceNumber","filterMessage","setupEvent","callerId","from","broadworksCorrelationInfo","disconnectEvent","causecode","cause","registrationDownEvent","type","eventId","deviceInfo","userId","device","uri","status","dest","CallType","URI","address","successResponseBody","statusCode","body","callData","callState","MobiusCallState","PROCEEDING","mockLineId","mockLine","lineId","describe","dummyResponse","patchMock","jest","spyOn","Call","prototype","setDisconnectReasonMock","deleteCallMock","initMediaConnectionMock","mediaRoapEventsListenerMock","mediaTrackListenerMock","postMediaMock","mockResolvedValue","mockReturnValue","callManager","beforeEach","getCallManager","removeAllListeners","LINE_EVENT_KEYS","INCOMING_CALL","expect","_keys","getActiveCalls","length","toBe","afterEach","calls","_values","forEach","end","it","toBeTruthy","callManagerNew","toMatchObject","_asyncToGenerator2","_regenerator","mark","_callee","logSpy","wrap","_context","prev","next","updateLine","request","mockReturnValueOnce","log","createCall","CallDirection","OUTBOUND","sent","setCallId","getCallId","toStrictEqual","toHaveBeenCalledWith","stop","_callee2","_context2","on","callObj","getBroadworksCorrelationInfo","waitForMsecs","ALERTING","_callee3","_context3","_callee4","_context4","getCorrelationId","toHaveBeenCalled","_callee5","_context5","not","_callee6","_mediaEvent$data$mess","_mediaEvent$data$mess2","_mediaEvent$data$mess3","errorSpy","uploadLogsSpy","_context6","mockRejectedValue","concat","_stringify","file","method","objectContaining","_callee8","_context8","_ref8","_callee7","mediaSpy","mediaClose","track","_context7","state","value","answer","localAudioTrack","CONNECTED","_x","apply","arguments","dummyCallId","clearAllMocks","funcSpy","callSpy","_callee9","eventData","_context9","_callee0","_context0","_callee1","_context1","_callee10","mediaOK","_context10","received","_callee11","_mediaEvent$data$mess4","_mediaEvent$data$mess5","_mediaEvent$data$mess6","_mediaEvent$data$mess7","infoSpy","_context11","_callee12","_mediaEvent$data$mess8","_mediaEvent$data$mess9","_mediaEvent$data$mess0","_mediaEvent$data$mess1","_context12","_callee13","_context13","_callee14","connectEvent","_context14","JSON","parse","_callee15","answerEvent","_context15","_callee16","_context16","_callee17","_context17"],"sources":["callManager.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable dot-notation */\nimport {waitForMsecs} from '../../common/Utils';\nimport {CallDirection, CallType, ServiceIndicator} from '../../common/types';\nimport {getTestUtilsWebex} from '../../common/testUtil';\nimport {getCallManager} from './callManager';\nimport {ICall, ICallManager, MobiusCallState} from './types';\nimport {Call} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\nimport {LINE_EVENT_KEYS} from '../../Events/types';\nimport * as utils from '../../common/Utils';\n\nconst webex = getTestUtilsWebex();\nconst defaultServiceIndicator = ServiceIndicator.CALLING;\n\nconst mediaEvent = {\n id: '73e6a2b2-968c-44ea-a536-e7702722f8d8',\n data: {\n message: {\n messageType: 'OFFER',\n sdp: 'v=0\\r\\no=BroadWorks 175625 1653906127914 IN IP4 207.182.171.180\\r\\ns=-\\r\\nc=IN IP4 207.182.171.180\\r\\nt=0 0\\r\\na=ice-lite\\r\\nm=audio 19564 UDP/TLS/RTP/SAVPF 99 9 0 8 18 102 101\\r\\na=sendrecv\\r\\na=rtpmap:99 opus/48000/2\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:18 G729/8000\\r\\na=fmtp:18 annexb=no\\r\\na=rtpmap:102 iLBC/8000\\r\\na=fmtp:102 mode=30\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=rtcp-mux\\r\\na=setup:actpass\\r\\na=ssrc:379289707 cname:HC3h2tromqGgnGaf\\r\\na=ice-ufrag:mLbW\\r\\na=ice-pwd:Hct9MYtML1sedttd8fLCg9aJ\\r\\na=fingerprint:sha-256 5E:F5:3D:98:57:03:D7:73:8F:C3:D4:FC:EC:FE:7F:4D:04:D8:EE:2A:29:C4:9F:35:C5:0F:D1:2D:CE:E4:AE:AA\\r\\na=candidate:mse 1 UDP 2130706431 207.182.171.180 19564 typ host\\r\\na=candidate:mse 2 UDP 2130706430 207.182.171.180 19565 typ host',\n seq: 1,\n version: '2',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.media',\n },\n timestamp: 1653906128188,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 7,\n filterMessage: false,\n};\n\nconst setupEvent = {\n id: '3ee919c7-202d-4f8c-9b74-e5ee8a693dfa',\n data: {\n callerId: {\n 'x-broadworks-remote-party-info':\n 'userId=\"hkkcq0ekby@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865895;ext=5008;country-code=1\";externalId=652fe0c7-05ce-4acd-8bda-9a080830187f',\n from: '\"Bob Marley\" <sip:5008@207.182.171.130;user=phone>;tag=379221777-1653906128003-',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.call',\n broadworksCorrelationInfo: 'Sample_broadworksCorrelationInfo',\n },\n timestamp: 1653906128159,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\n\nconst disconnectEvent = {\n id: 'f3e37504-5867-48ea-8d67-4e82b3ce1755',\n data: {\n causecode: 0,\n cause: 'Normal disconnect',\n callId: 'cbfe802c-cc8d-407f-863d-0abf8d6cc497',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/5691641c-7f0c-47a4-b248-e585ebcf653d]',\n deviceId: 'b9270663-54c8-3540-b01f-ed807dc5f9e8',\n correlationId: '',\n eventType: 'mobius.calldisconnected',\n },\n timestamp: 1653925625934,\n trackingId: 'NA_fe7efbbc-de52-438c-a6c3-58e96db230ba',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\n\nconst registrationDownEvent = {\n type: 'async_event',\n trackingId: 'SRV_bb000000-0000-0000-0000-000000000007',\n eventId: 'a7b8c9d0-e1f2-3456-abcd-567890123456',\n data: {\n eventType: 'registration.down',\n deviceInfo: {\n userId: '44533573-f6aa-429d-b4fe-58aa04a2b636',\n device: {\n deviceId: '334f3d50-1d26-4712-93f1-4972390cc565',\n uri: 'https://mobius-a.wbx2.com/api/v1/calling/web/devices/334f3d50-1d26-4712-93f1-4972390cc565',\n status: 'inactive',\n },\n },\n },\n};\nconst deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\nconst dest = {\n type: CallType.URI,\n address: 'tel:5003',\n};\n\nconst successResponseBody = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n};\n\nconst mockLineId = 'e4e8ee2a-a154-4e52-8f11-ef4cde2dce72';\nconst mockLine = {\n lineId: mockLineId,\n} as ILine;\n\ndescribe('Call Manager Tests with respect to calls', () => {\n const dummyResponse = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n },\n };\n\n const patchMock = jest.spyOn(Call.prototype as any, 'patch');\n const setDisconnectReasonMock = jest.spyOn(Call.prototype as any, 'setDisconnectReason');\n const deleteCallMock = jest.spyOn(Call.prototype as any, 'delete');\n const initMediaConnectionMock = jest.spyOn(Call.prototype as any, 'initMediaConnection');\n const mediaRoapEventsListenerMock = jest.spyOn(Call.prototype as any, 'mediaRoapEventsListener');\n const mediaTrackListenerMock = jest.spyOn(Call.prototype as any, 'mediaTrackListener');\n const postMediaMock = jest.spyOn(Call.prototype as any, 'postMedia');\n\n deleteCallMock.mockResolvedValue(dummyResponse); // Both are using dummy response\n setDisconnectReasonMock.mockReturnValue({});\n initMediaConnectionMock.mockReturnValue({});\n mediaRoapEventsListenerMock.mockReturnValue({});\n mediaTrackListenerMock.mockReturnValue({});\n postMediaMock.mockResolvedValue({});\n\n let callManager: ICallManager;\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n /* expect 0 calls at the beginning of each test as we are clearing calls at the end of every test case */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n afterEach(() => {\n /* lets clear all calls at the end of every test case */\n const calls = Object.values(callManager.getActiveCalls());\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('check instance of call manager', () => {\n expect(callManager).toBeTruthy();\n });\n\n it('Check whether callManager is singleton', () => {\n const callManagerNew = getCallManager(webex, defaultServiceIndicator);\n\n expect(callManager).toMatchObject(callManagerNew);\n });\n\n it('create a call using call manager', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n const logSpy = jest.spyOn(log, 'log');\n\n expect(callManager).toBeTruthy();\n const call = await callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n\n call.setCallId('8a67806f-fc4d-446b-a131-31e71ea5b020');\n\n expect(call).toBeTruthy();\n expect(call.getCallId()).toStrictEqual('8a67806f-fc4d-446b-a131-31e71ea5b020');\n expect(call.lineId).toStrictEqual(mockLineId);\n expect(logSpy).toHaveBeenCalledWith('Creating call object', {});\n });\n\n it('Accept an incoming call from Mobius where Call Setup was the first message', async () => {\n callManager.updateLine('375b8503-f716-3407-853b-cd9a8c4419a7', mockLine);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj.getBroadworksCorrelationInfo()).toStrictEqual(\n setupEvent.data.broadworksCorrelationInfo\n );\n expect(callObj.lineId).toStrictEqual(mockLineId);\n });\n patchMock.mockResolvedValue(dummyResponse);\n\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n /* setUp event should create the call and count will be 1 for new call */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call from Mobius where Media Event was the first message', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n patchMock.mockResolvedValue(dummyResponse);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj['remoteRoapMessage'].sdp).toStrictEqual(mediaEvent.data.message.sdp);\n });\n\n await callManager['dequeueWsEvents'](mediaEvent);\n /* check whether SDP is buffered */\n await callManager['dequeueWsEvents'](setupEvent);\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Disconnect a call if received a Call Disconnect event', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n const call = await callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Do not Disconnect a call if call has been disconnected already', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n await callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = '1234';\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).not.toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call but Outgoing patch request fails', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n /* Intentionally failing the Patch with 503 */\n dummyResponse.statusCode = 503;\n patchMock.mockRejectedValue(dummyResponse);\n\n const errorSpy = jest.spyOn(log, 'error');\n const logSpy = jest.spyOn(log, 'log');\n const uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(errorSpy).toHaveBeenCalledWith(\n `Failed to signal call progression: ${JSON.stringify(dummyResponse)}`,\n {\n file: 'call',\n method: 'handleOutgoingCallAlerting',\n }\n );\n expect(logSpy).toHaveBeenCalledWith(\n `Received call media mobiusEvent for call: ${mediaEvent.data.correlationId}`,\n expect.objectContaining({\n file: 'callManager',\n method: 'dequeueWsEvents',\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n `ROAP message from mobius with type: ${mediaEvent.data.message?.messageType}, seq: ${mediaEvent.data.message?.seq} , version: ${mediaEvent.data.message?.version}`,\n expect.objectContaining({\n file: 'callManager',\n method: 'dequeueWsEvents',\n })\n );\n expect(uploadLogsSpy).toHaveBeenCalled();\n /* No calls should have been added as call progress failed */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Walk through an End to End call', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n let call: ICall;\n\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, async (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n call = callObj;\n await waitForMsecs(50);\n\n const mediaSpy = jest.spyOn(call['mediaConnection'], 'roapMessageReceived');\n const mediaClose = jest.spyOn(call['mediaConnection'], 'close').mockReturnValue({});\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(3);\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_PROGRESS');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n\n /* Receive ROAP Offer */\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_RECV_ROAP_OFFER');\n\n const track = {} as MediaStreamTrack;\n\n /* User answers the call */\n await call.answer({localAudioTrack: track});\n await waitForMsecs(50);\n\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.CONNECTED);\n expect(mediaSpy).toHaveBeenCalled(); /* We pass the offer to media connection */\n\n /* We are manually sending this event , ideally it will sent by MediaConnection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_ANSWER'});\n\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_ANSWER');\n\n /* Simulate ROAP_OK */\n mediaEvent.data.message.messageType = 'OK';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(mediaSpy).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Simulate ROAP Offer_request */\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n /* We are manually sending this event , ideally it will sent by Media Connection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_OFFER'});\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_OFFER');\n\n /* Simulate ROAP Answer */\n mediaEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Start Call disconnect */\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(mediaClose).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_TEARDOWN');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_CLEARED');\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(2);\n });\n\n patchMock.mockResolvedValue(dummyResponse);\n await callManager['dequeueWsEvents'](setupEvent);\n });\n});\n\ndescribe('Coverage for Events listener', () => {\n let callManager: ICallManager;\n let call: ICall;\n const dummyCallId = '8a67806f-fc4d-4469-a131-31e71ec5b011';\n\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n call = callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n call.setCallId(dummyCallId);\n setupEvent.data.correlationId = call.getCorrelationId();\n });\n\n const funcSpy = jest.spyOn(Call.prototype as any, 'sendMediaStateMachineEvt');\n const callSpy = jest.spyOn(Call.prototype as any, 'sendCallStateMachineEvt');\n const logSpy = jest.spyOn(log, 'log');\n\n it('When Offer is received', async () => {\n mediaEvent.data.callId = dummyCallId;\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](mediaEvent);\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER'};\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Answer is received', async () => {\n mediaEvent.data.message.messageType = 'ANSWER';\n jest.clearAllMocks();\n\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_ANSWER'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Offer Request is received', async () => {\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER_REQUEST'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When OK is received', async () => {\n mediaEvent.data.message.messageType = 'OK';\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const mediaOK = {received: true, message: mediaEvent.data.message};\n const eventData = {data: mediaOK, type: 'E_ROAP_OK'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Error is Received', async () => {\n mediaEvent.data.message.messageType = 'ERROR';\n jest.clearAllMocks();\n const infoSpy = jest.spyOn(log, 'info');\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith(\n `Received call media mobiusEvent for call: ${mediaEvent.data.correlationId}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith(\n `ROAP message from mobius with type: ${mediaEvent.data.message?.messageType}, seq: ${mediaEvent.data.message?.seq} , version: ${mediaEvent.data.message?.version}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith('Received Error...', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n expect(infoSpy).toHaveBeenCalledWith(`SDP from mobius ${mediaEvent.data.message?.sdp}`, {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Unknown event is Received', async () => {\n mediaEvent.data.message.messageType = 'UNKNOWN';\n jest.clearAllMocks();\n const infoSpy = jest.spyOn(log, 'info');\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith(\n `Received call media mobiusEvent for call: ${mediaEvent.data.correlationId}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith(\n `ROAP message from mobius with type: ${mediaEvent.data.message?.messageType}, seq: ${mediaEvent.data.message?.seq} , version: ${mediaEvent.data.message?.version}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith('Unknown Media mobiusEvent: UNKNOWN ', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n expect(infoSpy).toHaveBeenCalledWith(`SDP from mobius ${mediaEvent.data.message?.sdp}`, {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Progress/Connect event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callprogress';\n await callManager['dequeueWsEvents'](setupEvent);\n expect(callSpy).toHaveBeenCalledWith({type: 'E_RECV_CALL_PROGRESS', data: setupEvent.data});\n });\n\n it('Silently discard an event in the state machine', async () => {\n call['callStateMachine'].state.value = 'S_SEND_CALL_CONNECT';\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n\n const connectEvent = JSON.parse(JSON.stringify(setupEvent));\n\n connectEvent.data.eventType = 'mobius.callconnected';\n await callManager['dequeueWsEvents'](connectEvent);\n\n /* There should not be any state change */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n });\n\n it('Silently discard an ROAP_ANSWER after being in ROAP_OK state', async () => {\n call['mediaStateMachine'].state.value = 'S_ROAP_OK';\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n\n const answerEvent = JSON.parse(JSON.stringify(mediaEvent));\n\n answerEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](answerEvent);\n\n /* There should not be any state change */\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n });\n\n it('When Unknown Call event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callunknown';\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](setupEvent);\n\n expect(logSpy).toHaveBeenCalledWith('Unknown Call Event mobiusEvent: mobius.callunknown', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('Handles registration down event without routing to call state machine', async () => {\n jest.clearAllMocks();\n\n await callManager['dequeueWsEvents'](registrationDownEvent);\n\n expect(callSpy).not.toHaveBeenCalled();\n expect(logSpy).toHaveBeenCalledWith('Unknown Call Event mobiusEvent: registration.down', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_Utils","_interopRequireWildcard","require","utils","_types","_testUtil","_callManager","_types2","_call","_Logger","_interopRequireDefault","_types3","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","webex","getTestUtilsWebex","defaultServiceIndicator","ServiceIndicator","CALLING","mediaEvent","id","data","message","messageType","sdp","seq","version","callId","callUrl","deviceId","correlationId","eventType","timestamp","trackingId","alertType","headers","sequenceNumber","filterMessage","setupEvent","callerId","from","broadworksCorrelationInfo","disconnectEvent","causecode","cause","registrationDownEvent","type","eventId","deviceInfo","userId","device","uri","status","dest","CallType","URI","address","successResponseBody","statusCode","body","callData","callState","MobiusCallState","PROCEEDING","mockLineId","mockLine","lineId","describe","dummyResponse","patchMock","jest","spyOn","Call","prototype","setDisconnectReasonMock","deleteCallMock","initMediaConnectionMock","mediaRoapEventsListenerMock","mediaTrackListenerMock","postMediaMock","mockResolvedValue","mockReturnValue","callManager","beforeEach","getCallManager","removeAllListeners","LINE_EVENT_KEYS","INCOMING_CALL","expect","_keys","getActiveCalls","length","toBe","afterEach","calls","_values","forEach","end","it","toBeTruthy","callManagerNew","toMatchObject","_asyncToGenerator2","_regenerator","mark","_callee","logSpy","wrap","_context","prev","next","updateLine","request","mockReturnValueOnce","log","createCall","CallDirection","OUTBOUND","sent","setCallId","getCallId","toStrictEqual","toHaveBeenCalledWith","stop","_callee2","_context2","on","callObj","getBroadworksCorrelationInfo","waitForMsecs","ALERTING","_callee3","_context3","_callee4","_context4","getCorrelationId","toHaveBeenCalled","_callee5","_context5","not","_callee6","_mediaEvent$data$mess","_mediaEvent$data$mess2","_mediaEvent$data$mess3","errorSpy","uploadLogsSpy","_context6","mockRejectedValue","concat","_stringify","file","method","objectContaining","_callee8","_context8","_ref8","_callee7","mediaSpy","mediaClose","track","_context7","state","value","answer","localAudioTrack","CONNECTED","_x","apply","arguments","dummyCallId","clearAllMocks","funcSpy","callSpy","_callee9","eventData","_context9","_callee0","_context0","_callee1","_context1","_callee10","mediaOK","_context10","received","_callee11","_mediaEvent$data$mess4","_mediaEvent$data$mess5","_mediaEvent$data$mess6","_mediaEvent$data$mess7","infoSpy","_context11","_callee12","_mediaEvent$data$mess8","_mediaEvent$data$mess9","_mediaEvent$data$mess0","_mediaEvent$data$mess1","_context12","_callee13","_context13","_callee14","connectEvent","_context14","JSON","parse","_callee15","answerEvent","_context15","_callee16","_context16","_callee17","_context17","mercuryOnSpy","mercuryOffSpy","isSocketEnabledSpy","httpUrl","wssUrl","getMobiusListenerWrapper","_mercuryOnSpy$mock$ca","mock","find","internal","mercury","off","mockClear","mockRestore","updateActiveMobius","any","Function","_callee18","dequeueSpy","mobiusListenerWrapper","_context18","mockImplementation","undefined"],"sources":["callManager.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable dot-notation */\nimport {waitForMsecs} from '../../common/Utils';\nimport {CallDirection, CallType, ServiceIndicator} from '../../common/types';\nimport {getTestUtilsWebex} from '../../common/testUtil';\nimport {getCallManager} from './callManager';\nimport {ICall, ICallManager, MobiusCallState} from './types';\nimport {Call} from './call';\nimport log from '../../Logger';\nimport {ILine} from '../line/types';\nimport {LINE_EVENT_KEYS} from '../../Events/types';\nimport * as utils from '../../common/Utils';\n\nconst webex = getTestUtilsWebex();\nconst defaultServiceIndicator = ServiceIndicator.CALLING;\n\nconst mediaEvent = {\n id: '73e6a2b2-968c-44ea-a536-e7702722f8d8',\n data: {\n message: {\n messageType: 'OFFER',\n sdp: 'v=0\\r\\no=BroadWorks 175625 1653906127914 IN IP4 207.182.171.180\\r\\ns=-\\r\\nc=IN IP4 207.182.171.180\\r\\nt=0 0\\r\\na=ice-lite\\r\\nm=audio 19564 UDP/TLS/RTP/SAVPF 99 9 0 8 18 102 101\\r\\na=sendrecv\\r\\na=rtpmap:99 opus/48000/2\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:18 G729/8000\\r\\na=fmtp:18 annexb=no\\r\\na=rtpmap:102 iLBC/8000\\r\\na=fmtp:102 mode=30\\r\\na=rtpmap:101 telephone-event/8000\\r\\na=rtcp-mux\\r\\na=setup:actpass\\r\\na=ssrc:379289707 cname:HC3h2tromqGgnGaf\\r\\na=ice-ufrag:mLbW\\r\\na=ice-pwd:Hct9MYtML1sedttd8fLCg9aJ\\r\\na=fingerprint:sha-256 5E:F5:3D:98:57:03:D7:73:8F:C3:D4:FC:EC:FE:7F:4D:04:D8:EE:2A:29:C4:9F:35:C5:0F:D1:2D:CE:E4:AE:AA\\r\\na=candidate:mse 1 UDP 2130706431 207.182.171.180 19564 typ host\\r\\na=candidate:mse 2 UDP 2130706430 207.182.171.180 19565 typ host',\n seq: 1,\n version: '2',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.media',\n },\n timestamp: 1653906128188,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 7,\n filterMessage: false,\n};\n\nconst setupEvent = {\n id: '3ee919c7-202d-4f8c-9b74-e5ee8a693dfa',\n data: {\n callerId: {\n 'x-broadworks-remote-party-info':\n 'userId=\"hkkcq0ekby@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865895;ext=5008;country-code=1\";externalId=652fe0c7-05ce-4acd-8bda-9a080830187f',\n from: '\"Bob Marley\" <sip:5008@207.182.171.130;user=phone>;tag=379221777-1653906128003-',\n },\n callId: 'f2e89262-7d9a-489f-b65d-3b56a31c7bfe',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/14ef3832-a7af-4457-a660-fd1918d627d0]',\n deviceId: '375b8503-f716-3407-853b-cd9a8c4419a7',\n correlationId: '',\n eventType: 'mobius.call',\n broadworksCorrelationInfo: 'Sample_broadworksCorrelationInfo',\n },\n timestamp: 1653906128159,\n trackingId: 'ROUTER_62949AD0-DB6E-01BB-595A-03158964595A',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\n\nconst disconnectEvent = {\n id: 'f3e37504-5867-48ea-8d67-4e82b3ce1755',\n data: {\n causecode: 0,\n cause: 'Normal disconnect',\n callId: 'cbfe802c-cc8d-407f-863d-0abf8d6cc497',\n callUrl:\n '[https://wdm-intb.ciscospark.com/wdm/api/v1/devices/5691641c-7f0c-47a4-b248-e585ebcf653d]',\n deviceId: 'b9270663-54c8-3540-b01f-ed807dc5f9e8',\n correlationId: '',\n eventType: 'mobius.calldisconnected',\n },\n timestamp: 1653925625934,\n trackingId: 'NA_fe7efbbc-de52-438c-a6c3-58e96db230ba',\n alertType: 'full',\n headers: {},\n sequenceNumber: 6,\n filterMessage: false,\n};\n\nconst registrationDownEvent = {\n type: 'async_event',\n trackingId: 'SRV_bb000000-0000-0000-0000-000000000007',\n eventId: 'a7b8c9d0-e1f2-3456-abcd-567890123456',\n data: {\n eventType: 'registration.down',\n deviceInfo: {\n userId: '44533573-f6aa-429d-b4fe-58aa04a2b636',\n device: {\n deviceId: '334f3d50-1d26-4712-93f1-4972390cc565',\n uri: 'https://mobius-a.wbx2.com/api/v1/calling/web/devices/334f3d50-1d26-4712-93f1-4972390cc565',\n status: 'inactive',\n },\n },\n },\n};\nconst deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\nconst dest = {\n type: CallType.URI,\n address: 'tel:5003',\n};\n\nconst successResponseBody = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n};\n\nconst mockLineId = 'e4e8ee2a-a154-4e52-8f11-ef4cde2dce72';\nconst mockLine = {\n lineId: mockLineId,\n} as ILine;\n\ndescribe('Call Manager Tests with respect to calls', () => {\n const dummyResponse = {\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n },\n };\n\n const patchMock = jest.spyOn(Call.prototype as any, 'patch');\n const setDisconnectReasonMock = jest.spyOn(Call.prototype as any, 'setDisconnectReason');\n const deleteCallMock = jest.spyOn(Call.prototype as any, 'delete');\n const initMediaConnectionMock = jest.spyOn(Call.prototype as any, 'initMediaConnection');\n const mediaRoapEventsListenerMock = jest.spyOn(Call.prototype as any, 'mediaRoapEventsListener');\n const mediaTrackListenerMock = jest.spyOn(Call.prototype as any, 'mediaTrackListener');\n const postMediaMock = jest.spyOn(Call.prototype as any, 'postMedia');\n\n deleteCallMock.mockResolvedValue(dummyResponse); // Both are using dummy response\n setDisconnectReasonMock.mockReturnValue({});\n initMediaConnectionMock.mockReturnValue({});\n mediaRoapEventsListenerMock.mockReturnValue({});\n mediaTrackListenerMock.mockReturnValue({});\n postMediaMock.mockResolvedValue({});\n\n let callManager: ICallManager;\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n /* expect 0 calls at the beginning of each test as we are clearing calls at the end of every test case */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n afterEach(() => {\n /* lets clear all calls at the end of every test case */\n const calls = Object.values(callManager.getActiveCalls());\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('check instance of call manager', () => {\n expect(callManager).toBeTruthy();\n });\n\n it('Check whether callManager is singleton', () => {\n const callManagerNew = getCallManager(webex, defaultServiceIndicator);\n\n expect(callManager).toMatchObject(callManagerNew);\n });\n\n it('create a call using call manager', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n const logSpy = jest.spyOn(log, 'log');\n\n expect(callManager).toBeTruthy();\n const call = await callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n\n call.setCallId('8a67806f-fc4d-446b-a131-31e71ea5b020');\n\n expect(call).toBeTruthy();\n expect(call.getCallId()).toStrictEqual('8a67806f-fc4d-446b-a131-31e71ea5b020');\n expect(call.lineId).toStrictEqual(mockLineId);\n expect(logSpy).toHaveBeenCalledWith('Creating call object', {});\n });\n\n it('Accept an incoming call from Mobius where Call Setup was the first message', async () => {\n callManager.updateLine('375b8503-f716-3407-853b-cd9a8c4419a7', mockLine);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj.getBroadworksCorrelationInfo()).toStrictEqual(\n setupEvent.data.broadworksCorrelationInfo\n );\n expect(callObj.lineId).toStrictEqual(mockLineId);\n });\n patchMock.mockResolvedValue(dummyResponse);\n\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n /* setUp event should create the call and count will be 1 for new call */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call from Mobius where Media Event was the first message', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n patchMock.mockResolvedValue(dummyResponse);\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n expect(callObj['remoteRoapMessage'].sdp).toStrictEqual(mediaEvent.data.message.sdp);\n });\n\n await callManager['dequeueWsEvents'](mediaEvent);\n /* check whether SDP is buffered */\n await callManager['dequeueWsEvents'](setupEvent);\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Disconnect a call if received a Call Disconnect event', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n const call = await callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Do not Disconnect a call if call has been disconnected already', async () => {\n webex.request.mockReturnValueOnce(successResponseBody);\n\n /* lets add a call to disconnect it later */\n await callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n /* clear the last added call */\n\n patchMock.mockResolvedValue(dummyResponse);\n disconnectEvent.data.correlationId = '1234';\n callManager['dequeueWsEvents'](disconnectEvent);\n\n /* Add a small delay , to simulate sending of Delete request and clearing from Call records */\n await waitForMsecs(50);\n\n expect(deleteCallMock).not.toHaveBeenCalled();\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n });\n\n it('Accept an incoming call but Outgoing patch request fails', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n /* Intentionally failing the Patch with 503 */\n dummyResponse.statusCode = 503;\n patchMock.mockRejectedValue(dummyResponse);\n\n const errorSpy = jest.spyOn(log, 'error');\n const logSpy = jest.spyOn(log, 'log');\n const uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n await callManager['dequeueWsEvents'](setupEvent);\n await waitForMsecs(50);\n\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n expect(errorSpy).toHaveBeenCalledWith(\n `Failed to signal call progression: ${JSON.stringify(dummyResponse)}`,\n {\n file: 'call',\n method: 'handleOutgoingCallAlerting',\n }\n );\n expect(logSpy).toHaveBeenCalledWith(\n `Received call media mobiusEvent for call: ${mediaEvent.data.correlationId}`,\n expect.objectContaining({\n file: 'callManager',\n method: 'dequeueWsEvents',\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n `ROAP message from mobius with type: ${mediaEvent.data.message?.messageType}, seq: ${mediaEvent.data.message?.seq} , version: ${mediaEvent.data.message?.version}`,\n expect.objectContaining({\n file: 'callManager',\n method: 'dequeueWsEvents',\n })\n );\n expect(uploadLogsSpy).toHaveBeenCalled();\n /* No calls should have been added as call progress failed */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Walk through an End to End call', async () => {\n callManager.updateLine('8a67806f-fc4d-446b-a131-31e71ea5b010', mockLine);\n let call: ICall;\n\n callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, async (callObj: ICall) => {\n expect(callObj.getCallId()).toStrictEqual(setupEvent.data.callId);\n call = callObj;\n await waitForMsecs(50);\n\n const mediaSpy = jest.spyOn(call['mediaConnection'], 'roapMessageReceived');\n const mediaClose = jest.spyOn(call['mediaConnection'], 'close').mockReturnValue({});\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(3);\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_PROGRESS');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.ALERTING);\n\n /* Receive ROAP Offer */\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_RECV_ROAP_OFFER');\n\n const track = {} as MediaStreamTrack;\n\n /* User answers the call */\n await call.answer({localAudioTrack: track});\n await waitForMsecs(50);\n\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n expect(patchMock).toHaveBeenCalledWith(MobiusCallState.CONNECTED);\n expect(mediaSpy).toHaveBeenCalled(); /* We pass the offer to media connection */\n\n /* We are manually sending this event , ideally it will sent by MediaConnection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_ANSWER'});\n\n await waitForMsecs(50);\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_ANSWER');\n\n /* Simulate ROAP_OK */\n mediaEvent.data.message.messageType = 'OK';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n\n expect(mediaSpy).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Simulate ROAP Offer_request */\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n /* We are manually sending this event , ideally it will sent by Media Connection. */\n call['sendMediaStateMachineEvt']({type: 'E_SEND_ROAP_OFFER'});\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_SEND_ROAP_OFFER');\n\n /* Simulate ROAP Answer */\n mediaEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](mediaEvent);\n await waitForMsecs(50);\n expect(mediaSpy).toHaveBeenCalled();\n\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n /* Start Call disconnect */\n disconnectEvent.data.correlationId = call.getCorrelationId();\n callManager['dequeueWsEvents'](disconnectEvent);\n await waitForMsecs(50);\n\n expect(deleteCallMock).toHaveBeenCalled();\n expect(mediaClose).toHaveBeenCalled();\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_TEARDOWN');\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_CLEARED');\n\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(2);\n });\n\n patchMock.mockResolvedValue(dummyResponse);\n await callManager['dequeueWsEvents'](setupEvent);\n });\n});\n\ndescribe('Coverage for Events listener', () => {\n let callManager: ICallManager;\n let call: ICall;\n const dummyCallId = '8a67806f-fc4d-4469-a131-31e71ec5b011';\n\n webex.request.mockReturnValueOnce({\n statusCode: 200,\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n correlationId: '8a67806f-fc4d-446b-a131-31e71ea5b011',\n },\n callId: '8a67806f-fc4d-446b-a131-31e71ea5b020',\n callData: {\n callState: MobiusCallState.PROCEEDING,\n },\n },\n });\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n callManager = getCallManager(webex, defaultServiceIndicator);\n callManager.removeAllListeners(LINE_EVENT_KEYS.INCOMING_CALL);\n call = callManager.createCall(CallDirection.OUTBOUND, deviceId, mockLineId, dest);\n call.setCallId(dummyCallId);\n setupEvent.data.correlationId = call.getCorrelationId();\n });\n\n const funcSpy = jest.spyOn(Call.prototype as any, 'sendMediaStateMachineEvt');\n const callSpy = jest.spyOn(Call.prototype as any, 'sendCallStateMachineEvt');\n const logSpy = jest.spyOn(log, 'log');\n\n it('When Offer is received', async () => {\n mediaEvent.data.callId = dummyCallId;\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](mediaEvent);\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER'};\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Answer is received', async () => {\n mediaEvent.data.message.messageType = 'ANSWER';\n jest.clearAllMocks();\n\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_ANSWER'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Offer Request is received', async () => {\n mediaEvent.data.message.messageType = 'OFFER_REQUEST';\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const eventData = {data: mediaEvent.data.message, type: 'E_RECV_ROAP_OFFER_REQUEST'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When OK is received', async () => {\n mediaEvent.data.message.messageType = 'OK';\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](mediaEvent);\n\n const mediaOK = {received: true, message: mediaEvent.data.message};\n const eventData = {data: mediaOK, type: 'E_ROAP_OK'};\n\n expect(funcSpy).toHaveBeenCalledWith(eventData);\n });\n\n it('When Error is Received', async () => {\n mediaEvent.data.message.messageType = 'ERROR';\n jest.clearAllMocks();\n const infoSpy = jest.spyOn(log, 'info');\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith(\n `Received call media mobiusEvent for call: ${mediaEvent.data.correlationId}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith(\n `ROAP message from mobius with type: ${mediaEvent.data.message?.messageType}, seq: ${mediaEvent.data.message?.seq} , version: ${mediaEvent.data.message?.version}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith('Received Error...', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n expect(infoSpy).toHaveBeenCalledWith(`SDP from mobius ${mediaEvent.data.message?.sdp}`, {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Unknown event is Received', async () => {\n mediaEvent.data.message.messageType = 'UNKNOWN';\n jest.clearAllMocks();\n const infoSpy = jest.spyOn(log, 'info');\n await callManager['dequeueWsEvents'](mediaEvent);\n\n expect(logSpy).toHaveBeenCalledWith(\n `Received call media mobiusEvent for call: ${mediaEvent.data.correlationId}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith(\n `ROAP message from mobius with type: ${mediaEvent.data.message?.messageType}, seq: ${mediaEvent.data.message?.seq} , version: ${mediaEvent.data.message?.version}`,\n {\n file: 'callManager',\n method: 'dequeueWsEvents',\n }\n );\n expect(logSpy).toHaveBeenCalledWith('Unknown Media mobiusEvent: UNKNOWN ', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n expect(infoSpy).toHaveBeenCalledWith(`SDP from mobius ${mediaEvent.data.message?.sdp}`, {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('When Progress/Connect event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callprogress';\n await callManager['dequeueWsEvents'](setupEvent);\n expect(callSpy).toHaveBeenCalledWith({type: 'E_RECV_CALL_PROGRESS', data: setupEvent.data});\n });\n\n it('Silently discard an event in the state machine', async () => {\n call['callStateMachine'].state.value = 'S_SEND_CALL_CONNECT';\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n\n const connectEvent = JSON.parse(JSON.stringify(setupEvent));\n\n connectEvent.data.eventType = 'mobius.callconnected';\n await callManager['dequeueWsEvents'](connectEvent);\n\n /* There should not be any state change */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_SEND_CALL_CONNECT');\n });\n\n it('Silently discard an ROAP_ANSWER after being in ROAP_OK state', async () => {\n call['mediaStateMachine'].state.value = 'S_ROAP_OK';\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n\n const answerEvent = JSON.parse(JSON.stringify(mediaEvent));\n\n answerEvent.data.message.messageType = 'ANSWER';\n await callManager['dequeueWsEvents'](answerEvent);\n\n /* There should not be any state change */\n expect(call['mediaStateMachine'].state.value).toStrictEqual('S_ROAP_OK');\n });\n\n it('When Unknown Call event is Received', async () => {\n setupEvent.data.eventType = 'mobius.callunknown';\n jest.clearAllMocks();\n await callManager['dequeueWsEvents'](setupEvent);\n\n expect(logSpy).toHaveBeenCalledWith('Unknown Call Event mobiusEvent: mobius.callunknown', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n\n it('Handles registration down event without routing to call state machine', async () => {\n jest.clearAllMocks();\n\n await callManager['dequeueWsEvents'](registrationDownEvent);\n\n expect(callSpy).not.toHaveBeenCalled();\n expect(logSpy).toHaveBeenCalledWith('Unknown Call Event mobiusEvent: registration.down', {\n file: 'callManager',\n method: 'dequeueWsEvents',\n });\n });\n});\n\ndescribe('Mobius event transport alignment', () => {\n let callManager: ICallManager;\n let mercuryOnSpy: jest.Mock;\n let mercuryOffSpy: jest.Mock;\n let isSocketEnabledSpy: jest.SpyInstance;\n\n const httpUrl = 'https://mobius.example.com/api/v1/calling/web/';\n const wssUrl = 'wss://mobius.example.com/api/v1/calling/web/';\n\n // SDKConnector.registerListener/unregisterListener delegate to mercury.on/off, so the\n // Mercury listener lifecycle is observed through those mocks on the shared webex instance.\n const getMobiusListenerWrapper = () =>\n mercuryOnSpy.mock.calls.find((call) => call[0] === 'event:mobius')?.[1];\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n mercuryOnSpy = webex.internal.mercury.on as jest.Mock;\n mercuryOffSpy = webex.internal.mercury.off as jest.Mock;\n mercuryOnSpy.mockClear();\n mercuryOffSpy.mockClear();\n isSocketEnabledSpy = jest.spyOn(callManager['apiRequest'], 'isSocketEnabled');\n });\n\n afterEach(() => {\n isSocketEnabledSpy.mockRestore();\n });\n\n it('updateActiveMobius stores the active Mobius URL', () => {\n isSocketEnabledSpy.mockReturnValue(false);\n\n callManager.updateActiveMobius(httpUrl);\n\n expect(callManager['activeMobiusUrl']).toBe(httpUrl);\n });\n\n it('registers the Mercury listener when the transport falls back to HTTP', () => {\n callManager['isMobiusSocketListenerRegistered'] = false;\n isSocketEnabledSpy.mockReturnValue(false);\n\n callManager.updateActiveMobius(httpUrl);\n\n expect(mercuryOnSpy).toHaveBeenCalledWith('event:mobius', expect.any(Function));\n expect(callManager['isMobiusSocketListenerRegistered']).toBe(true);\n expect(mercuryOffSpy).not.toHaveBeenCalled();\n });\n\n it('removes the Mercury listener when the transport switches to WebSocket', () => {\n callManager['isMobiusSocketListenerRegistered'] = true;\n isSocketEnabledSpy.mockReturnValue(true);\n\n callManager.updateActiveMobius(wssUrl);\n\n expect(mercuryOffSpy).toHaveBeenCalledWith('event:mobius');\n expect(callManager['isMobiusSocketListenerRegistered']).toBe(false);\n expect(mercuryOnSpy).not.toHaveBeenCalled();\n });\n\n it('does not re-register the Mercury listener when already registered on HTTP', () => {\n callManager['isMobiusSocketListenerRegistered'] = true;\n isSocketEnabledSpy.mockReturnValue(false);\n\n callManager.updateActiveMobius(httpUrl);\n\n expect(mercuryOnSpy).not.toHaveBeenCalled();\n expect(mercuryOffSpy).not.toHaveBeenCalled();\n expect(callManager['isMobiusSocketListenerRegistered']).toBe(true);\n });\n\n it('does nothing when socket is enabled and no Mercury listener is registered', () => {\n callManager['isMobiusSocketListenerRegistered'] = false;\n isSocketEnabledSpy.mockReturnValue(true);\n\n callManager.updateActiveMobius(wssUrl);\n\n expect(mercuryOnSpy).not.toHaveBeenCalled();\n expect(mercuryOffSpy).not.toHaveBeenCalled();\n expect(callManager['isMobiusSocketListenerRegistered']).toBe(false);\n });\n\n it('routes Mobius events to dequeueWsEvents through the registered Mercury listener', async () => {\n callManager['isMobiusSocketListenerRegistered'] = false;\n isSocketEnabledSpy.mockReturnValue(false);\n const dequeueSpy = jest\n .spyOn(callManager as any, 'dequeueWsEvents')\n .mockImplementation(() => undefined);\n\n callManager.updateActiveMobius(httpUrl);\n const mobiusListenerWrapper = getMobiusListenerWrapper();\n await mobiusListenerWrapper(setupEvent);\n\n expect(dequeueSpy).toHaveBeenCalledWith(setupEvent);\n\n dequeueSpy.mockRestore();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -246,6 +246,7 @@ var METHODS = exports.METHODS = {
|
|
|
246
246
|
GET_SDK_CONNECTOR: 'getSDKConnector',
|
|
247
247
|
GET_CONNECTED_CALL: 'getConnectedCall',
|
|
248
248
|
CONNECT_TO_MOBIUS_SOCKET: 'connectToMobiusSocket',
|
|
249
|
+
SET_SOCKET_ENABLED: 'setSocketEnabled',
|
|
249
250
|
REGISTER_MOBIUS_SOCKET_LISTENER: 'registerMobiusSocketListener',
|
|
250
251
|
UNREGISTER_MOBIUS_SOCKET_LISTENER: 'unregisterMobiusSocketListener',
|
|
251
252
|
REGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER: 'registerMobiusSocketConnectionListener',
|