@webex/calling 3.8.1-web-workers-keepalive.2 → 3.9.0

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 (35) hide show
  1. package/dist/CallSettings/WxCallBackendConnector.js +2 -2
  2. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  3. package/dist/CallSettings/WxCallBackendConnector.test.js +94 -27
  4. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  5. package/dist/CallSettings/types.js.map +1 -1
  6. package/dist/CallingClient/CallingClient.js +56 -21
  7. package/dist/CallingClient/CallingClient.js.map +1 -1
  8. package/dist/CallingClient/CallingClient.test.js +162 -98
  9. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  10. package/dist/CallingClient/constants.js +3 -4
  11. package/dist/CallingClient/constants.js.map +1 -1
  12. package/dist/CallingClient/registration/register.js +278 -198
  13. package/dist/CallingClient/registration/register.js.map +1 -1
  14. package/dist/CallingClient/registration/register.test.js +168 -85
  15. package/dist/CallingClient/registration/register.test.js.map +1 -1
  16. package/dist/CallingClient/registration/types.js.map +1 -1
  17. package/dist/common/Utils.js +13 -7
  18. package/dist/common/Utils.js.map +1 -1
  19. package/dist/common/Utils.test.js +265 -119
  20. package/dist/common/Utils.test.js.map +1 -1
  21. package/dist/module/CallSettings/WxCallBackendConnector.js +1 -1
  22. package/dist/module/CallingClient/CallingClient.js +23 -8
  23. package/dist/module/CallingClient/constants.js +1 -2
  24. package/dist/module/CallingClient/registration/register.js +39 -6
  25. package/dist/module/common/Utils.js +8 -1
  26. package/dist/types/CallSettings/types.d.ts +1 -1
  27. package/dist/types/CallSettings/types.d.ts.map +1 -1
  28. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  29. package/dist/types/CallingClient/constants.d.ts +1 -2
  30. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  31. package/dist/types/CallingClient/registration/register.d.ts +1 -0
  32. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  33. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  34. package/dist/types/common/Utils.d.ts.map +1 -1
  35. package/package.json +4 -5
