@webex/calling 3.10.0-next.9 → 3.10.0-webex-services-ready.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallHistory/CallHistory.js +118 -124
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +189 -201
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallSettings/CallSettings.js +17 -18
- package/dist/CallSettings/CallSettings.js.map +1 -1
- package/dist/CallSettings/CallSettings.test.js +14 -14
- package/dist/CallSettings/CallSettings.test.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +71 -24
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +136 -47
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +135 -137
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +145 -149
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +198 -201
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +168 -168
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.js +7 -8
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.test.js +24 -24
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +650 -606
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +685 -564
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +15 -18
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +113 -113
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/constants.js +5 -1
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +57 -74
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +22 -22
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +657 -526
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +657 -309
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +24 -24
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +20 -20
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +28 -28
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +250 -253
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +60 -60
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Errors/catalog/CallError.js +7 -10
- package/dist/Errors/catalog/CallError.js.map +1 -1
- package/dist/Errors/catalog/CallingDeviceError.js +6 -9
- package/dist/Errors/catalog/CallingDeviceError.js.map +1 -1
- package/dist/Errors/catalog/ExtendedError.js +6 -8
- package/dist/Errors/catalog/ExtendedError.js.map +1 -1
- package/dist/Errors/catalog/LineError.js +6 -9
- package/dist/Errors/catalog/LineError.js.map +1 -1
- package/dist/Events/impl/index.js +11 -13
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/Metrics/index.js +1 -2
- package/dist/Metrics/index.js.map +1 -1
- package/dist/SDKConnector/index.js +1 -2
- package/dist/SDKConnector/index.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +126 -127
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +98 -98
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +84 -85
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +72 -72
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +58 -61
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/Voicemail.test.js +20 -20
- package/dist/Voicemail/Voicemail.test.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +116 -117
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +140 -140
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
- package/dist/common/Utils.js +195 -165
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +432 -183
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +3 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/testUtil.js +3 -3
- package/dist/common/testUtil.js.map +1 -1
- package/dist/module/CallSettings/UcmBackendConnector.js +20 -6
- package/dist/module/CallingClient/calling/call.js +55 -34
- package/dist/module/CallingClient/constants.js +3 -0
- package/dist/module/CallingClient/registration/register.js +82 -2
- package/dist/module/common/Utils.js +27 -3
- package/dist/module/common/constants.js +2 -0
- package/dist/types/CallSettings/UcmBackendConnector.d.ts +1 -0
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +4 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +3 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +4 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +6 -0
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +6 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +2 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","require","_calling","_Errors","_testUtil","_types","_Logger","_interopRequireDefault","_constants","_types2","_Utils","_voicemailFixture","_constants2","_types3","_SDKConnector","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","jest","mock","v4","fn","mockUuid","uuid","mockSubmitRegistrationMetric","mockEmitterCb","mockRestoreCb","mock429RetryCb","webex","getTestUtilsWebex","SDKConnector","setWebex","internal","metrics","submitClientMetrics","describe","it","defaultMobiusUrl","callingContext","discoveryResponse","getMobiusDiscoveryResponse","backup","uris","filteredUris","filterMobiusUris","expect","primary","toBe","errorCodes","name","statusCode","ERROR_CODE","TOO_MANY_REQUESTS","deviceErrorCode","retryAfter","message","errorType","ERROR_TYPE","REGISTRATION_ERROR","emitterCbExpected","finalError","retry429CbExpected","restoreCbExpected","logMsg","DEVICE_NOT_FOUND","NOT_FOUND","INTERNAL_SERVER_ERROR","SERVICE_UNAVAILABLE","FORBIDDEN","FORBIDDEN_ERROR","customBodyPresent","body","undefined","DEVICE_ERROR_CODE","DEVICE_LIMIT_EXCEEDED","DEVICE_CREATION_DISABLED","DEVICE_CREATION_FAILED","UNAUTHORIZED","TOKEN_ERROR","BAD_REQUEST","SERVER_ERROR","DEFAULT","map","stat","_assign","toString","logSpy","spyOn","log","logObj","file","method","REGISTER_UTIL","each","codeObj","webexPayload","headers","trackingid","device","deviceId","userId","errorCode","devices","uri","status","lastSeen","addresses","mockErrorEvent","type","context","callClientError","CallingClientError","RegistrationStatus","ACTIVE","handleRegistrationErrors","toBeCalledOnceWith","not","toHaveBeenCalled","toHaveBeenCalledWith","concat","beforeEach","clearAllMocks","_asyncToGenerator2","_regenerator","mark","_callee","result","wrap","_callee$","_context","prev","next","handleCallingClientErrors","sent","stop","_callee2","_callee2$","_context2","_callee3","_callee3$","_context3","CALL_FILE","dest","CallType","URI","address","deleteCallFromCollection","retryCallback","activeUrl","defaultServiceIndicator","ServiceIndicator","CALLING","call","Call","CallDirection","OUTBOUND","dummyCorrelationId","clearAllTimers","useFakeTimers","removeAllListeners","CALL_EVENT_KEYS","CALL_ERROR","code","bodyPresent","subErrorCode","errorLayer","ERROR_LAYER","CALL_CONTROL","cbExpected","CALL_ERROR_CODE","INVALID_STATUS_UPDATE","DEVICE_NOT_REGISTERED","CALL_NOT_FOUND","ERROR_PROCESSING","USER_BUSY","PARSING_ERROR","MEDIA","NOT_ACCEPTABLE","CALL_REJECTED","NOT_AVAILABLE","done","cbTriggered","mockPayload","correlationId","on","errObj","toMatchObject","handleCallErrors","error","emit","toBeCalledWith","toBeCalled","logSpyObj","infoSpyObj","warnSpyObj","UTILS_FILE","parseMediaQualityStatistics","stats","getSampleRawAndParsedMediaStats","statsWithVoOneWayDelayAndNw","statsWithoutVoOneWayDelayAndNw","mqStats","original","raw","parsed","_stringify","DUMMY_METRICS","size","toStrictEqual","voiceMailList","getVoicemailListJsonWXC","VoiceMessagingMessages","messageInfoList","messageInfo","sortedVoicemail","getSortedVoicemailList","SORT","ASC","voiceMailListAscOrder","getAscVoicemailListJsonWXC","DESC","voiceMailListDescOrder","getDescVoicemailListJsonWXC","scimUrl","WEBEX_API_BTS","IDENTITY_ENDPOINT_RESOURCE","SCIM_ENDPOINT_RESOURCE","orgId","SCIM_USER_FILTER","callingPartyInfo","resolveContact","then","toBeNull","webexSpy","mockResolvedValue","getSampleScimResponse","userExternalId","$","displayInfo","_callingPartyInfo$use","num","avatarSrc","Resources","photos","value","id","query","encodeURIComponent","objectContaining","_callee4","_callingPartyInfo$use2","warnSpy","_callee4$","_context4","mockRejectedValueOnce","toBeUndefined","_callee5","_callingPartyInfo$use3","scimResponse","_callee5$","_context5","totalResults","mockResolvedValueOnce","_callee6","_callingPartyInfo$use4","_displayInfo","_displayInfo2","phoneNumbers","_callee6$","_context6","mockReset","request","_callingPartyInfo$use5","getSampleMinimumScimResponse","_callingPartyInfo$use6","people","getSamplePeopleListResponse","items","displayName","avatar","Buffer","from","split","pop","_callee7","peopleListResponse","_callee7$","_context7","_callee8","_displayInfo3","_displayInfo4","_displayInfo5","_displayInfo6","_displayInfo7","_displayInfo8","_callee8$","_context8","list","_callee9","_callee9$","_context9","_callee0","_callee0$","_context0","dummyContext","logContext","getEncryptedVoicemail","vmList","getDecryptedVoicemail","decryptedList","JSON","parse","sessionStorage","getItem","beforeAll","vmListStorage","global","Storage","prototype","setItem","key","voicemailList","storeVoicemailList","voicemailFromSessionStorage","toHaveBeenCalledTimes","toEqual","encryptedVm","fetchVoicemailList","messages","moreVMAvailable","slice","uuidVal","hydraId","inferIdFromUuid","DecodeType","PEOPLE","uuidAgain","INFER_ID_CONSTANT","encodedOrgId","ORGANIZATION","orgIdAgain","_callee1","_callee1$","_context1","t0","getXsiActionEndpoint","CALLING_BACKEND","UCM","t1","toBeInstanceOf","Error","_callee10","_callee10$","_context10","getVgActionEndpoint","WXC","mockWebex","services","_serviceUrls","wdm","loggerContext","_callee11","mockResponse","xsiEndpoint","_callee11$","_context11","settings","broadworksXsiActionsUrl","BWRKS","_callee12","_callee12$","_context12","_callee13","_callee13$","_context13","modifySdpForIPv4","sdp","expectedSdp","trim","malformedSdp","submitLogsMock","mockReturnValue","mockClear","support","submitLogs","afterEach","_callee14","mockMetaData","_callee14$","_context14","uploadLogs","feedbackId","fields","call_id","calling_sdk_version","correlation_id","device_url","feedback_id","mobius_url","tracking_id","tags","action","device_id","service_indicator","_callee15","mockError","_callee15$","_context15","broadworksCorrelationInfo","_callee16","_callee16$","_context16"],"sources":["Utils.test.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport {v4 as uuid} from 'uuid';\nimport {CallingPartyInfo, MessageInfo} from '../Voicemail/types';\nimport {Call} from '../CallingClient/calling';\nimport {CallError, CallingClientError} from '../Errors';\nimport {\n getTestUtilsWebex,\n getSampleScimResponse,\n getSamplePeopleListResponse,\n getSampleRawAndParsedMediaStats,\n getMobiusDiscoveryResponse,\n getSampleMinimumScimResponse,\n} from './testUtil';\nimport {\n CallDirection,\n CallType,\n DecodeType,\n ServiceIndicator,\n SORT,\n WebexRequestPayload,\n CALLING_BACKEND,\n RegistrationStatus,\n} from './types';\nimport log from '../Logger';\nimport {CALL_FILE, DUMMY_METRICS, UTILS_FILE, REGISTER_UTIL} from '../CallingClient/constants';\nimport {\n CALL_ERROR_CODE,\n ERROR_CODE,\n ERROR_LAYER,\n ERROR_TYPE,\n DEVICE_ERROR_CODE,\n} from '../Errors/types';\nimport {\n handleCallErrors,\n handleRegistrationErrors,\n parseMediaQualityStatistics,\n getSortedVoicemailList,\n resolveContact,\n storeVoicemailList,\n fetchVoicemailList,\n inferIdFromUuid,\n getXsiActionEndpoint,\n getVgActionEndpoint,\n filterMobiusUris,\n modifySdpForIPv4,\n uploadLogs,\n handleCallingClientErrors,\n} from './Utils';\nimport {\n getVoicemailListJsonWXC,\n getAscVoicemailListJsonWXC,\n getDescVoicemailListJsonWXC,\n} from '../Voicemail/voicemailFixture';\nimport {\n IDENTITY_ENDPOINT_RESOURCE,\n INFER_ID_CONSTANT,\n SCIM_ENDPOINT_RESOURCE,\n SCIM_USER_FILTER,\n WEBEX_API_BTS,\n} from './constants';\nimport {CALL_EVENT_KEYS} from '../Events/types';\nimport SDKConnector from '../SDKConnector';\n\n// Mock uuid\njest.mock('uuid', () => ({\n v4: jest.fn(),\n}));\n\nconst mockUuid = uuid as jest.MockedFunction<typeof uuid>;\n\nconst mockSubmitRegistrationMetric = jest.fn();\nconst mockEmitterCb = jest.fn();\nconst mockRestoreCb = jest.fn();\nconst mock429RetryCb = jest.fn();\n\nconst webex = getTestUtilsWebex();\nSDKConnector.setWebex(webex);\nwebex.internal.metrics.submitClientMetrics = mockSubmitRegistrationMetric;\n\ndescribe('Mobius service discovery tests', () => {\n it('test filter mobius uris', () => {\n const defaultMobiusUrl = 'https://mobius.webex.com/api/v1/calling/web';\n const callingContext = '/calling/web/';\n const discoveryResponse = getMobiusDiscoveryResponse();\n\n // add a duplicate which will be filtered out\n discoveryResponse.backup.uris.push(discoveryResponse.backup.uris[0]);\n\n let filteredUris = filterMobiusUris(discoveryResponse, defaultMobiusUrl);\n\n expect(filteredUris.primary.length).toBe(1);\n expect(filteredUris.backup.length).toBe(2);\n expect(filteredUris.primary[0]).toBe(discoveryResponse.primary.uris[0] + callingContext);\n expect(filteredUris.backup[0]).toBe(discoveryResponse.backup.uris[0] + callingContext);\n expect(filteredUris.backup[1]).toBe(defaultMobiusUrl + callingContext);\n\n /** Remove Uris and test if the defaultUrls is returned */\n discoveryResponse.backup.uris = [];\n discoveryResponse.primary.uris = [];\n\n filteredUris = filterMobiusUris(discoveryResponse, defaultMobiusUrl);\n expect(filteredUris.primary.length).toBe(1);\n expect(filteredUris.primary[0]).toBe(defaultMobiusUrl + callingContext);\n\n expect(filteredUris.backup.length).toBe(0);\n });\n});\n\ndescribe('Registration Tests', () => {\n /**\n * TestCase inputs\n * name: TestCase name\n * code: Response code of type ERROR_CODE\n * bodyPresent: Indicates if response has a body\n * subErrorCode: sub error code of type CALL_ERROR_CODE\n * retryAfter: Indicates if retry-after header is present\n * message: Custom message for the error context\n * type: Error type based on the response code\n * errorLayer: Call control or media layer\n * cbExpected: Indicates if event emitter callback is expected\n * logMsg: log message.\n */\n const errorCodes: {\n name: string;\n statusCode: ERROR_CODE;\n bodyPresent: boolean;\n subErrorCode: CALL_ERROR_CODE;\n retryAfter: number;\n message: string;\n type: ERROR_TYPE;\n errorLayer: ERROR_LAYER;\n cbExpected: boolean;\n logMsg: string;\n }[] = [\n {\n name: 'verify 429 error response',\n statusCode: ERROR_CODE.TOO_MANY_REQUESTS,\n deviceErrorCode: 0,\n retryAfter: 30,\n message: '',\n errorType: ERROR_TYPE.REGISTRATION_ERROR,\n emitterCbExpected: false,\n finalError: false,\n retry429CbExpected: true,\n restoreCbExpected: false,\n logMsg: '429 Too Many Requests',\n },\n {\n name: 'verify 404 error response',\n statusCode: ERROR_CODE.DEVICE_NOT_FOUND,\n deviceErrorCode: 0,\n message: 'Webex Calling is unable to find your device. Sign out, then sign back in',\n errorType: ERROR_TYPE.NOT_FOUND,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '404 Device Not Found',\n },\n {\n name: 'verify 500 error response',\n statusCode: ERROR_CODE.INTERNAL_SERVER_ERROR,\n deviceErrorCode: 0,\n message: 'An unknown error occurred while placing the request. Wait a moment and try again.',\n errorType: ERROR_TYPE.SERVICE_UNAVAILABLE,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '500 Internal Server Error',\n },\n {\n name: 'verify 503 error response',\n statusCode: ERROR_CODE.SERVICE_UNAVAILABLE,\n deviceErrorCode: 0,\n message:\n 'An error occurred on the server while processing the request. Wait a moment and try again.',\n errorType: ERROR_TYPE.SERVICE_UNAVAILABLE,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '503 Service Unavailable',\n },\n {\n name: 'verify 403 response with no response body',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: 0,\n message:\n 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: 'Error response has no body, throwing default error',\n customBodyPresent: true,\n body: undefined,\n },\n {\n name: 'verify 403 response with unknown device.errorCode',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: 0,\n message:\n 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: 'Error code found : 0',\n },\n {\n name: 'verify 403 response with code 101',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: DEVICE_ERROR_CODE.DEVICE_LIMIT_EXCEEDED,\n message: 'User device limit exceeded',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: false,\n finalError: false,\n restoreCbExpected: true,\n retry429CbExpected: false,\n logMsg: 'User device limit exceeded',\n },\n {\n name: 'verify 403 response with code 102',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED,\n message:\n 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg:\n 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.',\n },\n {\n name: 'verify 403 response with code 103',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED,\n message:\n 'An unknown error occurred while provisioning the device. Wait a moment and try again.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg:\n 'An unknown error occurred while provisioning the device. Wait a moment and try again.',\n },\n {\n name: 'verify 401 error response',\n statusCode: ERROR_CODE.UNAUTHORIZED,\n deviceErrorCode: 0,\n message: 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n errorType: ERROR_TYPE.TOKEN_ERROR,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '401 Unauthorized',\n },\n {\n name: 'verify 400 error response',\n statusCode: ERROR_CODE.BAD_REQUEST,\n deviceErrorCode: 0,\n message:\n 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data',\n errorType: ERROR_TYPE.SERVER_ERROR,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '400 Bad Request',\n },\n {\n name: 'verify unknown error response',\n statusCode: 206,\n deviceErrorCode: 0,\n message: 'Unknown error',\n errorType: ERROR_TYPE.DEFAULT,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: 'Unknown Error',\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n return this.name;\n },\n })\n );\n const logSpy = jest.spyOn(log, 'warn');\n const logObj = {\n file: 'CallingClient',\n method: REGISTER_UTIL,\n };\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n it.each(errorCodes)('%s', (codeObj) => {\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode: codeObj.statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n ...(codeObj.retryAfter && {'retry-after': codeObj.retryAfter.toString()}),\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: codeObj.deviceErrorCode,\n devices: [\n {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n uri: 'https://mobius.webex.com/api/v1/calling/web/',\n status: 'active',\n lastSeen: '2022-04-07T18:00:40Z',\n addresses: ['sip:sipAddress@webex.com'],\n },\n ],\n },\n });\n if (codeObj.customBodyPresent) {\n webexPayload.body = codeObj.body;\n }\n const mockErrorEvent = {\n type: codeObj.errorType,\n message: codeObj.message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n handleRegistrationErrors(webexPayload, mockEmitterCb, logObj, mock429RetryCb, mockRestoreCb);\n if (codeObj.emitterCbExpected) {\n expect(mockEmitterCb).toBeCalledOnceWith(callClientError, codeObj.finalError);\n }\n if (codeObj.restoreCbExpected) {\n expect(mockRestoreCb).toBeCalledOnceWith(webexPayload.body, logObj.method);\n } else {\n expect(mockRestoreCb).not.toHaveBeenCalled();\n }\n\n if (codeObj.retry429CbExpected) {\n expect(mock429RetryCb).toBeCalledOnceWith(codeObj.retryAfter, logObj.method);\n } else {\n expect(mock429RetryCb).not.toHaveBeenCalled();\n }\n\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${codeObj.statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith(codeObj.logMsg, logObj);\n });\n});\n\ndescribe('CallingClient Error Tests', () => {\n const logSpy = jest.spyOn(log, 'warn');\n const logObj = {\n file: 'CallingClient',\n method: 'handleCallingClientErrors',\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('verify 401 error response for calling client', async () => {\n const statusCode = ERROR_CODE.UNAUTHORIZED;\n const message = 'User is unauthorized due to an expired token.';\n const errorType = ERROR_TYPE.TOKEN_ERROR;\n const finalError = true;\n\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: 0,\n },\n });\n\n const mockErrorEvent = {\n type: errorType,\n message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n const result = await handleCallingClientErrors(webexPayload, mockEmitterCb, logObj);\n\n expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);\n expect(result).toBe(finalError);\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith('401 Unauthorized', logObj);\n });\n\n it('verify 500 error response for calling client', async () => {\n const statusCode = ERROR_CODE.INTERNAL_SERVER_ERROR;\n const message =\n 'An unknown error occurred while placing the request. Wait a moment and try again.';\n const errorType = ERROR_TYPE.SERVICE_UNAVAILABLE;\n const finalError = false;\n\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: 0,\n },\n });\n\n const mockErrorEvent = {\n type: errorType,\n message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n const result = await handleCallingClientErrors(webexPayload, mockEmitterCb, logObj);\n\n expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);\n expect(result).toBe(finalError);\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith('500 Internal Server Error', logObj);\n });\n\n it('verify unknown error response for calling client', async () => {\n const statusCode = 206;\n const message = 'Unknown error';\n const errorType = ERROR_TYPE.DEFAULT;\n const finalError = false;\n\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: 0,\n },\n });\n\n const mockErrorEvent = {\n type: errorType,\n message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n const result = await handleCallingClientErrors(webexPayload, mockEmitterCb, logObj);\n\n expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);\n expect(result).toBe(finalError);\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith('Unknown Error', logObj);\n });\n});\n\ndescribe('Call Tests', () => {\n /* Error flows tests starts */\n const logSpy = jest.spyOn(log, 'warn');\n const logObj = {\n file: CALL_FILE,\n method: 'handleCallErrors',\n };\n\n const deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\n const dest = {\n type: CallType.URI,\n address: 'tel:5003',\n };\n\n const deleteCallFromCollection = jest.fn();\n const retryCallback = jest.fn();\n const activeUrl = 'FakeActiveUrl';\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const call = new Call(\n activeUrl,\n webex,\n dest,\n CallDirection.OUTBOUND,\n deviceId,\n deleteCallFromCollection,\n defaultServiceIndicator\n );\n\n const dummyCorrelationId = '8a67806f-fc4d-446b-a131-31e71ea5b010';\n\n beforeEach(() => {\n jest.clearAllTimers();\n jest.useFakeTimers();\n call.removeAllListeners(CALL_EVENT_KEYS.CALL_ERROR);\n });\n\n /**\n * TestCase inputs\n * name: TestCase name\n * code: Response code of type ERROR_CODE\n * bodyPresent: Indicates if response has a body\n * subErrorCode: sub error code of type CALL_ERROR_CODE\n * retryAfter: Indicates if retry-after header is present\n * message: Custom message for the error context\n * type: Error type based on the response code\n * errorLayer: Call control or media layer\n * cbExpected: Indicates if event emitter callback is expected\n * logMsg: log message.\n */\n const errorCodes: {\n name: string;\n code: ERROR_CODE;\n bodyPresent: boolean;\n subErrorCode: CALL_ERROR_CODE;\n retryAfter: number;\n message: string;\n type: ERROR_TYPE;\n errorLayer: ERROR_LAYER;\n cbExpected: boolean;\n logMsg: string;\n }[] = [\n /* 401 Unauthorized. */\n {\n name: 'verify 401 error response',\n code: 401,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n type: ERROR_TYPE.TOKEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: '401 Unauthorized',\n },\n /* 403 error code from here. */\n // Without body\n {\n name: 'verify 403 error response without body',\n code: 403,\n bodyPresent: false,\n subErrorCode: 0,\n retryAfter: 0,\n message:\n 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Error response has no body, throwing default error',\n },\n // error body with sub error code 111\n {\n name: 'verify 403 error response with code 111',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.INVALID_STATUS_UPDATE,\n retryAfter: 0,\n message:\n 'An invalid status update has been received for the call. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 112\n {\n name: 'verify 403 error response with code 112',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.DEVICE_NOT_REGISTERED,\n retryAfter: 0,\n message:\n 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 113\n {\n name: 'verify 403 error response with code 113',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_NOT_FOUND,\n retryAfter: 0,\n message: 'Call is not found on the server. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 114\n {\n name: 'verify 403 error response with code 114',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.ERROR_PROCESSING,\n retryAfter: 0,\n message:\n 'An error occurred while processing the call on the server. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 115\n {\n name: 'verify 403 error response with code 115',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.USER_BUSY,\n retryAfter: 0,\n message: 'Called user is busy.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 116\n {\n name: 'verify 403 error response with code 116',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.PARSING_ERROR,\n retryAfter: 0,\n message:\n 'An error occurred while parsing the provided information. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 118\n {\n name: 'verify 403 error response with code 118',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_ACCEPTABLE,\n retryAfter: 0,\n message:\n 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 119\n {\n name: 'verify 403 error response with code 119',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_REJECTED,\n retryAfter: 0,\n message:\n 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 120\n {\n name: 'verify 403 error response with code 120',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_AVAILABLE,\n retryAfter: 0,\n message:\n 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with unknown/unhandled sub error code\n {\n name: 'verify 403 error response with unknown error code',\n code: 403,\n bodyPresent: true,\n subErrorCode: 999,\n retryAfter: 0,\n message: 'An unknown error occurred. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n /* 403 error code till here. */\n /* 503 error code from here. */\n // Without body\n {\n name: 'verify 503 error response without body',\n code: 503,\n bodyPresent: false,\n subErrorCode: 0,\n retryAfter: 0,\n message:\n 'An error occurred on the server while processing the request. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Error response has no body, throwing default error',\n },\n // error body with sub error code 111\n {\n name: 'verify 503 error response with code 111',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.INVALID_STATUS_UPDATE,\n retryAfter: 0,\n message:\n 'An invalid status update has been received for the call. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 112\n {\n name: 'verify 503 error response with code 112',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.DEVICE_NOT_REGISTERED,\n retryAfter: 0,\n message:\n 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 113\n {\n name: 'verify 503 error response with code 113',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_NOT_FOUND,\n retryAfter: 0,\n message: 'Call is not found on the server. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 114\n {\n name: 'verify 503 error response with code 114',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.ERROR_PROCESSING,\n retryAfter: 0,\n message:\n 'An error occurred while processing the call on the server. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 115\n {\n name: 'verify 503 error response with code 115',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.USER_BUSY,\n retryAfter: 0,\n message: 'Called user is busy.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 116\n {\n name: 'verify 503 error response with code 116',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.PARSING_ERROR,\n retryAfter: 0,\n message:\n 'An error occurred while parsing the provided information. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 118\n {\n name: 'verify 503 error response with code 118',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_ACCEPTABLE,\n retryAfter: 0,\n message:\n 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 119\n {\n name: 'verify 503 error response with code 119',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_REJECTED,\n retryAfter: 0,\n message:\n 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 120\n {\n name: 'verify 503 error response with code 120',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_AVAILABLE,\n retryAfter: 0,\n message:\n 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with unknown/unhandled sub error code\n {\n name: 'verify 503 error response with unknown error code',\n code: 503,\n bodyPresent: true,\n subErrorCode: 999,\n retryAfter: 0,\n message: 'An unknown error occurred. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // with retry-after\n {\n name: 'verify 503 error response with retry-after',\n code: 503,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 60,\n message: 'An unknown error occurred. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: false,\n logMsg: 'Retry Interval received: 60',\n },\n /* 503 error code till here. */\n /* 404 Not Found. */\n {\n name: 'verify 404 error response',\n code: 404,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'Call is no longer active. Wait a moment and try again.',\n type: ERROR_TYPE.NOT_FOUND,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: '404 Call Not Found',\n },\n /* 500 Internal Server Error. */\n {\n name: 'verify 500 error response',\n code: 500,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'An unknown error occurred in the call. Wait a moment and try again.',\n type: ERROR_TYPE.SERVER_ERROR,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: '500 Internal Server Error',\n },\n /* Unknown error code. */\n {\n name: 'verify unknown error response',\n code: 0,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'An unknown error occurred in the call. Wait a moment and try again.',\n type: ERROR_TYPE.DEFAULT,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: false,\n logMsg: 'Unknown Error',\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n return this.name;\n },\n })\n );\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n it.each(errorCodes)('%s', (codeObj, done: any) => {\n let cbTriggered = false;\n const mockPayload = <WebexRequestPayload>(<unknown>{\n statusCode: codeObj.code,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n ...(codeObj.retryAfter && {'retry-after': codeObj.retryAfter}),\n },\n ...(codeObj.bodyPresent && {\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n ...(codeObj.subErrorCode ? {errorCode: codeObj.subErrorCode} : {}),\n },\n }),\n });\n\n const mockErrorEvent = {\n type: codeObj.type,\n message: codeObj.message,\n context: logObj,\n correlationId: dummyCorrelationId,\n errorLayer: codeObj.errorLayer,\n };\n\n if (codeObj.cbExpected) {\n call.on(CALL_EVENT_KEYS.CALL_ERROR, (errObj) => {\n expect(errObj).toMatchObject(mockErrorEvent);\n done();\n });\n } else {\n done();\n }\n\n handleCallErrors(\n (error: CallError) => {\n call.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n cbTriggered = true;\n },\n codeObj.errorLayer,\n retryCallback,\n dummyCorrelationId,\n mockPayload,\n logObj.method,\n logObj.file\n );\n\n expect(cbTriggered).toBe(codeObj.cbExpected);\n expect(logSpy).toBeCalledWith(codeObj.logMsg, logObj);\n if (codeObj.retryAfter) {\n expect(retryCallback).toBeCalledOnceWith(codeObj.retryAfter);\n } else {\n expect(retryCallback).not.toBeCalled();\n }\n });\n});\n\ndescribe('parseMediaQualityStatistics tests', () => {\n const logSpyObj = jest.spyOn(log, 'log');\n const infoSpyObj = jest.spyOn(log, 'info');\n const warnSpyObj = jest.spyOn(log, 'warn');\n const logObj = {\n file: UTILS_FILE,\n method: parseMediaQualityStatistics.name,\n };\n const stats = getSampleRawAndParsedMediaStats();\n const {statsWithVoOneWayDelayAndNw} = stats;\n const {statsWithoutVoOneWayDelayAndNw} = stats;\n\n /**\n * TestCase inputs\n * name: TestCase name\n * original: Original RTCStatsReport\n * parsed: Parsed stats in form of CallRtpStats\n * logSpy: SpyInstance on the log object\n * logMsg: Expected log message.\n */\n const mqStats: {\n name: string;\n original: unknown;\n parsed: unknown;\n logSpy: unknown;\n logMsg: string;\n }[] = [\n {\n name: 'Valid stats with non-zero VoOneWayDelayMs and networkType vpn',\n original: statsWithVoOneWayDelayAndNw.raw,\n parsed: statsWithVoOneWayDelayAndNw.parsed,\n logSpy: logSpyObj,\n logMsg: JSON.stringify(statsWithVoOneWayDelayAndNw.parsed),\n },\n {\n name: 'Valid stats with zero VoOneWayDelayMs and undefined networkType',\n original: statsWithoutVoOneWayDelayAndNw.raw,\n parsed: statsWithoutVoOneWayDelayAndNw.parsed,\n logSpy: logSpyObj,\n logMsg: JSON.stringify(statsWithoutVoOneWayDelayAndNw.parsed),\n },\n {\n name: 'undefined stats passed to parse function',\n original: undefined,\n parsed: DUMMY_METRICS,\n logSpy: infoSpyObj,\n logMsg: 'RTCStatsReport is null, adding dummy stats',\n },\n {\n name: 'invalid metrics passed when outbound call is disconnected before a connect',\n original: {size: 26},\n parsed: DUMMY_METRICS,\n logSpy: warnSpyObj,\n logMsg: 'Caught error while parsing RTP stats, TypeError: stats.forEach is not a function',\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n return this.name;\n },\n })\n );\n\n it.each(mqStats)('%s', (stat) => {\n const result = parseMediaQualityStatistics(stat.original as unknown as RTCStatsReport);\n\n expect(result).toStrictEqual(stat.parsed);\n expect(stat.logSpy).toBeCalledOnceWith(stat.logMsg, logObj);\n });\n});\n\ndescribe('Voicemail Sorting Tests', () => {\n /* Tests Voicemail sorting in ascending and descending orders */\n\n it('verify VoiceMails sorting in Ascending order', () => {\n const voiceMailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n const sortedVoicemail = getSortedVoicemailList(voiceMailList, SORT.ASC);\n const voiceMailListAscOrder =\n getAscVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo;\n\n expect(sortedVoicemail).toStrictEqual(voiceMailListAscOrder);\n });\n\n it('verify VoiceMails sorting in Descending Order', () => {\n const voiceMailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n const sortedVoicemail = getSortedVoicemailList(voiceMailList, SORT.DESC);\n const voiceMailListDescOrder =\n getDescVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo;\n\n expect(sortedVoicemail).toStrictEqual(voiceMailListDescOrder);\n });\n});\n\ndescribe('resolveContact tests', () => {\n const scimUrl = `${WEBEX_API_BTS}/${IDENTITY_ENDPOINT_RESOURCE}/${SCIM_ENDPOINT_RESOURCE}/${webex.internal.device.orgId}/${SCIM_USER_FILTER}`;\n\n it('Invalid CallingPartyInfo', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n resolveContact(callingPartyInfo).then((result) => {\n expect(result).toBeNull();\n });\n });\n\n it('Resolve by userExternalId', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValue({\n statusCode: 200,\n body: getSampleScimResponse(),\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toStrictEqual('Cathy');\n expect(displayInfo?.num).toStrictEqual('5008');\n expect(displayInfo?.avatarSrc).toStrictEqual(\n getSampleScimResponse().Resources[0].photos[0].value\n );\n expect(displayInfo?.id).toStrictEqual(getSampleScimResponse().Resources[0].id);\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n });\n\n it('Resolve by userExternalId - SCIM exception', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const warnSpy = jest.spyOn(log, 'warn');\n\n const webexSpy = jest.spyOn(webex, 'request').mockRejectedValueOnce({statusCode: 500});\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(displayInfo?.name).toBeUndefined();\n expect(warnSpy).toHaveBeenCalledWith('Error response: - 500', {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n\n it('Resolve by userExternalId - totalResults zero', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const scimResponse = getSampleScimResponse();\n\n scimResponse.totalResults = '0';\n\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValueOnce({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n const displayInfo = await resolveContact(callingPartyInfo);\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(displayInfo?.name).toBeUndefined();\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n\n scimResponse.totalResults = '1';\n });\n\n it('Resolve by userExternalId - no primary number and no phone numbers', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const scimResponse = getSampleScimResponse();\n\n scimResponse.Resources[0].phoneNumbers[1].primary = false;\n\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValueOnce({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n let displayInfo = await resolveContact(callingPartyInfo);\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n expect(displayInfo?.num).toStrictEqual('5008');\n webexSpy.mockReset();\n\n scimResponse.Resources[0].phoneNumbers[1].primary = true;\n\n /* No phone numbers */\n const {phoneNumbers} = scimResponse.Resources[0];\n\n scimResponse.Resources[0].phoneNumbers = [];\n\n webex.request.mockResolvedValueOnce({\n statusCode: 200,\n body: scimResponse,\n });\n\n displayInfo = await resolveContact(callingPartyInfo);\n expect(displayInfo?.num).toBeUndefined();\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n\n scimResponse.Resources[0].phoneNumbers = phoneNumbers;\n });\n\n it('Resolve by userExternalId - no photo', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const scimResponse = getSampleScimResponse();\n\n scimResponse.Resources[0].photos = [];\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValue({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toStrictEqual('Cathy');\n expect(displayInfo?.num).toStrictEqual('5008');\n expect(displayInfo?.avatarSrc).toStrictEqual('unknown');\n expect(displayInfo?.id).toStrictEqual(getSampleScimResponse().Resources[0].id);\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n });\n\n it('Resolve with minimal response from SCIM', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const scimResponse = getSampleMinimumScimResponse();\n\n // scimResponse.Resources[0].photos = [];\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValue({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toBeUndefined();\n expect(displayInfo?.num).toBeUndefined();\n expect(displayInfo?.avatarSrc).toStrictEqual('unknown');\n expect(displayInfo?.id).toStrictEqual(getSampleMinimumScimResponse().Resources[0].id);\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n });\n\n it('Resolve by name', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const webexSpy = jest\n .spyOn(webex.people, 'list')\n .mockResolvedValue(getSamplePeopleListResponse());\n\n callingPartyInfo.name = {$: 'Name'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toStrictEqual(getSamplePeopleListResponse().items[0].displayName);\n expect(displayInfo?.num).toStrictEqual(\n getSamplePeopleListResponse().items[0].phoneNumbers[0].value\n );\n expect(displayInfo?.avatarSrc).toStrictEqual(getSamplePeopleListResponse().items[0].avatar);\n expect(displayInfo?.id).toStrictEqual(\n Buffer.from(getSamplePeopleListResponse().items[0].id, 'base64')\n .toString('binary')\n .split('/')\n .pop()\n );\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n });\n });\n\n it('Resolve by name - Empty Info', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {items} = peopleListResponse;\n\n peopleListResponse.items = [];\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(displayInfo?.name).toBeUndefined();\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n\n peopleListResponse.items = items;\n });\n\n it('Resolve by name - ID as plain UUID instead of part of URI', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {id} = peopleListResponse.items[0];\n\n /* Yjg1M2JiZDEtMTEzNi00ZDI1LTkzOGQtMGMzNzUzMWIxMjMz -> b853bbd1-1136-4d25-938d-0c37531b1233 */\n peopleListResponse.items[0].id = 'Yjg1M2JiZDEtMTEzNi00ZDI1LTkzOGQtMGMzNzUzMWIxMjMz';\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n let displayInfo = await resolveContact(callingPartyInfo);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(displayInfo?.num).toStrictEqual(peopleListResponse.items[0].phoneNumbers[0].value);\n expect(displayInfo?.avatarSrc).toStrictEqual(peopleListResponse.items[0].avatar);\n expect(displayInfo?.id).toStrictEqual(\n Buffer.from(peopleListResponse.items[0].id, 'base64').toString('binary').split('/').pop()\n );\n webexSpy.mockReset();\n\n /* Also test empty id */\n peopleListResponse.items[0].id = '';\n\n webex.people.list.mockResolvedValueOnce(peopleListResponse);\n\n displayInfo = await resolveContact(callingPartyInfo);\n expect(displayInfo?.id).toStrictEqual('');\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n\n peopleListResponse.items[0].id = id;\n });\n\n it('Resolve by name - Phone numbers no match for type - work', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {phoneNumbers} = peopleListResponse.items[0];\n\n peopleListResponse.items[0].phoneNumbers[0].type = 'mobile';\n peopleListResponse.items[0].phoneNumbers[1].type = 'mobile';\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(displayInfo?.num).toStrictEqual(peopleListResponse.items[0].phoneNumbers[0].value);\n expect(displayInfo?.avatarSrc).toStrictEqual(peopleListResponse.items[0].avatar);\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n\n peopleListResponse.items[0].phoneNumbers = phoneNumbers;\n });\n\n it('Resolve by name - Phone numbers empty', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {phoneNumbers} = peopleListResponse.items[0];\n\n peopleListResponse.items[0].phoneNumbers = [];\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(displayInfo?.num).toBeUndefined();\n expect(displayInfo?.avatarSrc).toStrictEqual(peopleListResponse.items[0].avatar);\n\n peopleListResponse.items[0].phoneNumbers = phoneNumbers;\n });\n});\n\ndescribe('Store and Fetch voicemail tests', () => {\n /* Tests Voicemail pagination - storing voicemail list to and fetching from session storage */\n const dummyContext = 'dummy';\n const logContext = {\n file: 'voicemail',\n method: 'fetchVoicemail',\n };\n\n const getEncryptedVoicemail = (vmList: MessageInfo[]) => {\n return Buffer.from(JSON.stringify(vmList), 'utf8').toString('base64');\n };\n\n const getDecryptedVoicemail = () => {\n const decryptedList = JSON.parse(\n Buffer.from(sessionStorage.getItem(dummyContext) as string, 'base64').toString('utf8')\n );\n\n return decryptedList;\n };\n\n beforeAll(() => {\n // Mock storage\n const vmListStorage = {};\n\n global.Storage.prototype.setItem = jest.fn((key, value) => {\n vmListStorage[key] = value;\n });\n global.Storage.prototype.getItem = jest.fn((key) => vmListStorage[key]);\n });\n\n it('verify saving Voicemails in session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n storeVoicemailList(dummyContext, voicemailList);\n const voicemailFromSessionStorage = getDecryptedVoicemail();\n\n expect(global.sessionStorage.setItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual(voicemailList);\n });\n\n it('verify fetching all 5 voicemails from session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 0, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({messages: voicemailList, moreVMAvailable: false});\n });\n\n it('verify fetching first 3 VoiceMails from session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 0, 3, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({\n messages: voicemailList.slice(0, 3),\n moreVMAvailable: true,\n });\n });\n\n it('verify fetching 2nd and 3rd Voicemails from session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 2, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({\n messages: voicemailList.slice(1, 3),\n moreVMAvailable: true,\n });\n });\n\n it('verify fetch Voicemails with offset limit more than the available ones from session storage', () => {\n const voicemailList = <MessageInfo[]>[];\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({\n messages: voicemailList.slice(1, 5),\n moreVMAvailable: false,\n });\n });\n\n it('verify fetching Voicemails when it is []', () => {\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({messages: [], moreVMAvailable: false});\n });\n\n it('verify fetching Voicemails when there is exception', () => {\n const voiceMailList = '$%%ˆ';\n const logSpy = jest.spyOn(log, 'warn');\n\n global.sessionStorage.setItem(dummyContext, voiceMailList);\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toBeCalledOnceWith('dummy');\n\n expect(logSpy).toHaveBeenCalledTimes(2);\n expect(logSpy).toHaveBeenCalledWith(\n 'Caught exception while fetching voicemail from storage. SyntaxError: Unexpected end of JSON input',\n logContext\n );\n expect(logSpy).toHaveBeenCalledWith('422 Exception has occurred', {});\n expect(voicemailFromSessionStorage).toEqual({messages: [], moreVMAvailable: false});\n });\n});\n\ndescribe('Infer id from UUID Tests', () => {\n /* Tests conversion of UUID to hydra Id */\n\n it('verify encoding of userId to personId', () => {\n const uuidVal = '14533573-f6aa-429d-b4fe-58aa04a2b631';\n const hydraId: string = inferIdFromUuid(uuidVal, DecodeType.PEOPLE);\n const uuidAgain = Buffer.from(hydraId, 'base64').toString('binary');\n\n expect(`${INFER_ID_CONSTANT}/${DecodeType.PEOPLE}/${uuidVal}`).toStrictEqual(uuidAgain);\n });\n\n it('verify encoding of orgId', () => {\n const orgId = '24533573-f6aa-429d-b4fe-58aa04a2b630';\n const encodedOrgId: string = inferIdFromUuid(orgId, DecodeType.ORGANIZATION);\n const orgIdAgain = Buffer.from(encodedOrgId, 'base64').toString('binary');\n\n expect(`${INFER_ID_CONSTANT}/${DecodeType.ORGANIZATION}/${orgId}`).toStrictEqual(orgIdAgain);\n });\n});\n\ndescribe('Get endpoint by CALLING_BACKEND tests', () => {\n it('verify invalid calling backend ucm for xsi endpoint', async () => {\n expect(\n await getXsiActionEndpoint(\n webex,\n {\n file: 'testFile',\n method: 'testMethod',\n },\n CALLING_BACKEND.UCM\n )\n ).toBeInstanceOf(Error);\n });\n\n it('verify invalid calling backend wxc for vg endpoint', async () => {\n expect(await getVgActionEndpoint(webex, CALLING_BACKEND.WXC)).toBeInstanceOf(Error);\n });\n});\n\ndescribe('Get XSI Action Endpoint tests', () => {\n const mockWebex: any = {\n request: jest.fn(),\n internal: {\n services: {\n _serviceUrls: {\n wdm: 'https://fake-webex-url.com',\n },\n },\n },\n };\n\n const loggerContext = {\n file: 'testFile',\n method: 'testMethod',\n };\n\n it('should return xsiEndpoint for BWRKS backend when URL ends with /v2.0', async () => {\n const mockResponse = {\n body: {\n devices: [\n {\n settings: {\n broadworksXsiActionsUrl: 'https://fake-broadworks-url.com/v2.0',\n },\n },\n ],\n },\n };\n\n mockWebex.request.mockResolvedValue(mockResponse);\n\n const xsiEndpoint = await getXsiActionEndpoint(mockWebex, loggerContext, CALLING_BACKEND.BWRKS);\n\n expect(mockWebex.request).toHaveBeenCalledTimes(1);\n expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');\n });\n\n it('should return xsiEndpoint for BWRKS backend when URL ends with /v2.0/', async () => {\n const mockResponse = {\n body: {\n devices: [\n {\n settings: {\n broadworksXsiActionsUrl: 'https://fake-broadworks-url.com/v2.0/',\n },\n },\n ],\n },\n };\n\n mockWebex.request.mockResolvedValue(mockResponse);\n\n const xsiEndpoint = await getXsiActionEndpoint(mockWebex, loggerContext, CALLING_BACKEND.BWRKS);\n\n expect(mockWebex.request).toHaveBeenCalledTimes(1);\n expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');\n });\n\n it('should return xsiEndpoint for BWRKS backend when URL does not end with any version', async () => {\n const mockResponse = {\n body: {\n devices: [\n {\n settings: {\n broadworksXsiActionsUrl: 'https://fake-broadworks-url.com',\n },\n },\n ],\n },\n };\n\n mockWebex.request.mockResolvedValue(mockResponse);\n\n const xsiEndpoint = await getXsiActionEndpoint(mockWebex, loggerContext, CALLING_BACKEND.BWRKS);\n\n expect(mockWebex.request).toHaveBeenCalledTimes(1);\n expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');\n });\n});\n\ndescribe('modifySdpForIPv4', () => {\n it('should return original SDP if input is empty', () => {\n expect(modifySdpForIPv4('')).toBe('');\n });\n\n it('should return original SDP if there is no IPv6 c= line', () => {\n const sdp = `v=0\\no=- 12345 67890 IN IP4 192.168.1.1\\n\\ns=Test Session`;\n expect(modifySdpForIPv4(sdp)).toEqual(sdp);\n });\n\n it('should replace IPv6 c= line with default IPv4 if no IPv4 candidate exists', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\\na=candidate:2 1 UDP 2122260223 192.1.1.1 3478 typ host generation 0 network-id 1 network-cost 10`;\n const result = modifySdpForIPv4(sdp);\n expect(result).toEqual(expectedSdp);\n });\n\n it('should replace IPv6 c= line with an existing IPv4 candidate address', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 UDP 2122260223 192.168.1.2 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.168.1.2\\na=candidate:1 1 UDP 2122260223 192.168.1.2 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should correctly handle both UDP and TCP candidates by adding only one IPv4 candidate UDP first', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\n a=candidate:2 1 TCP 2122260223 2001:db8::2 3479 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\\na=candidate:2 1 UDP 2122260223 192.1.1.1 3478 typ host generation 0 network-id 1 network-cost 10\\na=candidate:2 1 TCP 2122260223 2001:db8::2 3479 typ host\\n`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should correctly handle both UDP and TCP candidates by adding only one IPv4 candidate TCP first', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 TCP 2122260223 2001:db8::2 3479 typ host\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 TCP 2122260223 2001:db8::2 3479 typ host\\na=candidate:2 1 TCP 2122260223 192.1.1.1 3479 typ host generation 0 network-id 1 network-cost 10\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should replace all IPv6 c= line if multiple exist', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n c=IN IP6 2001:db8::2\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\\na=candidate:2 1 UDP 2122260223 192.1.1.1 3478 typ host generation 0 network-id 1 network-cost 10`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should not modify SDP if IPv6 c= line is absent and IPv4 candidate already exists', () => {\n const sdp = `v=0\\no=- 12345 67890 IN IP4 192.168.1.1\\ns=Test Session\\nc=IN IP4 192.168.1.1\\na=candidate:1 1 UDP 2122260223 192.168.1.1 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(sdp.trim());\n });\n\n it('should handle malformed SDP gracefully and return unmodified input', () => {\n const malformedSdp = `random text without proper format`;\n\n expect(modifySdpForIPv4(malformedSdp).trim()).toEqual(malformedSdp.trim());\n });\n\n it('should handle an SDP with both IP6 and IP4 c= lines correctly', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n c=IN IP4 192.168.1.3\n a=candidate:1 1 UDP 2122260223 192.168.1.3 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.168.1.3\\nc=IN IP4 192.168.1.3\\na=candidate:1 1 UDP 2122260223 192.168.1.3 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n});\n\ndescribe('uploadLogs', () => {\n let submitLogsMock;\n\n beforeEach(() => {\n // Mock uuid to return a consistent value\n mockUuid.mockReturnValue('mocked-uuid-12345');\n // Mock the metrics manager submit function directly\n mockSubmitRegistrationMetric.mockClear();\n\n // Mock webex.internal.support.submitLogs\n submitLogsMock = jest.fn().mockResolvedValue({trackingid: '1234'});\n webex.internal.support = {\n submitLogs: submitLogsMock,\n };\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n it('should upload logs and return the response', async () => {\n const mockMetaData = {correlationId: 'test-correlation'};\n const logSpy = jest.spyOn(log, 'info');\n\n const result = await uploadLogs(mockMetaData, true);\n\n expect(result).toEqual({trackingid: '1234', feedbackId: 'mocked-uuid-12345'});\n expect(logSpy).toHaveBeenCalledWith(\n `Logs uploaded successfully with feedbackId: mocked-uuid-12345`,\n {\n file: UTILS_FILE,\n method: 'uploadLogs',\n }\n );\n expect(mockSubmitRegistrationMetric).toHaveBeenCalledWith(\n 'web-calling-sdk-upload-logs-success',\n {\n fields: {\n call_id: undefined,\n calling_sdk_version: 'unknown',\n correlation_id: 'test-correlation',\n device_url: undefined,\n feedback_id: 'mocked-uuid-12345',\n mobius_url: undefined,\n tracking_id: '1234',\n },\n tags: {action: 'upload_logs', device_id: undefined, service_indicator: 'calling'},\n type: 'behavioral',\n }\n );\n expect(submitLogsMock).toHaveBeenCalledWith(\n {...mockMetaData, feedbackId: 'mocked-uuid-12345'},\n undefined,\n {type: 'diff'}\n );\n });\n\n it('should log and throw an error if the upload fails', async () => {\n const mockMetaData = {correlationId: 'test-correlation'};\n const mockError = new Error('Upload failed');\n\n // Mock the submitLogs to fail\n submitLogsMock.mockRejectedValueOnce(mockError);\n\n const logSpy = jest.spyOn(log, 'error');\n\n try {\n await uploadLogs(mockMetaData, true);\n // If we get here, the test should fail since we expected an exception\n expect(true).toBe(false); // This will fail the test if no exception is thrown\n } catch (error) {\n expect(error).toBe(mockError);\n expect(logSpy).toHaveBeenCalledWith(`Failed to upload Logs ${JSON.stringify(error)}`, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n expect(mockSubmitRegistrationMetric).toHaveBeenCalledWith(\n 'web-calling-sdk-upload-logs-failed',\n {\n fields: {\n device_url: undefined,\n mobius_url: undefined,\n calling_sdk_version: 'unknown',\n correlation_id: 'test-correlation',\n broadworksCorrelationInfo: undefined,\n tracking_id: undefined,\n feedback_id: 'mocked-uuid-12345',\n call_id: undefined,\n error: `Failed to upload Logs ${JSON.stringify(error)}`,\n },\n tags: {action: 'upload_logs', device_id: undefined, service_indicator: 'calling'},\n type: 'behavioral',\n }\n );\n }\n });\n\n it('should log error and not throw an error if the upload fails with throw exception false', async () => {\n const mockMetaData = {\n correlationId: 'test-correlation',\n broadworksCorrelationInfo: 'test-broadworks-correlation',\n };\n const mockError = new Error('Upload failed');\n\n // Mock the submitLogs to fail\n submitLogsMock.mockRejectedValueOnce(mockError);\n\n const logSpy = jest.spyOn(log, 'error');\n\n const result = await uploadLogs(mockMetaData, false);\n expect(result).toBeUndefined();\n\n expect(logSpy).toHaveBeenCalledWith(`Failed to upload Logs ${JSON.stringify(mockError)}`, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n expect(mockSubmitRegistrationMetric).toHaveBeenCalledWith(\n 'web-calling-sdk-upload-logs-failed',\n {\n fields: {\n device_url: undefined,\n mobius_url: undefined,\n calling_sdk_version: 'unknown',\n correlation_id: 'test-correlation',\n broadworksCorrelationInfo: 'test-broadworks-correlation',\n tracking_id: undefined,\n feedback_id: 'mocked-uuid-12345',\n call_id: undefined,\n error: `Failed to upload Logs ${JSON.stringify(mockError)}`,\n },\n tags: {action: 'upload_logs', device_id: undefined, service_indicator: 'calling'},\n type: 'behavioral',\n }\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_uuid","require","_calling","_Errors","_testUtil","_types","_Logger","_interopRequireDefault","_constants","_types2","_Utils","_voicemailFixture","_constants2","_types3","_SDKConnector","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","jest","mock","v4","fn","mockUuid","uuid","mockSubmitRegistrationMetric","mockEmitterCb","mockRestoreCb","mock429RetryCb","webex","getTestUtilsWebex","SDKConnector","setWebex","internal","metrics","submitClientMetrics","describe","it","defaultMobiusUrl","callingContext","discoveryResponse","getMobiusDiscoveryResponse","backup","uris","filteredUris","filterMobiusUris","expect","primary","toBe","logObj","file","CALL_FILE","method","dummyCorrelationId","beforeEach","clearAllMocks","_asyncToGenerator2","_regenerator","mark","_callee","emitted","retrySpy","payload","abort","wrap","_context","prev","next","statusCode","headers","trackingid","body","device","deviceId","errorCode","handleCallErrors","ERROR_LAYER","CALL_CONTROL","sent","not","toHaveBeenCalled","stop","_callee2","_context2","_callee3","endSpy","_context3","toHaveBeenCalledWith","_callee4","_context4","DEFAULT_KEEPALIVE_INTERVAL","_callee5","_context5","_callee6","_context6","_callee7","_context7","errorCodes","name","ERROR_CODE","TOO_MANY_REQUESTS","deviceErrorCode","retryAfter","message","errorType","ERROR_TYPE","REGISTRATION_ERROR","emitterCbExpected","finalError","retry429CbExpected","restoreCbExpected","logMsg","DEVICE_NOT_FOUND","NOT_FOUND","INTERNAL_SERVER_ERROR","SERVICE_UNAVAILABLE","FORBIDDEN","FORBIDDEN_ERROR","customBodyPresent","undefined","DEVICE_ERROR_CODE","DEVICE_LIMIT_EXCEEDED","DEVICE_CREATION_DISABLED","DEVICE_CREATION_FAILED","UNAUTHORIZED","TOKEN_ERROR","BAD_REQUEST","SERVER_ERROR","DEFAULT","map","stat","_assign","toString","logSpy","spyOn","log","REGISTER_UTIL","each","codeObj","webexPayload","userId","devices","uri","status","lastSeen","addresses","mockErrorEvent","type","context","callClientError","CallingClientError","RegistrationStatus","ACTIVE","handleRegistrationErrors","toBeCalledOnceWith","concat","_callee8","result","_context8","handleCallingClientErrors","_callee9","_context9","_callee0","_context0","dest","CallType","URI","address","deleteCallFromCollection","retryCallback","activeUrl","defaultServiceIndicator","ServiceIndicator","CALLING","call","Call","CallDirection","OUTBOUND","clearAllTimers","useFakeTimers","removeAllListeners","CALL_EVENT_KEYS","CALL_ERROR","code","bodyPresent","subErrorCode","errorLayer","cbExpected","CALL_ERROR_CODE","INVALID_STATUS_UPDATE","DEVICE_NOT_REGISTERED","CALL_NOT_FOUND","ERROR_PROCESSING","USER_BUSY","PARSING_ERROR","MEDIA","NOT_ACCEPTABLE","CALL_REJECTED","NOT_AVAILABLE","done","cbTriggered","mockPayload","correlationId","on","errObj","toMatchObject","error","emit","toBeCalledWith","toBeCalled","logSpyObj","infoSpyObj","warnSpyObj","UTILS_FILE","parseMediaQualityStatistics","stats","getSampleRawAndParsedMediaStats","statsWithVoOneWayDelayAndNw","statsWithoutVoOneWayDelayAndNw","mqStats","original","raw","parsed","_stringify","DUMMY_METRICS","size","toStrictEqual","voiceMailList","getVoicemailListJsonWXC","VoiceMessagingMessages","messageInfoList","messageInfo","sortedVoicemail","getSortedVoicemailList","SORT","ASC","voiceMailListAscOrder","getAscVoicemailListJsonWXC","DESC","voiceMailListDescOrder","getDescVoicemailListJsonWXC","scimUrl","WEBEX_API_BTS","IDENTITY_ENDPOINT_RESOURCE","SCIM_ENDPOINT_RESOURCE","orgId","SCIM_USER_FILTER","callingPartyInfo","resolveContact","then","toBeNull","webexSpy","mockResolvedValue","getSampleScimResponse","userExternalId","$","displayInfo","_callingPartyInfo$use","num","avatarSrc","Resources","photos","value","id","query","encodeURIComponent","objectContaining","_callee1","_callingPartyInfo$use2","warnSpy","_context1","mockRejectedValueOnce","toBeUndefined","_callee10","_callingPartyInfo$use3","scimResponse","_context10","totalResults","mockResolvedValueOnce","_callee11","_callingPartyInfo$use4","_displayInfo","_displayInfo2","phoneNumbers","_context11","mockReset","request","_callingPartyInfo$use5","getSampleMinimumScimResponse","_callingPartyInfo$use6","people","getSamplePeopleListResponse","items","displayName","avatar","Buffer","from","split","pop","_callee12","peopleListResponse","_context12","_callee13","_displayInfo3","_displayInfo4","_displayInfo5","_displayInfo6","_displayInfo7","_displayInfo8","_context13","list","_callee14","_context14","_callee15","_context15","dummyContext","logContext","getEncryptedVoicemail","vmList","getDecryptedVoicemail","decryptedList","JSON","parse","sessionStorage","getItem","beforeAll","vmListStorage","global","Storage","prototype","setItem","key","voicemailList","storeVoicemailList","voicemailFromSessionStorage","toHaveBeenCalledTimes","toEqual","encryptedVm","fetchVoicemailList","messages","moreVMAvailable","slice","uuidVal","hydraId","inferIdFromUuid","DecodeType","PEOPLE","uuidAgain","INFER_ID_CONSTANT","encodedOrgId","ORGANIZATION","orgIdAgain","_callee16","_t","_context16","getXsiActionEndpoint","CALLING_BACKEND","UCM","toBeInstanceOf","Error","_callee17","_t2","_context17","getVgActionEndpoint","WXC","mockWebex","services","_serviceUrls","wdm","loggerContext","_callee18","mockResponse","xsiEndpoint","_context18","settings","broadworksXsiActionsUrl","BWRKS","_callee19","_context19","_callee20","_context20","modifySdpForIPv4","sdp","expectedSdp","trim","malformedSdp","submitLogsMock","mockReturnValue","mockClear","support","submitLogs","afterEach","_callee21","mockMetaData","_context21","uploadLogs","feedbackId","fields","call_id","calling_sdk_version","correlation_id","device_url","feedback_id","mobius_url","tracking_id","tags","action","device_id","service_indicator","_callee22","mockError","_t3","_context22","broadworksCorrelationInfo","_callee23","_context23"],"sources":["Utils.test.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport {v4 as uuid} from 'uuid';\nimport {CallingPartyInfo, MessageInfo} from '../Voicemail/types';\nimport {Call} from '../CallingClient/calling';\nimport {CallError, CallingClientError} from '../Errors';\nimport {\n getTestUtilsWebex,\n getSampleScimResponse,\n getSamplePeopleListResponse,\n getSampleRawAndParsedMediaStats,\n getMobiusDiscoveryResponse,\n getSampleMinimumScimResponse,\n} from './testUtil';\nimport {\n CallDirection,\n CallType,\n DecodeType,\n ServiceIndicator,\n SORT,\n WebexRequestPayload,\n CALLING_BACKEND,\n RegistrationStatus,\n} from './types';\nimport log from '../Logger';\nimport {\n CALL_FILE,\n DUMMY_METRICS,\n UTILS_FILE,\n REGISTER_UTIL,\n DEFAULT_KEEPALIVE_INTERVAL,\n} from '../CallingClient/constants';\nimport {\n CALL_ERROR_CODE,\n ERROR_CODE,\n ERROR_LAYER,\n ERROR_TYPE,\n DEVICE_ERROR_CODE,\n} from '../Errors/types';\nimport {\n handleCallErrors,\n handleRegistrationErrors,\n parseMediaQualityStatistics,\n getSortedVoicemailList,\n resolveContact,\n storeVoicemailList,\n fetchVoicemailList,\n inferIdFromUuid,\n getXsiActionEndpoint,\n getVgActionEndpoint,\n filterMobiusUris,\n modifySdpForIPv4,\n uploadLogs,\n handleCallingClientErrors,\n} from './Utils';\nimport {\n getVoicemailListJsonWXC,\n getAscVoicemailListJsonWXC,\n getDescVoicemailListJsonWXC,\n} from '../Voicemail/voicemailFixture';\nimport {\n IDENTITY_ENDPOINT_RESOURCE,\n INFER_ID_CONSTANT,\n SCIM_ENDPOINT_RESOURCE,\n SCIM_USER_FILTER,\n WEBEX_API_BTS,\n} from './constants';\nimport {CALL_EVENT_KEYS} from '../Events/types';\nimport SDKConnector from '../SDKConnector';\n\n// Mock uuid\njest.mock('uuid', () => ({\n v4: jest.fn(),\n}));\n\nconst mockUuid = uuid as jest.MockedFunction<typeof uuid>;\n\nconst mockSubmitRegistrationMetric = jest.fn();\nconst mockEmitterCb = jest.fn();\nconst mockRestoreCb = jest.fn();\nconst mock429RetryCb = jest.fn();\n\nconst webex = getTestUtilsWebex();\nSDKConnector.setWebex(webex);\nwebex.internal.metrics.submitClientMetrics = mockSubmitRegistrationMetric;\n\ndescribe('Mobius service discovery tests', () => {\n it('test filter mobius uris', () => {\n const defaultMobiusUrl = 'https://mobius.webex.com/api/v1/calling/web';\n const callingContext = '/calling/web/';\n const discoveryResponse = getMobiusDiscoveryResponse();\n\n // add a duplicate which will be filtered out\n discoveryResponse.backup.uris.push(discoveryResponse.backup.uris[0]);\n\n let filteredUris = filterMobiusUris(discoveryResponse, defaultMobiusUrl);\n\n expect(filteredUris.primary.length).toBe(1);\n expect(filteredUris.backup.length).toBe(2);\n expect(filteredUris.primary[0]).toBe(discoveryResponse.primary.uris[0] + callingContext);\n expect(filteredUris.backup[0]).toBe(discoveryResponse.backup.uris[0] + callingContext);\n expect(filteredUris.backup[1]).toBe(defaultMobiusUrl + callingContext);\n\n /** Remove Uris and test if the defaultUrls is returned */\n discoveryResponse.backup.uris = [];\n discoveryResponse.primary.uris = [];\n\n filteredUris = filterMobiusUris(discoveryResponse, defaultMobiusUrl);\n expect(filteredUris.primary.length).toBe(1);\n expect(filteredUris.primary[0]).toBe(defaultMobiusUrl + callingContext);\n\n expect(filteredUris.backup.length).toBe(0);\n });\n});\n\ndescribe('Call Tests - keepalive (handleCallEstablished) cases', () => {\n const logObj = {\n file: CALL_FILE,\n method: 'handleCallErrors',\n };\n\n const dummyCorrelationId = '8a67806f-fc4d-446b-a131-31e71ea5b010';\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('401 during keepalive emits token error and ends call', async () => {\n let emitted = false;\n const retrySpy = jest.fn();\n\n const payload = <WebexRequestPayload>(<unknown>{\n statusCode: 401,\n headers: {trackingid: 't'},\n body: {device: {deviceId: 'd'}, errorCode: 0},\n });\n\n const abort = await handleCallErrors(\n () => {\n emitted = true;\n },\n ERROR_LAYER.CALL_CONTROL,\n retrySpy,\n dummyCorrelationId,\n payload,\n 'handleCallEstablished',\n logObj.file\n );\n\n expect(emitted).toBe(true);\n expect(abort).toBe(true);\n expect(retrySpy).not.toHaveBeenCalled();\n });\n\n it('403 during keepalive emits error and ends call', async () => {\n let emitted = false;\n const retrySpy = jest.fn();\n\n const payload = <WebexRequestPayload>(<unknown>{\n statusCode: 403,\n headers: {trackingid: 't'},\n body: {device: {deviceId: 'd'}, errorCode: 0},\n });\n\n const abort = await handleCallErrors(\n () => {\n emitted = true;\n },\n ERROR_LAYER.CALL_CONTROL,\n retrySpy,\n dummyCorrelationId,\n payload,\n 'handleCallEstablished',\n logObj.file\n );\n\n expect(emitted).toBe(true);\n expect(abort).toBe(true);\n expect(retrySpy).not.toHaveBeenCalled();\n });\n\n it('500 during keepalive with retry-after triggers retryCb with interval', async () => {\n let emitted = false;\n const endSpy = jest.fn();\n const retrySpy = jest.fn();\n\n const payload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n headers: {trackingid: 't', 'retry-after': 2},\n body: {device: {deviceId: 'd'}, errorCode: 0},\n });\n\n await handleCallErrors(\n () => {\n emitted = true;\n },\n ERROR_LAYER.CALL_CONTROL,\n retrySpy,\n dummyCorrelationId,\n payload,\n 'handleCallEstablished',\n logObj.file,\n endSpy\n );\n\n expect(emitted).toBe(true);\n expect(endSpy).not.toHaveBeenCalled();\n expect(retrySpy).toHaveBeenCalledWith(2);\n });\n\n it('500 during keepalive without retry-after triggers retryCb without args', async () => {\n let emitted = false;\n const retrySpy = jest.fn();\n\n const payload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n headers: {trackingid: 't'},\n body: {device: {deviceId: 'd'}, errorCode: 0},\n });\n\n const abort = await handleCallErrors(\n () => {\n emitted = true;\n },\n ERROR_LAYER.CALL_CONTROL,\n retrySpy,\n dummyCorrelationId,\n payload,\n 'handleCallEstablished',\n logObj.file\n );\n\n expect(abort).toBe(false);\n expect(emitted).toBe(true);\n expect(retrySpy).toHaveBeenCalledWith(DEFAULT_KEEPALIVE_INTERVAL);\n });\n\n it('404 during keepalive emits not found and ends call (no retry)', async () => {\n let emitted = false;\n const retrySpy = jest.fn();\n\n const payload = <WebexRequestPayload>(<unknown>{\n statusCode: 404,\n headers: {trackingid: 't'},\n body: {device: {deviceId: 'd'}},\n });\n\n const abort = await handleCallErrors(\n () => {\n emitted = true;\n },\n ERROR_LAYER.CALL_CONTROL,\n retrySpy,\n dummyCorrelationId,\n payload,\n 'handleCallEstablished',\n logObj.file\n );\n\n expect(emitted).toBe(true);\n expect(abort).toBe(true);\n expect(retrySpy).not.toHaveBeenCalled();\n });\n\n it('503 during keepalive with retry-after does not invoke emitterCb and retries with interval', async () => {\n let emitted = false;\n const retrySpy = jest.fn();\n\n const payload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n headers: {trackingid: 't', 'retry-after': 7},\n body: {device: {deviceId: 'd'}, errorCode: 0},\n });\n\n const abort = await handleCallErrors(\n () => {\n emitted = true;\n },\n ERROR_LAYER.CALL_CONTROL,\n retrySpy,\n dummyCorrelationId,\n payload,\n 'handleCallEstablished',\n logObj.file\n );\n\n expect(abort).toBe(false);\n expect(emitted).toBe(false);\n expect(retrySpy).toHaveBeenCalledWith(7);\n });\n\n it('503 during keepalive without retry-after invokes emitterCb and triggers retryCb without args', async () => {\n let emitted = false;\n const retrySpy = jest.fn();\n\n const payload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n headers: {trackingid: 't'},\n body: {device: {deviceId: 'd'}, errorCode: 111},\n });\n\n const abort = await handleCallErrors(\n () => {\n emitted = true;\n },\n ERROR_LAYER.CALL_CONTROL,\n retrySpy,\n dummyCorrelationId,\n payload,\n 'handleCallEstablished',\n logObj.file\n );\n\n expect(abort).toBe(false);\n expect(emitted).toBe(true);\n expect(retrySpy).toHaveBeenCalledWith(DEFAULT_KEEPALIVE_INTERVAL);\n });\n});\n\ndescribe('Registration Tests', () => {\n /**\n * TestCase inputs\n * name: TestCase name\n * code: Response code of type ERROR_CODE\n * bodyPresent: Indicates if response has a body\n * subErrorCode: sub error code of type CALL_ERROR_CODE\n * retryAfter: Indicates if retry-after header is present\n * message: Custom message for the error context\n * type: Error type based on the response code\n * errorLayer: Call control or media layer\n * cbExpected: Indicates if event emitter callback is expected\n * logMsg: log message.\n */\n const errorCodes: {\n name: string;\n statusCode: ERROR_CODE;\n bodyPresent: boolean;\n subErrorCode: CALL_ERROR_CODE;\n retryAfter: number;\n message: string;\n type: ERROR_TYPE;\n errorLayer: ERROR_LAYER;\n cbExpected: boolean;\n logMsg: string;\n }[] = [\n {\n name: 'verify 429 error response',\n statusCode: ERROR_CODE.TOO_MANY_REQUESTS,\n deviceErrorCode: 0,\n retryAfter: 30,\n message: '',\n errorType: ERROR_TYPE.REGISTRATION_ERROR,\n emitterCbExpected: false,\n finalError: false,\n retry429CbExpected: true,\n restoreCbExpected: false,\n logMsg: '429 Too Many Requests',\n },\n {\n name: 'verify 404 error response',\n statusCode: ERROR_CODE.DEVICE_NOT_FOUND,\n deviceErrorCode: 0,\n message: 'Webex Calling is unable to find your device. Sign out, then sign back in',\n errorType: ERROR_TYPE.NOT_FOUND,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '404 Device Not Found',\n },\n {\n name: 'verify 500 error response',\n statusCode: ERROR_CODE.INTERNAL_SERVER_ERROR,\n deviceErrorCode: 0,\n message: 'An unknown error occurred while placing the request. Wait a moment and try again.',\n errorType: ERROR_TYPE.SERVICE_UNAVAILABLE,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '500 Internal Server Error',\n },\n {\n name: 'verify 503 error response',\n statusCode: ERROR_CODE.SERVICE_UNAVAILABLE,\n deviceErrorCode: 0,\n message:\n 'An error occurred on the server while processing the request. Wait a moment and try again.',\n errorType: ERROR_TYPE.SERVICE_UNAVAILABLE,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '503 Service Unavailable',\n },\n {\n name: 'verify 403 response with no response body',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: 0,\n message:\n 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: 'Error response has no body, throwing default error',\n customBodyPresent: true,\n body: undefined,\n },\n {\n name: 'verify 403 response with unknown device.errorCode',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: 0,\n message:\n 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: 'Error code found : 0',\n },\n {\n name: 'verify 403 response with code 101',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: DEVICE_ERROR_CODE.DEVICE_LIMIT_EXCEEDED,\n message: 'User device limit exceeded',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: false,\n finalError: false,\n restoreCbExpected: true,\n retry429CbExpected: false,\n logMsg: 'User device limit exceeded',\n },\n {\n name: 'verify 403 response with code 102',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED,\n message:\n 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg:\n 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.',\n },\n {\n name: 'verify 403 response with code 103',\n statusCode: ERROR_CODE.FORBIDDEN,\n deviceErrorCode: DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED,\n message:\n 'An unknown error occurred while provisioning the device. Wait a moment and try again.',\n errorType: ERROR_TYPE.FORBIDDEN_ERROR,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg:\n 'An unknown error occurred while provisioning the device. Wait a moment and try again.',\n },\n {\n name: 'verify 401 error response',\n statusCode: ERROR_CODE.UNAUTHORIZED,\n deviceErrorCode: 0,\n message: 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n errorType: ERROR_TYPE.TOKEN_ERROR,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '401 Unauthorized',\n },\n {\n name: 'verify 400 error response',\n statusCode: ERROR_CODE.BAD_REQUEST,\n deviceErrorCode: 0,\n message:\n 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data',\n errorType: ERROR_TYPE.SERVER_ERROR,\n emitterCbExpected: true,\n finalError: true,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: '400 Bad Request',\n },\n {\n name: 'verify unknown error response',\n statusCode: 206,\n deviceErrorCode: 0,\n message: 'Unknown error',\n errorType: ERROR_TYPE.DEFAULT,\n emitterCbExpected: true,\n finalError: false,\n restoreCbExpected: false,\n retry429CbExpected: false,\n logMsg: 'Unknown Error',\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n return this.name;\n },\n })\n );\n const logSpy = jest.spyOn(log, 'warn');\n const logObj = {\n file: 'CallingClient',\n method: REGISTER_UTIL,\n };\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n it.each(errorCodes)('%s', (codeObj) => {\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode: codeObj.statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n ...(codeObj.retryAfter && {'retry-after': codeObj.retryAfter.toString()}),\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: codeObj.deviceErrorCode,\n devices: [\n {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n uri: 'https://mobius.webex.com/api/v1/calling/web/',\n status: 'active',\n lastSeen: '2022-04-07T18:00:40Z',\n addresses: ['sip:sipAddress@webex.com'],\n },\n ],\n },\n });\n if (codeObj.customBodyPresent) {\n webexPayload.body = codeObj.body;\n }\n const mockErrorEvent = {\n type: codeObj.errorType,\n message: codeObj.message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n handleRegistrationErrors(webexPayload, mockEmitterCb, logObj, mock429RetryCb, mockRestoreCb);\n if (codeObj.emitterCbExpected) {\n expect(mockEmitterCb).toBeCalledOnceWith(callClientError, codeObj.finalError);\n }\n if (codeObj.restoreCbExpected) {\n expect(mockRestoreCb).toBeCalledOnceWith(webexPayload.body, logObj.method);\n } else {\n expect(mockRestoreCb).not.toHaveBeenCalled();\n }\n\n if (codeObj.retry429CbExpected) {\n expect(mock429RetryCb).toBeCalledOnceWith(codeObj.retryAfter, logObj.method);\n } else {\n expect(mock429RetryCb).not.toHaveBeenCalled();\n }\n\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${codeObj.statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith(codeObj.logMsg, logObj);\n });\n});\n\ndescribe('CallingClient Error Tests', () => {\n const logSpy = jest.spyOn(log, 'warn');\n const logObj = {\n file: 'CallingClient',\n method: 'handleCallingClientErrors',\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('verify 401 error response for calling client', async () => {\n const statusCode = ERROR_CODE.UNAUTHORIZED;\n const message = 'User is unauthorized due to an expired token.';\n const errorType = ERROR_TYPE.TOKEN_ERROR;\n const finalError = true;\n\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: 0,\n },\n });\n\n const mockErrorEvent = {\n type: errorType,\n message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n const result = await handleCallingClientErrors(webexPayload, mockEmitterCb, logObj);\n\n expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);\n expect(result).toBe(finalError);\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith('401 Unauthorized', logObj);\n });\n\n it('verify 500 error response for calling client', async () => {\n const statusCode = ERROR_CODE.INTERNAL_SERVER_ERROR;\n const message =\n 'An unknown error occurred while placing the request. Wait a moment and try again.';\n const errorType = ERROR_TYPE.SERVICE_UNAVAILABLE;\n const finalError = false;\n\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: 0,\n },\n });\n\n const mockErrorEvent = {\n type: errorType,\n message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n const result = await handleCallingClientErrors(webexPayload, mockEmitterCb, logObj);\n\n expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);\n expect(result).toBe(finalError);\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith('500 Internal Server Error', logObj);\n });\n\n it('verify unknown error response for calling client', async () => {\n const statusCode = 206;\n const message = 'Unknown error';\n const errorType = ERROR_TYPE.DEFAULT;\n const finalError = false;\n\n const webexPayload = <WebexRequestPayload>(<unknown>{\n statusCode,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n },\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n errorCode: 0,\n },\n });\n\n const mockErrorEvent = {\n type: errorType,\n message,\n context: logObj,\n };\n\n const callClientError = new CallingClientError(\n mockErrorEvent.message,\n mockErrorEvent.context,\n mockErrorEvent.type,\n RegistrationStatus.ACTIVE\n );\n\n const result = await handleCallingClientErrors(webexPayload, mockEmitterCb, logObj);\n\n expect(mockEmitterCb).toHaveBeenCalledWith(callClientError, finalError);\n expect(result).toBe(finalError);\n expect(logSpy).toHaveBeenCalledWith(`Status code: -> ${statusCode}`, logObj);\n expect(logSpy).toHaveBeenCalledWith('Unknown Error', logObj);\n });\n});\n\ndescribe('Call Tests', () => {\n /* Error flows tests starts */\n const logSpy = jest.spyOn(log, 'warn');\n const logObj = {\n file: CALL_FILE,\n method: 'handleCallErrors',\n };\n\n const deviceId = '55dfb53f-bed2-36da-8e85-cee7f02aa68e';\n const dest = {\n type: CallType.URI,\n address: 'tel:5003',\n };\n\n const deleteCallFromCollection = jest.fn();\n const retryCallback = jest.fn();\n const activeUrl = 'FakeActiveUrl';\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const call = new Call(\n activeUrl,\n webex,\n dest,\n CallDirection.OUTBOUND,\n deviceId,\n deleteCallFromCollection,\n defaultServiceIndicator\n );\n\n const dummyCorrelationId = '8a67806f-fc4d-446b-a131-31e71ea5b010';\n\n beforeEach(() => {\n jest.clearAllTimers();\n jest.useFakeTimers();\n call.removeAllListeners(CALL_EVENT_KEYS.CALL_ERROR);\n });\n\n /**\n * TestCase inputs\n * name: TestCase name\n * code: Response code of type ERROR_CODE\n * bodyPresent: Indicates if response has a body\n * subErrorCode: sub error code of type CALL_ERROR_CODE\n * retryAfter: Indicates if retry-after header is present\n * message: Custom message for the error context\n * type: Error type based on the response code\n * errorLayer: Call control or media layer\n * cbExpected: Indicates if event emitter callback is expected\n * logMsg: log message.\n */\n const errorCodes: {\n name: string;\n code: ERROR_CODE;\n bodyPresent: boolean;\n subErrorCode: CALL_ERROR_CODE;\n retryAfter: number;\n message: string;\n type: ERROR_TYPE;\n errorLayer: ERROR_LAYER;\n cbExpected: boolean;\n logMsg: string;\n }[] = [\n /* 401 Unauthorized. */\n {\n name: 'verify 401 error response',\n code: 401,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n type: ERROR_TYPE.TOKEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: '401 Unauthorized',\n },\n /* 403 error code from here. */\n // Without body\n {\n name: 'verify 403 error response without body',\n code: 403,\n bodyPresent: false,\n subErrorCode: 0,\n retryAfter: 0,\n message:\n 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Error response has no body, throwing default error',\n },\n // error body with sub error code 111\n {\n name: 'verify 403 error response with code 111',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.INVALID_STATUS_UPDATE,\n retryAfter: 0,\n message:\n 'An invalid status update has been received for the call. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 112\n {\n name: 'verify 403 error response with code 112',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.DEVICE_NOT_REGISTERED,\n retryAfter: 0,\n message:\n 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 113\n {\n name: 'verify 403 error response with code 113',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_NOT_FOUND,\n retryAfter: 0,\n message: 'Call is not found on the server. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 114\n {\n name: 'verify 403 error response with code 114',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.ERROR_PROCESSING,\n retryAfter: 0,\n message:\n 'An error occurred while processing the call on the server. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 115\n {\n name: 'verify 403 error response with code 115',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.USER_BUSY,\n retryAfter: 0,\n message: 'Called user is busy.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 116\n {\n name: 'verify 403 error response with code 116',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.PARSING_ERROR,\n retryAfter: 0,\n message:\n 'An error occurred while parsing the provided information. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 118\n {\n name: 'verify 403 error response with code 118',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_ACCEPTABLE,\n retryAfter: 0,\n message:\n 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 119\n {\n name: 'verify 403 error response with code 119',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_REJECTED,\n retryAfter: 0,\n message:\n 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with sub error code 120\n {\n name: 'verify 403 error response with code 120',\n code: 403,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_AVAILABLE,\n retryAfter: 0,\n message:\n 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n // error body with unknown/unhandled sub error code\n {\n name: 'verify 403 error response with unknown error code',\n code: 403,\n bodyPresent: true,\n subErrorCode: 999,\n retryAfter: 0,\n message: 'An unknown error occurred. Wait a moment and try again.',\n type: ERROR_TYPE.FORBIDDEN_ERROR,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->403',\n },\n /* 403 error code till here. */\n /* 503 error code from here. */\n // Without body\n {\n name: 'verify 503 error response without body',\n code: 503,\n bodyPresent: false,\n subErrorCode: 0,\n retryAfter: 0,\n message:\n 'An error occurred on the server while processing the request. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Error response has no body, throwing default error',\n },\n // error body with sub error code 111\n {\n name: 'verify 503 error response with code 111',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.INVALID_STATUS_UPDATE,\n retryAfter: 0,\n message:\n 'An invalid status update has been received for the call. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 112\n {\n name: 'verify 503 error response with code 112',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.DEVICE_NOT_REGISTERED,\n retryAfter: 0,\n message:\n 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 113\n {\n name: 'verify 503 error response with code 113',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_NOT_FOUND,\n retryAfter: 0,\n message: 'Call is not found on the server. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 114\n {\n name: 'verify 503 error response with code 114',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.ERROR_PROCESSING,\n retryAfter: 0,\n message:\n 'An error occurred while processing the call on the server. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 115\n {\n name: 'verify 503 error response with code 115',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.USER_BUSY,\n retryAfter: 0,\n message: 'Called user is busy.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 116\n {\n name: 'verify 503 error response with code 116',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.PARSING_ERROR,\n retryAfter: 0,\n message:\n 'An error occurred while parsing the provided information. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 118\n {\n name: 'verify 503 error response with code 118',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_ACCEPTABLE,\n retryAfter: 0,\n message:\n 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 119\n {\n name: 'verify 503 error response with code 119',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.CALL_REJECTED,\n retryAfter: 0,\n message:\n 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with sub error code 120\n {\n name: 'verify 503 error response with code 120',\n code: 503,\n bodyPresent: true,\n subErrorCode: CALL_ERROR_CODE.NOT_AVAILABLE,\n retryAfter: 0,\n message:\n 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // error body with unknown/unhandled sub error code\n {\n name: 'verify 503 error response with unknown error code',\n code: 503,\n bodyPresent: true,\n subErrorCode: 999,\n retryAfter: 0,\n message: 'An unknown error occurred. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: 'Status code: ->503',\n },\n // with retry-after\n {\n name: 'verify 503 error response with retry-after',\n code: 503,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 60,\n message: 'An unknown error occurred. Wait a moment and try again.',\n type: ERROR_TYPE.SERVICE_UNAVAILABLE,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: false,\n logMsg: 'Retry Interval received: 60',\n },\n /* 503 error code till here. */\n /* 404 Not Found. */\n {\n name: 'verify 404 error response',\n code: 404,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'Call is no longer active. Wait a moment and try again.',\n type: ERROR_TYPE.NOT_FOUND,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: true,\n logMsg: '404 Call Not Found',\n },\n /* 500 Internal Server Error. */\n {\n name: 'verify 500 error response',\n code: 500,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'An unknown error occurred in the call. Wait a moment and try again.',\n type: ERROR_TYPE.SERVER_ERROR,\n errorLayer: ERROR_LAYER.MEDIA,\n cbExpected: true,\n logMsg: '500 Internal Server Error',\n },\n /* Unknown error code. */\n {\n name: 'verify unknown error response',\n code: 0,\n bodyPresent: true,\n subErrorCode: 0,\n retryAfter: 0,\n message: 'An unknown error occurred in the call. Wait a moment and try again.',\n type: ERROR_TYPE.DEFAULT,\n errorLayer: ERROR_LAYER.CALL_CONTROL,\n cbExpected: false,\n logMsg: 'Unknown Error',\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n return this.name;\n },\n })\n );\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n it.each(errorCodes)('%s', (codeObj, done: any) => {\n let cbTriggered = false;\n const mockPayload = <WebexRequestPayload>(<unknown>{\n statusCode: codeObj.code,\n headers: {\n trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31',\n ...(codeObj.retryAfter && {'retry-after': codeObj.retryAfter}),\n },\n ...(codeObj.bodyPresent && {\n body: {\n device: {\n deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010',\n },\n ...(codeObj.subErrorCode ? {errorCode: codeObj.subErrorCode} : {}),\n },\n }),\n });\n\n const mockErrorEvent = {\n type: codeObj.type,\n message: codeObj.message,\n context: logObj,\n correlationId: dummyCorrelationId,\n errorLayer: codeObj.errorLayer,\n };\n\n if (codeObj.cbExpected) {\n call.on(CALL_EVENT_KEYS.CALL_ERROR, (errObj) => {\n expect(errObj).toMatchObject(mockErrorEvent);\n done();\n });\n } else {\n done();\n }\n\n handleCallErrors(\n (error: CallError) => {\n call.emit(CALL_EVENT_KEYS.CALL_ERROR, error);\n cbTriggered = true;\n },\n codeObj.errorLayer,\n retryCallback,\n dummyCorrelationId,\n mockPayload,\n logObj.method,\n logObj.file\n );\n\n expect(cbTriggered).toBe(codeObj.cbExpected);\n expect(logSpy).toBeCalledWith(codeObj.logMsg, logObj);\n if (codeObj.retryAfter) {\n expect(retryCallback).toBeCalledOnceWith(codeObj.retryAfter);\n } else {\n expect(retryCallback).not.toBeCalled();\n }\n });\n});\n\ndescribe('parseMediaQualityStatistics tests', () => {\n const logSpyObj = jest.spyOn(log, 'log');\n const infoSpyObj = jest.spyOn(log, 'info');\n const warnSpyObj = jest.spyOn(log, 'warn');\n const logObj = {\n file: UTILS_FILE,\n method: parseMediaQualityStatistics.name,\n };\n const stats = getSampleRawAndParsedMediaStats();\n const {statsWithVoOneWayDelayAndNw} = stats;\n const {statsWithoutVoOneWayDelayAndNw} = stats;\n\n /**\n * TestCase inputs\n * name: TestCase name\n * original: Original RTCStatsReport\n * parsed: Parsed stats in form of CallRtpStats\n * logSpy: SpyInstance on the log object\n * logMsg: Expected log message.\n */\n const mqStats: {\n name: string;\n original: unknown;\n parsed: unknown;\n logSpy: unknown;\n logMsg: string;\n }[] = [\n {\n name: 'Valid stats with non-zero VoOneWayDelayMs and networkType vpn',\n original: statsWithVoOneWayDelayAndNw.raw,\n parsed: statsWithVoOneWayDelayAndNw.parsed,\n logSpy: logSpyObj,\n logMsg: JSON.stringify(statsWithVoOneWayDelayAndNw.parsed),\n },\n {\n name: 'Valid stats with zero VoOneWayDelayMs and undefined networkType',\n original: statsWithoutVoOneWayDelayAndNw.raw,\n parsed: statsWithoutVoOneWayDelayAndNw.parsed,\n logSpy: logSpyObj,\n logMsg: JSON.stringify(statsWithoutVoOneWayDelayAndNw.parsed),\n },\n {\n name: 'undefined stats passed to parse function',\n original: undefined,\n parsed: DUMMY_METRICS,\n logSpy: infoSpyObj,\n logMsg: 'RTCStatsReport is null, adding dummy stats',\n },\n {\n name: 'invalid metrics passed when outbound call is disconnected before a connect',\n original: {size: 26},\n parsed: DUMMY_METRICS,\n logSpy: warnSpyObj,\n logMsg: 'Caught error while parsing RTP stats, TypeError: stats.forEach is not a function',\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n return this.name;\n },\n })\n );\n\n it.each(mqStats)('%s', (stat) => {\n const result = parseMediaQualityStatistics(stat.original as unknown as RTCStatsReport);\n\n expect(result).toStrictEqual(stat.parsed);\n expect(stat.logSpy).toBeCalledOnceWith(stat.logMsg, logObj);\n });\n});\n\ndescribe('Voicemail Sorting Tests', () => {\n /* Tests Voicemail sorting in ascending and descending orders */\n\n it('verify VoiceMails sorting in Ascending order', () => {\n const voiceMailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n const sortedVoicemail = getSortedVoicemailList(voiceMailList, SORT.ASC);\n const voiceMailListAscOrder =\n getAscVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo;\n\n expect(sortedVoicemail).toStrictEqual(voiceMailListAscOrder);\n });\n\n it('verify VoiceMails sorting in Descending Order', () => {\n const voiceMailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n const sortedVoicemail = getSortedVoicemailList(voiceMailList, SORT.DESC);\n const voiceMailListDescOrder =\n getDescVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo;\n\n expect(sortedVoicemail).toStrictEqual(voiceMailListDescOrder);\n });\n});\n\ndescribe('resolveContact tests', () => {\n const scimUrl = `${WEBEX_API_BTS}/${IDENTITY_ENDPOINT_RESOURCE}/${SCIM_ENDPOINT_RESOURCE}/${webex.internal.device.orgId}/${SCIM_USER_FILTER}`;\n\n it('Invalid CallingPartyInfo', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n resolveContact(callingPartyInfo).then((result) => {\n expect(result).toBeNull();\n });\n });\n\n it('Resolve by userExternalId', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValue({\n statusCode: 200,\n body: getSampleScimResponse(),\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toStrictEqual('Cathy');\n expect(displayInfo?.num).toStrictEqual('5008');\n expect(displayInfo?.avatarSrc).toStrictEqual(\n getSampleScimResponse().Resources[0].photos[0].value\n );\n expect(displayInfo?.id).toStrictEqual(getSampleScimResponse().Resources[0].id);\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n });\n\n it('Resolve by userExternalId - SCIM exception', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const warnSpy = jest.spyOn(log, 'warn');\n\n const webexSpy = jest.spyOn(webex, 'request').mockRejectedValueOnce({statusCode: 500});\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(displayInfo?.name).toBeUndefined();\n expect(warnSpy).toHaveBeenCalledWith('Error response: - 500', {\n file: UTILS_FILE,\n method: 'resolveCallerIdDisplay',\n });\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n\n it('Resolve by userExternalId - totalResults zero', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const scimResponse = getSampleScimResponse();\n\n scimResponse.totalResults = '0';\n\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValueOnce({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n const displayInfo = await resolveContact(callingPartyInfo);\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(displayInfo?.name).toBeUndefined();\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n\n scimResponse.totalResults = '1';\n });\n\n it('Resolve by userExternalId - no primary number and no phone numbers', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const scimResponse = getSampleScimResponse();\n\n scimResponse.Resources[0].phoneNumbers[1].primary = false;\n\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValueOnce({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n let displayInfo = await resolveContact(callingPartyInfo);\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n expect(displayInfo?.num).toStrictEqual('5008');\n webexSpy.mockReset();\n\n scimResponse.Resources[0].phoneNumbers[1].primary = true;\n\n /* No phone numbers */\n const {phoneNumbers} = scimResponse.Resources[0];\n\n scimResponse.Resources[0].phoneNumbers = [];\n\n webex.request.mockResolvedValueOnce({\n statusCode: 200,\n body: scimResponse,\n });\n\n displayInfo = await resolveContact(callingPartyInfo);\n expect(displayInfo?.num).toBeUndefined();\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n\n scimResponse.Resources[0].phoneNumbers = phoneNumbers;\n });\n\n it('Resolve by userExternalId - no photo', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const scimResponse = getSampleScimResponse();\n\n scimResponse.Resources[0].photos = [];\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValue({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toStrictEqual('Cathy');\n expect(displayInfo?.num).toStrictEqual('5008');\n expect(displayInfo?.avatarSrc).toStrictEqual('unknown');\n expect(displayInfo?.id).toStrictEqual(getSampleScimResponse().Resources[0].id);\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n });\n\n it('Resolve with minimal response from SCIM', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const scimResponse = getSampleMinimumScimResponse();\n\n // scimResponse.Resources[0].photos = [];\n const webexSpy = jest.spyOn(webex, 'request').mockResolvedValue({\n statusCode: 200,\n body: scimResponse,\n });\n\n callingPartyInfo.userExternalId = {$: 'userExternalId'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toBeUndefined();\n expect(displayInfo?.num).toBeUndefined();\n expect(displayInfo?.avatarSrc).toStrictEqual('unknown');\n expect(displayInfo?.id).toStrictEqual(getSampleMinimumScimResponse().Resources[0].id);\n\n const query = scimUrl + encodeURIComponent(`id eq \"${callingPartyInfo.userExternalId?.$}\"`);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({uri: query}));\n });\n });\n\n it('Resolve by name', () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n const webexSpy = jest\n .spyOn(webex.people, 'list')\n .mockResolvedValue(getSamplePeopleListResponse());\n\n callingPartyInfo.name = {$: 'Name'};\n resolveContact(callingPartyInfo).then((displayInfo) => {\n expect(displayInfo?.name).toStrictEqual(getSamplePeopleListResponse().items[0].displayName);\n expect(displayInfo?.num).toStrictEqual(\n getSamplePeopleListResponse().items[0].phoneNumbers[0].value\n );\n expect(displayInfo?.avatarSrc).toStrictEqual(getSamplePeopleListResponse().items[0].avatar);\n expect(displayInfo?.id).toStrictEqual(\n Buffer.from(getSamplePeopleListResponse().items[0].id, 'base64')\n .toString('binary')\n .split('/')\n .pop()\n );\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n });\n });\n\n it('Resolve by name - Empty Info', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {items} = peopleListResponse;\n\n peopleListResponse.items = [];\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(displayInfo?.name).toBeUndefined();\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n\n peopleListResponse.items = items;\n });\n\n it('Resolve by name - ID as plain UUID instead of part of URI', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {id} = peopleListResponse.items[0];\n\n /* Yjg1M2JiZDEtMTEzNi00ZDI1LTkzOGQtMGMzNzUzMWIxMjMz -> b853bbd1-1136-4d25-938d-0c37531b1233 */\n peopleListResponse.items[0].id = 'Yjg1M2JiZDEtMTEzNi00ZDI1LTkzOGQtMGMzNzUzMWIxMjMz';\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n let displayInfo = await resolveContact(callingPartyInfo);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(displayInfo?.num).toStrictEqual(peopleListResponse.items[0].phoneNumbers[0].value);\n expect(displayInfo?.avatarSrc).toStrictEqual(peopleListResponse.items[0].avatar);\n expect(displayInfo?.id).toStrictEqual(\n Buffer.from(peopleListResponse.items[0].id, 'base64').toString('binary').split('/').pop()\n );\n webexSpy.mockReset();\n\n /* Also test empty id */\n peopleListResponse.items[0].id = '';\n\n webex.people.list.mockResolvedValueOnce(peopleListResponse);\n\n displayInfo = await resolveContact(callingPartyInfo);\n expect(displayInfo?.id).toStrictEqual('');\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n\n peopleListResponse.items[0].id = id;\n });\n\n it('Resolve by name - Phone numbers no match for type - work', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {phoneNumbers} = peopleListResponse.items[0];\n\n peopleListResponse.items[0].phoneNumbers[0].type = 'mobile';\n peopleListResponse.items[0].phoneNumbers[1].type = 'mobile';\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(displayInfo?.num).toStrictEqual(peopleListResponse.items[0].phoneNumbers[0].value);\n expect(displayInfo?.avatarSrc).toStrictEqual(peopleListResponse.items[0].avatar);\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n\n peopleListResponse.items[0].phoneNumbers = phoneNumbers;\n });\n\n it('Resolve by name - Phone numbers empty', async () => {\n const callingPartyInfo = {} as CallingPartyInfo;\n\n const peopleListResponse = getSamplePeopleListResponse();\n const {phoneNumbers} = peopleListResponse.items[0];\n\n peopleListResponse.items[0].phoneNumbers = [];\n\n const webexSpy = jest.spyOn(webex.people, 'list').mockResolvedValueOnce(peopleListResponse);\n\n callingPartyInfo.name = {$: 'Name'};\n const displayInfo = await resolveContact(callingPartyInfo);\n\n expect(webexSpy).toBeCalledOnceWith(expect.objectContaining({displayName: 'Name'}));\n expect(displayInfo?.name).toStrictEqual(peopleListResponse.items[0].displayName);\n expect(displayInfo?.num).toBeUndefined();\n expect(displayInfo?.avatarSrc).toStrictEqual(peopleListResponse.items[0].avatar);\n\n peopleListResponse.items[0].phoneNumbers = phoneNumbers;\n });\n});\n\ndescribe('Store and Fetch voicemail tests', () => {\n /* Tests Voicemail pagination - storing voicemail list to and fetching from session storage */\n const dummyContext = 'dummy';\n const logContext = {\n file: 'voicemail',\n method: 'fetchVoicemail',\n };\n\n const getEncryptedVoicemail = (vmList: MessageInfo[]) => {\n return Buffer.from(JSON.stringify(vmList), 'utf8').toString('base64');\n };\n\n const getDecryptedVoicemail = () => {\n const decryptedList = JSON.parse(\n Buffer.from(sessionStorage.getItem(dummyContext) as string, 'base64').toString('utf8')\n );\n\n return decryptedList;\n };\n\n beforeAll(() => {\n // Mock storage\n const vmListStorage = {};\n\n global.Storage.prototype.setItem = jest.fn((key, value) => {\n vmListStorage[key] = value;\n });\n global.Storage.prototype.getItem = jest.fn((key) => vmListStorage[key]);\n });\n\n it('verify saving Voicemails in session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n storeVoicemailList(dummyContext, voicemailList);\n const voicemailFromSessionStorage = getDecryptedVoicemail();\n\n expect(global.sessionStorage.setItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual(voicemailList);\n });\n\n it('verify fetching all 5 voicemails from session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 0, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({messages: voicemailList, moreVMAvailable: false});\n });\n\n it('verify fetching first 3 VoiceMails from session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 0, 3, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({\n messages: voicemailList.slice(0, 3),\n moreVMAvailable: true,\n });\n });\n\n it('verify fetching 2nd and 3rd Voicemails from session storage', () => {\n const voicemailList = <MessageInfo[]>(\n (<unknown>getVoicemailListJsonWXC.body.VoiceMessagingMessages.messageInfoList.messageInfo)\n );\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 2, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({\n messages: voicemailList.slice(1, 3),\n moreVMAvailable: true,\n });\n });\n\n it('verify fetch Voicemails with offset limit more than the available ones from session storage', () => {\n const voicemailList = <MessageInfo[]>[];\n\n const encryptedVm = getEncryptedVoicemail(voicemailList);\n\n global.sessionStorage.setItem(dummyContext, encryptedVm.toString());\n\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({\n messages: voicemailList.slice(1, 5),\n moreVMAvailable: false,\n });\n });\n\n it('verify fetching Voicemails when it is []', () => {\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toHaveBeenCalledTimes(1);\n\n expect(voicemailFromSessionStorage).toEqual({messages: [], moreVMAvailable: false});\n });\n\n it('verify fetching Voicemails when there is exception', () => {\n const voiceMailList = '$%%ˆ';\n const logSpy = jest.spyOn(log, 'warn');\n\n global.sessionStorage.setItem(dummyContext, voiceMailList);\n const voicemailFromSessionStorage = fetchVoicemailList(dummyContext, 1, 5, logContext);\n\n expect(global.Storage.prototype.getItem).toBeCalledOnceWith('dummy');\n\n expect(logSpy).toHaveBeenCalledTimes(2);\n expect(logSpy).toHaveBeenCalledWith(\n 'Caught exception while fetching voicemail from storage. SyntaxError: Unexpected end of JSON input',\n logContext\n );\n expect(logSpy).toHaveBeenCalledWith('422 Exception has occurred', {});\n expect(voicemailFromSessionStorage).toEqual({messages: [], moreVMAvailable: false});\n });\n});\n\ndescribe('Infer id from UUID Tests', () => {\n /* Tests conversion of UUID to hydra Id */\n\n it('verify encoding of userId to personId', () => {\n const uuidVal = '14533573-f6aa-429d-b4fe-58aa04a2b631';\n const hydraId: string = inferIdFromUuid(uuidVal, DecodeType.PEOPLE);\n const uuidAgain = Buffer.from(hydraId, 'base64').toString('binary');\n\n expect(`${INFER_ID_CONSTANT}/${DecodeType.PEOPLE}/${uuidVal}`).toStrictEqual(uuidAgain);\n });\n\n it('verify encoding of orgId', () => {\n const orgId = '24533573-f6aa-429d-b4fe-58aa04a2b630';\n const encodedOrgId: string = inferIdFromUuid(orgId, DecodeType.ORGANIZATION);\n const orgIdAgain = Buffer.from(encodedOrgId, 'base64').toString('binary');\n\n expect(`${INFER_ID_CONSTANT}/${DecodeType.ORGANIZATION}/${orgId}`).toStrictEqual(orgIdAgain);\n });\n});\n\ndescribe('Get endpoint by CALLING_BACKEND tests', () => {\n it('verify invalid calling backend ucm for xsi endpoint', async () => {\n expect(\n await getXsiActionEndpoint(\n webex,\n {\n file: 'testFile',\n method: 'testMethod',\n },\n CALLING_BACKEND.UCM\n )\n ).toBeInstanceOf(Error);\n });\n\n it('verify invalid calling backend wxc for vg endpoint', async () => {\n expect(await getVgActionEndpoint(webex, CALLING_BACKEND.WXC)).toBeInstanceOf(Error);\n });\n});\n\ndescribe('Get XSI Action Endpoint tests', () => {\n const mockWebex: any = {\n request: jest.fn(),\n internal: {\n services: {\n _serviceUrls: {\n wdm: 'https://fake-webex-url.com',\n },\n },\n },\n };\n\n const loggerContext = {\n file: 'testFile',\n method: 'testMethod',\n };\n\n it('should return xsiEndpoint for BWRKS backend when URL ends with /v2.0', async () => {\n const mockResponse = {\n body: {\n devices: [\n {\n settings: {\n broadworksXsiActionsUrl: 'https://fake-broadworks-url.com/v2.0',\n },\n },\n ],\n },\n };\n\n mockWebex.request.mockResolvedValue(mockResponse);\n\n const xsiEndpoint = await getXsiActionEndpoint(mockWebex, loggerContext, CALLING_BACKEND.BWRKS);\n\n expect(mockWebex.request).toHaveBeenCalledTimes(1);\n expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');\n });\n\n it('should return xsiEndpoint for BWRKS backend when URL ends with /v2.0/', async () => {\n const mockResponse = {\n body: {\n devices: [\n {\n settings: {\n broadworksXsiActionsUrl: 'https://fake-broadworks-url.com/v2.0/',\n },\n },\n ],\n },\n };\n\n mockWebex.request.mockResolvedValue(mockResponse);\n\n const xsiEndpoint = await getXsiActionEndpoint(mockWebex, loggerContext, CALLING_BACKEND.BWRKS);\n\n expect(mockWebex.request).toHaveBeenCalledTimes(1);\n expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');\n });\n\n it('should return xsiEndpoint for BWRKS backend when URL does not end with any version', async () => {\n const mockResponse = {\n body: {\n devices: [\n {\n settings: {\n broadworksXsiActionsUrl: 'https://fake-broadworks-url.com',\n },\n },\n ],\n },\n };\n\n mockWebex.request.mockResolvedValue(mockResponse);\n\n const xsiEndpoint = await getXsiActionEndpoint(mockWebex, loggerContext, CALLING_BACKEND.BWRKS);\n\n expect(mockWebex.request).toHaveBeenCalledTimes(1);\n expect(xsiEndpoint).toBe('https://fake-broadworks-url.com');\n });\n});\n\ndescribe('modifySdpForIPv4', () => {\n it('should return original SDP if input is empty', () => {\n expect(modifySdpForIPv4('')).toBe('');\n });\n\n it('should return original SDP if there is no IPv6 c= line', () => {\n const sdp = `v=0\\no=- 12345 67890 IN IP4 192.168.1.1\\n\\ns=Test Session`;\n expect(modifySdpForIPv4(sdp)).toEqual(sdp);\n });\n\n it('should replace IPv6 c= line with default IPv4 if no IPv4 candidate exists', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\\na=candidate:2 1 UDP 2122260223 192.1.1.1 3478 typ host generation 0 network-id 1 network-cost 10`;\n const result = modifySdpForIPv4(sdp);\n expect(result).toEqual(expectedSdp);\n });\n\n it('should replace IPv6 c= line with an existing IPv4 candidate address', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 UDP 2122260223 192.168.1.2 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.168.1.2\\na=candidate:1 1 UDP 2122260223 192.168.1.2 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should correctly handle both UDP and TCP candidates by adding only one IPv4 candidate UDP first', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\n a=candidate:2 1 TCP 2122260223 2001:db8::2 3479 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\\na=candidate:2 1 UDP 2122260223 192.1.1.1 3478 typ host generation 0 network-id 1 network-cost 10\\na=candidate:2 1 TCP 2122260223 2001:db8::2 3479 typ host\\n`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should correctly handle both UDP and TCP candidates by adding only one IPv4 candidate TCP first', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n a=candidate:1 1 TCP 2122260223 2001:db8::2 3479 typ host\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 TCP 2122260223 2001:db8::2 3479 typ host\\na=candidate:2 1 TCP 2122260223 192.1.1.1 3479 typ host generation 0 network-id 1 network-cost 10\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should replace all IPv6 c= line if multiple exist', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n c=IN IP6 2001:db8::2\n a=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.1.1.1\\nc=IN IP4 192.1.1.1\\na=candidate:1 1 UDP 2122260223 2001:db8::1 3478 typ host\\na=candidate:2 1 UDP 2122260223 192.1.1.1 3478 typ host generation 0 network-id 1 network-cost 10`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n\n it('should not modify SDP if IPv6 c= line is absent and IPv4 candidate already exists', () => {\n const sdp = `v=0\\no=- 12345 67890 IN IP4 192.168.1.1\\ns=Test Session\\nc=IN IP4 192.168.1.1\\na=candidate:1 1 UDP 2122260223 192.168.1.1 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(sdp.trim());\n });\n\n it('should handle malformed SDP gracefully and return unmodified input', () => {\n const malformedSdp = `random text without proper format`;\n\n expect(modifySdpForIPv4(malformedSdp).trim()).toEqual(malformedSdp.trim());\n });\n\n it('should handle an SDP with both IP6 and IP4 c= lines correctly', () => {\n const sdp = `v=0\n o=- 12345 67890 IN IP6 2001:db8::1\n s=Test Session\n c=IN IP6 2001:db8::1\n c=IN IP4 192.168.1.3\n a=candidate:1 1 UDP 2122260223 192.168.1.3 3478 typ host`;\n\n const expectedSdp = `v=0\\no=- 12345 67890 IN IP6 2001:db8::1\\ns=Test Session\\nc=IN IP4 192.168.1.3\\nc=IN IP4 192.168.1.3\\na=candidate:1 1 UDP 2122260223 192.168.1.3 3478 typ host`;\n\n expect(modifySdpForIPv4(sdp).trim()).toEqual(expectedSdp.trim());\n });\n});\n\ndescribe('uploadLogs', () => {\n let submitLogsMock;\n\n beforeEach(() => {\n // Mock uuid to return a consistent value\n mockUuid.mockReturnValue('mocked-uuid-12345');\n // Mock the metrics manager submit function directly\n mockSubmitRegistrationMetric.mockClear();\n\n // Mock webex.internal.support.submitLogs\n submitLogsMock = jest.fn().mockResolvedValue({trackingid: '1234'});\n webex.internal.support = {\n submitLogs: submitLogsMock,\n };\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n it('should upload logs and return the response', async () => {\n const mockMetaData = {correlationId: 'test-correlation'};\n const logSpy = jest.spyOn(log, 'info');\n\n const result = await uploadLogs(mockMetaData, true);\n\n expect(result).toEqual({trackingid: '1234', feedbackId: 'mocked-uuid-12345'});\n expect(logSpy).toHaveBeenCalledWith(\n `Logs uploaded successfully with feedbackId: mocked-uuid-12345`,\n {\n file: UTILS_FILE,\n method: 'uploadLogs',\n }\n );\n expect(mockSubmitRegistrationMetric).toHaveBeenCalledWith(\n 'web-calling-sdk-upload-logs-success',\n {\n fields: {\n call_id: undefined,\n calling_sdk_version: 'unknown',\n correlation_id: 'test-correlation',\n device_url: undefined,\n feedback_id: 'mocked-uuid-12345',\n mobius_url: undefined,\n tracking_id: '1234',\n },\n tags: {action: 'upload_logs', device_id: undefined, service_indicator: 'calling'},\n type: 'behavioral',\n }\n );\n expect(submitLogsMock).toHaveBeenCalledWith(\n {...mockMetaData, feedbackId: 'mocked-uuid-12345'},\n undefined,\n {type: 'diff'}\n );\n });\n\n it('should log and throw an error if the upload fails', async () => {\n const mockMetaData = {correlationId: 'test-correlation'};\n const mockError = new Error('Upload failed');\n\n // Mock the submitLogs to fail\n submitLogsMock.mockRejectedValueOnce(mockError);\n\n const logSpy = jest.spyOn(log, 'error');\n\n try {\n await uploadLogs(mockMetaData, true);\n // If we get here, the test should fail since we expected an exception\n expect(true).toBe(false); // This will fail the test if no exception is thrown\n } catch (error) {\n expect(error).toBe(mockError);\n expect(logSpy).toHaveBeenCalledWith(`Failed to upload Logs ${JSON.stringify(error)}`, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n expect(mockSubmitRegistrationMetric).toHaveBeenCalledWith(\n 'web-calling-sdk-upload-logs-failed',\n {\n fields: {\n device_url: undefined,\n mobius_url: undefined,\n calling_sdk_version: 'unknown',\n correlation_id: 'test-correlation',\n broadworksCorrelationInfo: undefined,\n tracking_id: undefined,\n feedback_id: 'mocked-uuid-12345',\n call_id: undefined,\n error: `Failed to upload Logs ${JSON.stringify(error)}`,\n },\n tags: {action: 'upload_logs', device_id: undefined, service_indicator: 'calling'},\n type: 'behavioral',\n }\n );\n }\n });\n\n it('should log error and not throw an error if the upload fails with throw exception false', async () => {\n const mockMetaData = {\n correlationId: 'test-correlation',\n broadworksCorrelationInfo: 'test-broadworks-correlation',\n };\n const mockError = new Error('Upload failed');\n\n // Mock the submitLogs to fail\n submitLogsMock.mockRejectedValueOnce(mockError);\n\n const logSpy = jest.spyOn(log, 'error');\n\n const result = await uploadLogs(mockMetaData, false);\n expect(result).toBeUndefined();\n\n expect(logSpy).toHaveBeenCalledWith(`Failed to upload Logs ${JSON.stringify(mockError)}`, {\n file: UTILS_FILE,\n method: 'uploadLogs',\n });\n expect(mockSubmitRegistrationMetric).toHaveBeenCalledWith(\n 'web-calling-sdk-upload-logs-failed',\n {\n fields: {\n device_url: undefined,\n mobius_url: undefined,\n calling_sdk_version: 'unknown',\n correlation_id: 'test-correlation',\n broadworksCorrelationInfo: 'test-broadworks-correlation',\n tracking_id: undefined,\n feedback_id: 'mocked-uuid-12345',\n call_id: undefined,\n error: `Failed to upload Logs ${JSON.stringify(mockError)}`,\n },\n tags: {action: 'upload_logs', device_id: undefined, service_indicator: 'calling'},\n type: 'behavioral',\n }\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
|