@webex/calling 3.10.0-next.1 → 3.10.0-next.11

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.
Files changed (61) hide show
  1. package/dist/CallHistory/CallHistory.js +26 -20
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +109 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallSettings/WxCallBackendConnector.js +2 -1
  6. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  7. package/dist/CallingClient/CallingClient.js +160 -205
  8. package/dist/CallingClient/CallingClient.js.map +1 -1
  9. package/dist/CallingClient/CallingClient.test.js +152 -290
  10. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  11. package/dist/CallingClient/calling/call.js +61 -43
  12. package/dist/CallingClient/calling/call.js.map +1 -1
  13. package/dist/CallingClient/calling/call.test.js +594 -361
  14. package/dist/CallingClient/calling/call.test.js.map +1 -1
  15. package/dist/CallingClient/constants.js +3 -1
  16. package/dist/CallingClient/constants.js.map +1 -1
  17. package/dist/Contacts/ContactsClient.js +8 -5
  18. package/dist/Contacts/ContactsClient.js.map +1 -1
  19. package/dist/Events/impl/index.js +1 -2
  20. package/dist/Events/impl/index.js.map +1 -1
  21. package/dist/SDKConnector/types.js.map +1 -1
  22. package/dist/Voicemail/BroadworksBackendConnector.js +14 -12
  23. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  24. package/dist/Voicemail/UcmBackendConnector.js +2 -1
  25. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  26. package/dist/common/Utils.js +68 -39
  27. package/dist/common/Utils.js.map +1 -1
  28. package/dist/common/Utils.test.js +392 -143
  29. package/dist/common/Utils.test.js.map +1 -1
  30. package/dist/common/testUtil.js +2 -1
  31. package/dist/common/testUtil.js.map +1 -1
  32. package/dist/module/CallHistory/CallHistory.js +7 -3
  33. package/dist/module/CallSettings/WxCallBackendConnector.js +3 -1
  34. package/dist/module/CallingClient/CallingClient.js +83 -121
  35. package/dist/module/CallingClient/calling/call.js +35 -23
  36. package/dist/module/CallingClient/constants.js +1 -0
  37. package/dist/module/Contacts/ContactsClient.js +9 -5
  38. package/dist/module/Events/impl/index.js +1 -2
  39. package/dist/module/Voicemail/BroadworksBackendConnector.js +3 -1
  40. package/dist/module/Voicemail/UcmBackendConnector.js +2 -1
  41. package/dist/module/common/Utils.js +27 -3
  42. package/dist/module/common/testUtil.js +1 -0
  43. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  44. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  45. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  46. package/dist/types/CallingClient/calling/call.d.ts +2 -0
  47. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  48. package/dist/types/CallingClient/constants.d.ts +1 -0
  49. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  50. package/dist/types/Contacts/ContactsClient.d.ts +1 -0
  51. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  52. package/dist/types/Events/impl/index.d.ts.map +1 -1
  53. package/dist/types/SDKConnector/types.d.ts +10 -0
  54. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  55. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  56. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  57. package/dist/types/common/Utils.d.ts +1 -1
  58. package/dist/types/common/Utils.d.ts.map +1 -1
  59. package/dist/types/common/testUtil.d.ts +1 -0
  60. package/dist/types/common/testUtil.d.ts.map +1 -1
  61. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_constants2","_types4","_windowsChromiumIceWarmupUtils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","global","crypto","randomUUID","jest","spyOn","mockResolvedValue","undefined","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","infoSpy","log","logSpy","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","urlSpy","callingClient","wrap","_callee$","_context","prev","next","_hostCatalog","mockCatalogEU","window","mockImplementation","url","URL","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledWith","toStrictEqual","mockEUServiceHosts","mockRestore","stop","_callee2","_callee2$","_context2","_serviceUrls","mobius","toHaveBeenCalledTimes","mockUSServiceHosts","afterEach","_callee4","_callee4$","_context4","_callee3","_callee3$","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_callee6$","_context6","indicator","domain","_callee5","_callee5$","_context5","serviceData","_callee7","_callee7$","_context7","t0","message","toEqual","assertions","_callee8","_callee8$","_context8","_callee0","_callee0$","_context0","_callee9","_callee9$","_context9","_callee1","_callee1$","_context1","CONTACT_CENTER","_callee11","_callee11$","_context11","_callee10","_callee10$","_context10","_callee12","_callee12$","_context12","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee13","_callee13$","_context13","request","mockResolvedValueOnce","ipPayload","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","getMockRequestTemplate","uri","concat","URL_ENDPOINT","IP_ENDPOINT","DISCOVERY_URL","myIP","addAuthHeader","headers","SPARK_USER_AGENT","regionBody","clientRegion","countryCode","_callee14","failurePayload","_callee14$","_context14","statusCode","mockRejectedValue","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","objectContaining","_callee15","_callee15$","_context15","mockRejectedValueOnce","toBeCalledOnceWith","_callee16","_callee16$","_context16","_callee17","_callee17$","_context17","_callee18","_callee18$","_context18","mockReset","discovery","region","country","METHOD_START_MESSAGE","toHaveBeenCalled","mobiusCluster","checkCluster","_ref19","_callee19","mockServiceHosts","mockCatalog","_callee19$","_context19","_x","_x2","each","_ref20","_callee20","clusterName","_callee20$","_context20","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","beforeEach","_callee21","_callee21$","_context21","_values","lineDict","_keys","getLines","reg","windowEventSpy","deRegSpy","restoreSpy","restartRegisterSpy","registerSpy","metricSpy","_callee22","_callee22$","_context22","useFakeTimers","registrationPayload","registration","register","callCollection","_callee23","g","clearKeepaliveSpy","offlineCb","_callee23$","_context23","fetch","fn","mock","calls","stringContaining","toBe","_callee24","_callee24$","_context24","any","_callee25","onlineCb","_callee25$","_context25","String","_callee26","mercuryOfflineCb","_callee26$","_context26","mercury","on","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","_callee27","handleConnectionRestoreSpy","mercuryOnlineCb","_callee27$","_context27","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","REGISTRATION_FILE","getActiveMobiusUrl","NETWORK_FLAP","_callee28","_callee28$","_context28","setStatus","RegistrationStatus","IDLE","_callee29","callKeepaliveSpy","deleteSpy","_callee29$","_context29","createCall","getActiveCalls","state","value","_callee30","_callee30$","_context30","MERCURY_UP","mutex","Mutex","userId","device","clientDeviceUri","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","primary","backupMobiusUris","backup","beforeAll","_callee31","_callee31$","_context31","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockReturnValue","mockDeviceId","lineId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","_callee32","_callee32$","_context32","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT","origRTCPeerConnection","_class","RTCPeerConnection","_classCallCheck2","constructor","instances","_createClass2","key","createDataChannel","addTransceiver","createOffer","sdp","setLocalDescription","desc","localDescription","setRemoteDescription","remoteDescription","createAnswer","addIceCandidate","close","addEventListener","removeEventListener","_callee33","_callee33$","_context33","windowsChromiumIceWarmup","resolves"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {CallType, RegistrationStatus, ServiceIndicator} from '../common/types';\n/* eslint-disable dot-notation */\nimport {CALLING_CLIENT_EVENT_KEYS, CallSessionEvent, MOBIUS_EVENT_KEYS} from '../Events/types';\nimport log from '../Logger';\nimport {createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n IP_ENDPOINT,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n ipPayload,\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n myIP,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport {filterMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {METRIC_EVENT, CONNECTION_ACTION, METRIC_TYPE} from '../Metrics/types';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n const urlSpy = jest.spyOn(window, 'URL').mockImplementation((url) => new window.URL(url));\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(urlSpy).toHaveBeenCalledWith(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n\n urlSpy.mockRestore();\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter', but an empty string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify empty invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify valid service domain', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(3);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}${IP_ENDPOINT}`,\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n uri: `${DISCOVERY_URL}/${myIP}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(3, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('case when region discovery fails', async () => {\n const failurePayload = {\n statusCode: 500,\n };\n\n webex.request.mockRejectedValue(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).nthCalledWith(1, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-us-east-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(2, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-ca-central-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(3, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(4, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-ap-southeast-2.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('case when /myIP failed with 401', async () => {\n const failurePayload = {\n statusCode: 401,\n };\n\n webex.request.mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: 'https://mobius-us-east-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(handleErrorSpy).toBeCalledOnceWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails', async () => {\n const failurePayload = {\n statusCode: 500,\n };\n\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(3);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}${IP_ENDPOINT}`,\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n uri: `${DISCOVERY_URL}/${myIP}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('case when discovery failed with 401', async () => {\n const failurePayload = {\n statusCode: 401,\n };\n\n webex.request.mockResolvedValueOnce(ipPayload).mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).nthCalledWith(1, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-us-east-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n uri: `${DISCOVERY_URL}/${myIP}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(handleErrorSpy).toBeCalledOnceWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n describe('Connectivity and Mercury event handlers', () => {\n let callingClient: ICallingClient;\n let line;\n let reg;\n let windowEventSpy: jest.SpyInstance;\n let deRegSpy;\n let restoreSpy;\n let restartRegisterSpy;\n let registerSpy;\n let metricSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n windowEventSpy = jest.spyOn(window, 'addEventListener');\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(reg, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n metricSpy = jest.spyOn(callingClient['metricManager'], 'submitConnectionMetrics');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callingClient['callManager'].callCollection = {};\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('window offline handler sets networkDown and clears keepalive when network is unreachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockRejectedValueOnce(new Error('network fail'));\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Network connectivity probe failed'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n }\n );\n expect(callingClient['isNetworkDown']).toBe(true);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n });\n\n it('window offline handler does not clear keepalive when network is reachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockResolvedValueOnce({});\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(g.fetch).toHaveBeenCalledWith(\n 'https://www.google.com/generate_204',\n expect.any(Object)\n );\n expect(callingClient['isNetworkDown']).toBe(false);\n expect(clearKeepaliveSpy).not.toHaveBeenCalled();\n });\n\n it('window online handler sets networkUpTimestamp and logs', async () => {\n const onlineCb = windowEventSpy.mock.calls[0][1];\n await onlineCb();\n\n expect(callingClient['networkUpTimestamp']).toEqual(expect.any(String));\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: 'handleNetworkOnline',\n });\n });\n\n it('mercury offline submits metrics and sets timestamp', async () => {\n const mercuryOfflineCb = webex.internal.mercury.on.mock.calls[1][1];\n await mercuryOfflineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mercury down, waiting for connection to be up'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'handleMercuryOffline',\n }\n );\n expect(callingClient['mercuryDownTimestamp']).toEqual(expect.any(String));\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n ''\n );\n });\n\n it('handles reconnection with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).toHaveBeenCalledWith(true);\n expect(logSpy).toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).toHaveBeenCalledWith();\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('no reconnection for idle registration with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n reg.setStatus(RegistrationStatus.IDLE);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).not.toHaveBeenCalledWith(true);\n expect(logSpy).not.toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).not.toHaveBeenCalledWith();\n expect(restoreSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('handle calls status check once mercury comes back up after a network flap', async () => {\n callingClient['isNetworkDown'] = true;\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n\n it('handle calls status check once mercury comes back up with stable network', async () => {\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n\n describe('windowsChromiumIceWarmup', () => {\n let origRTCPeerConnection: any;\n\n beforeAll(() => {\n origRTCPeerConnection = global.RTCPeerConnection;\n // Minimal mock for RTCPeerConnection\n global.RTCPeerConnection = class {\n static instances: any[] = [];\n iceGatheringState = 'complete';\n localDescription = null;\n remoteDescription = null;\n onicecandidate: ((e: any) => void) | null = null;\n constructor() {\n (this.constructor as any).instances.push(this);\n }\n\n createDataChannel() {\n return {};\n }\n\n addTransceiver() {\n return {};\n }\n\n createOffer() {\n return Promise.resolve({sdp: 'offer', type: 'offer'});\n }\n\n setLocalDescription(desc: any) {\n this.localDescription = desc;\n\n return Promise.resolve();\n }\n\n setRemoteDescription(desc: any) {\n this.remoteDescription = desc;\n\n return Promise.resolve();\n }\n\n createAnswer() {\n return Promise.resolve({sdp: 'answer', type: 'answer'});\n }\n\n addIceCandidate() {\n return Promise.resolve();\n }\n\n close() {}\n addEventListener() {}\n removeEventListener() {}\n };\n });\n\n afterAll(() => {\n global.RTCPeerConnection = origRTCPeerConnection;\n });\n\n it('should complete without throwing', async () => {\n await expect(windowsChromiumIceWarmup({})).resolves.not.toThrow();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_constants2","_types4","_windowsChromiumIceWarmupUtils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","global","crypto","randomUUID","jest","spyOn","mockResolvedValue","undefined","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","getMobiusClusters","fn","mockReturnValue","mockUSServiceHosts","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","infoSpy","log","logSpy","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","callingClient","wrap","_callee$","_context","prev","next","_hostCatalog","_serviceUrls","mobius","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledTimes","toStrictEqual","stop","_callee2","_callee2$","_context2","mockCatalogEU","mockEUServiceHosts","toBe","afterEach","_callee4","_callee4$","_context4","_callee3","_callee3$","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_callee6$","_context6","indicator","domain","_callee5","_callee5$","_context5","serviceData","_callee7","_callee7$","_context7","t0","message","toEqual","assertions","_callee8","_callee8$","_context8","_callee0","_callee0$","_context0","_callee9","_callee9$","_context9","_callee1","_callee1$","_context1","CONTACT_CENTER","_callee11","_callee11$","_context11","_callee10","_callee10$","_context10","_callee12","_callee12$","_context12","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee13","_callee13$","_context13","request","mockResolvedValueOnce","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","uri","concat","DISCOVERY_URL","addAuthHeader","headers","SPARK_USER_AGENT","getMockRequestTemplate","URL_ENDPOINT","regionBody","clientRegion","countryCode","_callee14","failurePayload","_callee14$","_context14","statusCode","mockRejectedValueOnce","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","objectContaining","_callee15","_callee15$","_context15","mockReset","discovery","region","country","toHaveBeenCalledWith","METHOD_START_MESSAGE","toBeCalledOnceWith","toHaveBeenCalled","mobiusCluster","checkCluster","_ref16","_callee16","mockServiceHosts","mockCatalog","_callee16$","_context16","_x","_x2","each","_ref17","_callee17","clusterName","_callee17$","_context17","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","beforeEach","_callee18","_callee18$","_context18","_values","lineDict","_keys","getLines","reg","windowEventSpy","deRegSpy","restoreSpy","restartRegisterSpy","registerSpy","metricSpy","_callee19","_callee19$","_context19","useFakeTimers","registrationPayload","window","registration","register","callCollection","_callee20","g","clearKeepaliveSpy","offlineCb","_callee20$","_context20","fetch","mock","calls","stringContaining","_callee21","_callee21$","_context21","any","_callee22","onlineCb","_callee22$","_context22","String","_callee23","mercuryOfflineCb","_callee23$","_context23","mercury","on","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","_callee24","handleConnectionRestoreSpy","mercuryOnlineCb","_callee24$","_context24","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","REGISTRATION_FILE","getActiveMobiusUrl","NETWORK_FLAP","_callee25","_callee25$","_context25","setStatus","RegistrationStatus","IDLE","_callee26","callKeepaliveSpy","deleteSpy","_callee26$","_context26","createCall","getActiveCalls","state","value","_callee27","_callee27$","_context27","MERCURY_UP","mutex","Mutex","userId","device","clientDeviceUri","url","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primary","backupMobiusUris","backup","beforeAll","_callee28","_callee28$","_context28","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockDeviceId","lineId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","_callee29","_callee29$","_context29","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT","origRTCPeerConnection","_class","RTCPeerConnection","_classCallCheck2","constructor","instances","_createClass2","key","createDataChannel","addTransceiver","createOffer","sdp","setLocalDescription","desc","localDescription","setRemoteDescription","remoteDescription","createAnswer","addIceCandidate","close","addEventListener","removeEventListener","_callee30","_callee30$","_context30","windowsChromiumIceWarmup","resolves"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {CallType, RegistrationStatus, ServiceIndicator} from '../common/types';\n/* eslint-disable dot-notation */\nimport {CALLING_CLIENT_EVENT_KEYS, CallSessionEvent, MOBIUS_EVENT_KEYS} from '../Events/types';\nimport log from '../Logger';\nimport {createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport {filterMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {METRIC_EVENT, CONNECTION_ACTION, METRIC_TYPE} from '../Metrics/types';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockUSServiceHosts);\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockEUServiceHosts);\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusHost']).toBe(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter', but an empty string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify empty invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify valid service domain', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request.mockResolvedValueOnce(regionPayload).mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(2);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails with final error', async () => {\n const failurePayload = {\n statusCode: 401,\n };\n\n webex.request.mockResolvedValueOnce(regionPayload).mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(2);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockServiceHosts);\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n describe('Connectivity and Mercury event handlers', () => {\n let callingClient: ICallingClient;\n let line;\n let reg;\n let windowEventSpy: jest.SpyInstance;\n let deRegSpy;\n let restoreSpy;\n let restartRegisterSpy;\n let registerSpy;\n let metricSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n webex.request\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n windowEventSpy = jest.spyOn(window, 'addEventListener');\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(reg, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n metricSpy = jest.spyOn(callingClient['metricManager'], 'submitConnectionMetrics');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callingClient['callManager'].callCollection = {};\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('window offline handler sets networkDown and clears keepalive when network is unreachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockRejectedValueOnce(new Error('network fail'));\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Network connectivity probe failed'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n }\n );\n expect(callingClient['isNetworkDown']).toBe(true);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n });\n\n it('window offline handler does not clear keepalive when network is reachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockResolvedValueOnce({});\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(g.fetch).toHaveBeenCalledWith(\n 'https://www.google.com/generate_204',\n expect.any(Object)\n );\n expect(callingClient['isNetworkDown']).toBe(false);\n expect(clearKeepaliveSpy).not.toHaveBeenCalled();\n });\n\n it('window online handler sets networkUpTimestamp and logs', async () => {\n const onlineCb = windowEventSpy.mock.calls[0][1];\n await onlineCb();\n\n expect(callingClient['networkUpTimestamp']).toEqual(expect.any(String));\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: 'handleNetworkOnline',\n });\n });\n\n it('mercury offline submits metrics and sets timestamp', async () => {\n const mercuryOfflineCb = webex.internal.mercury.on.mock.calls[1][1];\n await mercuryOfflineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mercury down, waiting for connection to be up'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'handleMercuryOffline',\n }\n );\n expect(callingClient['mercuryDownTimestamp']).toEqual(expect.any(String));\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n ''\n );\n });\n\n it('handles reconnection with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).toHaveBeenCalledWith(true);\n expect(logSpy).toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).toHaveBeenCalledWith();\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('no reconnection for idle registration with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n reg.setStatus(RegistrationStatus.IDLE);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).not.toHaveBeenCalledWith(true);\n expect(logSpy).not.toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).not.toHaveBeenCalledWith();\n expect(restoreSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('handle calls status check once mercury comes back up after a network flap', async () => {\n callingClient['isNetworkDown'] = true;\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n\n it('handle calls status check once mercury comes back up with stable network', async () => {\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n\n describe('windowsChromiumIceWarmup', () => {\n let origRTCPeerConnection: any;\n\n beforeAll(() => {\n origRTCPeerConnection = global.RTCPeerConnection;\n // Minimal mock for RTCPeerConnection\n global.RTCPeerConnection = class {\n static instances: any[] = [];\n iceGatheringState = 'complete';\n localDescription = null;\n remoteDescription = null;\n onicecandidate: ((e: any) => void) | null = null;\n constructor() {\n (this.constructor as any).instances.push(this);\n }\n\n createDataChannel() {\n return {};\n }\n\n addTransceiver() {\n return {};\n }\n\n createOffer() {\n return Promise.resolve({sdp: 'offer', type: 'offer'});\n }\n\n setLocalDescription(desc: any) {\n this.localDescription = desc;\n\n return Promise.resolve();\n }\n\n setRemoteDescription(desc: any) {\n this.remoteDescription = desc;\n\n return Promise.resolve();\n }\n\n createAnswer() {\n return Promise.resolve({sdp: 'answer', type: 'answer'});\n }\n\n addIceCandidate() {\n return Promise.resolve();\n }\n\n close() {}\n addEventListener() {}\n removeEventListener() {}\n };\n });\n\n afterAll(() => {\n global.RTCPeerConnection = origRTCPeerConnection;\n });\n\n it('should complete without throwing', async () => {\n await expect(windowsChromiumIceWarmup({})).resolves.not.toThrow();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -98,6 +98,8 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
98
98
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receivedRoapOKSeq", void 0);
99
99
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "localAudioStream", void 0);
100
100
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "rtcMetrics", void 0);
101
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "callKeepaliveRetryCount", 0);
102
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "callKeepaliveInterval", void 0);
101
103
  /**
102
104
  * Media failed, so collect a stats report from webrtc
103
105
  * send a webrtc telemetry dump to the configured server using the internal media core check metrics configured callback
@@ -1671,33 +1673,34 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1671
1673
  case 0:
1672
1674
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1673
1675
  file: _constants.CALL_FILE,
1674
- method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1676
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1675
1677
  });
1678
+ this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
1676
1679
  this.setDisconnectReason();
1677
- _context0.prev = 2;
1678
- _context0.next = 5;
1680
+ _context0.prev = 3;
1681
+ _context0.next = 6;
1679
1682
  return this.delete();
1680
- case 5:
1683
+ case 6:
1681
1684
  response = _context0.sent;
1682
1685
  _Logger.default.log("Response code: ".concat(response.statusCode), {
1683
1686
  file: _constants.CALL_FILE,
1684
- method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1687
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1685
1688
  });
1686
- _context0.next = 13;
1689
+ _context0.next = 14;
1687
1690
  break;
1688
- case 9:
1689
- _context0.prev = 9;
1690
- _context0.t0 = _context0["catch"](2);
1691
+ case 10:
1692
+ _context0.prev = 10;
1693
+ _context0.t0 = _context0["catch"](3);
1691
1694
  _Logger.default.warn("Failed to delete the call: ".concat((0, _stringify.default)(_context0.t0)), {
1692
1695
  file: _constants.CALL_FILE,
1693
- method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1696
+ method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1694
1697
  });
1695
1698
  (0, _Utils.uploadLogs)({
1696
1699
  correlationId: this.correlationId,
1697
1700
  callId: this.callId,
1698
1701
  broadworksCorrelationInfo: this.broadworksCorrelationInfo
1699
1702
  });
1700
- case 13:
1703
+ case 14:
1701
1704
  this.deleteCb(this.correlationId);
1702
1705
 
1703
1706
  /* Clear the stream listeners */
