@webex/calling 3.8.1-next.4 → 3.8.1

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 (34) hide show
  1. package/dist/CallingClient/CallingClient.js +105 -125
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/constants.js +2 -3
  4. package/dist/CallingClient/constants.js.map +1 -1
  5. package/dist/CallingClient/registration/register.js +144 -164
  6. package/dist/CallingClient/registration/register.js.map +1 -1
  7. package/dist/CallingClient/registration/register.test.js +9 -29
  8. package/dist/CallingClient/registration/register.test.js.map +1 -1
  9. package/dist/Errors/types.js +0 -2
  10. package/dist/Errors/types.js.map +1 -1
  11. package/dist/Metrics/index.js +2 -9
  12. package/dist/Metrics/index.js.map +1 -1
  13. package/dist/Metrics/index.test.js +4 -10
  14. package/dist/Metrics/index.test.js.map +1 -1
  15. package/dist/Metrics/types.js.map +1 -1
  16. package/dist/common/Utils.js +27 -28
  17. package/dist/common/Utils.js.map +1 -1
  18. package/dist/module/CallingClient/CallingClient.js +2 -2
  19. package/dist/module/CallingClient/constants.js +0 -1
  20. package/dist/module/CallingClient/registration/register.js +11 -14
  21. package/dist/module/Errors/types.js +0 -2
  22. package/dist/module/Metrics/index.js +1 -8
  23. package/dist/module/common/Utils.js +1 -2
  24. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  25. package/dist/types/CallingClient/constants.d.ts +0 -1
  26. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  27. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  28. package/dist/types/Errors/types.d.ts +0 -2
  29. package/dist/types/Errors/types.d.ts.map +1 -1
  30. package/dist/types/Metrics/index.d.ts.map +1 -1
  31. package/dist/types/Metrics/types.d.ts +1 -2
  32. package/dist/types/Metrics/types.d.ts.map +1 -1
  33. package/dist/types/common/Utils.d.ts.map +1 -1
  34. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_types5","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","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","ccMockResponse","failurePayload","statusCode","mockPostResponse","headers","trackingid","failurePayload429One","failurePayload429Two","failurePayload429Three","failurePayload429Four","successPayload","reg","restartSpy","restoreSpy","postRegistrationSpy","failoverSpy","retry429Spy","metricSpy","setupRegistration","mockServiceData","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","metricManager","beforeEach","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","deviceId","objectContaining","file","REGISTRATION_FILE","any","String","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","REGISTRATION_UTIL","undefined","stop","_callee2","error","_callee2$","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","REGISTRATION_ERROR","_callee3","_callee3$","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","global","fetch","json","mockDeleteResponse","IDLE","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_callee4$","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_callee5$","_context5","isCCFlow","_callee6","_callee6$","_context6","_callee7","_callee7$","_context7","REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC","_callee8","_callee8$","_context8","_callee9","_callee9$","_context9","_callee10","_callee10$","_context10","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","getActiveMobiusUrl","_callee11","_callee11$","_context11","CONTACT_CENTER","_callee12","_callee12$","_context12","_callee13","_callee13$","_context13","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee14","_callee14$","_context14","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","toBe","REG_429_RETRY_UTIL","failbackTimer","_callee15","_callee15$","_context15","FAILBACK_UTIL","_callee16","finalErrorPayload","_callee16$","_context16","_callee17","_callee17$","_context17","_callee18","_callee18$","_context18","_callee19","_callee19$","_context19","callManager","createCall","_keys","getActiveCalls","logObj","mockKeepAliveBody","beforeEachSetupForKeepalive","_ref20","_callee20","_callee20$","_context20","keepaliveTimer","clearInterval","reconnectPending","calls","_values","end","_callee21","keepAlivePayload","funcSpy","_callee21$","_context21","mockReturnValue","keepaliveInterval","_callee22","timer","_callee22$","_context22","RECONNECTING","RECONNECTED","_callee23","restartRegSpy","reconnectSpy","clearIntervalSpy","_callee23$","_context23","KEEPALIVE_UTIL","toHaveBeenCalledWith","_callee24","_callee24$","_context24","setActiveMobiusUrl","toBeTruthy","_callee25","_callee25$","_context25","_callee26","_callee26$","_context26","_callee27","_callee27$","_context27","service","_callee28","_callee28$","_context28","lastCalledWith","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_UTIL,\n FAILOVER_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REGISTRATION_UTIL,\n REG_429_RETRY_UTIL,\n REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC,\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';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE} from '../../Metrics/types';\n\nconst webex = getTestUtilsWebex();\nconst MockServiceData = {\n indicator: ServiceIndicator.CALLING,\n domain: '',\n};\nconst logSpy = jest.spyOn(log, 'log');\nconst infoSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\njest.spyOn(utils, 'uploadLogs').mockResolvedValue();\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 ccMockResponse = {\n ...mockResponse,\n body: {\n ...mockResponse.body,\n serviceData: {\n domain: '',\n indicator: 'contactcenter',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n const failurePayload429One = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 42,\n },\n });\n\n const failurePayload429Two = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 33,\n },\n });\n\n const failurePayload429Three = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 136,\n },\n });\n\n const failurePayload429Four = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 81,\n },\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n let reg: IRegistration;\n let restartSpy;\n let restoreSpy;\n let postRegistrationSpy;\n let failoverSpy;\n let retry429Spy;\n let metricSpy;\n\n const setupRegistration = (mockServiceData) => {\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 restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n failoverSpy = jest.spyOn(reg, 'startFailoverTimer');\n retry429Spy = jest.spyOn(reg, 'handle429Retry');\n metricSpy = jest.spyOn(reg.metricManager, 'submitRegistrationMetric');\n };\n\n beforeEach(() => {\n setupRegistration(MockServiceData);\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 headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\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 // Check that log.log was called for successful registration\n expect(logSpy).toBeCalledWith(\n `Registration successful for deviceId: ${mockPostResponse.device.deviceId} userId: ${mockPostResponse.userId}`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: expect.any(String),\n })\n );\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('verify failure registration', async () => {\n webex.request.mockRejectedValue({\n body: mockPostResponse,\n statusCode: 401,\n headers: {},\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 expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n '',\n undefined,\n error\n );\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 headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\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(infoSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(infoSpy).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 expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'UNKNOWN',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n describe('429 handling tests', () => {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n const logSpy = jest.spyOn(log, 'log');\n\n beforeEach(() => {\n mobiusUris.backup.pop();\n });\n\n afterEach(() => {\n mobiusUris.backup.push(URL);\n jest.clearAllMocks();\n });\n\n it('handle 429 received during initial registration failure and first attempt with primary', async () => {\n jest.useFakeTimers();\n logSpy.mockClear();\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration failed with 429 with higher retyrAfter, interval should be updtaed with retryAfter.\n * The first attempt to register with primary should be made after retryAfter seconds.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'triggerRegistration'\n );\n expect(reg.retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n /* The first attempt to register with primary failed with 429 with lower retryAfter, interval should remain the same.\n * The second attempt to register with primary will be scheduled as per the interval calculated.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429Two.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(reg.retryAfter).toEqual(failurePayload429Two.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(43 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* The second attempt to register with primary failed with 500, the retryAfter should be undefined.\n * The third attempt to register with primary will be scheduled as per the interval calculated.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined);\n expect(failoverSpy).toBeCalledOnceWith(3, 85);\n });\n\n it('handle 429 received with higher retryAfter than the interval when interval with elapsedTime is already reaching threshold timer so we failover immediately', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 3`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while the last attempt for primary', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration and first 2 attempts with primary failed with non-final 5xx error responses.\n * Last attempt with primary failed with 429, the retryAfter should be used to schedule the next attempt but\n * the failover is triggered before the scheduling logic kicks in.\n */\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 41 seconds, number of attempts : 3`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(41 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(4, 114);\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(5, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while failing over to backup server for CC flow', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n /* Failover to backup server failed with 429, the retryAfter is used to schedule the next attempt with backup server.\n * Interval will be updated with retryAfter as interval calculated is less than the retryAfter.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with backup servers in ${failurePayload429One.headers['retry-after']} seconds.`,\n loggerContext\n );\n\n webex.request.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('checking the retryAfter exceeding the threshold timers in first attempt itself', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(40);\n webex.request.mockRejectedValueOnce(failurePayload429Three);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Three.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n });\n\n it('checking the retryAfter exceeding the threshold timers in later attempts', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(39)\n .mockReturnValueOnce(43);\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Four)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 43 seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Four.headers['retry-after']} seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\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 expect(metricSpy).toHaveBeenNthCalledWith(\n 3,\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n FAILOVER_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('cc: verify unreachable primary with reachable backup server', async () => {\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n\n jest.useFakeTimers();\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_FOR_CC_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\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(failurePayload429Two);\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(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n jest.advanceTimersByTime(10000);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429Two.headers['retry-after'],\n 'executeFailback'\n );\n expect(reg.failback429RetryAttempts).toBe(0);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n expect(restartSpy).toBeCalledOnceWith(REG_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(infoSpy).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(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\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(infoSpy).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(infoSpy).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(infoSpy).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(infoSpy).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(infoSpy).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 const mockKeepAliveBody = {device: mockPostResponse.device};\n\n const beforeEachSetupForKeepalive = 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 await beforeEachSetupForKeepalive();\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\n expect(logSpy).toBeCalledWith('Sent Keepalive, status: 200', logObj);\n expect(infoSpy).not.toBeCalledWith('Sent Keepalive, status: 200', logObj);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\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 await beforeEachSetupForKeepalive();\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 expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 1 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n\n expect(webex.request).toBeCalledTimes(7);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 1 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\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 await beforeEachSetupForKeepalive();\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 await beforeEachSetupForKeepalive();\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('cc: verify failover to backup server after 4 keep alive failure with primary server', async () => {\n // Register with contact center service\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n await beforeEachSetupForKeepalive();\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 jest\n .spyOn(reg, 'postKeepAlive')\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\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 jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(reg.keepaliveTimer).not.toBe(timer);\n\n webex.request.mockResolvedValue(successPayload);\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n\n it('verify final error for keep-alive', async () => {\n await beforeEachSetupForKeepalive();\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 expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 404 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const call = reg.callManager.createCall();\n\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(infoSpy).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
+ {"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","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","ccMockResponse","failurePayload","statusCode","mockPostResponse","failurePayload429One","headers","failurePayload429Two","failurePayload429Three","failurePayload429Four","successPayload","reg","restartSpy","restoreSpy","postRegistrationSpy","failoverSpy","retry429Spy","setupRegistration","mockServiceData","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","beforeEach","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","deviceId","objectContaining","file","REGISTRATION_FILE","any","String","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","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_callee4$","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_callee5$","_context5","isCCFlow","_callee6","_callee6$","_context6","_callee7","_callee7$","_context7","REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC","_callee8","_callee8$","_context8","_callee9","_callee9$","_context9","_callee10","_callee10$","_context10","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","getActiveMobiusUrl","_callee11","_callee11$","_context11","CONTACT_CENTER","_callee12","_callee12$","_context12","_callee13","_callee13$","_context13","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee14","_callee14$","_context14","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","toBe","REG_429_RETRY_UTIL","failbackTimer","_callee15","_callee15$","_context15","FAILBACK_UTIL","_callee16","finalErrorPayload","_callee16$","_context16","_callee17","_callee17$","_context17","_callee18","_callee18$","_context18","_callee19","_callee19$","_context19","callManager","createCall","_keys","getActiveCalls","logObj","mockKeepAliveBody","beforeEachSetupForKeepalive","_ref20","_callee20","_callee20$","_context20","keepaliveTimer","clearInterval","reconnectPending","calls","_values","end","_callee21","keepAlivePayload","funcSpy","_callee21$","_context21","mockReturnValue","keepaliveInterval","_callee22","timer","_callee22$","_context22","RECONNECTING","RECONNECTED","_callee23","restartRegSpy","reconnectSpy","clearIntervalSpy","_callee23$","_context23","KEEPALIVE_UTIL","toHaveBeenCalledWith","_callee24","_callee24$","_context24","setActiveMobiusUrl","toBeTruthy","_callee25","_callee25$","_context25","_callee26","_callee26$","_context26","_callee27","_callee27$","_context27","service","_callee28","_callee28$","_context28","lastCalledWith","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_UTIL,\n FAILOVER_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REG_429_RETRY_UTIL,\n REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC,\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, 'log');\nconst infoSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\njest.spyOn(utils, 'uploadLogs').mockResolvedValue();\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 ccMockResponse = {\n ...mockResponse,\n body: {\n ...mockResponse.body,\n serviceData: {\n domain: '',\n indicator: 'contactcenter',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n });\n\n const failurePayload429One = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 42,\n },\n });\n\n const failurePayload429Two = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 33,\n },\n });\n\n const failurePayload429Three = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 136,\n },\n });\n\n const failurePayload429Four = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 81,\n },\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n });\n\n let reg: IRegistration;\n let restartSpy;\n let restoreSpy;\n let postRegistrationSpy;\n let failoverSpy;\n let retry429Spy;\n\n const setupRegistration = (mockServiceData) => {\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 restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n failoverSpy = jest.spyOn(reg, 'startFailoverTimer');\n retry429Spy = jest.spyOn(reg, 'handle429Retry');\n };\n\n beforeEach(() => {\n setupRegistration(MockServiceData);\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 // Check that log.log was called for successful registration\n expect(logSpy).toBeCalledWith(\n `Registration successful for deviceId: ${mockPostResponse.device.deviceId} userId: ${mockPostResponse.userId}`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: expect.any(String),\n })\n );\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(infoSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(infoSpy).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('429 handling tests', () => {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n const logSpy = jest.spyOn(log, 'log');\n\n beforeEach(() => {\n mobiusUris.backup.pop();\n });\n\n afterEach(() => {\n mobiusUris.backup.push(URL);\n jest.clearAllMocks();\n });\n\n it('handle 429 received during initial registration failure and first attempt with primary', async () => {\n jest.useFakeTimers();\n logSpy.mockClear();\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration failed with 429 with higher retyrAfter, interval should be updtaed with retryAfter.\n * The first attempt to register with primary should be made after retryAfter seconds.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'triggerRegistration'\n );\n expect(reg.retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n /* The first attempt to register with primary failed with 429 with lower retryAfter, interval should remain the same.\n * The second attempt to register with primary will be scheduled as per the interval calculated.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429Two.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(reg.retryAfter).toEqual(failurePayload429Two.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(43 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* The second attempt to register with primary failed with 500, the retryAfter should be undefined.\n * The third attempt to register with primary will be scheduled as per the interval calculated.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined);\n expect(failoverSpy).toBeCalledOnceWith(3, 85);\n });\n\n it('handle 429 received with higher retryAfter than the interval when interval with elapsedTime is already reaching threshold timer so we failover immediately', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 3`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while the last attempt for primary', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration and first 2 attempts with primary failed with non-final 5xx error responses.\n * Last attempt with primary failed with 429, the retryAfter should be used to schedule the next attempt but\n * the failover is triggered before the scheduling logic kicks in.\n */\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 41 seconds, number of attempts : 3`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(41 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(4, 114);\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(5, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while failing over to backup server for CC flow', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n /* Failover to backup server failed with 429, the retryAfter is used to schedule the next attempt with backup server.\n * Interval will be updated with retryAfter as interval calculated is less than the retryAfter.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with backup servers in ${failurePayload429One.headers['retry-after']} seconds.`,\n loggerContext\n );\n\n webex.request.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('checking the retryAfter exceeding the threshold timers in first attempt itself', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(40);\n webex.request.mockRejectedValueOnce(failurePayload429Three);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Three.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n });\n\n it('checking the retryAfter exceeding the threshold timers in later attempts', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(39)\n .mockReturnValueOnce(43);\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Four)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 43 seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Four.headers['retry-after']} seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\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('cc: verify unreachable primary with reachable backup server', async () => {\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n\n jest.useFakeTimers();\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_FOR_CC_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\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(failurePayload429Two);\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(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n jest.advanceTimersByTime(10000);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429Two.headers['retry-after'],\n 'executeFailback'\n );\n expect(reg.failback429RetryAttempts).toBe(0);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n expect(restartSpy).toBeCalledOnceWith(REG_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(infoSpy).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(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\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(infoSpy).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(infoSpy).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(infoSpy).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(infoSpy).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(infoSpy).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 const mockKeepAliveBody = {device: mockPostResponse.device};\n\n const beforeEachSetupForKeepalive = 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 await beforeEachSetupForKeepalive();\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\n expect(logSpy).toBeCalledWith('Sent Keepalive, status: 200', logObj);\n expect(infoSpy).not.toBeCalledWith('Sent Keepalive, status: 200', logObj);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\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 await beforeEachSetupForKeepalive();\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 expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 1 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n\n expect(webex.request).toBeCalledTimes(7);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 1 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\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 await beforeEachSetupForKeepalive();\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 await beforeEachSetupForKeepalive();\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('cc: verify failover to backup server after 4 keep alive failure with primary server', async () => {\n // Register with contact center service\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n await beforeEachSetupForKeepalive();\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 jest\n .spyOn(reg, 'postKeepAlive')\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\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 jest.advanceTimersByTime(5 * mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(clearIntervalSpy).toBeCalledOnceWith(timer);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(reg.keepaliveTimer).not.toBe(timer);\n\n webex.request.mockResolvedValue(successPayload);\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n\n it('verify final error for keep-alive', async () => {\n await beforeEachSetupForKeepalive();\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 expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 404 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const call = reg.callManager.createCall();\n\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(infoSpy).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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"}
@@ -14,14 +14,12 @@ var ERROR_LAYER = exports.ERROR_LAYER = /*#__PURE__*/function (ERROR_LAYER) {
14
14
  var ERROR_TYPE = exports.ERROR_TYPE = /*#__PURE__*/function (ERROR_TYPE) {
15
15
  ERROR_TYPE["CALL_ERROR"] = "call_error";
16
16
  ERROR_TYPE["DEFAULT"] = "default_error";
17
- ERROR_TYPE["BAD_REQUEST"] = "bad_request";
18
17
  ERROR_TYPE["FORBIDDEN_ERROR"] = "forbidden";
19
18
  ERROR_TYPE["NOT_FOUND"] = "not_found";
20
19
  ERROR_TYPE["REGISTRATION_ERROR"] = "registration_error";
21
20
  ERROR_TYPE["SERVICE_UNAVAILABLE"] = "service_unavailable";
22
21
  ERROR_TYPE["TIMEOUT"] = "timeout";
23
22
  ERROR_TYPE["TOKEN_ERROR"] = "token_error";
24
- ERROR_TYPE["TOO_MANY_REQUESTS"] = "too_many_requests";
25
23
  ERROR_TYPE["SERVER_ERROR"] = "server_error";
26
24
  return ERROR_TYPE;
27
25
  }({});
@@ -1 +1 @@
1
- {"version":3,"names":["ERROR_LAYER","exports","ERROR_TYPE","ERROR_CODE","CALL_ERROR_CODE","DEVICE_ERROR_CODE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-interface */\nimport {CorrelationId, IMetaContext, RegistrationStatus} from '../common/types';\n\nexport type ErrorMessage = string;\n\nexport enum ERROR_LAYER {\n CALL_CONTROL = 'call_control',\n MEDIA = 'media',\n}\n\nexport enum ERROR_TYPE {\n CALL_ERROR = 'call_error',\n DEFAULT = 'default_error',\n BAD_REQUEST = 'bad_request',\n FORBIDDEN_ERROR = 'forbidden',\n NOT_FOUND = 'not_found',\n REGISTRATION_ERROR = 'registration_error',\n SERVICE_UNAVAILABLE = 'service_unavailable',\n TIMEOUT = 'timeout',\n TOKEN_ERROR = 'token_error',\n TOO_MANY_REQUESTS = 'too_many_requests',\n SERVER_ERROR = 'server_error',\n}\n\nexport enum ERROR_CODE {\n UNAUTHORIZED = 401,\n FORBIDDEN = 403,\n DEVICE_NOT_FOUND = 404,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n SERVICE_UNAVAILABLE = 503,\n BAD_REQUEST = 400,\n REQUEST_TIMEOUT = 408,\n TOO_MANY_REQUESTS = 429,\n}\n\nexport enum CALL_ERROR_CODE {\n INVALID_STATUS_UPDATE = 111,\n DEVICE_NOT_REGISTERED = 112,\n CALL_NOT_FOUND = 113,\n ERROR_PROCESSING = 114,\n USER_BUSY = 115,\n PARSING_ERROR = 116,\n TIMEOUT_ERROR = 117,\n NOT_ACCEPTABLE = 118,\n CALL_REJECTED = 119,\n NOT_AVAILABLE = 120,\n}\n\nexport enum DEVICE_ERROR_CODE {\n DEVICE_LIMIT_EXCEEDED = 101,\n DEVICE_CREATION_DISABLED = 102,\n DEVICE_CREATION_FAILED = 103,\n}\n\nexport interface ErrorContext extends IMetaContext {}\n\nexport type ErrorObject = {\n message: ErrorMessage;\n type: ERROR_TYPE;\n context: ErrorContext;\n};\n\nexport interface LineErrorObject extends ErrorObject {\n status: RegistrationStatus;\n}\n\nexport interface CallErrorObject extends ErrorObject {\n correlationId: CorrelationId;\n errorLayer: ERROR_LAYER;\n}\n"],"mappings":";;;;;;;AAAA;AAAA,IAKYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAKXE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAcVC,UAAU,GAAAF,OAAA,CAAAE,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAYVC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAafC,iBAAiB,GAAAJ,OAAA,CAAAI,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA"}
1
+ {"version":3,"names":["ERROR_LAYER","exports","ERROR_TYPE","ERROR_CODE","CALL_ERROR_CODE","DEVICE_ERROR_CODE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-interface */\nimport {CorrelationId, IMetaContext, RegistrationStatus} from '../common/types';\n\nexport type ErrorMessage = string;\n\nexport enum ERROR_LAYER {\n CALL_CONTROL = 'call_control',\n MEDIA = 'media',\n}\n\nexport enum ERROR_TYPE {\n CALL_ERROR = 'call_error',\n DEFAULT = 'default_error',\n FORBIDDEN_ERROR = 'forbidden',\n NOT_FOUND = 'not_found',\n REGISTRATION_ERROR = 'registration_error',\n SERVICE_UNAVAILABLE = 'service_unavailable',\n TIMEOUT = 'timeout',\n TOKEN_ERROR = 'token_error',\n SERVER_ERROR = 'server_error',\n}\n\nexport enum ERROR_CODE {\n UNAUTHORIZED = 401,\n FORBIDDEN = 403,\n DEVICE_NOT_FOUND = 404,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n SERVICE_UNAVAILABLE = 503,\n BAD_REQUEST = 400,\n REQUEST_TIMEOUT = 408,\n TOO_MANY_REQUESTS = 429,\n}\n\nexport enum CALL_ERROR_CODE {\n INVALID_STATUS_UPDATE = 111,\n DEVICE_NOT_REGISTERED = 112,\n CALL_NOT_FOUND = 113,\n ERROR_PROCESSING = 114,\n USER_BUSY = 115,\n PARSING_ERROR = 116,\n TIMEOUT_ERROR = 117,\n NOT_ACCEPTABLE = 118,\n CALL_REJECTED = 119,\n NOT_AVAILABLE = 120,\n}\n\nexport enum DEVICE_ERROR_CODE {\n DEVICE_LIMIT_EXCEEDED = 101,\n DEVICE_CREATION_DISABLED = 102,\n DEVICE_CREATION_FAILED = 103,\n}\n\nexport interface ErrorContext extends IMetaContext {}\n\nexport type ErrorObject = {\n message: ErrorMessage;\n type: ERROR_TYPE;\n context: ErrorContext;\n};\n\nexport interface LineErrorObject extends ErrorObject {\n status: RegistrationStatus;\n}\n\nexport interface CallErrorObject extends ErrorObject {\n correlationId: CorrelationId;\n errorLayer: ERROR_LAYER;\n}\n"],"mappings":";;;;;;;AAAA;AAAA,IAKYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAKXE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAYVC,UAAU,GAAAF,OAAA,CAAAE,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAYVC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAafC,iBAAiB,GAAAJ,OAAA,CAAAI,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA"}