@webex/calling 3.0.0-next.2 → 3.0.0-next.4
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/CHANGELOG.md +1403 -0
- package/README.md +74 -74
- package/dist/module/CallHistory/CallHistory.js +81 -81
- package/dist/module/CallHistory/callHistoryFixtures.js +307 -307
- package/dist/module/CallHistory/constants.js +9 -9
- package/dist/module/CallHistory/types.js +1 -1
- package/dist/module/CallSettings/CallSettings.js +65 -65
- package/dist/module/CallSettings/UcmBackendConnector.js +100 -100
- package/dist/module/CallSettings/WxCallBackendConnector.js +287 -287
- package/dist/module/CallSettings/constants.js +11 -11
- package/dist/module/CallSettings/testFixtures.js +62 -62
- package/dist/module/CallSettings/types.js +1 -1
- package/dist/module/CallingClient/CallingClient.js +248 -248
- package/dist/module/CallingClient/callRecordFixtures.js +93 -93
- package/dist/module/CallingClient/calling/CallerId/index.js +169 -169
- package/dist/module/CallingClient/calling/CallerId/types.js +1 -1
- package/dist/module/CallingClient/calling/call.js +1658 -1658
- package/dist/module/CallingClient/calling/callManager.js +284 -284
- package/dist/module/CallingClient/calling/index.js +2 -2
- package/dist/module/CallingClient/calling/types.js +53 -53
- package/dist/module/CallingClient/callingClientFixtures.js +38 -38
- package/dist/module/CallingClient/constants.js +122 -122
- package/dist/module/CallingClient/line/index.js +158 -158
- package/dist/module/CallingClient/line/types.js +15 -15
- package/dist/module/CallingClient/registration/index.js +1 -1
- package/dist/module/CallingClient/registration/register.js +507 -507
- package/dist/module/CallingClient/registration/registerFixtures.js +28 -28
- package/dist/module/CallingClient/registration/types.js +1 -1
- package/dist/module/CallingClient/types.js +1 -1
- package/dist/module/Contacts/ContactsClient.js +484 -484
- package/dist/module/Contacts/constants.js +20 -20
- package/dist/module/Contacts/contactFixtures.js +284 -284
- package/dist/module/Contacts/types.js +10 -10
- package/dist/module/Errors/catalog/CallError.js +26 -26
- package/dist/module/Errors/catalog/CallingDeviceError.js +18 -18
- package/dist/module/Errors/catalog/ExtendedError.js +10 -10
- package/dist/module/Errors/catalog/LineError.js +24 -24
- package/dist/module/Errors/index.js +2 -2
- package/dist/module/Errors/types.js +48 -48
- package/dist/module/Events/impl/index.js +19 -19
- package/dist/module/Events/types.js +83 -83
- package/dist/module/Logger/index.js +114 -114
- package/dist/module/Logger/types.js +25 -25
- package/dist/module/Metrics/index.js +232 -232
- package/dist/module/Metrics/types.js +37 -37
- package/dist/module/SDKConnector/index.js +39 -39
- package/dist/module/SDKConnector/types.js +1 -1
- package/dist/module/SDKConnector/utils.js +12 -12
- package/dist/module/Voicemail/BroadworksBackendConnector.js +291 -291
- package/dist/module/Voicemail/UcmBackendConnector.js +279 -279
- package/dist/module/Voicemail/Voicemail.js +110 -110
- package/dist/module/Voicemail/WxCallBackendConnector.js +279 -279
- package/dist/module/Voicemail/constants.js +29 -29
- package/dist/module/Voicemail/types.js +1 -1
- package/dist/module/Voicemail/voicemailFixture.js +510 -510
- package/dist/module/api.js +6 -6
- package/dist/module/common/Utils.js +802 -802
- package/dist/module/common/constants.js +41 -41
- package/dist/module/common/index.js +1 -1
- package/dist/module/common/testUtil.js +938 -938
- package/dist/module/common/types.js +57 -57
- package/dist/module/index.js +8 -8
- package/dist/types/CallHistory/CallHistory.d.ts +17 -17
- package/dist/types/CallHistory/callHistoryFixtures.d.ts +94 -94
- package/dist/types/CallHistory/constants.d.ts +9 -9
- package/dist/types/CallHistory/types.d.ts +18 -18
- package/dist/types/CallSettings/CallSettings.d.ts +19 -19
- package/dist/types/CallSettings/UcmBackendConnector.d.ts +19 -19
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts +21 -21
- package/dist/types/CallSettings/constants.d.ts +11 -11
- package/dist/types/CallSettings/testFixtures.d.ts +15 -15
- package/dist/types/CallSettings/types.d.ts +107 -107
- package/dist/types/CallingClient/CallingClient.d.ts +35 -35
- package/dist/types/CallingClient/callRecordFixtures.d.ts +3 -3
- package/dist/types/CallingClient/calling/CallerId/index.d.ts +17 -17
- package/dist/types/CallingClient/calling/CallerId/types.d.ts +41 -41
- package/dist/types/CallingClient/calling/call.d.ts +96 -96
- package/dist/types/CallingClient/calling/callManager.d.ts +25 -25
- package/dist/types/CallingClient/calling/index.d.ts +2 -2
- package/dist/types/CallingClient/calling/types.d.ts +206 -206
- package/dist/types/CallingClient/callingClientFixtures.d.ts +18 -18
- package/dist/types/CallingClient/constants.d.ts +122 -122
- package/dist/types/CallingClient/line/index.d.ts +43 -43
- package/dist/types/CallingClient/line/types.d.ts +55 -55
- package/dist/types/CallingClient/registration/index.d.ts +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +64 -64
- package/dist/types/CallingClient/registration/registerFixtures.d.ts +28 -28
- package/dist/types/CallingClient/registration/types.d.ts +20 -20
- package/dist/types/CallingClient/types.d.ts +29 -29
- package/dist/types/Contacts/ContactsClient.d.ts +26 -26
- package/dist/types/Contacts/constants.d.ts +19 -19
- package/dist/types/Contacts/contactFixtures.d.ts +280 -280
- package/dist/types/Contacts/types.d.ts +72 -72
- package/dist/types/Errors/catalog/CallError.d.ts +11 -11
- package/dist/types/Errors/catalog/CallingDeviceError.d.ts +10 -10
- package/dist/types/Errors/catalog/ExtendedError.d.ts +6 -6
- package/dist/types/Errors/catalog/LineError.d.ts +10 -10
- package/dist/types/Errors/index.d.ts +2 -2
- package/dist/types/Errors/types.d.ts +60 -60
- package/dist/types/Events/impl/index.d.ts +8 -8
- package/dist/types/Events/types.d.ts +288 -288
- package/dist/types/Logger/index.d.ts +12 -12
- package/dist/types/Logger/types.d.ts +25 -25
- package/dist/types/Metrics/index.d.ts +5 -5
- package/dist/types/Metrics/types.d.ts +42 -42
- package/dist/types/SDKConnector/index.d.ts +12 -12
- package/dist/types/SDKConnector/types.d.ts +128 -128
- package/dist/types/SDKConnector/utils.d.ts +5 -5
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts +27 -27
- package/dist/types/Voicemail/UcmBackendConnector.d.ts +34 -34
- package/dist/types/Voicemail/Voicemail.d.ts +27 -27
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts +23 -23
- package/dist/types/Voicemail/constants.d.ts +29 -29
- package/dist/types/Voicemail/types.d.ts +133 -133
- package/dist/types/Voicemail/voicemailFixture.d.ts +417 -417
- package/dist/types/api.d.ts +16 -16
- package/dist/types/common/Utils.d.ts +34 -34
- package/dist/types/common/constants.d.ts +41 -41
- package/dist/types/common/index.d.ts +1 -1
- package/dist/types/common/testUtil.d.ts +3611 -3611
- package/dist/types/common/types.d.ts +191 -191
- package/dist/types/index.d.ts +8 -8
- package/package.json +4 -4
- package/dist/CallHistory/CallHistory.js +0 -203
- package/dist/CallHistory/CallHistory.js.map +0 -1
- package/dist/CallHistory/CallHistory.test.js +0 -133
- package/dist/CallHistory/CallHistory.test.js.map +0 -1
- package/dist/CallHistory/callHistoryFixtures.js +0 -310
- package/dist/CallHistory/callHistoryFixtures.js.map +0 -1
- package/dist/CallHistory/constants.js +0 -26
- package/dist/CallHistory/constants.js.map +0 -1
- package/dist/CallHistory/types.js +0 -7
- package/dist/CallHistory/types.js.map +0 -1
- package/dist/CallSettings/CallSettings.js +0 -276
- package/dist/CallSettings/CallSettings.js.map +0 -1
- package/dist/CallSettings/CallSettings.test.js +0 -122
- package/dist/CallSettings/CallSettings.test.js.map +0 -1
- package/dist/CallSettings/UcmBackendConnector.js +0 -217
- package/dist/CallSettings/UcmBackendConnector.js.map +0 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +0 -227
- package/dist/CallSettings/UcmBackendConnector.test.js.map +0 -1
- package/dist/CallSettings/WxCallBackendConnector.js +0 -541
- package/dist/CallSettings/WxCallBackendConnector.js.map +0 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +0 -802
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +0 -1
- package/dist/CallSettings/constants.js +0 -30
- package/dist/CallSettings/constants.js.map +0 -1
- package/dist/CallSettings/testFixtures.js +0 -72
- package/dist/CallSettings/testFixtures.js.map +0 -1
- package/dist/CallSettings/types.js +0 -7
- package/dist/CallSettings/types.js.map +0 -1
- package/dist/CallingClient/CallingClient.js +0 -572
- package/dist/CallingClient/CallingClient.js.map +0 -1
- package/dist/CallingClient/CallingClient.test.js +0 -931
- package/dist/CallingClient/CallingClient.test.js.map +0 -1
- package/dist/CallingClient/callRecordFixtures.js +0 -103
- package/dist/CallingClient/callRecordFixtures.js.map +0 -1
- package/dist/CallingClient/calling/CallerId/index.js +0 -287
- package/dist/CallingClient/calling/CallerId/index.js.map +0 -1
- package/dist/CallingClient/calling/CallerId/index.test.js +0 -274
- package/dist/CallingClient/calling/CallerId/index.test.js.map +0 -1
- package/dist/CallingClient/calling/CallerId/types.js +0 -7
- package/dist/CallingClient/calling/CallerId/types.js.map +0 -1
- package/dist/CallingClient/calling/call.js +0 -2995
- package/dist/CallingClient/calling/call.js.map +0 -1
- package/dist/CallingClient/calling/call.test.js +0 -2614
- package/dist/CallingClient/calling/call.test.js.map +0 -1
- package/dist/CallingClient/calling/callManager.js +0 -443
- package/dist/CallingClient/calling/callManager.js.map +0 -1
- package/dist/CallingClient/calling/callManager.test.js +0 -683
- package/dist/CallingClient/calling/callManager.test.js.map +0 -1
- package/dist/CallingClient/calling/index.js +0 -30
- package/dist/CallingClient/calling/index.js.map +0 -1
- package/dist/CallingClient/calling/types.js +0 -71
- package/dist/CallingClient/calling/types.js.map +0 -1
- package/dist/CallingClient/callingClientFixtures.js +0 -53
- package/dist/CallingClient/callingClientFixtures.js.map +0 -1
- package/dist/CallingClient/constants.js +0 -226
- package/dist/CallingClient/constants.js.map +0 -1
- package/dist/CallingClient/line/index.js +0 -312
- package/dist/CallingClient/line/index.js.map +0 -1
- package/dist/CallingClient/line/line.test.js +0 -270
- package/dist/CallingClient/line/line.test.js.map +0 -1
- package/dist/CallingClient/line/types.js +0 -25
- package/dist/CallingClient/line/types.js.map +0 -1
- package/dist/CallingClient/registration/index.js +0 -19
- package/dist/CallingClient/registration/index.js.map +0 -1
- package/dist/CallingClient/registration/register.js +0 -1295
- package/dist/CallingClient/registration/register.js.map +0 -1
- package/dist/CallingClient/registration/register.test.js +0 -838
- package/dist/CallingClient/registration/register.test.js.map +0 -1
- package/dist/CallingClient/registration/registerFixtures.js +0 -41
- package/dist/CallingClient/registration/registerFixtures.js.map +0 -1
- package/dist/CallingClient/registration/types.js +0 -7
- package/dist/CallingClient/registration/types.js.map +0 -1
- package/dist/CallingClient/types.js +0 -7
- package/dist/CallingClient/types.js.map +0 -1
- package/dist/Contacts/ContactsClient.js +0 -1139
- package/dist/Contacts/ContactsClient.js.map +0 -1
- package/dist/Contacts/ContactsClient.test.js +0 -725
- package/dist/Contacts/ContactsClient.test.js.map +0 -1
- package/dist/Contacts/constants.js +0 -36
- package/dist/Contacts/constants.js.map +0 -1
- package/dist/Contacts/contactFixtures.js +0 -340
- package/dist/Contacts/contactFixtures.js.map +0 -1
- package/dist/Contacts/types.js +0 -20
- package/dist/Contacts/types.js.map +0 -1
- package/dist/Errors/catalog/CallError.js +0 -94
- package/dist/Errors/catalog/CallError.js.map +0 -1
- package/dist/Errors/catalog/CallingDeviceError.js +0 -88
- package/dist/Errors/catalog/CallingDeviceError.js.map +0 -1
- package/dist/Errors/catalog/ExtendedError.js +0 -45
- package/dist/Errors/catalog/ExtendedError.js.map +0 -1
- package/dist/Errors/catalog/LineError.js +0 -90
- package/dist/Errors/catalog/LineError.js.map +0 -1
- package/dist/Errors/index.js +0 -21
- package/dist/Errors/index.js.map +0 -1
- package/dist/Errors/types.js +0 -62
- package/dist/Errors/types.js.map +0 -1
- package/dist/Events/impl/index.js +0 -82
- package/dist/Events/impl/index.js.map +0 -1
- package/dist/Events/types.js +0 -111
- package/dist/Events/types.js.map +0 -1
- package/dist/Logger/index.js +0 -221
- package/dist/Logger/index.js.map +0 -1
- package/dist/Logger/index.test.js +0 -62
- package/dist/Logger/index.test.js.map +0 -1
- package/dist/Logger/types.js +0 -37
- package/dist/Logger/types.js.map +0 -1
- package/dist/Metrics/index.js +0 -329
- package/dist/Metrics/index.js.map +0 -1
- package/dist/Metrics/index.test.js +0 -291
- package/dist/Metrics/index.test.js.map +0 -1
- package/dist/Metrics/types.js +0 -50
- package/dist/Metrics/types.js.map +0 -1
- package/dist/SDKConnector/index.js +0 -105
- package/dist/SDKConnector/index.js.map +0 -1
- package/dist/SDKConnector/index.test.js +0 -9
- package/dist/SDKConnector/index.test.js.map +0 -1
- package/dist/SDKConnector/types.js +0 -7
- package/dist/SDKConnector/types.js.map +0 -1
- package/dist/SDKConnector/utils.js +0 -40
- package/dist/SDKConnector/utils.js.map +0 -1
- package/dist/SDKConnector/utils.test.js +0 -9
- package/dist/SDKConnector/utils.test.js.map +0 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +0 -632
- package/dist/Voicemail/BroadworksBackendConnector.js.map +0 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +0 -733
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +0 -1
- package/dist/Voicemail/UcmBackendConnector.js +0 -566
- package/dist/Voicemail/UcmBackendConnector.js.map +0 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +0 -628
- package/dist/Voicemail/UcmBackendConnector.test.js.map +0 -1
- package/dist/Voicemail/Voicemail.js +0 -378
- package/dist/Voicemail/Voicemail.js.map +0 -1
- package/dist/Voicemail/Voicemail.test.js +0 -226
- package/dist/Voicemail/Voicemail.test.js.map +0 -1
- package/dist/Voicemail/WxCallBackendConnector.js +0 -540
- package/dist/Voicemail/WxCallBackendConnector.js.map +0 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +0 -942
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +0 -1
- package/dist/Voicemail/constants.js +0 -66
- package/dist/Voicemail/constants.js.map +0 -1
- package/dist/Voicemail/types.js +0 -7
- package/dist/Voicemail/types.js.map +0 -1
- package/dist/Voicemail/voicemailFixture.js +0 -559
- package/dist/Voicemail/voicemailFixture.js.map +0 -1
- package/dist/api.js +0 -134
- package/dist/api.js.map +0 -1
- package/dist/common/Utils.js +0 -1264
- package/dist/common/Utils.js.map +0 -1
- package/dist/common/Utils.test.js +0 -1227
- package/dist/common/Utils.test.js.map +0 -1
- package/dist/common/constants.js +0 -90
- package/dist/common/constants.js.map +0 -1
- package/dist/common/index.js +0 -19
- package/dist/common/index.js.map +0 -1
- package/dist/common/testUtil.js +0 -968
- package/dist/common/testUtil.js.map +0 -1
- package/dist/common/types.js +0 -75
- package/dist/common/types.js.map +0 -1
- package/dist/index.js +0 -63
- package/dist/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["MediaSDK","_interopRequireWildcard","require","_types","Utils","_types2","_constants","_types3","_types4","_call","_types5","_testUtil","_callManager","_Logger","_interopRequireDefault","_Errors","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","jest","mock","webex","getTestUtilsWebex","mockMediaSDK","defaultServiceIndicator","ServiceIndicator","CALLING","activeUrl","mockLineId","describe","deviceId","dest","type","CallType","URI","address","dummyMidCallEvent","eventType","eventData","callerId","from","callManager","deleteCallFromCollection","fn","disconnectStats","Dur","LostPkt","LatePkt","Oct","Pkt","AvgJit","VQMetrics","maxJitter","VoPktSizeMs","VoOneWayDelayMs","hwType","networkType","VoRxCodec","VoTxCodec","rtpBitRate","parseMediaQualityStatisticsMock","spyOn","mockReturnValue","mockTrack","enabled","roapMediaConnectionConfig","skipInactiveTransceivers","iceServers","sdpMunging","convertPort9to0","addContentSlides","roapMediaConnectionOptions","localTracks","audio","direction","video","screenShareVideo","afterEach","request","beforeEach","getCallManager","it","mockReturnValueOnce","statusCode","body","device","correlationId","callId","callData","callState","MobiusCallState","PROCEEDING","createCall","CallDirection","OUTBOUND","expect","toBeTruthy","_asyncToGenerator2","_regenerator","mark","_callee","mockStream","localAudioStream","wrap","_callee$","_context","prev","next","outputStream","getAudioTracks","_keys","getActiveCalls","length","toBe","mute","isMuted","toEqual","end","waitForMsecs","toHaveBeenCalledTimes","calls","metrics","toStrictEqual","getDisconnectReason","code","DisconnectCode","NORMAL","cause","DisconnectCause","stop","_callee2","mediaResponse","response","_callee2$","_context2","INBOUND","sent","_callee3","_callee3$","_context3","handleMidCallEvent","getCallerInfo","name","num","avatarSrc","toBeFalsy","_callee4","logSpy","corelationId","_callee4$","_context4","log","getCorrelationId","toHaveBeenLastCalledWith","concat","file","method","_callee5","callRtpStats","_callee5$","_context5","getCallRtpStats","t0","console","error","_callee6","warnSpy","_callee6$","_context6","dial","RoapMediaConnection","toBeCalledOnceWith","any","String","state","value","_callee7","_callee7$","_context7","answer","mockStatusBody","dtmfMock","Call","dummy","clearAllTimers","useFakeTimers","mediaConnection","_callee8","statusPayload","dummyEvent","funcSpy","_callee8$","_context8","global","mockResolvedValue","sendCallStateMachineEvt","advanceTimersByTime","DEFAULT_SESSION_TIMER","flushPromises","setInterval","toBeCalledTimes","toBeCalledWith","_callee9","_callee9$","_context9","assertions","on","CALL_EVENT_KEYS","CALL_ERROR","errObj","ERROR_TYPE","FORBIDDEN_ERROR","message","mockRejectedValue","undefined","_promise","resolve","clearInterval","_callee10","postMediaSpy","deleteSpy","dummyOkEvent","_callee10$","_context10","data","seq","messageType","sendMediaStateMachineEvt","roapMessageReceived","received","isConnected","sendDigit","_callee11","_callee11$","_context11","_callee12","stateMachineSpy","roapMessage","_callee12$","_context12","mockRejectedValueOnce","mockClear","_callee13","_callee13$","_context13","sdp","initiateOffer","_callee14","_callee14$","_context14","inbandMedia","_callee15","_callee15$","_context15","_callee16","_callee16$","_context16","_callee17","_callee17$","_context17","_callee18","_callee18$","_context18","headers","setTimeout","toHaveBeenCalledWith","_callee19","_callee19$","_context19","not","toHaveBeenCalled","toBeCalled","_callee20","_callee20$","_context20","_callee21","_callee21$","_context21","_callee22","errorEvent","_callee22$","_context22","errorType","_callee23","_callee23$","_context23","_callee24","_callee24$","_context24","_callee25","_callee25$","_context25","media","_callee26","dummyOfferEvent","_callee26$","_context26","toHaveBeenNthCalledWith","_callee27","_callee27$","_context27","_callee28","infoSpy","_callee28$","_context28","mockResponseBody","removeAllListeners","mockHeldEvent","mockResumeEvent","_callee30","responsePayload","roapEvent","_callee30$","_context30","HELD","_ref30","_callee29","_callee29$","_context29","_x","apply","arguments","doHoldResume","JSON","parse","_stringify","clearTimeout","isHeld","_callee32","_callee32$","_context32","_ref32","_callee31","_callee31$","_context31","_x2","_callee34","_callee34$","_context34","HOLD_ERROR","_ref34","_callee33","_callee33$","_context33","SERVICE_UNAVAILABLE","_x3","_callee36","rejectPayload","_callee36$","_context36","mockResolvedValueOnce","_ref36","_callee35","_callee35$","_context35","_x4","_callee37","_callee37$","_context37","_callee38","_callee38$","_context38","_callee40","_callee40$","_context40","_ref40","_callee39","_callee39$","_context39","TIMEOUT","_x5","runAllTimers","_callee42","_callee42$","_context42","RESUMED","_ref42","_callee41","_callee41$","_context41","_x6","_callee44","_callee44$","_context44","_ref44","_callee43","_callee43$","_context43","_x7","_callee46","_callee46$","_context46","RESUME_ERROR","_ref46","_callee45","_callee45$","_context45","_x8","_callee48","_callee48$","_context48","_ref48","_callee47","_callee47$","_context47","_x9","_callee50","_callee50$","_context50","_ref50","_callee49","_callee49$","_context49","_x10","transfereeNumber","transfereeDest","secondCall","handleErrorSpy","transferLoggingContext","_callee53","requestSpy","metricSpy","_callee53$","_context53","DISCONNECT","_ref52","_callee51","_callee51$","_context51","_x11","_ref53","_callee52","_callee52$","_context52","_x12","completeTransfer","TransferType","CONSULT","getCallId","METRIC_EVENT","CALL","TRANSFER_ACTION","METRIC_TYPE","BEHAVIORAL","_callee55","_callee55$","_context55","_ref55","_callee54","_callee54$","_context54","_x13","BLIND","_callee56","emitSpy","_callee56$","_context56","anything","ERROR_LAYER","CALL_CONTROL","TRANSFER_ERROR","CallError","_callee57","_callee57$","_context57","_callee58","_callee58$","_context58","_callee59","_callee59$","_context59"],"sources":["call.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable dot-notation */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport * as MediaSDK from '@webex/internal-media-core';\nimport {ERROR_TYPE, ERROR_LAYER} from '../../Errors/types';\nimport * as Utils from '../../common/Utils';\nimport {CALL_EVENT_KEYS, CallEvent, RoapEvent, RoapMessage} from '../../Events/types';\nimport {DEFAULT_SESSION_TIMER} from '../constants';\nimport {CallDirection, CallType, ServiceIndicator, WebexRequestPayload} from '../../common/types';\nimport {METRIC_EVENT, TRANSFER_ACTION, METRIC_TYPE} from '../../Metrics/types';\nimport {Call, createCall} from './call';\nimport {\n MobiusCallState,\n DisconnectCause,\n DisconnectCode,\n ICallManager,\n MediaContext,\n MidCallEvent,\n CallRtpStats,\n SSResponse,\n TransferType,\n} from './types';\nimport {mediaConnection, getTestUtilsWebex, flushPromises} from '../../common/testUtil';\nimport {getCallManager} from './callManager';\nimport {waitForMsecs} from '../../common/Utils';\nimport log from '../../Logger';\nimport {CallError} from '../../Errors';\n\njest.mock('@webex/internal-media-core');\n\nconst webex = getTestUtilsWebex();\n\nconst mockMediaSDK = MediaSDK as jest.Mocked<typeof MediaSDK>;\n\nconst defaultServiceIndicator = ServiceIndicator.CALLING;\nconst activeUrl = 'FakeActiveUrl';\nconst mockLineId = 'e4e8ee2a-a154-4e52-8f11-ef4cde2dce72';\n\n// class MockMediaStream {\n// private track;\n\n// constructor(track: any) {\n// this.track = track;\n// }\n// }\n\n// globalThis.MediaStream = MockMediaStream;\n\n// // eslint-disable-next-line @typescript-eslint/no-unused-vars\n// jest.spyOn(window, 'MediaStream').mockImplementation((tracks: MediaStreamTrack[]) => {\n// return {} as MediaStream;\n// });\n\n// // Object.defineProperty(window, 'MediaStream', {\n// // writable: true,\n// // });\n\ndescribe('Call Tests', () => {\n const deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\n const dest = {\n type: CallType.URI,\n address: 'tel:5003',\n };\n\n const dummyMidCallEvent = {\n eventType: 'callInfo',\n eventData: {\n callerId: {\n from: '\"Bob Marley\" <sip:5010@207.182.171.130;user=phone>;tag=888068389-1654853820619-',\n },\n },\n };\n\n let callManager: ICallManager;\n\n const deleteCallFromCollection = jest.fn();\n\n const disconnectStats = {\n 'rtp-rxstat': {\n Dur: 53.77999999999787,\n LostPkt: 11,\n LatePkt: 0,\n Oct: 41156,\n Pkt: 2379,\n AvgJit: 0.041720656289440466,\n VQMetrics: {\n maxJitter: 0,\n VoPktSizeMs: 20,\n VoOneWayDelayMs: 0.26116666666666666,\n hwType: 'OS X 10.15.7 64-bit/Chrome-105.0.0.0',\n networkType: 'wifi',\n VoRxCodec: 'opus',\n },\n },\n 'rtp-txstat': {\n Dur: 53.77999999999787,\n Pkt: 2410,\n Oct: 41156,\n VQMetrics: {\n VoTxCodec: 'opus',\n rtpBitRate: 32000,\n },\n },\n } as unknown as CallRtpStats;\n\n const parseMediaQualityStatisticsMock = jest\n .spyOn(Utils, 'parseMediaQualityStatistics')\n .mockReturnValue(disconnectStats);\n\n const mockTrack = {\n enabled: false,\n } as MediaStreamTrack;\n\n const roapMediaConnectionConfig = {\n skipInactiveTransceivers: true,\n iceServers: [],\n sdpMunging: {\n convertPort9to0: true,\n addContentSlides: false,\n },\n };\n\n const roapMediaConnectionOptions = {\n localTracks: {audio: mockTrack},\n direction: {\n audio: 'sendrecv',\n video: 'inactive',\n screenShareVideo: 'inactive',\n },\n };\n\n afterEach(() => {\n webex.request = jest.fn();\n });\n\n beforeEach(() => {\n callManager = getCallManager(webex, defaultServiceIndicator);\n });\n\n it('create call object', () => {\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 const call = createCall(\n activeUrl,\n webex,\n dest,\n CallDirection.OUTBOUND,\n deviceId,\n mockLineId,\n deleteCallFromCollection,\n defaultServiceIndicator\n );\n\n expect(call).toBeTruthy();\n });\n\n it('delete call object when ending the call', async () => {\n webex.request.mockReturnValue({\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 },\n });\n\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const mockStream = {\n outputStream: {\n getAudioTracks: jest.fn().mockReturnValue([mockTrack]),\n },\n };\n\n const localAudioStream = mockStream as unknown as MediaSDK.LocalMicrophoneStream;\n\n const call = callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n expect(call).toBeTruthy();\n /* After creation , call manager should have 1 record */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(1);\n call.mute(localAudioStream);\n expect(call.isMuted()).toEqual(true);\n expect(mockTrack.enabled).toEqual(false);\n call.mute(localAudioStream);\n expect(mockTrack.enabled).toEqual(true);\n expect(call.isMuted()).toEqual(false);\n call.end();\n await waitForMsecs(50); // Need to add a small delay for Promise and callback to finish.\n expect(parseMediaQualityStatisticsMock).toHaveBeenCalledTimes(1);\n expect(webex.request.mock.calls[0][0].body.metrics).toStrictEqual(disconnectStats);\n expect(call.getDisconnectReason().code).toBe(DisconnectCode.NORMAL);\n expect(call.getDisconnectReason().cause).toBe(DisconnectCause.NORMAL);\n\n /* After call ends, call manager should have 0 record */\n expect(Object.keys(callManager.getActiveCalls()).length).toBe(0);\n });\n\n it('Check whether media requests succeed or not', async () => {\n webex.request.mockReturnValue({\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 },\n });\n\n const mediaResponse = {\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 },\n };\n\n const call = callManager.createCall(dest, CallDirection.INBOUND, deviceId, mockLineId);\n\n const response = await call['postMedia']({});\n\n expect(response.body).toStrictEqual(mediaResponse.body);\n });\n\n it('check whether callerId midcall event is serviced or not', async () => {\n const call = callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n call.handleMidCallEvent(dummyMidCallEvent);\n await waitForMsecs(50);\n expect(call.getCallerInfo().name).toStrictEqual('Bob Marley');\n expect(call.getCallerInfo().num).toStrictEqual('5010');\n expect(call.getCallerInfo().avatarSrc).toBeFalsy();\n });\n\n it('check whether call midcall event is serviced or not', async () => {\n const call = callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n dummyMidCallEvent.eventType = 'callState';\n\n const logSpy = jest.spyOn(log, 'log');\n\n call.handleMidCallEvent(dummyMidCallEvent);\n await waitForMsecs(50);\n const corelationId = call.getCorrelationId();\n\n expect(logSpy).toHaveBeenLastCalledWith(\n `Received Midcall call event for correlationId : ${corelationId}`,\n {file: 'call', method: 'handleMidCallEvent'}\n );\n });\n\n it('check call stats for active call', async () => {\n const call = callManager.createCall(dest, CallDirection.OUTBOUND, deviceId, mockLineId);\n\n let callRtpStats;\n\n try {\n callRtpStats = await call.getCallRtpStats();\n } catch (e) {\n console.error(e);\n }\n\n expect(callRtpStats).toStrictEqual(disconnectStats);\n });\n\n it('dial functionality tests for coverage', async () => {\n const mockStream = {\n outputStream: {\n getAudioTracks: jest.fn().mockReturnValue([mockTrack]),\n },\n };\n\n const localAudioStream = mockStream as unknown as MediaSDK.LocalMicrophoneStream;\n\n const warnSpy = jest.spyOn(log, 'warn');\n const call = createCall(\n activeUrl,\n webex,\n dest,\n CallDirection.OUTBOUND,\n deviceId,\n mockLineId,\n deleteCallFromCollection,\n defaultServiceIndicator\n );\n\n call.dial(localAudioStream);\n\n expect(mockTrack.enabled).toEqual(true);\n expect(mockMediaSDK.RoapMediaConnection).toBeCalledOnceWith(\n roapMediaConnectionConfig,\n roapMediaConnectionOptions,\n expect.any(String)\n );\n expect(call['mediaStateMachine'].state.value).toBe('S_SEND_ROAP_OFFER');\n /* Now change the state and recall to check for error */\n call['mediaStateMachine'].state.value = 'S_SEND_ROAP_OFFER';\n call.dial(localAudioStream);\n expect(call['mediaStateMachine'].state.value).toBe('S_SEND_ROAP_OFFER');\n expect(warnSpy).toBeCalledOnceWith(\n `Call cannot be dialed because the state is already : S_SEND_ROAP_OFFER`,\n {file: 'call', method: 'dial'}\n );\n });\n\n it('answer functionality tests for coverage', async () => {\n const mockStream = {\n outputStream: {\n getAudioTracks: jest.fn().mockReturnValue([mockTrack]),\n },\n };\n\n const localAudioStream = mockStream as unknown as MediaSDK.LocalMicrophoneStream;\n\n const warnSpy = jest.spyOn(log, 'warn');\n const call = createCall(\n activeUrl,\n webex,\n dest,\n CallDirection.OUTBOUND,\n deviceId,\n mockLineId,\n deleteCallFromCollection,\n defaultServiceIndicator\n );\n /** Cannot answer in idle state */\n\n call.answer(localAudioStream);\n expect(mockTrack.enabled).toEqual(true);\n expect(mockMediaSDK.RoapMediaConnection).toBeCalledOnceWith(\n roapMediaConnectionConfig,\n roapMediaConnectionOptions,\n expect.any(String)\n );\n expect(call['callStateMachine'].state.value).toBe('S_IDLE');\n expect(warnSpy).toBeCalledOnceWith(`Call cannot be answered because the state is : S_IDLE`, {\n file: 'call',\n method: 'answer',\n });\n\n /* Now change the state and recall to check for correct flow */\n call['callStateMachine'].state.value = 'S_SEND_CALL_PROGRESS';\n call.answer(localAudioStream);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_CONNECT');\n });\n});\n\ndescribe('State Machine handler tests', () => {\n const deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\n const dest = {\n type: CallType.URI,\n address: 'tel:5003',\n };\n\n const mockStatusBody = {\n device: {\n deviceId: '123e4567-e89b-12d3-a456-426614174000',\n correlationId: 'b5476d4c-f48b-475e-b4e2-994e24d14ca2',\n },\n callId: 'fcf86aa5-5539-4c9f-8b72-667786ae9b6c',\n };\n\n let call: Call;\n\n let dtmfMock: jest.SpyInstance;\n\n beforeEach(() => {\n call = new Call(\n activeUrl,\n webex,\n dest,\n CallDirection.OUTBOUND,\n deviceId,\n mockLineId,\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const dummy = 10;\n },\n defaultServiceIndicator\n );\n jest.clearAllTimers();\n jest.useFakeTimers();\n call['callStateMachine'].state.value = 'S_IDLE';\n call.mediaConnection = mediaConnection;\n dtmfMock = jest.spyOn(call['mediaConnection'], 'insertDTMF');\n });\n\n // afterEach(() => call.removeAllListeners());\n\n it('successful session refresh', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_CALL_ESTABLISHED',\n };\n\n call['callStateMachine'].state.value = 'S_SEND_CALL_CONNECT';\n\n webex.request.mockReturnValue(statusPayload);\n jest.spyOn(global, 'setInterval');\n\n const funcSpy = jest.spyOn(call, 'postStatus').mockResolvedValue(statusPayload);\n const logSpy = jest.spyOn(log, 'info');\n\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n\n jest.advanceTimersByTime(DEFAULT_SESSION_TIMER);\n\n /* This is to flush all the promises from the Promise queue so that\n * Jest.fakeTimers can advance time and also clear the promise Queue\n */\n await flushPromises(3);\n\n expect(setInterval).toHaveBeenCalledTimes(1);\n expect(funcSpy).toBeCalledTimes(1);\n expect(logSpy).toBeCalledWith('Session refresh successful', {\n file: 'call',\n method: 'handleCallEstablished',\n });\n });\n\n it('session refresh failure', async () => {\n expect.assertions(4);\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 403,\n });\n\n webex.request.mockReturnValue(statusPayload);\n jest.spyOn(global, 'clearInterval');\n\n call.on(CALL_EVENT_KEYS.CALL_ERROR, (errObj) => {\n expect(errObj.type).toStrictEqual(ERROR_TYPE.FORBIDDEN_ERROR);\n expect(errObj.message).toStrictEqual(\n 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.'\n );\n });\n\n const funcSpy = jest.spyOn(call, 'postStatus').mockRejectedValue(statusPayload);\n\n if (call['sessionTimer'] === undefined) {\n /* In cases where this test is run independently/alone, there is no sessionTimer initiated\n Thus we will check and initialize the timer when not present by calling handleCallEstablish() */\n call['handleCallEstablished']({} as CallEvent);\n }\n call['handleCallEstablished']({} as CallEvent);\n\n jest.advanceTimersByTime(DEFAULT_SESSION_TIMER);\n\n /* This is to flush all the promises from the Promise queue so that\n * Jest.fakeTimers can advance time and also clear the promise Queue\n */\n\n await Promise.resolve();\n await Promise.resolve();\n\n expect(clearInterval).toHaveBeenCalledTimes(1);\n expect(funcSpy).toBeCalledTimes(1);\n });\n\n it('state changes during successful incoming call', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_RECV_CALL_SETUP',\n data: {\n seq: 1,\n messageType: 'OFFER',\n },\n };\n const postMediaSpy = jest.spyOn(call as any, 'postMedia');\n const deleteSpy = jest.spyOn(call as any, 'delete');\n\n webex.request.mockReturnValue(statusPayload);\n call['direction'] = CallDirection.INBOUND;\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_PROGRESS');\n\n dummyEvent.type = 'E_SEND_CALL_CONNECT';\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_CONNECT');\n\n /* we should expect to forward the roap offer message to mediaSdk for further processing */\n dummyEvent.type = 'E_RECV_ROAP_OFFER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n /* expect sending roap answer to mobius */\n dummyEvent.type = 'E_SEND_ROAP_ANSWER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toBeCalledOnceWith(dummyEvent.data as RoapMessage);\n\n const dummyOkEvent = {\n type: 'E_ROAP_OK',\n data: {\n received: true,\n message: {\n seq: 1,\n messageType: 'OFFER',\n },\n },\n };\n\n /* we receive roap Ok from mobius and expect mediaSdk to process it */\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyOkEvent.data.message as RoapMessage\n );\n\n expect(call['callStateMachine'].state.value).toBe('S_CALL_ESTABLISHED');\n expect(call.isConnected()).toBe(true);\n\n call.sendDigit('1');\n expect(dtmfMock).toBeCalledOnceWith('1');\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n expect(deleteSpy).toBeCalledOnceWith();\n expect(call['callStateMachine'].state.value).toBe('S_RECV_CALL_DISCONNECT');\n });\n\n it('state changes during unsuccessful incoming call due to no offer', async () => {\n call['direction'] = CallDirection.INBOUND;\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_RECV_CALL_SETUP',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n },\n };\n\n webex.request.mockReturnValue(statusPayload);\n\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_PROGRESS');\n await call['handleOutgoingCallConnect']({type: 'E_SEND_CALL_CONNECT'} as CallEvent);\n /* state should not change since there is no offer received. */\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_PROGRESS');\n expect(call.isConnected()).toBeFalsy();\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n expect(call['callStateMachine'].state.value).toBe('S_RECV_CALL_DISCONNECT');\n });\n\n it('state changes during unsuccessful incoming call due error in call connect', async () => {\n const warnSpy = jest.spyOn(log, 'warn');\n const stateMachineSpy = jest.spyOn(call, 'sendCallStateMachineEvt');\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const roapMessage = {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n };\n\n call['direction'] = CallDirection.INBOUND;\n webex.request.mockReturnValue(statusPayload);\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_SETUP'} as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_PROGRESS');\n\n call.sendMediaStateMachineEvt({type: 'E_RECV_ROAP_OFFER', data: roapMessage} as RoapEvent);\n webex.request.mockRejectedValueOnce({statusCode: 403}).mockResolvedValue(statusPayload);\n\n await call['handleOutgoingCallConnect']({type: 'E_SEND_CALL_CONNECT'} as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_UNKNOWN');\n expect(stateMachineSpy).toBeCalledTimes(3);\n expect(warnSpy).toBeCalledTimes(4);\n warnSpy.mockClear();\n /* Try sending a dtmf which shouldn't work as call is not connected. */\n call.sendDigit('1');\n expect(warnSpy).toBeCalledOnceWith(`Can't send DTMF as call is not yet connected`, {\n file: 'call',\n method: 'sendDigit',\n });\n });\n\n it('state changes during successful outgoing call', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_SEND_CALL_SETUP',\n data: undefined as any,\n };\n\n const postMediaSpy = jest.spyOn(call as any, 'postMedia');\n\n webex.request.mockReturnValue(statusPayload);\n\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_SETUP');\n dummyEvent.type = 'E_RECV_CALL_PROGRESS';\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_RECV_CALL_PROGRESS');\n\n dummyEvent.type = 'E_SEND_ROAP_OFFER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n\n /**\n * Since the event doesn't have any data above, we should request media sdk for an offer here.\n * The below event is expected to be called again my mediaSdk.\n */\n dummyEvent.data = {\n seq: 1,\n messageType: 'OFFER',\n sdp: 'sdp',\n };\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.initiateOffer).toHaveBeenCalledTimes(1);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyEvent.data as RoapMessage);\n\n dummyEvent.type = 'E_RECV_ROAP_ANSWER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n const dummyOkEvent = {\n type: 'E_ROAP_OK',\n data: {\n received: false,\n message: {\n seq: 1,\n messageType: 'OK',\n },\n },\n };\n\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyOkEvent.data.message as RoapMessage);\n\n dummyEvent.type = 'E_RECV_ROAP_OFFER_REQUEST';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyEvent.type = 'E_SEND_ROAP_OFFER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyEvent.data as RoapMessage);\n\n dummyEvent.type = 'E_RECV_ROAP_ANSWER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyOkEvent.data.message as RoapMessage);\n\n /* With the two roap offer/answer transactions that we simulated earlier\n we get a total 4 outgoing and 3 incoming roap messages.\n */\n expect(postMediaSpy).toBeCalledTimes(4);\n expect(mediaConnection.roapMessageReceived).toBeCalledTimes(3);\n\n dummyEvent.type = 'E_RECV_CALL_CONNECT';\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_CALL_ESTABLISHED');\n expect(call.isConnected()).toBe(true);\n\n call.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_DISCONNECT');\n });\n\n it('state changes during successful outgoing call with early media', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_SEND_CALL_SETUP',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n },\n };\n\n webex.request.mockReturnValue(statusPayload);\n\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_SETUP');\n dummyEvent.type = 'E_RECV_CALL_PROGRESS';\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_RECV_CALL_PROGRESS');\n\n /* Send a second callProgress event with inband media and it should handle */\n dummyEvent.data['callProgressData'] = {inbandMedia: true};\n dummyEvent.data['callerId'] = {\n from: '\"Bob Marley\" <sip:5010@207.182.171.130;user=phone>;tag=888068389-1654853820619-',\n };\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_RECV_CALL_PROGRESS');\n\n dummyEvent.type = 'E_RECV_CALL_CONNECT';\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_CALL_ESTABLISHED');\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n expect(call['callStateMachine'].state.value).toBe('S_RECV_CALL_DISCONNECT');\n });\n\n it('state changes during unsuccessful outgoing call due to error in call setup', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 403,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_SEND_CALL_SETUP',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n },\n };\n\n webex.request.mockRejectedValueOnce(statusPayload);\n\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n await flushPromises(3);\n expect(call['callStateMachine'].state.value).toBe('S_UNKNOWN');\n });\n\n it('state changes during unsuccessful outgoing call due to error in media ok', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 403,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_ROAP_OK',\n data: {\n received: false,\n message: {} as RoapMessage,\n },\n };\n\n call['callStateMachine'].state.value = 'S_RECV_CALL_PROGRESS';\n call['earlyMedia'] = true;\n call['mediaStateMachine'].state.value = 'S_RECV_ROAP_ANSWER';\n webex.request.mockRejectedValue(statusPayload);\n\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n await flushPromises(2);\n expect(call.isConnected()).toBe(false);\n\n expect(call['mediaStateMachine'].state.value).toBe('S_ROAP_ERROR');\n expect(call['callStateMachine'].state.value).toBe('S_UNKNOWN');\n });\n\n it('state changes during unsuccessful outgoing call since no sdp in offer', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 403,\n body: mockStatusBody,\n });\n\n const dummyEvent = {\n type: 'E_SEND_ROAP_OFFER',\n data: {\n seq: 1,\n type: 'OFFER',\n },\n };\n\n webex.request.mockReturnValue(statusPayload);\n call['callStateMachine'].state.value = 'S_RECV_CALL_PROGRESS';\n call['mediaStateMachine'].state.value = 'S_ROAP_IDLE';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n /* since there is no sdp, mediaMachine should remain in same state\n and an initiateOffer request to be sent to SDK only once */\n expect(call['mediaStateMachine'].state.value).toBe('S_SEND_ROAP_OFFER');\n expect(mediaConnection.initiateOffer).toBeCalledOnceWith();\n });\n\n it('Outgoing Roap offer retry-after error case during midcall', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n headers: {\n 'retry-after': 1,\n },\n body: mockStatusBody,\n });\n\n jest.spyOn(global, 'setTimeout');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockRejectedValueOnce(statusPayload);\n\n const stateMachineSpy = jest.spyOn(call, 'sendMediaStateMachineEvt');\n\n const dummyEvent = {\n type: 'E_SEND_ROAP_OFFER',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n sdp: 'sdp',\n },\n };\n\n call['connected'] = true;\n\n await call['handleOutgoingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n jest.advanceTimersByTime(1005);\n expect(setTimeout).toHaveBeenCalledTimes(1);\n expect(funcSpy).toHaveBeenCalledWith(dummyEvent.data);\n\n /* first failure , and second because of retry-after */\n expect(funcSpy).toHaveBeenCalledTimes(2);\n expect(stateMachineSpy).toBeCalledOnceWith(dummyEvent);\n });\n\n it('Outgoing Roap offer retry-after error case during call establishment', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n headers: {\n 'retry-after': 1,\n },\n body: mockStatusBody,\n });\n\n jest.spyOn(global, 'setTimeout');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockRejectedValueOnce(statusPayload);\n\n const stateMachineSpy = jest.spyOn(call, 'sendMediaStateMachineEvt');\n\n const dummyEvent = {\n type: 'E_SEND_ROAP_OFFER',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n sdp: 'sdp',\n },\n };\n\n call['connected'] = false;\n\n await call['handleOutgoingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n jest.advanceTimersByTime(1005);\n expect(funcSpy).toBeCalledOnceWith(dummyEvent.data);\n\n /* These shouldn't be called as call is not connected yet */\n expect(setTimeout).not.toHaveBeenCalled();\n expect(stateMachineSpy).not.toBeCalled();\n });\n\n it('Outgoing Roap Answer retry-after error case during midcall', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n headers: {\n 'retry-after': 1,\n },\n body: mockStatusBody,\n });\n\n jest.spyOn(global, 'setTimeout');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockRejectedValueOnce(statusPayload);\n\n const stateMachineSpy = jest.spyOn(call, 'sendMediaStateMachineEvt');\n\n const dummyEvent = {\n type: 'E_SEND_ROAP_ANSWER',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n },\n };\n\n call['connected'] = true;\n call['mediaStateMachine'].state.value = 'S_RECV_ROAP_OFFER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n jest.advanceTimersByTime(1005);\n expect(setTimeout).toHaveBeenCalledTimes(1);\n expect(funcSpy).toHaveBeenCalledWith(dummyEvent.data);\n\n /* first failure , and second because of retry-after */\n expect(funcSpy).toHaveBeenCalledTimes(2);\n expect(stateMachineSpy).toBeCalledOnceWith(dummyEvent);\n });\n\n it('Outgoing Roap answer retry-after error case during call establishment', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n headers: {\n 'retry-after': 1,\n },\n body: mockStatusBody,\n });\n\n jest.spyOn(global, 'setTimeout');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockRejectedValueOnce(statusPayload);\n\n const stateMachineSpy = jest.spyOn(call, 'sendMediaStateMachineEvt');\n\n const dummyEvent = {\n type: 'E_SEND_ROAP_ANSWER',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n },\n };\n\n call['connected'] = false;\n\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n jest.advanceTimersByTime(1005);\n\n expect(funcSpy).toBeCalledOnceWith(dummyEvent.data);\n expect(funcSpy).toHaveBeenCalledTimes(1);\n\n /* These shouldn't be called as call is not connected yet */\n expect(setTimeout).not.toHaveBeenCalled();\n expect(stateMachineSpy).not.toBeCalled();\n });\n\n it('ROAP error during mid call', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n\n const warnSpy = jest.spyOn(log, 'warn');\n const stateMachineSpy = jest.spyOn(call as any, 'sendCallStateMachineEvt');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockResolvedValue(statusPayload);\n\n const errorEvent = {\n type: 'E_ROAP_ERROR',\n data: {\n seq: 2,\n messageType: 'ERROR',\n errorType: 'OUT_OF_ORDER',\n },\n };\n\n call['mediaStateMachine'].state.value = 'S_SEND_ROAP_ANSWER';\n call['connected'] = true;\n call.sendMediaStateMachineEvt(errorEvent as RoapEvent);\n expect(funcSpy).toBeCalledOnceWith(errorEvent.data);\n expect(warnSpy).not.toHaveBeenCalled();\n expect(stateMachineSpy).not.toHaveBeenCalled();\n });\n\n it('ROAP ok retry-after during mid call', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n headers: {\n 'retry-after': 1,\n },\n body: mockStatusBody,\n });\n\n jest.spyOn(global, 'setTimeout');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockRejectedValueOnce(statusPayload);\n\n const stateMachineSpy = jest.spyOn(call, 'sendMediaStateMachineEvt');\n\n const dummyEvent = {\n type: 'E_ROAP_OK',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OK',\n },\n };\n\n call['connected'] = true;\n call['mediaStateMachine'].state.value = 'S_RECV_ROAP_ANSWER';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n jest.advanceTimersByTime(1005);\n expect(setTimeout).toHaveBeenCalledTimes(1);\n expect(funcSpy).toHaveBeenCalled();\n\n /* first failure , and second because of retry-after */\n expect(funcSpy).toHaveBeenCalledTimes(2);\n expect(stateMachineSpy).toBeCalledOnceWith(dummyEvent);\n });\n\n it('Unable to communicate roap error with mobius', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 403,\n body: mockStatusBody,\n });\n\n const stateMachineSpy = jest.spyOn(call as any, 'sendCallStateMachineEvt');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockRejectedValue(statusPayload);\n\n const errorEvent = {\n type: 'E_ROAP_ERROR',\n data: {\n seq: 2,\n messageType: 'ERROR',\n errorType: 'OUT_OF_ORDER',\n },\n };\n\n call['mediaStateMachine'].state.value = 'S_SEND_ROAP_ANSWER';\n call['connected'] = true;\n call.sendMediaStateMachineEvt(errorEvent as RoapEvent);\n expect(funcSpy).toBeCalledOnceWith(errorEvent.data);\n expect(stateMachineSpy).not.toHaveBeenCalled();\n });\n\n it('ROAP error during call establishment', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n\n const warnSpy = jest.spyOn(log, 'warn');\n const stateMachineSpy = jest.spyOn(call as any, 'sendCallStateMachineEvt');\n\n const funcSpy = jest.spyOn(call as any, 'postMedia').mockResolvedValue(statusPayload);\n\n const errorEvent = {\n type: 'E_ROAP_ERROR',\n data: {\n seq: 2,\n messageType: 'ERROR',\n errorType: 'OUT_OF_ORDER',\n },\n };\n\n call['connected'] = false;\n await call['handleRoapError']({} as MediaContext, errorEvent as RoapEvent);\n\n expect(funcSpy).toBeCalledOnceWith(errorEvent.data);\n expect(warnSpy).toBeCalledOnceWith('Call failed due to media issue', {\n file: 'call',\n method: 'handleRoapError',\n });\n expect(stateMachineSpy).toBeCalledOnceWith({data: {media: true}, type: 'E_UNKNOWN'});\n });\n\n it('state changes during successful incoming call with out of order events', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_RECV_CALL_SETUP',\n data: {\n seq: 1,\n messageType: 'OFFER',\n },\n };\n const postMediaSpy = jest.spyOn(call as any, 'postMedia');\n\n webex.request.mockReturnValue(statusPayload);\n call['direction'] = CallDirection.INBOUND;\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_PROGRESS');\n\n dummyEvent.type = 'E_SEND_CALL_CONNECT';\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_CONNECT');\n\n /* we should expect to forward the roap offer message to mediaSdk for further processing */\n dummyEvent.type = 'E_RECV_ROAP_OFFER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n /* expect sending roap answer to mobius */\n dummyEvent.type = 'E_SEND_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 1,\n messageType: 'ANSWER',\n };\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toBeCalledOnceWith(dummyEvent.data as RoapMessage);\n\n /* we receive roap Offer Request followed by roap Ok from mobius and handle\n out of order events by buffering and processing them in sequence */\n const dummyOkEvent = {\n type: 'E_ROAP_OK',\n data: {\n received: true,\n message: {\n seq: 1,\n messageType: 'OK',\n },\n },\n };\n\n dummyEvent.type = 'E_RECV_ROAP_OFFER_REQUEST';\n dummyEvent.data = {\n seq: 2,\n messageType: 'OFFER_REQUEST',\n };\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(call['receivedRoapOKSeq']).toBe(0);\n expect(mediaConnection.roapMessageReceived).not.toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenNthCalledWith(\n 2,\n dummyOkEvent.data.message as RoapMessage\n );\n\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n const dummyOfferEvent = {\n type: 'E_SEND_ROAP_OFFER',\n data: {\n seq: 2,\n messageType: 'OFFER',\n sdp: 'sdp',\n },\n };\n\n expect(call['mediaStateMachine'].state.value).toBe('S_RECV_ROAP_OFFER_REQUEST');\n call.sendMediaStateMachineEvt(dummyOfferEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyOfferEvent.data as RoapMessage);\n\n dummyEvent.type = 'E_RECV_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 2,\n messageType: 'ANSWER',\n };\n\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyOkEvent.data = {\n received: false,\n message: {\n seq: 2,\n messageType: 'OK',\n },\n };\n\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyOkEvent.data.message as RoapMessage);\n\n /* With the two roap offer/answer transactions that we simulated earlier\n we get a total 4 outgoing and 3 incoming roap messages.\n */\n expect(postMediaSpy).toBeCalledTimes(3);\n expect(mediaConnection.roapMessageReceived).toBeCalledTimes(4);\n\n expect(call['callStateMachine'].state.value).toBe('S_CALL_ESTABLISHED');\n expect(call.isConnected()).toBe(true);\n\n dummyEvent.type = 'E_CALL_HOLD';\n dummyEvent.data = {\n seq: 3,\n messageType: 'OFFER',\n };\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n\n dummyEvent.type = 'E_RECV_ROAP_OFFER';\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyEvent.type = 'E_SEND_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 3,\n messageType: 'ANSWER',\n };\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyEvent.data as RoapMessage);\n\n dummyEvent.type = 'E_RECV_ROAP_OFFER';\n dummyEvent.data = {\n seq: 4,\n messageType: 'OFFER',\n };\n\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(call['receivedRoapOKSeq']).toBe(2);\n expect(mediaConnection.roapMessageReceived).not.toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyOkEvent.data = {\n received: true,\n message: {\n seq: 3,\n messageType: 'OK',\n },\n };\n\n await call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenNthCalledWith(\n 6,\n dummyOkEvent.data.message as RoapMessage\n );\n\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyEvent.type = 'E_SEND_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 4,\n messageType: 'ANSWER',\n };\n\n expect(call['mediaStateMachine'].state.value).toBe('S_RECV_ROAP_OFFER');\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyEvent.data as RoapMessage);\n });\n\n it('successfully handles out of order events when ROAP OK is received while executing outgoingRoapAnswer', async () => {\n const mockStatusBody = {\n device: {\n deviceId: '123e4567-e89b-12d3-a456-426614174000',\n correlationId: 'b5476d4c-f48b-475e-b4e2-994e24d14ca2',\n },\n callId: 'fcf86aa5-5539-4c9f-8b72-667786ae9b6c',\n };\n\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n const dummyEvent = {\n type: 'E_RECV_CALL_SETUP',\n data: {\n seq: 1,\n messageType: 'OFFER',\n },\n };\n const postMediaSpy = jest.spyOn(call as any, 'postMedia');\n\n webex.request.mockReturnValue(statusPayload);\n call['direction'] = CallDirection.INBOUND;\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_PROGRESS');\n\n dummyEvent.type = 'E_SEND_CALL_CONNECT';\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_CONNECT');\n\n /* we should expect to forward the roap offer message to mediaSdk for further processing */\n dummyEvent.type = 'E_RECV_ROAP_OFFER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n /* expect sending roap answer to mobius */\n dummyEvent.type = 'E_SEND_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 1,\n messageType: 'ANSWER',\n };\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toBeCalledOnceWith(dummyEvent.data as RoapMessage);\n\n /* we receive roap Offer Request followed by roap Ok from mobius and handle\n out of order events by buffering and processing them in sequence */\n const dummyOkEvent = {\n type: 'E_ROAP_OK',\n data: {\n received: true,\n message: {\n seq: 1,\n messageType: 'OK',\n },\n },\n };\n\n dummyEvent.type = 'E_RECV_ROAP_OFFER_REQUEST';\n dummyEvent.data = {\n seq: 2,\n messageType: 'OFFER_REQUEST',\n };\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(call['receivedRoapOKSeq']).toBe(0);\n expect(mediaConnection.roapMessageReceived).not.toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenNthCalledWith(\n 2,\n dummyOkEvent.data.message as RoapMessage\n );\n\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n const dummyOfferEvent = {\n type: 'E_SEND_ROAP_OFFER',\n data: {\n seq: 2,\n messageType: 'OFFER',\n sdp: 'sdp',\n },\n };\n\n expect(call['mediaStateMachine'].state.value).toBe('S_RECV_ROAP_OFFER_REQUEST');\n call.sendMediaStateMachineEvt(dummyOfferEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyOfferEvent.data as RoapMessage);\n\n dummyEvent.type = 'E_RECV_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 2,\n messageType: 'ANSWER',\n };\n\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyOkEvent.data = {\n received: false,\n message: {\n seq: 2,\n messageType: 'OK',\n },\n };\n\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyOkEvent.data.message as RoapMessage);\n\n /* With the two roap offer/answer transactions that we simulated earlier\n we get a total 4 outgoing and 3 incoming roap messages.\n */\n expect(postMediaSpy).toBeCalledTimes(3);\n expect(mediaConnection.roapMessageReceived).toBeCalledTimes(4);\n\n expect(call['callStateMachine'].state.value).toBe('S_CALL_ESTABLISHED');\n expect(call.isConnected()).toBe(true);\n\n dummyEvent.type = 'E_CALL_HOLD';\n dummyEvent.data = {\n seq: 3,\n messageType: 'OFFER',\n };\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n\n dummyEvent.type = 'E_RECV_ROAP_OFFER';\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyEvent.type = 'E_SEND_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 3,\n messageType: 'ANSWER',\n };\n\n await call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyEvent.data as RoapMessage);\n\n dummyEvent.type = 'E_RECV_ROAP_OFFER';\n dummyEvent.data = {\n seq: 4,\n messageType: 'OFFER',\n };\n\n dummyOkEvent.data = {\n received: true,\n message: {\n seq: 3,\n messageType: 'OK',\n },\n };\n\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n await call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(call['receivedRoapOKSeq']).toBe(3);\n expect(mediaConnection.roapMessageReceived).toHaveBeenNthCalledWith(\n 6,\n dummyOkEvent.data.message as RoapMessage\n );\n\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n\n dummyEvent.type = 'E_SEND_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 4,\n messageType: 'ANSWER',\n };\n\n expect(call['mediaStateMachine'].state.value).toBe('S_RECV_ROAP_OFFER');\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyEvent.data as RoapMessage);\n });\n\n it('handle hold event successfully when media received after progress but before connect', async () => {\n const statusPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockStatusBody,\n });\n\n const dummyEvent = {\n type: 'E_SEND_CALL_SETUP',\n data: {\n seq: 1,\n messageType: 'OFFER',\n sdp: 'sdp',\n },\n };\n\n const postMediaSpy = jest.spyOn(call as any, 'postMedia');\n const infoSpy = jest.spyOn(log, 'info');\n\n webex.request.mockReturnValue(statusPayload);\n\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_SEND_CALL_SETUP');\n\n dummyEvent.type = 'E_SEND_ROAP_OFFER';\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyEvent.data as RoapMessage);\n\n dummyEvent.type = 'E_RECV_CALL_PROGRESS';\n dummyEvent.data = undefined as any;\n\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_RECV_CALL_PROGRESS');\n\n dummyEvent.type = 'E_RECV_ROAP_ANSWER';\n dummyEvent.data = {\n seq: 1,\n messageType: 'ANSWER',\n sdp: 'sdp',\n };\n\n call.sendMediaStateMachineEvt(dummyEvent as RoapEvent);\n expect(mediaConnection.roapMessageReceived).toHaveBeenLastCalledWith(\n dummyEvent.data as RoapMessage\n );\n expect(call['mediaNegotiationCompleted']).toBe(false);\n\n const dummyOkEvent = {\n type: 'E_ROAP_OK',\n data: {\n received: false,\n message: {\n seq: 1,\n messageType: 'OK',\n },\n },\n };\n\n call.sendMediaStateMachineEvt(dummyOkEvent as RoapEvent);\n expect(call['mediaNegotiationCompleted']).toBe(true);\n expect(postMediaSpy).toHaveBeenLastCalledWith(dummyOkEvent.data.message as RoapMessage);\n\n dummyEvent.type = 'E_RECV_CALL_CONNECT';\n dummyEvent.data = undefined as any;\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n\n /* Call will move to connect state then immediately move to established state as\n media negotiation is already completed before connect was received\n */\n expect(call['callStateMachine'].state.value).toBe('S_CALL_ESTABLISHED');\n expect(call.isConnected()).toBe(true);\n\n dummyEvent.type = 'E_CALL_HOLD';\n dummyEvent.data = undefined as any;\n call.sendCallStateMachineEvt(dummyEvent as CallEvent);\n expect(call['callStateMachine'].state.value).toBe('S_CALL_HOLD');\n\n expect(infoSpy).toHaveBeenLastCalledWith(`handleCallHold: ${call.getCorrelationId()} `, {\n file: 'call',\n method: 'handleCallHold',\n });\n });\n});\n\ndescribe('Supplementary Services tests', () => {\n const deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\n const dest = {\n type: CallType.URI,\n address: 'tel:5003',\n };\n\n const mockResponseBody = {\n device: {\n deviceId: '123e4567-e89b-12d3-a456-426614174000',\n correlationId: 'b5476d4c-f48b-475e-b4e2-994e24d14ca2',\n },\n callId: 'fcf86aa5-5539-4c9f-8b72-667786ae9b6c',\n };\n\n let call: Call;\n\n beforeEach(() => {\n /* Since we are not actually testing from the start of a call , so it's good to set the below\n * parameters manually\n */\n\n call = new Call(\n activeUrl,\n webex,\n dest,\n CallDirection.OUTBOUND,\n deviceId,\n mockLineId,\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const dummy = 10;\n },\n defaultServiceIndicator\n );\n call['connected'] = true;\n call['earlyMedia'] = false;\n\n /* Also supplementary services will start always from Call_Established state */\n call['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n call.removeAllListeners(CALL_EVENT_KEYS.CALL_ERROR);\n\n jest.clearAllTimers();\n jest.useFakeTimers();\n });\n\n describe('Call hold-resume tests', () => {\n const mockHeldEvent = {\n eventType: 'callState',\n eventData: {\n callState: 'HELD',\n },\n };\n\n const mockResumeEvent = {\n eventType: 'callState',\n eventData: {\n callState: 'CONNECTED',\n },\n };\n\n const dummyEvent = {\n type: 'E_SEND_ROAP_OFFER',\n data: {\n seq: 1,\n message: {} as RoapMessage,\n type: 'OFFER',\n },\n };\n\n beforeEach(() => {\n call.removeAllListeners();\n });\n\n it('Handle successful Call hold case without delayed http response', async () => {\n expect.assertions(7);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n jest.spyOn(global, 'setTimeout');\n jest.spyOn(global, 'clearTimeout');\n const warnSpy = jest.spyOn(log, 'warn');\n\n call['held'] = false;\n\n call.on(CALL_EVENT_KEYS.HELD, async (correlationId) => {\n expect(correlationId).toStrictEqual(call.getCorrelationId());\n });\n\n await call.doHoldResume();\n await flushPromises(2);\n\n expect(setTimeout).toHaveBeenCalledTimes(1);\n call.handleMidCallEvent(mockHeldEvent as unknown as MidCallEvent);\n\n /* At this point, the Call State should be S_CALL_HOLD\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_HOLD');\n\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(clearTimeout).toHaveBeenCalledTimes(1);\n /* isHeld flag should be set and an Hold event should be emitted */\n expect(call.isHeld()).toStrictEqual(true);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n jest.advanceTimersByTime(12000);\n expect(warnSpy).not.toHaveBeenCalledWith('Hold response timed out', {\n file: 'call',\n method: 'handleCallHold',\n });\n });\n\n it('Handle successful Call hold case with delayed http response', async () => {\n expect.assertions(8);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n jest.spyOn(global, 'setTimeout');\n jest.spyOn(global, 'clearTimeout');\n const warnSpy = jest.spyOn(log, 'warn');\n\n call['held'] = false;\n\n call.on(CALL_EVENT_KEYS.HELD, async (correlationId) => {\n expect(correlationId).toStrictEqual(call.getCorrelationId());\n });\n\n call.doHoldResume();\n await Promise.resolve();\n await Promise.resolve();\n\n expect(setTimeout).not.toHaveBeenCalled();\n call.handleMidCallEvent(mockHeldEvent as unknown as MidCallEvent);\n\n /* At this point, the Call State should be S_CALL_HOLD\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_HOLD');\n expect(call.isHeld()).toBe(true);\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(clearTimeout).not.toHaveBeenCalled();\n /* isHeld flag should be set and an Hold event should be emitted */\n expect(call.isHeld()).toStrictEqual(true);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n jest.advanceTimersByTime(12000);\n expect(warnSpy).not.toHaveBeenCalledWith('Hold response timed out', {\n file: 'call',\n method: 'handleCallHold',\n });\n });\n\n it('Handle failure Call Hold case during signalling', async () => {\n expect.assertions(4);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 503,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockRejectedValue(responsePayload);\n\n call['held'] = false;\n\n call.on(CALL_EVENT_KEYS.HOLD_ERROR, async (errObj) => {\n expect(errObj.type).toStrictEqual(ERROR_TYPE.SERVICE_UNAVAILABLE);\n expect(errObj.message).toStrictEqual(\n 'An unknown error occurred. Wait a moment and try again.'\n );\n });\n\n await call.doHoldResume();\n await flushPromises(2);\n\n expect(call.isHeld()).toStrictEqual(false);\n\n /* At this point , the Call State should transition to S_CALL_ESTABLISHED\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n });\n\n it('Handle failure Call Hold case during offer/answer exchange', async () => {\n expect.assertions(5);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n const rejectPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockResponseBody,\n });\n\n jest\n .spyOn(webex, 'request')\n .mockResolvedValueOnce(responsePayload)\n .mockRejectedValueOnce(rejectPayload);\n\n call['held'] = false;\n\n call.on(CALL_EVENT_KEYS.HOLD_ERROR, async (errObj) => {\n expect(errObj.type).toStrictEqual(ERROR_TYPE.SERVICE_UNAVAILABLE);\n expect(errObj.message).toStrictEqual(\n 'An unknown error occurred. Wait a moment and try again.'\n );\n });\n\n call.doHoldResume();\n await flushPromises(2);\n\n /* the Call State should transition to S_CALL_ESTABLISHED\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_HOLD');\n\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n /* We are intentionally failing the ROAP ANSWER */\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(call.isHeld()).toStrictEqual(false);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n });\n\n it('Handle failure Call Hold case during roap ok out', async () => {\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n jest.spyOn(global, 'setTimeout');\n jest.spyOn(global, 'clearTimeout');\n const warnSpy = jest.spyOn(log, 'warn');\n\n call['held'] = false;\n\n await call.doHoldResume();\n await flushPromises(2);\n\n expect(setTimeout).toHaveBeenCalledTimes(1);\n\n /* At this point, the Call State should be S_CALL_HOLD\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_HOLD');\n\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n jest.spyOn(webex, 'request').mockRejectedValue({statusCode: 403});\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n /* this is for coverage */\n call['callStateMachine'].state.value = 'S_CALL_HOLD';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(call.isHeld()).toStrictEqual(false);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n expect(warnSpy).toHaveBeenCalledWith('MediaOk failed with Mobius', {\n file: 'call',\n method: 'handleRoapEstablished',\n });\n });\n\n it('Handle failure Call resume case during roap ok out', async () => {\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n jest.spyOn(global, 'setTimeout');\n jest.spyOn(global, 'clearTimeout');\n const warnSpy = jest.spyOn(log, 'warn');\n\n call['held'] = true;\n\n await call.doHoldResume();\n await flushPromises(2);\n\n expect(setTimeout).toHaveBeenCalledTimes(1);\n\n /* At this point, the Call State should be S_CALL_RESUME\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_RESUME');\n\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n jest.spyOn(webex, 'request').mockRejectedValue({statusCode: 403});\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(call.isHeld()).toStrictEqual(true);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(warnSpy).toHaveBeenCalledWith('MediaOk failed with Mobius', {\n file: 'call',\n method: 'handleRoapEstablished',\n });\n });\n\n it('Handle Call hold case where successful Held response does not come', async () => {\n expect.assertions(5);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n\n call['held'] = false;\n\n call.on(CALL_EVENT_KEYS.HOLD_ERROR, async (errObj) => {\n expect(errObj.type).toStrictEqual(ERROR_TYPE.TIMEOUT);\n expect(errObj.message).toStrictEqual(\n 'An error occurred while placing the call on hold. Wait a moment and try again.'\n );\n });\n\n jest.runAllTimers();\n\n call.doHoldResume();\n await flushPromises(2);\n\n /* At this point, the Call State should be S_CALL_HOLD\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_HOLD');\n\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n /* Advancing timer by 12 seconds so that it gets timed out */\n jest.advanceTimersByTime(12000);\n\n /* isHeld flag should be unset */\n expect(call.isHeld()).toStrictEqual(false);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n });\n\n it('Handle successful Call Resume case without delayed http response', async () => {\n expect.assertions(7);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n jest.spyOn(global, 'setTimeout');\n jest.spyOn(global, 'clearTimeout');\n const warnSpy = jest.spyOn(log, 'warn');\n\n call['held'] = true;\n\n call.on(CALL_EVENT_KEYS.RESUMED, async (correlationId) => {\n expect(correlationId).toStrictEqual(call.getCorrelationId());\n });\n\n await call.doHoldResume();\n await flushPromises(2);\n\n expect(setTimeout).toHaveBeenCalledTimes(1);\n call.handleMidCallEvent(mockResumeEvent as unknown as MidCallEvent);\n\n /* At this point ,the Call State should be S_CALL_RESUME\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_RESUME');\n\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(clearTimeout).toHaveBeenCalledTimes(1);\n /* isHeld flag should not be set and an Resume event should be emitted */\n expect(call.isHeld()).toStrictEqual(false);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n jest.advanceTimersByTime(12000);\n expect(warnSpy).not.toHaveBeenCalledWith('Resume response timed out', {\n file: 'call',\n method: 'handleCallResume',\n });\n });\n\n it('Handle successful Call Resume case with delayed http response', async () => {\n expect.assertions(7);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n jest.spyOn(global, 'setTimeout');\n jest.spyOn(global, 'clearTimeout');\n const warnSpy = jest.spyOn(log, 'warn');\n\n call['held'] = true;\n\n call.on(CALL_EVENT_KEYS.RESUMED, async (correlationId) => {\n expect(correlationId).toStrictEqual(call.getCorrelationId());\n });\n\n call.doHoldResume();\n await Promise.resolve();\n await Promise.resolve();\n\n expect(setTimeout).not.toHaveBeenCalled();\n call.handleMidCallEvent(mockResumeEvent as unknown as MidCallEvent);\n\n /* At this point ,the Call State should be S_CALL_RESUME\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_RESUME');\n\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(clearTimeout).not.toHaveBeenCalled();\n /* isHeld flag should not be set and an Resume event should be emitted */\n expect(call.isHeld()).toStrictEqual(false);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n\n jest.advanceTimersByTime(12000);\n expect(warnSpy).not.toHaveBeenCalledWith('Resume response timed out', {\n file: 'call',\n method: 'handleCallResume',\n });\n });\n\n it('Handle failure Call Resume case during signalling', async () => {\n expect.assertions(4);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 503,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockRejectedValue(responsePayload);\n\n call['held'] = true;\n\n call.on(CALL_EVENT_KEYS.RESUME_ERROR, async (errObj) => {\n expect(errObj.type).toStrictEqual(ERROR_TYPE.SERVICE_UNAVAILABLE);\n expect(errObj.message).toStrictEqual(\n 'An unknown error occurred. Wait a moment and try again.'\n );\n });\n\n await call.doHoldResume();\n await flushPromises(2);\n\n expect(call.isHeld()).toStrictEqual(true);\n\n /* At this point , the Call State should transition to S_CALL_ESTABLISHED\n */\n\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n });\n\n it('Handle failure Call Resume case during offer/answer exchange', async () => {\n expect.assertions(5);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n const rejectPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockResponseBody,\n });\n\n jest\n .spyOn(webex, 'request')\n .mockResolvedValueOnce(responsePayload)\n .mockRejectedValueOnce(rejectPayload);\n\n call['held'] = true;\n\n call.on(CALL_EVENT_KEYS.RESUME_ERROR, async (errObj) => {\n expect(errObj.type).toStrictEqual(ERROR_TYPE.SERVICE_UNAVAILABLE);\n expect(errObj.message).toStrictEqual(\n 'An unknown error occurred. Wait a moment and try again.'\n );\n });\n\n call.doHoldResume();\n await flushPromises(2);\n\n /* At this point , the Call State should transition to S_CALL_ESTABLISHED\n */\n\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_RESUME');\n\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n /* We are intentionally failing the ROAP ANSWER */\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n expect(call.isHeld()).toStrictEqual(true);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n });\n\n it('Handle Call resume case where successful response does not come', async () => {\n expect.assertions(5);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n\n call['held'] = true;\n\n call.on(CALL_EVENT_KEYS.RESUME_ERROR, async (errObj) => {\n expect(errObj.type).toStrictEqual(ERROR_TYPE.TIMEOUT);\n expect(errObj.message).toStrictEqual(\n 'An error occurred while resuming the call. Wait a moment and try again.'\n );\n });\n\n call.doHoldResume();\n await flushPromises(2);\n\n /* At this point ,the Call State should be S_CALL_RESUME\n */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_RESUME');\n\n /* We simulate the media Connection events manually here as we are not really testing with actual\n * media.\n */\n call['handleIncomingRoapOffer']({} as MediaContext, dummyEvent as RoapEvent);\n const roapEvent = JSON.parse(JSON.stringify(dummyEvent));\n\n roapEvent.data.type = 'ANSWER';\n await call['handleOutgoingRoapAnswer']({} as MediaContext, dummyEvent as RoapEvent);\n\n roapEvent.data.type = 'OK';\n await call['handleRoapEstablished']({} as MediaContext, dummyEvent as RoapEvent);\n\n /* Advancing timer by 12 seconds so that it gets timed out */\n jest.advanceTimersByTime(12000);\n\n expect(call.isHeld()).toStrictEqual(true);\n /* We should return back to call established state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n });\n });\n\n describe('Call transfer tests', () => {\n const transfereeNumber = '5004';\n const transfereeDest = {\n type: CallType.URI,\n address: `tel:${transfereeNumber}`,\n };\n let secondCall: Call;\n\n /* A spy on handleCallErrors to check whether it is being invoked or not depending on tests */\n const handleErrorSpy = jest.spyOn(Utils, 'handleCallErrors');\n const transferLoggingContext = {\n file: 'call',\n method: 'completeTransfer',\n };\n\n beforeEach(() => {\n /* We will put the first call on hold to perform the transfer */\n call['held'] = true;\n\n /* We will create a second call just like the first call, but call is active, i.e, not held */\n secondCall = new Call(\n activeUrl,\n webex,\n transfereeDest,\n CallDirection.OUTBOUND,\n deviceId,\n mockLineId,\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const dummy = 10;\n },\n defaultServiceIndicator\n );\n secondCall['connected'] = true;\n secondCall['earlyMedia'] = false;\n secondCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n secondCall.removeAllListeners(CALL_EVENT_KEYS.CALL_ERROR);\n secondCall['held'] = false;\n });\n\n it('Handle successful consult transfer case ', async () => {\n expect.assertions(9);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n const requestSpy = jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n const warnSpy = jest.spyOn(log, 'warn');\n const infoSpy = jest.spyOn(log, 'info');\n const metricSpy = jest.spyOn(call['metricManager'], 'submitCallMetric');\n\n call.on(CALL_EVENT_KEYS.DISCONNECT, async (correlationId) => {\n expect(correlationId).toStrictEqual(call.getCorrelationId());\n });\n secondCall.on(CALL_EVENT_KEYS.DISCONNECT, async (correlationId) => {\n expect(correlationId).toStrictEqual(secondCall.getCorrelationId());\n });\n\n await call.completeTransfer(TransferType.CONSULT, secondCall.getCallId(), undefined);\n await flushPromises(2);\n\n expect(requestSpy).toBeCalled();\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CALL,\n TRANSFER_ACTION.CONSULT,\n METRIC_TYPE.BEHAVIORAL,\n call.getCallId(),\n call.getCorrelationId(),\n undefined\n );\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n secondCall.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n\n /* We should return back to S_RECV_CALL_DISCONNECT state for both the calls */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_RECV_CALL_DISCONNECT');\n expect(secondCall['callStateMachine'].state.value).toStrictEqual('S_RECV_CALL_DISCONNECT');\n expect(handleErrorSpy).not.toBeCalled();\n expect(infoSpy).toHaveBeenCalledWith(\n `Initiating Consult transfer between : ${call.getCallId()} and ${secondCall.getCallId()}`,\n transferLoggingContext\n );\n expect(warnSpy).not.toHaveBeenCalledWith(\n `Consult Transfer failed for correlationId ${call.getCorrelationId()}`,\n transferLoggingContext\n );\n });\n\n it('Handle successful blind transfer case ', async () => {\n expect.assertions(7);\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 200,\n body: mockResponseBody,\n });\n\n const requestSpy = jest.spyOn(webex, 'request').mockResolvedValue(responsePayload);\n const warnSpy = jest.spyOn(log, 'warn');\n const infoSpy = jest.spyOn(log, 'info');\n const metricSpy = jest.spyOn(call['metricManager'], 'submitCallMetric');\n\n call.on(CALL_EVENT_KEYS.DISCONNECT, async (correlationId) => {\n expect(correlationId).toStrictEqual(call.getCorrelationId());\n });\n\n await call.completeTransfer(TransferType.BLIND, undefined, transfereeNumber);\n await flushPromises(2);\n\n expect(requestSpy).toBeCalled();\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CALL,\n TRANSFER_ACTION.BLIND,\n METRIC_TYPE.BEHAVIORAL,\n call.getCallId(),\n call.getCorrelationId(),\n undefined\n );\n\n call.sendCallStateMachineEvt({type: 'E_RECV_CALL_DISCONNECT'});\n\n /* We should return back to S_RECV_CALL_DISCONNECT state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_RECV_CALL_DISCONNECT');\n expect(handleErrorSpy).not.toBeCalled();\n expect(infoSpy).toHaveBeenCalledWith(\n `Initiating Blind transfer with : ${transfereeNumber}`,\n transferLoggingContext\n );\n expect(warnSpy).not.toHaveBeenCalledWith(\n `Blind Transfer failed for correlationId ${call.getCorrelationId()}`,\n transferLoggingContext\n );\n });\n\n it('Handle unsuccessful blind transfer case', async () => {\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 403,\n body: mockResponseBody,\n });\n const emitSpy = jest.spyOn(call, 'emit');\n const requestSpy = jest.spyOn(webex, 'request').mockRejectedValue(responsePayload);\n const warnSpy = jest.spyOn(log, 'warn');\n const metricSpy = jest.spyOn(call['metricManager'], 'submitCallMetric');\n\n await call.completeTransfer(TransferType.BLIND, undefined, transfereeNumber);\n await flushPromises(1);\n\n expect(requestSpy).toBeCalled();\n /* We should be in CALL_ESTABLISHED state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(call['held']).toBe(true);\n expect(handleErrorSpy).toHaveBeenCalledWith(\n expect.anything(),\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n expect.anything(),\n call.getCorrelationId(),\n responsePayload,\n 'completeTransfer',\n 'call'\n );\n /* check whether error event is being emitted by sdk */\n expect(emitSpy).toBeCalledOnceWith(CALL_EVENT_KEYS.TRANSFER_ERROR, expect.any(CallError));\n expect(warnSpy).toHaveBeenCalledWith(\n `Blind Transfer failed for correlationId ${call.getCorrelationId()}`,\n transferLoggingContext\n );\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CALL_ERROR,\n TRANSFER_ACTION.BLIND,\n METRIC_TYPE.BEHAVIORAL,\n call.getCallId(),\n call.getCorrelationId(),\n expect.any(CallError)\n );\n });\n\n it('Handle unsuccessful consult transfer case', async () => {\n const responsePayload = <SSResponse>(<unknown>{\n statusCode: 403,\n body: mockResponseBody,\n });\n\n const emitSpy = jest.spyOn(call, 'emit');\n const requestSpy = jest.spyOn(webex, 'request').mockRejectedValue(responsePayload);\n const warnSpy = jest.spyOn(log, 'warn');\n const metricSpy = jest.spyOn(call['metricManager'], 'submitCallMetric');\n\n await call.completeTransfer(TransferType.CONSULT, secondCall.getCallId(), undefined);\n\n await flushPromises(2);\n\n expect(requestSpy).toBeCalled();\n /* We should be in CALL_ESTABLISHED state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(call['held']).toBe(true);\n expect(secondCall['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(handleErrorSpy).toHaveBeenCalledWith(\n expect.anything(),\n ERROR_LAYER.CALL_CONTROL,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n expect.anything(),\n call.getCorrelationId(),\n responsePayload,\n 'completeTransfer',\n 'call'\n );\n /* check whether error event is being emitted by sdk */\n expect(emitSpy).toHaveBeenCalledWith(CALL_EVENT_KEYS.TRANSFER_ERROR, expect.any(CallError));\n expect(warnSpy).toHaveBeenCalledWith(\n `Consult Transfer failed for correlationId ${call.getCorrelationId()}`,\n transferLoggingContext\n );\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CALL_ERROR,\n TRANSFER_ACTION.CONSULT,\n METRIC_TYPE.BEHAVIORAL,\n call.getCallId(),\n call.getCorrelationId(),\n expect.any(CallError)\n );\n });\n\n it('Handle blind transfer with undefined transferTarget', async () => {\n const requestSpy = jest.spyOn(webex, 'request');\n const warnSpy = jest.spyOn(log, 'warn');\n\n await call.completeTransfer(TransferType.BLIND, undefined, undefined);\n\n /* We should be in CALL_ESTABLISHED state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(secondCall['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(handleErrorSpy).not.toBeCalled();\n expect(requestSpy).not.toBeCalled();\n expect(warnSpy).toBeCalledOnceWith(\n `Invalid information received, transfer failed for correlationId: ${call.getCorrelationId()}`,\n transferLoggingContext\n );\n });\n\n it('Handle consult transfer with undefined transferCallId', async () => {\n const requestSpy = jest.spyOn(webex, 'request');\n const warnSpy = jest.spyOn(log, 'warn');\n\n await call.completeTransfer(TransferType.CONSULT, undefined, undefined);\n\n /* We should be in CALL_ESTABLISHED state */\n expect(call['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(secondCall['callStateMachine'].state.value).toStrictEqual('S_CALL_ESTABLISHED');\n expect(handleErrorSpy).not.toBeCalled();\n expect(requestSpy).not.toBeCalled();\n expect(warnSpy).toBeCalledOnceWith(\n `Invalid information received, transfer failed for correlationId: ${call.getCorrelationId()}`,\n transferLoggingContext\n );\n });\n });\n});\n"],"mappings":"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"}
|