@@ -1722,12 +1725,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1722
1725
  this.sendCallStateMachineEvt({
1723
1726
  type: 'E_CALL_CLEARED'
1724
1727
  });
1725
- this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
1726
1728
  case 20:
1727
1729
  case "end":
1728
1730
  return _context0.stop();
1729
1731
  }
1730
- }, _callee0, this, [[2, 9]]);
1732
+ }, _callee0, this, [[3, 10]]);
1731
1733
  }));
1732
1734
  function handleIncomingCallDisconnect(_x8) {
1733
1735
  return _handleIncomingCallDisconnect.apply(this, arguments);
@@ -1828,10 +1830,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1828
1830
  key: "handleCallEstablished",
1829
1831
  value: function handleCallEstablished(event) {
1830
1832
  var _this7 = this;
1831
- _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1833
+ var loggerContext = {
1832
1834
  file: _constants.CALL_FILE,
1833
1835
  method: _constants.METHODS.HANDLE_CALL_ESTABLISHED
1834
- });
1836
+ };
1837
+ _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), loggerContext);
1835
1838
  this.emit(_types3.CALL_EVENT_KEYS.ESTABLISHED, this.correlationId);
1836
1839
 
1837
1840
  /* Reset Early dialog parameters */
@@ -1840,14 +1843,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1840
1843
 