@@ -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","beforeEachSetupForKeepalive","_ref20","_callee20","_callee20$","_context20","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","calls","_values","end","_callee21","postMessageSpy","_callee21$","_context21","Worker","toHaveBeenCalledWith","type","accessToken","deviceUrl","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee22","worker","_callee22$","_context22","err","keepAliveRetryCount","_callee23","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_callee23$","_context23","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","KEEPALIVE_UTIL","_callee24","_callee24$","_context24","toBeUndefined","startKeepaliveTimer","name","KEEPALIVE_SUCCESS","_callee25","_callee25$","_context25","_callee26","clearKeepaliveSpy","_callee26$","_context26","toHaveBeenCalled","_callee27","clearTimerSpy","threshold","_callee27$","_context27","lastCalledWith","keepaliveTimer","callCollection","reconnectOnFailure","CALLS_CLEARED_HANDLER_UTIL","_callee28","_callee28$","_context28"],"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 {\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} 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.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 beforeEachSetupForKeepalive = async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n };\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n reg.clearKeepaliveTimer();\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n\n await beforeEachSetupForKeepalive();\n\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n\n reg.webWorker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\n\n const worker = reg.webWorker;\n lineEmitter.mockClear();\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_FAILURE', err: {statusCode: 503}, keepAliveRetryCount: 1},\n } as MessageEvent);\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n // Run any necessary setup for keepalive\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Clear previous event emissions\n lineEmitter.mockClear();\n\n // Assume registration is active\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n // Use fake timers to trigger keepalive initialization\n jest.useFakeTimers();\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n\n // Simulate the worker sending a KEEPALIVE_FAILURE message with retry count at threshold.\n const RETRY_COUNT_THRESHOLD = reg.isCCFlow ? 4 : 5;\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: RETRY_COUNT_THRESHOLD,\n },\n };\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n\n jest.useRealTimers();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 5 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.webWorker).toBeDefined();\n\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const url = 'https://mobius-dfw.webex.com/api/v1/calling/web/';\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 5,\n },\n } as MessageEvent);\n\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(reconnectSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n\n // Advance timers and flush any remaining promises.\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n // reconnectSpy should have been called only once.\n expect(reconnectSpy).toBeCalledTimes(1);\n expect(restoreSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n expect(restartSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n // Active Mobius URL should remain unchanged.\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(handleErrorSpy).toBeCalledTimes(3);\n\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n // In a complete failure‐then-recovery scenario, we expect another failure event to have been handled.\n // For that, simulate a second failure event on the new worker.\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledTimes(4);\n\n // And then re-register successfully:\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\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 webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n // Spy on clearKeepaliveTimer and simulate reconnectOnFailure behavior\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n // Simulate a KEEPALIVE_FAILURE message from the worker with a retry count equal to threshold (4 for CC)\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 4,\n },\n } as MessageEvent);\n\n // Wait for any asynchronous actions to complete\n await flushPromises();\n\n // Verify that the keepalive timer was cleared and reconnectOnFailure was triggered\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(reconnectSpy).toHaveBeenCalledWith(reg.startKeepaliveTimer.name);\n\n // Verify that the active Mobius URL has been updated to the backup server and registration is active\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Simulate an active call.\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const threshold = reg.isCCFlow ? 4 : 5;\n\n // Simulate a KEEPALIVE_FAILURE event with a 503 error at threshold.\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent;\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n // At this point, clearKeepaliveTimer was called so the worker is terminated.\n expect(clearTimerSpy).toHaveBeenCalled();\n expect(reg.webWorker).toBeUndefined();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\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 // Now simulate call cleanup.\n reg.callManager.callCollection = {};\n webex.request.mockResolvedValueOnce(successPayload);\n\n // Call reconnectOnFailure manually. With no active calls, this should trigger re-registration.\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n await flushPromises();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n // After re-registration, registration status becomes ACTIVE and a new worker is created.\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\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 });\n\n it('checks for keep-alive failure with final error: 404', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n jest.spyOn(utils, 'handleRegistrationErrors').mockResolvedValue(true);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\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 expect(handleErrorSpy).toBeCalledOnceWith({statusCode: 404}, expect.anything(), {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\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","_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","deregisterSpy","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_IN_SEC","_callee8","_callee8$","_context8","_callee9","_callee9$","_context9","_callee10","_callee10$","_context10","getActiveMobiusUrl","_callee11","_callee11$","_context11","CONTACT_CENTER","_callee12","_callee12$","_context12","isPrimaryActiveSpy","_callee13","_callee13$","_context13","mockReturnValue","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","_callee20","_callee20$","_context20","beforeEachSetupForKeepalive","_ref21","_callee21","_callee21$","_context21","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","calls","_values","end","_callee22","postMessageSpy","_callee22$","_context22","Worker","toHaveBeenCalledWith","type","accessToken","deviceUrl","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee23","worker","_callee23$","_context23","err","keepAliveRetryCount","_callee24","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_callee24$","_context24","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","KEEPALIVE_UTIL","_callee25","_callee25$","_context25","toBeUndefined","startKeepaliveTimer","name","KEEPALIVE_SUCCESS","_callee26","_callee26$","_context26","_callee27","clearKeepaliveSpy","_callee27$","_context27","toHaveBeenCalled","_callee28","clearTimerSpy","threshold","_callee28$","_context28","lastCalledWith","keepaliveTimer","callCollection","reconnectOnFailure","CALLS_CLEARED_HANDLER_UTIL","_callee29","_callee29$","_context29","_callee30","pingSuccessPayload","status","_callee30$","_context30","isPrimaryActive","sent","_callee31","pingFailurePayload","_callee31$","_context31"],"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 {\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} 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_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 deregisterSpy;\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 deregisterSpy = jest.spyOn(reg, 'deregister');\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_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_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 let isPrimaryActiveSpy;\n beforeEach(async () => {\n isPrimaryActiveSpy = jest.spyOn(reg, 'isPrimaryActive');\n isPrimaryActiveSpy.mockReturnValue(true);\n /* keep keepalive as active so that it wont interfere with the failback tests */\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(deregisterSpy).toBeCalledOnceWith();\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(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\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(deregisterSpy).not.toBeCalled();\n expect(restoreSpy).not.toBeCalled();\n expect(restartSpy).not.toBeCalled();\n\n expect(infoSpy).toBeCalledWith(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\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 attempt due to primary server being down', async () => {\n isPrimaryActiveSpy.mockReturnValue(false);\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(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(deregisterSpy).not.toBeCalled();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n });\n\n // Keep-alive related test cases\n describe('Keep-alive Tests', () => {\n const beforeEachSetupForKeepalive = async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n };\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n reg.clearKeepaliveTimer();\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n\n await beforeEachSetupForKeepalive();\n\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n\n reg.webWorker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\n\n const worker = reg.webWorker;\n lineEmitter.mockClear();\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_FAILURE', err: {statusCode: 503}, keepAliveRetryCount: 1},\n } as MessageEvent);\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n // Run any necessary setup for keepalive\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Clear previous event emissions\n lineEmitter.mockClear();\n\n // Assume registration is active\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n // Use fake timers to trigger keepalive initialization\n jest.useFakeTimers();\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n\n // Simulate the worker sending a KEEPALIVE_FAILURE message with retry count at threshold.\n const RETRY_COUNT_THRESHOLD = reg.isCCFlow ? 4 : 5;\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: RETRY_COUNT_THRESHOLD,\n },\n };\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n\n jest.useRealTimers();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 5 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.webWorker).toBeDefined();\n\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const url = 'https://mobius-dfw.webex.com/api/v1/calling/web/';\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 5,\n },\n } as MessageEvent);\n\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(reconnectSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n\n // Advance timers and flush any remaining promises.\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n // reconnectSpy should have been called only once.\n expect(reconnectSpy).toBeCalledTimes(1);\n expect(restoreSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n expect(restartSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n // Active Mobius URL should remain unchanged.\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(handleErrorSpy).toBeCalledTimes(3);\n\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n // In a complete failure‐then-recovery scenario, we expect another failure event to have been handled.\n // For that, simulate a second failure event on the new worker.\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledTimes(4);\n\n // And then re-register successfully:\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\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 webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n // Spy on clearKeepaliveTimer and simulate reconnectOnFailure behavior\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n // Simulate a KEEPALIVE_FAILURE message from the worker with a retry count equal to threshold (4 for CC)\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 4,\n },\n } as MessageEvent);\n\n // Wait for any asynchronous actions to complete\n await flushPromises();\n\n // Verify that the keepalive timer was cleared and reconnectOnFailure was triggered\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(reconnectSpy).toHaveBeenCalledWith(reg.startKeepaliveTimer.name);\n\n // Verify that the active Mobius URL has been updated to the backup server and registration is active\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Simulate an active call.\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const threshold = reg.isCCFlow ? 4 : 5;\n\n // Simulate a KEEPALIVE_FAILURE event with a 503 error at threshold.\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent;\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n // At this point, clearKeepaliveTimer was called so the worker is terminated.\n expect(clearTimerSpy).toHaveBeenCalled();\n expect(reg.webWorker).toBeUndefined();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\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 // Now simulate call cleanup.\n reg.callManager.callCollection = {};\n webex.request.mockResolvedValueOnce(successPayload);\n\n // Call reconnectOnFailure manually. With no active calls, this should trigger re-registration.\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n await flushPromises();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n // After re-registration, registration status becomes ACTIVE and a new worker is created.\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\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 });\n\n it('checks for keep-alive failure with final error: 404', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n jest.spyOn(utils, 'handleRegistrationErrors').mockResolvedValue(true);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\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 expect(handleErrorSpy).toBeCalledOnceWith({statusCode: 404}, expect.anything(), {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\n });\n });\n\n describe('Primary server status checks', () => {\n it('success: primary server status to be up', async () => {\n const pingSuccessPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n });\n webex.request.mockResolvedValue(pingSuccessPayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(true);\n });\n\n it('failed: primary server status to be down', async () => {\n const pingFailurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n });\n webex.request.mockResolvedValue(pingFailurePayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(false);\n });\n });\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, RegistrationStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\nexport type retry429CallBack = (retryAfter: number, caller: string) => void;\n/**\n * Represents an interface for managing registration-related operations.\n */\nexport interface IRegistration {\n /**\n * Sets the primary and backup Mobius server URLs.\n *\n * @param primaryMobiusUris - An array of primary Mobius server URLs.\n * @param backupMobiusUris - An array of backup Mobius server URLs.\n */\n setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;\n\n /**\n * Triggers the registration process with the given list of servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n triggerRegistration(): Promise<void>;\n\n /**\n * Checks if the device is currently registered.\n *\n */\n isDeviceRegistered(): boolean;\n\n /**\n * Sets the status of the registration.\n *\n * @param value - The registration status to set.\n */\n setStatus(value: RegistrationStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): RegistrationStatus;\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n getDeviceInfo(): IDeviceInfo;\n\n /**\n * Clears the keep-alive timer used for registration.\n */\n clearKeepaliveTimer(): void;\n\n /**\n * Deregisters the device.\n */\n deregister(): void;\n\n /**\n * Sets the active Mobius server URL to use for registration.\n *\n * @param url - The Mobius server URL to set as active.\n */\n setActiveMobiusUrl(url: string): void;\n\n /**\n * Retrieves the active Mobius server URL.\n *\n */\n getActiveMobiusUrl(): string;\n\n /**\n * Attempts to reconnect after a connection failure.\n *\n * @param caller - The caller's identifier for reconnection.\n */\n reconnectOnFailure(caller: string): Promise<void>;\n\n /**\n * Checks if a reconnection attempt is pending.\n *\n */\n isReconnectPending(): boolean;\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n * @param retry - Set to `true` to trigger a retry after restoration.\n */\n handleConnectionRestoration(retry: boolean): Promise<boolean>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, RegistrationStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\nexport type retry429CallBack = (retryAfter: number, caller: string) => void;\n\n/**\n * Represents an interface for managing registration-related operations.\n */\nexport interface IRegistration {\n /**\n * Sets the primary and backup Mobius server URLs.\n *\n * @param primaryMobiusUris - An array of primary Mobius server URLs.\n * @param backupMobiusUris - An array of backup Mobius server URLs.\n */\n setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;\n\n /**\n * Triggers the registration process with the given list of servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n triggerRegistration(): Promise<void>;\n\n /**\n * Checks if the device is currently registered.\n *\n */\n isDeviceRegistered(): boolean;\n\n /**\n * Sets the status of the registration.\n *\n * @param value - The registration status to set.\n */\n setStatus(value: RegistrationStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): RegistrationStatus;\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n getDeviceInfo(): IDeviceInfo;\n\n /**\n * Clears the keep-alive timer used for registration.\n */\n clearKeepaliveTimer(): void;\n\n /**\n * Deregisters the device.\n */\n deregister(): void;\n\n /**\n * Sets the active Mobius server URL to use for registration.\n *\n * @param url - The Mobius server URL to set as active.\n */\n setActiveMobiusUrl(url: string): void;\n\n /**\n * Retrieves the active Mobius server URL.\n *\n */\n getActiveMobiusUrl(): string;\n\n /**\n * Attempts to reconnect after a connection failure.\n *\n * @param caller - The caller's identifier for reconnection.\n */\n reconnectOnFailure(caller: string): Promise<void>;\n\n /**\n * Checks if a reconnection attempt is pending.\n *\n */\n isReconnectPending(): boolean;\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n * @param retry - Set to `true` to trigger a retry after restoration.\n */\n handleConnectionRestoration(retry: boolean): Promise<boolean>;\n}\n"],"mappings":""}
@@ -368,23 +368,29 @@ function _handleCallingClientErrors() {
368
368
  finalError = false;
369
369
  _Logger.default.warn("Status code: -> ".concat(errorCode), loggerContext);
370
370
  _context2.t0 = errorCode;
371
- _context2.next = _context2.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 7 : 11;
371
+ _context2.next = _context2.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 7 : _context2.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 12 : 16;
372
372
  break;
373
373
  case 7:
374
+ finalError = true;
375
+ _Logger.default.warn("401 Unauthorized", loggerContext);
376
+ updateErrorContext(loggerContext, _types2.ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token.', clientError);
377
+ emitterCb(clientError, finalError);
378
+ return _context2.abrupt("break", 19);
379
+ case 12:
374
380
  _Logger.default.warn("500 Internal Server Error", loggerContext);
375
381
  updateErrorContext(loggerContext, _types2.ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred while placing the request. Wait a moment and try again.', clientError);
376
382
  emitterCb(clientError, finalError);
377
- return _context2.abrupt("break", 14);
378
- case 11:
383
+ return _context2.abrupt("break", 19);
384
+ case 16:
379
385
  updateErrorContext(loggerContext, _types2.ERROR_TYPE.DEFAULT, 'Unknown error', clientError);
380
386
  _Logger.default.warn("Unknown Error", loggerContext);
381
387
  emitterCb(clientError, finalError);
382
- case 14:
383
- _context2.next = 16;
388
+ case 19:
389
+ _context2.next = 21;
384
390
  return uploadLogs();
385
- case 16:
391
+ case 21:
386
392
  return _context2.abrupt("return", finalError);
387
- case 17:
393
+ case 22:
388
394
  case "end":
389
395
  return _context2.stop();
390
396
  }