@webex/calling 3.0.0-next.2 → 3.0.0-next.21

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 (152) hide show
  1. package/CHANGELOG.md +1403 -0
  2. package/dist/CallHistory/CallHistory.js +1 -3
  3. package/dist/CallHistory/CallHistory.js.map +1 -1
  4. package/dist/CallHistory/callHistoryFixtures.js +9 -0
  5. package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
  6. package/dist/CallHistory/types.js.map +1 -1
  7. package/dist/CallSettings/CallSettings.js +0 -2
  8. package/dist/CallSettings/CallSettings.js.map +1 -1
  9. package/dist/CallSettings/types.js.map +1 -1
  10. package/dist/CallingClient/CallingClient.js +119 -62
  11. package/dist/CallingClient/CallingClient.js.map +1 -1
  12. package/dist/CallingClient/CallingClient.test.js +161 -102
  13. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  14. package/dist/CallingClient/calling/CallerId/index.js +3 -23
  15. package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
  16. package/dist/CallingClient/calling/CallerId/types.js.map +1 -1
  17. package/dist/CallingClient/calling/call.js +78 -33
  18. package/dist/CallingClient/calling/call.js.map +1 -1
  19. package/dist/CallingClient/calling/call.test.js +483 -351
  20. package/dist/CallingClient/calling/call.test.js.map +1 -1
  21. package/dist/CallingClient/calling/callManager.js +0 -9
  22. package/dist/CallingClient/calling/callManager.js.map +1 -1
  23. package/dist/CallingClient/calling/callManager.test.js +1 -1
  24. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  25. package/dist/CallingClient/calling/types.js.map +1 -1
  26. package/dist/CallingClient/callingClientFixtures.js +107 -1
  27. package/dist/CallingClient/callingClientFixtures.js.map +1 -1
  28. package/dist/CallingClient/constants.js +14 -6
  29. package/dist/CallingClient/constants.js.map +1 -1
  30. package/dist/CallingClient/line/index.js +12 -12
  31. package/dist/CallingClient/line/index.js.map +1 -1
  32. package/dist/CallingClient/line/line.test.js +9 -9
  33. package/dist/CallingClient/line/line.test.js.map +1 -1
  34. package/dist/CallingClient/line/types.js +4 -7
  35. package/dist/CallingClient/line/types.js.map +1 -1
  36. package/dist/CallingClient/registration/register.js +62 -80
  37. package/dist/CallingClient/registration/register.js.map +1 -1
  38. package/dist/CallingClient/registration/register.test.js +28 -28
  39. package/dist/CallingClient/registration/register.test.js.map +1 -1
  40. package/dist/CallingClient/registration/types.js.map +1 -1
  41. package/dist/CallingClient/types.js.map +1 -1
  42. package/dist/Contacts/ContactsClient.js +8 -2
  43. package/dist/Contacts/ContactsClient.js.map +1 -1
  44. package/dist/Contacts/types.js +3 -0
  45. package/dist/Contacts/types.js.map +1 -1
  46. package/dist/Errors/catalog/CallingDeviceError.js +1 -1
  47. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -1
  48. package/dist/Errors/catalog/LineError.js +2 -2
  49. package/dist/Errors/catalog/LineError.js.map +1 -1
  50. package/dist/Errors/index.js +7 -0
  51. package/dist/Errors/index.js.map +1 -1
  52. package/dist/Errors/types.js.map +1 -1
  53. package/dist/Events/types.js +0 -1
  54. package/dist/Events/types.js.map +1 -1
  55. package/dist/Metrics/index.test.js +1 -1
  56. package/dist/Metrics/index.test.js.map +1 -1
  57. package/dist/SDKConnector/types.js.map +1 -1
  58. package/dist/Voicemail/Voicemail.js +18 -21
  59. package/dist/Voicemail/Voicemail.js.map +1 -1
  60. package/dist/Voicemail/WxCallBackendConnector.js +1 -1
  61. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  62. package/dist/Voicemail/types.js.map +1 -1
  63. package/dist/api.js +43 -20
  64. package/dist/api.js.map +1 -1
  65. package/dist/common/Utils.js +13 -18
  66. package/dist/common/Utils.js.map +1 -1
  67. package/dist/common/Utils.test.js +1 -1
  68. package/dist/common/Utils.test.js.map +1 -1
  69. package/dist/common/testUtil.js +2 -1
  70. package/dist/common/testUtil.js.map +1 -1
  71. package/dist/common/types.js +8 -7
  72. package/dist/common/types.js.map +1 -1
  73. package/dist/index.js +233 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/module/CallHistory/callHistoryFixtures.js +9 -0
  76. package/dist/module/CallingClient/CallingClient.js +59 -42
  77. package/dist/module/CallingClient/calling/CallerId/index.js +3 -23
  78. package/dist/module/CallingClient/calling/call.js +54 -17
  79. package/dist/module/CallingClient/calling/callManager.js +0 -6
  80. package/dist/module/CallingClient/callingClientFixtures.js +119 -1
  81. package/dist/module/CallingClient/constants.js +8 -4
  82. package/dist/module/CallingClient/line/index.js +7 -10
  83. package/dist/module/CallingClient/line/types.js +0 -5
  84. package/dist/module/CallingClient/registration/register.js +28 -20
  85. package/dist/module/Contacts/ContactsClient.js +3 -0
  86. package/dist/module/Errors/catalog/CallingDeviceError.js +2 -2
  87. package/dist/module/Errors/catalog/LineError.js +2 -2
  88. package/dist/module/Errors/index.js +1 -0
  89. package/dist/module/api.js +6 -5
  90. package/dist/module/common/Utils.js +14 -19
  91. package/dist/module/common/testUtil.js +2 -1
  92. package/dist/module/common/types.js +6 -5
  93. package/dist/module/index.js +7 -0
  94. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  95. package/dist/types/CallHistory/callHistoryFixtures.d.ts.map +1 -1
  96. package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
  97. package/dist/types/CallSettings/types.d.ts.map +1 -1
  98. package/dist/types/CallingClient/CallingClient.d.ts +2 -0
  99. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  100. package/dist/types/CallingClient/calling/CallerId/index.d.ts.map +1 -1
  101. package/dist/types/CallingClient/calling/CallerId/types.d.ts.map +1 -1
  102. package/dist/types/CallingClient/calling/call.d.ts +2 -0
  103. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  104. package/dist/types/CallingClient/calling/callManager.d.ts +0 -1
  105. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  106. package/dist/types/CallingClient/calling/types.d.ts +30 -30
  107. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  108. package/dist/types/CallingClient/callingClientFixtures.d.ts +69 -1
  109. package/dist/types/CallingClient/callingClientFixtures.d.ts.map +1 -1
  110. package/dist/types/CallingClient/constants.d.ts +7 -3
  111. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  112. package/dist/types/CallingClient/line/index.d.ts +4 -5
  113. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  114. package/dist/types/CallingClient/line/types.d.ts +8 -13
  115. package/dist/types/CallingClient/line/types.d.ts.map +1 -1
  116. package/dist/types/CallingClient/registration/register.d.ts +3 -3
  117. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  118. package/dist/types/CallingClient/registration/types.d.ts +14 -14
  119. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  120. package/dist/types/CallingClient/types.d.ts +6 -4
  121. package/dist/types/CallingClient/types.d.ts.map +1 -1
  122. package/dist/types/Contacts/ContactsClient.d.ts +3 -2
  123. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  124. package/dist/types/Contacts/types.d.ts +2 -0
  125. package/dist/types/Contacts/types.d.ts.map +1 -1
  126. package/dist/types/Errors/catalog/CallingDeviceError.d.ts +4 -4
  127. package/dist/types/Errors/catalog/CallingDeviceError.d.ts.map +1 -1
  128. package/dist/types/Errors/catalog/LineError.d.ts +4 -4
  129. package/dist/types/Errors/catalog/LineError.d.ts.map +1 -1
  130. package/dist/types/Errors/index.d.ts +1 -0
  131. package/dist/types/Errors/index.d.ts.map +1 -1
  132. package/dist/types/Errors/types.d.ts +2 -3
  133. package/dist/types/Errors/types.d.ts.map +1 -1
  134. package/dist/types/Events/types.d.ts +11 -0
  135. package/dist/types/Events/types.d.ts.map +1 -1
  136. package/dist/types/SDKConnector/types.d.ts +2 -1
  137. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  138. package/dist/types/Voicemail/UcmBackendConnector.d.ts +1 -1
  139. package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
  140. package/dist/types/Voicemail/WxCallBackendConnector.d.ts +1 -1
  141. package/dist/types/Voicemail/types.d.ts +10 -10
  142. package/dist/types/Voicemail/types.d.ts.map +1 -1
  143. package/dist/types/api.d.ts +10 -10
  144. package/dist/types/api.d.ts.map +1 -1
  145. package/dist/types/common/Utils.d.ts.map +1 -1
  146. package/dist/types/common/testUtil.d.ts +1 -0
  147. package/dist/types/common/testUtil.d.ts.map +1 -1
  148. package/dist/types/common/types.d.ts +3 -2
  149. package/dist/types/common/types.d.ts.map +1 -1
  150. package/dist/types/index.d.ts +11 -0
  151. package/dist/types/index.d.ts.map +1 -1
  152. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","_Object$keys2","_Object$getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","warnSpy","handleErrorSpy","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","fn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","mockResponse","getMockRequestTemplate","uri","concat","primary","body","userId","internal","device","clientDeviceUri","url","serviceData","failurePayload","statusCode","mockPostResponse","failurePayload429","successPayload","reg","restartSpy","failbackRetry429Spy","restoreSpy","postRegistrationSpy","beforeEach","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","FAILBACK_429_RETRY_UTIL","afterEach","request","clearAllTimers","useRealTimers","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","MobiusStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","stop","_callee2","error","_callee2$","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","LineStatus","INACTIVE","DEFAULT","nthCalledWith","ERROR","undefined","_callee3","_callee3$","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","global","fetch","json","mockDeleteResponse","headers","anything","UNREGISTERED","_callee4","_callee4$","_context4","useFakeTimers","advanceTimersByTime","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","SEC_TO_MSEC_MFACTOR","getActiveMobiusUrl","_callee5","_callee5$","_context5","_callee6","_callee6$","_context6","mockResolvedValue","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee7","_callee7$","_context7","MINUTES_TO_SEC_MFACTOR","file","REGISTRATION_FILE","failback429RetryAttempts","toBe","failbackTimer","_callee8","_callee8$","_context8","FAILBACK_UTIL","_callee9","finalErrorPayload","_callee9$","_context9","mockClear","not","toBeCalled","_callee10","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","_callee12$","_context12","callManager","createCall","_keys","getActiveCalls","logObj","mockKeepAliveBody","_callee13","_callee13$","_context13","keepaliveTimer","clearInterval","reconnectPending","calls","_values","end","_callee14","keepAlivePayload","funcSpy","_callee14$","_context14","mockReturnValue","keepaliveInterval","lastCalledWith","_callee15","timer","_callee15$","_context15","RECONNECTING","RECONNECTED","_callee16","restartRegSpy","reconnectSpy","clearIntervalSpy","_callee16$","_context16","KEEPALIVE_UTIL","_callee17","_callee17$","_context17","setActiveMobiusUrl","toBeTruthy","_callee18","_callee18$","_context18","_callee19","_callee19$","_context19","service","_callee20","_callee20$","_context20","any","String","callCollection","reconnectOnFailure","CALLS_CLEARED_HANDLER_UTIL"],"sources":["register.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\nimport {Mutex} from 'async-mutex';\nimport {createRegistration} from './register';\nimport {\n getMobiusDiscoveryResponse,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {MobiusStatus, ServiceIndicator, WebexRequestPayload} from '../../common/types';\nimport * as utils from '../../common/Utils';\nimport log from '../../Logger';\nimport {LOGGER} from '../../Logger/types';\nimport {URL, mockDeleteResponse, mockPostResponse} from './registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {ERROR_TYPE} from '../../Errors/types';\nimport {\n CALLS_CLEARED_HANDLER_UTIL,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_REHOMING_INTERVAL_MIN,\n FAILBACK_429_RETRY_UTIL,\n FAILBACK_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n SEC_TO_MSEC_MFACTOR,\n} from '../constants';\nimport {ICall} from '../calling/types';\nimport {LINE_EVENTS, LineStatus} from '../line/types';\nimport {createLineError} from '../../Errors/catalog/LineError';\nimport {IRegistration} from './types';\n\nconst webex = getTestUtilsWebex();\nconst MockServiceData = {\n indicator: ServiceIndicator.CALLING,\n domain: '',\n};\nconst logSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\n\ndescribe('Registration Tests', () => {\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n const lineEmitter = jest.fn();\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n\n const mockResponse = {\n ...getMockRequestTemplate(),\n uri: `${mobiusUris.primary[0]}device`,\n body: {\n userId: webex.internal.device.userId,\n clientDeviceUri: webex.internal.device.url,\n serviceData: {\n domain: '',\n indicator: 'calling',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n });\n\n const failurePayload429 = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n });\n\n let reg: IRegistration;\n let restartSpy;\n let failbackRetry429Spy;\n let restoreSpy;\n let postRegistrationSpy;\n\n beforeEach(() => {\n const mutex = new Mutex();\n reg = createRegistration(webex, MockServiceData, mutex, lineEmitter, LOGGER.INFO);\n reg.setMobiusServers(mobiusUris.primary, mobiusUris.backup);\n jest.clearAllMocks();\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n failbackRetry429Spy = jest.spyOn(reg, FAILBACK_429_RETRY_UTIL);\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('verify successful registration', async () => {\n webex.request.mockReturnValueOnce({\n body: mockPostResponse,\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n expect(reg.getStatus()).toEqual(MobiusStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.CONNECTING);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.REGISTERED, mockPostResponse);\n });\n\n it('verify failure registration', async () => {\n webex.request.mockRejectedValue({\n body: mockPostResponse,\n statusCode: 401,\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n const error = createLineError(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n {},\n ERROR_TYPE.TOKEN_ERROR,\n LineStatus.INACTIVE\n );\n\n expect(reg.getStatus()).toEqual(MobiusStatus.DEFAULT);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.ERROR, undefined, error);\n });\n\n it('verify failure registration 403-101', async () => {\n webex.request\n .mockRejectedValueOnce({\n body: {\n userId: mockPostResponse.userId,\n errorCode: 101,\n devices: [mockPostResponse.device],\n },\n statusCode: 403,\n })\n .mockResolvedValueOnce({\n statusCode: 200,\n body: mockPostResponse,\n });\n\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n expect(reg.getStatus()).toEqual(MobiusStatus.DEFAULT);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(global.fetch).toBeCalledOnceWith(mockPostResponse.device.uri, {\n method: 'DELETE',\n headers: expect.anything(),\n });\n\n expect(warnSpy).toBeCalledWith('User device limit exceeded', expect.anything());\n expect(logSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(logSpy).toBeCalledWith('Registration restored successfully.', expect.anything());\n\n expect(reg.getStatus()).toEqual(MobiusStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(4);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(3, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.REGISTERED, mockPostResponse);\n });\n\n describe('Registration failover tests', () => {\n it('verify unreachable primary with reachable backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(MobiusStatus.DEFAULT);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(MobiusStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n });\n\n it('verify unreachable primary and backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(MobiusStatus.DEFAULT);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /*\n * 2 calls for primary -> initial and after timer expiry.\n * 2 calls for each backup entry -> 2 * 2 = 4.\n * So a total of 6 calls to webex.request and handleErrors\n */\n expect(webex.request).toBeCalledTimes(6);\n expect(handleErrorSpy).toBeCalledTimes(6);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[1]}device`,\n });\n expect(reg.getStatus()).toEqual(MobiusStatus.DEFAULT);\n });\n });\n\n describe('Registration failback tests', () => {\n beforeEach(async () => {\n /* keep keepalive as active so that it wont interfere with the failback tests */\n jest.spyOn(reg, 'postKeepAlive').mockResolvedValue(successPayload);\n jest.useFakeTimers();\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n reg.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n reg.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n\n /* These 2 calls to handleErrorSpy are for primary after which it fails over to backup */\n expect(handleErrorSpy).toBeCalledTimes(2);\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(MobiusStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n });\n\n it('verify 429 error with failback to primary after initial registration with backup: Restore failure', async () => {\n // delete should be successful\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n postRegistrationSpy.mockRejectedValue(failurePayload429);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n expect(failbackRetry429Spy).toBeCalledOnceWith();\n expect(reg.failback429RetryAttempts).toBe(0);\n expect(reg.getStatus()).toBe(MobiusStatus.DEFAULT);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_429_RETRY_UTIL);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_429_RETRY_UTIL);\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure', async () => {\n postRegistrationSpy.mockRejectedValue(failurePayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(MobiusStatus.DEFAULT);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure with final error', async () => {\n const finalErrorPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 401,\n body: mockPostResponse,\n });\n postRegistrationSpy.mockClear();\n postRegistrationSpy\n .mockRejectedValue(finalErrorPayload)\n .mockRejectedValueOnce(failurePayload);\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(MobiusStatus.DEFAULT);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore success', async () => {\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify successful failback to primary after initial registration with backup', async () => {\n postRegistrationSpy.mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url must now match with the primary url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.primary[0]);\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n expect(reg.failbackTimer).toBe(undefined);\n expect(restoreSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(mockPostResponse.rehomingIntervalMin);\n expect(reg.rehomingIntervalMax).toBe(mockPostResponse.rehomingIntervalMax);\n });\n\n it('verify unsuccessful failback attempt due to active call', async () => {\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Active calls present, deferring failback to next cycle.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n expect(restoreSpy).not.toBeCalled();\n expect(restartSpy).not.toBeCalled();\n\n expect(logSpy).toBeCalledWith('Active calls present, deferring failback to next cycle.', {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n });\n\n // Keep-alive related test cases\n describe('Keep-alive Tests', () => {\n const logObj = {\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n };\n\n const mockKeepAliveBody = {device: mockPostResponse.device};\n\n beforeEach(async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n if (reg.keepaliveTimer) {\n clearInterval(reg.keepaliveTimer);\n reg.keepaliveTimer = undefined;\n }\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const keepAlivePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n webex.request.mockReturnValue(keepAlivePayload);\n\n const funcSpy = jest.spyOn(reg, 'postKeepAlive');\n\n jest.advanceTimersByTime(2 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(funcSpy).toBeCalledTimes(2); // should be called 2 times: first try and after the interval.\n expect(logSpy).lastCalledWith('Sent Keepalive, status: 200', logObj);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n const successPayload = {\n statusCode: 200,\n body: mockKeepAliveBody,\n };\n\n const timer = reg.keepaliveTimer;\n\n lineEmitter.mockClear();\n webex.request.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n jest.advanceTimersByTime(2 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledOnceWith(failurePayload, expect.anything(), {\n method: 'startKeepaliveTimer',\n file: REGISTRATION_FILE,\n });\n\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n expect(reg.keepaliveTimer).toBe(timer);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.RECONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.RECONNECTED);\n expect(lineEmitter).toBeCalledTimes(2);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n lineEmitter.mockClear();\n\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(MobiusStatus.ACTIVE);\n\n const timer = reg.keepaliveTimer;\n\n jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n\n // sendKeepAlive tries to retry 5 times before accepting failure\n // later 2 attempts to register with primary server\n expect(handleErrorSpy).toBeCalledTimes(7);\n expect(reg.getStatus()).toEqual(MobiusStatus.DEFAULT);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n\n expect(webex.request).toBeCalledTimes(7);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.RECONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.RECONNECTING);\n expect(lineEmitter).nthCalledWith(5, LINE_EVENTS.UNREGISTERED);\n\n /** there will be 2 registration attempts */\n expect(lineEmitter).nthCalledWith(6, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(7, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(8, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(9, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).toBeCalledTimes(9);\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n /* successful registration */\n // webex.request.mockResolvedValue(successPayload);\n\n expect(reg.getStatus()).toEqual(MobiusStatus.ACTIVE);\n\n const url = 'https://mobius.asydm-m-1.prod.infra.webex.com/api/v1';\n\n /* set active Url and expect the registration to restore to this url */\n reg.setActiveMobiusUrl(url);\n\n const timer = reg.keepaliveTimer;\n\n jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n expect(handleErrorSpy).toBeCalledTimes(5);\n expect(reg.getStatus()).toEqual(MobiusStatus.ACTIVE);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBeTruthy();\n expect(reg.keepaliveTimer).not.toBe(timer);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n\n const timer = reg.keepaliveTimer;\n\n // sendKeepAlive tries to retry 3 times and receiving success on third time\n jest.advanceTimersByTime(3 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n expect(handleErrorSpy).toBeCalledTimes(2);\n expect(clearIntervalSpy).not.toBeCalled();\n expect(reg.keepaliveTimer).toBe(timer);\n });\n\n it('verify final error for keep-alive', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 404,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n\n /* send one keepalive */\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledTimes(1);\n expect(reg.getStatus()).toBe(MobiusStatus.DEFAULT);\n expect(reconnectSpy).not.toBeCalled();\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(webex.request).toBeCalledOnceWith({\n headers: mockResponse.headers,\n uri: `${mockKeepAliveBody.device.uri}/status`,\n method: 'POST',\n service: mockResponse.service,\n });\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(handleErrorSpy).toBeCalledOnceWith(failurePayload, expect.anything(), {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n });\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n // jest.spyOn(callingClient['registration'], 'createDevice').mockResolvedValue(successPayload);\n\n const url = 'https://mobius.asydm-m-1.prod.infra.webex.com/api/v1';\n\n reg.setActiveMobiusUrl(url);\n\n expect(reg.reconnectPending).toStrictEqual(false);\n\n const timer = reg.keepaliveTimer;\n\n /* add a call to the callManager */\n const call = reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n /* send one keepalive */\n jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n expect(handleErrorSpy).toBeCalledTimes(5);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\n expect(reg.getStatus()).toBe(MobiusStatus.DEFAULT);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(true);\n expect(logSpy).toBeCalledWith(\n 'Active call(s) present, deferred reconnect till call cleanup.',\n {file: REGISTRATION_FILE, method: expect.any(String)}\n );\n\n reconnectSpy.mockClear();\n\n /* simulate call disconnect and Calling client will trigger reconnect upon receiving disconnect event from CallManager */\n reg.callManager.callCollection = {};\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n expect(reg.getStatus()).toBe(MobiusStatus.ACTIVE);\n expect(reconnectSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n expect(reg.keepaliveTimer).toBeTruthy();\n expect(reg.keepaliveTimer).not.toBe(timer);\n });\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","_Object$keys2","_Object$getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","warnSpy","handleErrorSpy","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","fn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","mockResponse","getMockRequestTemplate","uri","concat","primary","body","userId","internal","device","clientDeviceUri","url","serviceData","failurePayload","statusCode","mockPostResponse","failurePayload429","successPayload","reg","restartSpy","failbackRetry429Spy","restoreSpy","postRegistrationSpy","beforeEach","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","FAILBACK_429_RETRY_UTIL","afterEach","request","clearAllTimers","useRealTimers","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","RegistrationStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","stop","_callee2","error","_callee2$","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","undefined","_callee3","_callee3$","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","global","fetch","json","mockDeleteResponse","IDLE","headers","anything","UNREGISTERED","_callee4","_callee4$","_context4","useFakeTimers","advanceTimersByTime","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","SEC_TO_MSEC_MFACTOR","getActiveMobiusUrl","_callee5","_callee5$","_context5","_callee6","_callee6$","_context6","mockResolvedValue","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee7","_callee7$","_context7","MINUTES_TO_SEC_MFACTOR","file","REGISTRATION_FILE","failback429RetryAttempts","toBe","failbackTimer","_callee8","_callee8$","_context8","FAILBACK_UTIL","_callee9","finalErrorPayload","_callee9$","_context9","mockClear","not","toBeCalled","_callee10","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","_callee12$","_context12","callManager","createCall","_keys","getActiveCalls","logObj","mockKeepAliveBody","_callee13","_callee13$","_context13","keepaliveTimer","clearInterval","reconnectPending","calls","_values","end","_callee14","keepAlivePayload","funcSpy","_callee14$","_context14","mockReturnValue","keepaliveInterval","lastCalledWith","_callee15","timer","_callee15$","_context15","RECONNECTING","RECONNECTED","_callee16","restartRegSpy","reconnectSpy","clearIntervalSpy","_callee16$","_context16","KEEPALIVE_UTIL","_callee17","_callee17$","_context17","setActiveMobiusUrl","toBeTruthy","_callee18","_callee18$","_context18","_callee19","_callee19$","_context19","service","_callee20","_callee20$","_context20","any","String","callCollection","reconnectOnFailure","CALLS_CLEARED_HANDLER_UTIL"],"sources":["register.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\nimport {Mutex} from 'async-mutex';\nimport {createRegistration} from './register';\nimport {\n getMobiusDiscoveryResponse,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {RegistrationStatus, ServiceIndicator, WebexRequestPayload} from '../../common/types';\nimport * as utils from '../../common/Utils';\nimport log from '../../Logger';\nimport {LOGGER} from '../../Logger/types';\nimport {URL, mockDeleteResponse, mockPostResponse} from './registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {ERROR_TYPE} from '../../Errors/types';\nimport {\n CALLS_CLEARED_HANDLER_UTIL,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_REHOMING_INTERVAL_MIN,\n FAILBACK_429_RETRY_UTIL,\n FAILBACK_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n SEC_TO_MSEC_MFACTOR,\n} from '../constants';\nimport {ICall} from '../calling/types';\nimport {LINE_EVENTS} from '../line/types';\nimport {createLineError} from '../../Errors/catalog/LineError';\nimport {IRegistration} from './types';\n\nconst webex = getTestUtilsWebex();\nconst MockServiceData = {\n indicator: ServiceIndicator.CALLING,\n domain: '',\n};\nconst logSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\n\ndescribe('Registration Tests', () => {\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n const lineEmitter = jest.fn();\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n\n const mockResponse = {\n ...getMockRequestTemplate(),\n uri: `${mobiusUris.primary[0]}device`,\n body: {\n userId: webex.internal.device.userId,\n clientDeviceUri: webex.internal.device.url,\n serviceData: {\n domain: '',\n indicator: 'calling',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n });\n\n const failurePayload429 = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n });\n\n let reg: IRegistration;\n let restartSpy;\n let failbackRetry429Spy;\n let restoreSpy;\n let postRegistrationSpy;\n\n beforeEach(() => {\n const mutex = new Mutex();\n reg = createRegistration(webex, MockServiceData, mutex, lineEmitter, LOGGER.INFO);\n reg.setMobiusServers(mobiusUris.primary, mobiusUris.backup);\n jest.clearAllMocks();\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n failbackRetry429Spy = jest.spyOn(reg, FAILBACK_429_RETRY_UTIL);\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('verify successful registration', async () => {\n webex.request.mockReturnValueOnce({\n body: mockPostResponse,\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.CONNECTING);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.REGISTERED, mockPostResponse);\n });\n\n it('verify failure registration', async () => {\n webex.request.mockRejectedValue({\n body: mockPostResponse,\n statusCode: 401,\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n const error = createLineError(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n {},\n ERROR_TYPE.TOKEN_ERROR,\n RegistrationStatus.INACTIVE\n );\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.ERROR, undefined, error);\n });\n\n it('verify failure registration 403-101', async () => {\n webex.request\n .mockRejectedValueOnce({\n body: {\n userId: mockPostResponse.userId,\n errorCode: 101,\n devices: [mockPostResponse.device],\n },\n statusCode: 403,\n })\n .mockResolvedValueOnce({\n statusCode: 200,\n body: mockPostResponse,\n });\n\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(global.fetch).toBeCalledOnceWith(mockPostResponse.device.uri, {\n method: 'DELETE',\n headers: expect.anything(),\n });\n\n expect(warnSpy).toBeCalledWith('User device limit exceeded', expect.anything());\n expect(logSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(logSpy).toBeCalledWith('Registration restored successfully.', expect.anything());\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(4);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(3, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.REGISTERED, mockPostResponse);\n });\n\n describe('Registration failover tests', () => {\n it('verify unreachable primary with reachable backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n });\n\n it('verify unreachable primary and backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /*\n * 2 calls for primary -> initial and after timer expiry.\n * 2 calls for each backup entry -> 2 * 2 = 4.\n * So a total of 6 calls to webex.request and handleErrors\n */\n expect(webex.request).toBeCalledTimes(6);\n expect(handleErrorSpy).toBeCalledTimes(6);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[1]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n });\n\n describe('Registration failback tests', () => {\n beforeEach(async () => {\n /* keep keepalive as active so that it wont interfere with the failback tests */\n jest.spyOn(reg, 'postKeepAlive').mockResolvedValue(successPayload);\n jest.useFakeTimers();\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n reg.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n reg.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n\n /* These 2 calls to handleErrorSpy are for primary after which it fails over to backup */\n expect(handleErrorSpy).toBeCalledTimes(2);\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n });\n\n it('verify 429 error with failback to primary after initial registration with backup: Restore failure', async () => {\n // delete should be successful\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n postRegistrationSpy.mockRejectedValue(failurePayload429);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n expect(failbackRetry429Spy).toBeCalledOnceWith();\n expect(reg.failback429RetryAttempts).toBe(0);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_429_RETRY_UTIL);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_429_RETRY_UTIL);\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure', async () => {\n postRegistrationSpy.mockRejectedValue(failurePayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure with final error', async () => {\n const finalErrorPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 401,\n body: mockPostResponse,\n });\n postRegistrationSpy.mockClear();\n postRegistrationSpy\n .mockRejectedValue(finalErrorPayload)\n .mockRejectedValueOnce(failurePayload);\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore success', async () => {\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify successful failback to primary after initial registration with backup', async () => {\n postRegistrationSpy.mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url must now match with the primary url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.primary[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.failbackTimer).toBe(undefined);\n expect(restoreSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(mockPostResponse.rehomingIntervalMin);\n expect(reg.rehomingIntervalMax).toBe(mockPostResponse.rehomingIntervalMax);\n });\n\n it('verify unsuccessful failback attempt due to active call', async () => {\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(logSpy).toBeCalledWith(`Active calls present, deferring failback to next cycle.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(restoreSpy).not.toBeCalled();\n expect(restartSpy).not.toBeCalled();\n\n expect(logSpy).toBeCalledWith('Active calls present, deferring failback to next cycle.', {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n });\n\n // Keep-alive related test cases\n describe('Keep-alive Tests', () => {\n const logObj = {\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n };\n\n const mockKeepAliveBody = {device: mockPostResponse.device};\n\n beforeEach(async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n if (reg.keepaliveTimer) {\n clearInterval(reg.keepaliveTimer);\n reg.keepaliveTimer = undefined;\n }\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const keepAlivePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n webex.request.mockReturnValue(keepAlivePayload);\n\n const funcSpy = jest.spyOn(reg, 'postKeepAlive');\n\n jest.advanceTimersByTime(2 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(funcSpy).toBeCalledTimes(2); // should be called 2 times: first try and after the interval.\n expect(logSpy).lastCalledWith('Sent Keepalive, status: 200', logObj);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n const successPayload = {\n statusCode: 200,\n body: mockKeepAliveBody,\n };\n\n const timer = reg.keepaliveTimer;\n\n lineEmitter.mockClear();\n webex.request.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n jest.advanceTimersByTime(2 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledOnceWith(failurePayload, expect.anything(), {\n method: 'startKeepaliveTimer',\n file: REGISTRATION_FILE,\n });\n\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.keepaliveTimer).toBe(timer);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.RECONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.RECONNECTED);\n expect(lineEmitter).toBeCalledTimes(2);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n lineEmitter.mockClear();\n\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n const timer = reg.keepaliveTimer;\n\n jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n\n // sendKeepAlive tries to retry 5 times before accepting failure\n // later 2 attempts to register with primary server\n expect(handleErrorSpy).toBeCalledTimes(7);\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n\n expect(webex.request).toBeCalledTimes(7);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.RECONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.RECONNECTING);\n expect(lineEmitter).nthCalledWith(5, LINE_EVENTS.UNREGISTERED);\n\n /** there will be 2 registration attempts */\n expect(lineEmitter).nthCalledWith(6, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(7, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(8, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(9, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).toBeCalledTimes(9);\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n /* successful registration */\n // webex.request.mockResolvedValue(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n const url = 'https://mobius.asydm-m-1.prod.infra.webex.com/api/v1';\n\n /* set active Url and expect the registration to restore to this url */\n reg.setActiveMobiusUrl(url);\n\n const timer = reg.keepaliveTimer;\n\n jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n expect(handleErrorSpy).toBeCalledTimes(5);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBeTruthy();\n expect(reg.keepaliveTimer).not.toBe(timer);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n\n const timer = reg.keepaliveTimer;\n\n // sendKeepAlive tries to retry 3 times and receiving success on third time\n jest.advanceTimersByTime(3 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(handleErrorSpy).toBeCalledTimes(2);\n expect(clearIntervalSpy).not.toBeCalled();\n expect(reg.keepaliveTimer).toBe(timer);\n });\n\n it('verify final error for keep-alive', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 404,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n\n /* send one keepalive */\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledTimes(1);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(reconnectSpy).not.toBeCalled();\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(webex.request).toBeCalledOnceWith({\n headers: mockResponse.headers,\n uri: `${mockKeepAliveBody.device.uri}/status`,\n method: 'POST',\n service: mockResponse.service,\n });\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(handleErrorSpy).toBeCalledOnceWith(failurePayload, expect.anything(), {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n });\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 503,\n body: mockKeepAliveBody,\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockKeepAliveBody,\n });\n\n const clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n // jest.spyOn(callingClient['registration'], 'createDevice').mockResolvedValue(successPayload);\n\n const url = 'https://mobius.asydm-m-1.prod.infra.webex.com/api/v1';\n\n reg.setActiveMobiusUrl(url);\n\n expect(reg.reconnectPending).toStrictEqual(false);\n\n const timer = reg.keepaliveTimer;\n\n /* add a call to the callManager */\n const call = reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n /* send one keepalive */\n jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n expect(handleErrorSpy).toBeCalledTimes(5);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(true);\n expect(logSpy).toBeCalledWith(\n 'Active call(s) present, deferred reconnect till call cleanup.',\n {file: REGISTRATION_FILE, method: expect.any(String)}\n );\n\n reconnectSpy.mockClear();\n\n /* simulate call disconnect and Calling client will trigger reconnect upon receiving disconnect event from CallManager */\n reg.callManager.callCollection = {};\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reconnectSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n expect(reg.keepaliveTimer).toBeTruthy();\n expect(reg.keepaliveTimer).not.toBe(timer);\n });\n });\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, MobiusStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\nexport interface IRegistration {\n setMobiusServers: (primaryMobiusUris: string[], backupMobiusUris: string[]) => void;\n triggerRegistration: () => Promise<void>;\n isDeviceRegistered: () => boolean;\n setStatus: (value: MobiusStatus) => void;\n getStatus: () => MobiusStatus;\n getDeviceInfo: () => IDeviceInfo;\n clearKeepaliveTimer: () => void;\n deregister: () => void;\n setActiveMobiusUrl: (url: string) => void;\n getActiveMobiusUrl: () => string;\n reconnectOnFailure: (caller: string) => Promise<void>;\n isReconnectPending: () => boolean;\n handleConnectionRestoration: (retry: boolean) => Promise<boolean>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, RegistrationStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\n/**\n * Represents an interface for managing registration-related operations.\n */\nexport interface IRegistration {\n /**\n * Sets the primary and backup Mobius server URLs.\n *\n * @param primaryMobiusUris - An array of primary Mobius server URLs.\n * @param backupMobiusUris - An array of backup Mobius server URLs.\n */\n setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;\n\n /**\n * Triggers the registration process with the given list of servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n triggerRegistration(): Promise<void>;\n\n /**\n * Checks if the device is currently registered.\n *\n */\n isDeviceRegistered(): boolean;\n\n /**\n * Sets the status of the registration.\n *\n * @param value - The registration status to set.\n */\n setStatus(value: RegistrationStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): RegistrationStatus;\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n getDeviceInfo(): IDeviceInfo;\n\n /**\n * Clears the keep-alive timer used for registration.\n */\n clearKeepaliveTimer(): void;\n\n /**\n * Deregisters the device.\n */\n deregister(): void;\n\n /**\n * Sets the active Mobius server URL to use for registration.\n *\n * @param url - The Mobius server URL to set as active.\n */\n setActiveMobiusUrl(url: string): void;\n\n /**\n * Retrieves the active Mobius server URL.\n *\n */\n getActiveMobiusUrl(): string;\n\n /**\n * Attempts to reconnect after a connection failure.\n *\n * @param caller - The caller's identifier for reconnection.\n */\n reconnectOnFailure(caller: string): Promise<void>;\n\n /**\n * Checks if a reconnection attempt is pending.\n *\n */\n isReconnectPending(): boolean;\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n * @param retry - Set to `true` to trigger a retry after restoration.\n */\n handleConnectionRestoration(retry: boolean): Promise<boolean>;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {ISDKConnector} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {CallingClientEventTypes} from '../Events/types';\nimport {ServiceData} from '../common/types';\nimport {ICall} from './calling/types';\nimport {CallingClientError} from '../Errors';\n\nexport interface LoggerConfig {\n level: LOGGER;\n}\n\ninterface DiscoveryConfig {\n country: string;\n region: string;\n}\n\nexport interface CallingClientConfig {\n logger?: LoggerConfig;\n discovery?: DiscoveryConfig;\n serviceData?: ServiceData;\n}\n\nexport type CallingClientErrorEmitterCallback = (\n err: CallingClientError,\n finalError?: boolean\n) => void;\n\nexport interface ICallingClient extends Eventing<CallingClientEventTypes> {\n mediaEngine: typeof Media;\n getSDKConnector: () => ISDKConnector;\n getLoggingLevel: () => LOGGER;\n getActiveCalls: () => Record<string, ICall[]>;\n getConnectedCall: () => ICall | undefined;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {ISDKConnector} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {CallingClientEventTypes} from '../Events/types';\nimport {ServiceData} from '../common/types';\nimport {ICall} from './calling/types';\nimport {CallingClientError} from '../Errors';\nimport {ILine} from './line/types';\n\nexport interface LoggerConfig {\n level: LOGGER;\n}\n\ninterface DiscoveryConfig {\n country: string;\n region: string;\n}\n\nexport interface CallingClientConfig {\n logger?: LoggerConfig;\n discovery?: DiscoveryConfig;\n serviceData?: ServiceData;\n}\n\nexport type CallingClientErrorEmitterCallback = (\n err: CallingClientError,\n finalError?: boolean\n) => void;\n\n/**\n * An interface for the `CallingClient` module.\n * The `CallingClient` module is designed to provide a set of APIs related to line registration and calling functionalities within the SDK.\n *\n * @example\n * ```javascript\n * const callingClient = createClient(webex, callingConfig);\n * ```\n */\nexport interface ICallingClient extends Eventing<CallingClientEventTypes> {\n /**\n * Represents the `mediaEngine for managing media-related operations within the CallingClient.\n * The media engine provides access to audio and video devices such as cameras, microphones, and speakers within the media layer.\n *\n * @public\n * @example\n * ```\n * const microphones = await callingClient.mediaEngine.Media.getMicrophones();\n * const speakers = await callingClient.mediaEngine.Media.getSpeakers();\n * const cameras = await callingClient.mediaEngine.Media.getCameras();\n * ```\n */\n mediaEngine: typeof Media;\n\n /**\n * @ignore\n */\n getSDKConnector(): ISDKConnector;\n\n /**\n * @ignore\n */\n getLoggingLevel(): LOGGER;\n\n /**\n * Retrieves details of the line object(s) belonging to a user.\n *\n * This method gathers all the {@link ILine} objects and organizes them into a dictionary\n * where keys represent `lineId`s and values are arrays of {@link ILine} objects registered with\n * the `callingClient`\n *\n * @example\n * ```typescript\n * const lines = callingClient.getLines();\n * ```\n * The `lines` response object will have `lineId` as its key and\n * a list {@link ILine} objects as it's value.\n * ```\n * {\n * 'lineId1': lineObj1,\n * 'lineId2': lineObj2,\n * }\n * ```\n */\n getLines(): Record<string, ILine>;\n\n /**\n * Retrieves a dictionary of active calls grouped by `lineId`.\n *\n * This method gathers active {@link ICall} objects and organizes them into a dictionary\n * where keys represent `lineId`s and values are arrays of {@link ICall} objects of active calls associated\n * with each line.\n *\n * @example\n * ```typescript\n * const activeCalls = callingClient.getActiveCalls();\n * ```\n * The `activeCalls` response object will have `lineId` as its key and\n * a list {@link ICall} objects as it's value.\n *\n * ```\n * {\n * 'line1': [call1, call2],\n * 'line2': [call3],\n * }\n * ```\n */\n getActiveCalls(): Record<string, ICall[]>;\n\n /**\n * Retrieves the {@link ICall} object for the currently connected call in the client.\n *\n * This method iterates through active call objects and returns the call\n * that is currently connected (not on hold).\n *\n * @example\n * ```typescript\n * const connectedCall : ICall = callingClient.getConnectedCall();\n * ```\n * The `connectedCall` object will be the Call object of the connected call with the client\n */\n getConnectedCall(): ICall | undefined;\n}\n"],"mappings":""}
@@ -40,8 +40,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
40
40
  * ```javascript
41
41
  * const contactClient = createContactsClient(webex, logger);
42
42
  * ```
43
- *
44
- * @implements {IContacts}
45
43
  */
46
44
  var ContactsClient = /*#__PURE__*/function () {
47
45
  /**
@@ -1122,6 +1120,14 @@ var ContactsClient = /*#__PURE__*/function () {
1122
1120
  }
1123
1121
  return deleteContact;
1124
1122
  }()
1123
+ /**
1124
+ * @ignore
1125
+ */
1126
+ }, {
1127
+ key: "getSDKConnector",
1128
+ value: function getSDKConnector() {
1129
+ return this.sdkConnector;
1130
+ }
1125
1131
  }]);
1126
1132
  return ContactsClient;
1127
1133
  }();