1841
1844
  /* Session timers need to be reset at all offer/answer exchanges */
1842
1845
  if (this.sessionTimer) {
1843
- _Logger.default.log('Resetting session timer', {
1844
- file: _constants.CALL_FILE,
1845
- method: _constants.METHODS.HANDLE_CALL_ESTABLISHED
1846
- });
1846
+ _Logger.default.log('Resetting session timer', loggerContext);
1847
1847
  clearInterval(this.sessionTimer);
1848
1848
  }
1849
1849
  this.sessionTimer = setInterval(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10() {
1850
- var res, error;
1850
+ var res, error, abort;
1851
1851
  return _regenerator.default.wrap(function _callee10$(_context10) {
1852
1852
  while (1) switch (_context10.prev = _context10.next) {
1853
1853
  case 0:
@@ -1856,14 +1856,13 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1856
1856
  return _this7.postStatus();
1857
1857
  case 3:
1858
1858
  res = _context10.sent;
1859
- _Logger.default.info("Session refresh successful", {
1860
- file: _constants.CALL_FILE,
1861
- method: _constants.METHODS.HANDLE_CALL_ESTABLISHED
1862
- });
1863
- _context10.next = 14;
1859
+ _this7.callKeepaliveRetryCount = 0;
1860
+ _this7.callKeepaliveInterval = undefined;
1861
+ _Logger.default.info("Session refresh successful", loggerContext);
1862
+ _context10.next = 19;
1864
1863
  break;
1865
- case 7:
1866
- _context10.prev = 7;
1864
+ case 9:
1865
+ _context10.prev = 9;
1867
1866
  _context10.t0 = _context10["catch"](0);
1868
1867
  error = _context10.t0;
1869
1868
  /* We are clearing the timer here as all are error scenarios. Only scenario where
@@ -1875,32 +1874,51 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1875
1874
  if (_this7.sessionTimer) {
1876
1875
  clearInterval(_this7.sessionTimer);
1877
1876
  }
1878
- (0, _Utils.handleCallErrors)(function (callError) {
1877
+ _context10.next = 15;
1878
+ return (0, _Utils.handleCallErrors)(function (callError) {
1879
1879
  _this7.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, callError);
1880
1880
  _this7.submitCallErrorMetric(callError);
1881
1881
  }, _types.ERROR_LAYER.CALL_CONTROL, function (interval) {
1882
- setTimeout(function () {
1883
- /* We first post the status and then recursively call the handler which
1884
- * starts the timer again
1885
- */
1886
- _this7.postStatus();
1887
- _this7.sendCallStateMachineEvt({
1888
- type: 'E_CALL_ESTABLISHED'
1889
- });
1890
- }, interval * 1000);
1891
- }, _this7.getCorrelationId(), error, _this7.handleCallEstablished.name, _constants.CALL_FILE);
1892
- _context10.next = 14;
1882
+ _this7.callKeepaliveRetryCount += 1;
1883
+ _this7.callKeepaliveInterval = interval * 1000;
1884
+
1885
+ // If we have reached the max retry count, do not attempt to refresh the session
1886
+ if (_this7.callKeepaliveRetryCount === _constants.MAX_CALL_KEEPALIVE_RETRY_COUNT) {
1887
+ _this7.callKeepaliveRetryCount = 0;
1888
+ clearInterval(_this7.sessionTimer);
1889
+ _this7.sessionTimer = undefined;
1890
+ _this7.callKeepaliveInterval = undefined;
1891
+ _Logger.default.warn("Max call keepalive retry attempts reached for call: ".concat(_this7.getCorrelationId()), loggerContext);
1892
+ return;
1893
+ }
1894
+
1895
+ // Scheduling next keepalive attempt - calling handleCallEstablished
1896
+ _this7.sendCallStateMachineEvt({
1897
+ type: 'E_CALL_ESTABLISHED'
1898
+ });
1899
+ }, _this7.getCorrelationId(), error, 'handleCallEstablished', _constants.CALL_FILE);
1900
+ case 15:
1901
+ abort = _context10.sent;
1902
+ if (abort) {
1903
+ _this7.sendCallStateMachineEvt({
1904
+ type: 'E_SEND_CALL_DISCONNECT'
1905
+ });
1906
+ _this7.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, _this7.getCorrelationId());
1907
+ _this7.callKeepaliveRetryCount = 0;
1908
+ _this7.callKeepaliveInterval = undefined;
1909
+ }
1910
+ _context10.next = 19;
1893
1911
  return (0, _Utils.uploadLogs)({
1894
1912
  correlationId: _this7.correlationId,
1895
1913
  callId: _this7.callId,
1896
1914
  broadworksCorrelationInfo: _this7.broadworksCorrelationInfo
1897
1915
  });
1898
- case 14:
1916
+ case 19:
1899
1917
  case "end":
1900
1918
  return _context10.stop();
1901
1919
  }
1902
- }, _callee10, null, [[0, 7]]);
1903
- })), _constants.DEFAULT_SESSION_TIMER);
1920
+ }, _callee10, null, [[0, 9]]);
1921
+ })), this.callKeepaliveInterval || _constants.DEFAULT_SESSION_TIMER);
1904
1922
  }
1905
1923
 
1906
1924
  /**
@@ -2191,7 +2209,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2191
2209
  /* if we receive ROAP_ERROR from internal-media-core , we post it to Mobius */
2192
2210
  message = event.data;
2193
2211
  /* istanbul ignore else */
2194
- if (!message) {
2212
+ if (!(message && message.messageType === 'ERROR')) {
2195
2213
  _context13.next = 17;
2196
2214
  break;
2197
2215
  }