@webex/calling 3.12.0-llmrefactor.1 → 3.12.0-llmrefactor.3

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 (39) hide show
  1. package/dist/CallingClient/constants.js +4 -2
  2. package/dist/CallingClient/constants.js.map +1 -1
  3. package/dist/CallingClient/line/index.js +4 -0
  4. package/dist/CallingClient/line/index.js.map +1 -1
  5. package/dist/CallingClient/line/line.test.js +47 -10
  6. package/dist/CallingClient/line/line.test.js.map +1 -1
  7. package/dist/CallingClient/registration/register.js +466 -390
  8. package/dist/CallingClient/registration/register.js.map +1 -1
  9. package/dist/CallingClient/registration/register.test.js +349 -80
  10. package/dist/CallingClient/registration/register.test.js.map +1 -1
  11. package/dist/CallingClient/registration/types.js +26 -0
  12. package/dist/CallingClient/registration/types.js.map +1 -1
  13. package/dist/Errors/types.js +2 -0
  14. package/dist/Errors/types.js.map +1 -1
  15. package/dist/Events/types.js.map +1 -1
  16. package/dist/common/Utils.js +85 -50
  17. package/dist/common/Utils.js.map +1 -1
  18. package/dist/common/Utils.test.js +270 -195
  19. package/dist/common/Utils.test.js.map +1 -1
  20. package/dist/module/CallingClient/constants.js +2 -0
  21. package/dist/module/CallingClient/line/index.js +2 -0
  22. package/dist/module/CallingClient/registration/register.js +36 -10
  23. package/dist/module/CallingClient/registration/types.js +5 -1
  24. package/dist/module/Errors/types.js +2 -0
  25. package/dist/module/common/Utils.js +26 -8
  26. package/dist/types/CallingClient/constants.d.ts +2 -0
  27. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  28. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  29. package/dist/types/CallingClient/registration/register.d.ts +2 -1
  30. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  31. package/dist/types/CallingClient/registration/types.d.ts +23 -0
  32. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  33. package/dist/types/Errors/types.d.ts +2 -0
  34. package/dist/types/Errors/types.d.ts.map +1 -1
  35. package/dist/types/Events/types.d.ts +1 -1
  36. package/dist/types/Events/types.d.ts.map +1 -1
  37. package/dist/types/common/Utils.d.ts +2 -5
  38. package/dist/types/common/Utils.d.ts.map +1 -1
  39. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_types5","_request","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","jest","mock","getMobiusSocketInstance","fn","mockReturnValue","sendWssRequest","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","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","APIRequest","resetInstance","getInstance","isMobiusSocketEnabled","afterEach","request","clearAllTimers","useRealTimers","localStorage","clear","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","RegistrationStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","deviceId","objectContaining","file","REGISTRATION_FILE","REGISTER_UTIL","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","REGISTRATION_UTIL","undefined","stop","_callee2","error","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","REGISTRATION_ERROR","_callee3","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","mockDeleteResponse","IDLE","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_context5","isCCFlow","_callee6","_context6","_callee7","_context7","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_callee8","_context8","_callee9","_context9","_callee0","failurePayload429Small","_context0","setActiveMobiusUrl","RECONNECT_ON_FAILURE_UTIL","reconnectOnFailure","toHaveBeenCalledTimes","toHaveBeenCalledWith","_callee1","attemptRegistrationWithServersSpy","_context1","_callee10","_context10","_callee11","_context11","handleConnectionRestoration","METHODS","HANDLE_CONNECTION_RESTORATION","_callee12","_context12","_callee13","key","raw","state","_context13","getItem","toBeTruthy","JSON","parse","attempt","timeElapsed","retryScheduledTime","any","serverType","_callee14","now","_failoverSpy$mock$cal","attemptArg","timeElapsedArg","_context14","Math","floor","_now","setItem","_stringify","_slicedToArray2","calls","toBe","toBeGreaterThanOrEqual","_callee15","_context15","getActiveMobiusUrl","_callee16","_context16","CONTACT_CENTER","_callee17","_context17","isPrimaryActiveSpy","_callee18","_context18","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee19","_context19","global","fetch","json","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","REG_429_RETRY_UTIL","failbackTimer","_callee20","_context20","FAILBACK_UTIL","_callee21","finalErrorPayload","_context21","_callee22","_context22","_callee23","_context23","_callee24","_context24","callManager","createCall","_keys","getActiveCalls","_callee25","_context25","beforeEachSetupForKeepalive","_ref26","_callee26","_context26","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","_values","end","_callee27","postMessageSpy","_context27","Worker","prototype","type","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee28","worker","_context28","err","keepAliveRetryCount","_callee29","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_context29","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","_callee30","_context30","toBeUndefined","KEEPALIVE_SUCCESS","_callee31","_context31","_callee32","clearKeepaliveSpy","_context32","toHaveBeenCalled","_callee33","clearTimerSpy","threshold","_context33","lastCalledWith","keepaliveTimer","String","callCollection","CALLS_CLEARED_HANDLER_UTIL","_callee34","handle404CbSpy","registerSpy","_context34","KEEPALIVE_UTIL","_callee35","_reg$deviceInfo$devic","keepaliveSpy","adjustedResumeDelayMs","_context35","deviceInfo","each","description","retryAfterDelta","_ref37","_callee36","_ref36","_reg$deviceInfo$devic2","_context36","_x","_callee37","_context37","setStatus","startFailoverTimer","_callee38","_context38","_callee39","pingSuccessPayload","status","_context39","isPrimaryActive","sent","_callee40","pingFailurePayload","_context40","registrationDownEvent","eventId","trackingId","eventType","_callee41","_context41","_callee42","setStatusSpy","disconnectSocketSpy","_context42","handleRegistrationDownEvent","scheduled429Retry","failoverImmediately","registerRetry","_callee43","activeCall","endSpy","_context43","_callee44","_context44","_callee45","apiRequest","_context45","code","reason","_callee46","_context46","Error","stringContaining","HANDLE_REGISTRATION_DOWN_EVENT","setSocketEnabledSpy","mockImplementation","_callee47","_context47","attemptRegistrationWithServers","_callee48","_context48","_callee49","_context49","_callee50","_context50"],"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 REGISTER_UTIL,\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 RECONNECT_ON_FAILURE_UTIL,\n METHODS,\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';\nimport {APIRequest} from '../utils/request';\n\njest.mock('../../mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn().mockReturnValue({\n sendWssRequest: jest.fn(),\n }),\n}));\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 APIRequest.resetInstance();\n APIRequest.getInstance({webex, isMobiusSocketEnabled: false});\n setupRegistration(MockServiceData);\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n localStorage.clear();\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} responseTrackingId: webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\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: mockDeleteResponse,\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 expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(webex.request).toBeCalledWith(\n expect.objectContaining({\n uri: mockPostResponse.device.uri,\n method: 'DELETE',\n })\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('restorePreviousRegistration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during reconnect', async () => {\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to set the retry-after value\n // Verify restore is invoked first and retry-after captured before scheduling\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during reconnect', async () => {\n // Setup: Register successfully with primary first\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore gets invoked, 429 with retry-after is observed and captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n });\n it('should restart registration with primary if we get 429 while on backup', async () => {\n // Setup: Register successfully with primary first\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.backup[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore path taken first and 429 handling captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n // No failover scheduling expected in this path\n expect(failoverSpy).not.toBeCalled();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.backup[0]]\n );\n // Immediately try primary servers when retry-after >= 60 seconds on backup\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n });\n });\n\n describe('handleConnectionRestoration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during handleConnectionRestoration', async () => {\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during handleConnectionRestoration', async () => {\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(retry429Spy).toBeCalledOnceWith(100, METHODS.HANDLE_CONNECTION_RESTORATION);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n });\n\n describe('Registration failover tests', () => {\n it('persists failover state in localStorage when primary retry is scheduled', async () => {\n jest.useFakeTimers();\n // Force initial registration to fail to schedule failover\n webex.request.mockRejectedValueOnce(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n\n // A failover timer should be scheduled; verify localStorage contains state\n const key = `wxc-failover-state.${webex.internal.device.userId}`;\n const raw = localStorage.getItem(key);\n expect(raw).toBeTruthy();\n const state = JSON.parse(raw as string);\n expect(state).toEqual(\n expect.objectContaining({\n attempt: 1,\n timeElapsed: 0,\n retryScheduledTime: expect.any(Number),\n serverType: 'primary',\n })\n );\n });\n\n it('resumes failover from localStorage on triggerRegistration', async () => {\n jest.useFakeTimers();\n const key = `wxc-failover-state.${webex.internal.device.userId}`;\n const now = Math.floor(Date.now() / 1000);\n // Seed a cached state indicating a retry should have already occurred 5s ago\n localStorage.setItem(\n key,\n JSON.stringify({\n attempt: 3,\n timeElapsed: 12,\n retryScheduledTime: now - 5,\n serverType: 'primary',\n })\n );\n\n const failoverSpy = jest.spyOn(reg as any, 'startFailoverTimer');\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(failoverSpy).toHaveBeenCalledTimes(1);\n const [attemptArg, timeElapsedArg] = failoverSpy.mock.calls[0];\n expect(attemptArg).toBe(3);\n expect(timeElapsedArg).toBeGreaterThanOrEqual(12);\n });\n\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 // Mock to fail twice with 429 (once for executeFailback, once for restorePreviousRegistration)\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(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 // After handling 429 during failback, the counter is incremented to 1\n expect(reg.failback429RetryAttempts).toBe(1);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n // restartRegistration is not called immediately because 429 with retry-after < 60\n // schedules a delayed retry instead\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).not.toBe(undefined); // Timer is set in handle429Retry\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 interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\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(RECONNECT_ON_FAILURE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_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(RECONNECT_ON_FAILURE_UTIL);\n\n localStorage.clear();\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(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\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 localStorage.clear();\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(RECONNECT_ON_FAILURE_UTIL);\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(RECONNECT_ON_FAILURE_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 webex.request.mockResolvedValueOnce(successPayload);\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 const handle404CbSpy = jest.spyOn(reg, 'handle404KeepaliveFailure');\n const registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n\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(\n {statusCode: 404},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.ERROR, undefined, expect.anything());\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(2);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n\n expect(handle404CbSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(registerSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n });\n\n it('checks for keep-alive failure with 429', async () => {\n await beforeEachSetupForKeepalive();\n const keepaliveSpy = jest.spyOn(reg, 'startKeepaliveTimer');\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n const keepaliveInterval = reg.deviceInfo.keepaliveInterval as number;\n // Choose a retryAfter strictly greater than keepaliveInterval so the\n // adjusted resume delay (retryAfter - keepaliveInterval) is positive and verifiable.\n const retryAfter = keepaliveInterval + 30;\n const adjustedResumeDelayMs = (retryAfter - keepaliveInterval) * SEC_TO_MSEC_MFACTOR;\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 429, headers: {'retry-after': retryAfter}},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 429 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith(\n {statusCode: 429, headers: {'retry-after': retryAfter}},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n expect(retry429Spy).toBeCalledOnceWith(retryAfter, 'startKeepaliveTimer');\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\n\n // Resume timer must NOT fire before the adjusted (retryAfter - keepaliveInterval) interval.\n jest.advanceTimersByTime(adjustedResumeDelayMs - 1);\n await flushPromises();\n expect(keepaliveSpy).not.toBeCalled();\n expect(reg.webWorker).toBeUndefined();\n\n // Advance the remaining 1ms to hit the exact adjusted timeout; keepalive must resume now.\n jest.advanceTimersByTime(1);\n await flushPromises();\n\n expect(keepaliveSpy).toBeCalledOnceWith(\n reg.deviceInfo.device?.uri as string,\n keepaliveInterval,\n 'UNKNOWN'\n );\n expect(logSpy).toBeCalledWith(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: 'handle429Retry',\n });\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n })\n );\n });\n\n it.each([\n {\n description: 'retryAfter less than keepaliveInterval -> negative delay fires immediately',\n retryAfterDelta: -10,\n },\n {\n description: 'retryAfter equal to keepaliveInterval -> zero delay fires immediately',\n retryAfterDelta: 0,\n },\n ])(\n 'adjusts retry-after with keepaliveInterval on 429 keepalive failure ($description)',\n async ({retryAfterDelta}) => {\n await beforeEachSetupForKeepalive();\n const keepaliveSpy = jest.spyOn(reg, 'startKeepaliveTimer');\n const keepaliveInterval = reg.deviceInfo.keepaliveInterval as number;\n const retryAfter = keepaliveInterval + retryAfterDelta;\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 429, headers: {'retry-after': retryAfter}},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(keepaliveSpy).not.toBeCalled();\n\n // With a non-positive adjusted delay, the timer should fire on the next tick.\n jest.advanceTimersByTime(0);\n await flushPromises();\n\n expect(keepaliveSpy).toBeCalledOnceWith(\n reg.deviceInfo.device?.uri as string,\n keepaliveInterval,\n 'UNKNOWN'\n );\n expect(logSpy).toBeCalledWith(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: 'handle429Retry',\n });\n }\n );\n\n it('ensure retryAfter is set when 429 occurs during failover retry', async () => {\n await beforeEachSetupForKeepalive();\n // Simulate loss of registration so failover path attempts a new registration\n reg.clearKeepaliveTimer();\n reg.setStatus(RegistrationStatus.INACTIVE);\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // Make the failover interval deterministic and simulate 429 on the failover attempt\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(33);\n webex.request.mockRejectedValueOnce(failurePayload429One);\n\n // Directly schedule the failover attempt\n await (reg as any).startFailoverTimer();\n\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect((reg as any).retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n\n jest.useRealTimers();\n });\n\n it('sets retryAfter when reconnectOnFailure caller receives 429 after keepalive threshold miss', async () => {\n await beforeEachSetupForKeepalive();\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // On reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL) first restore attempt, make registration respond with 429 (retry-after: 20)\n webex.request.mockRejectedValueOnce({\n statusCode: 429,\n body: mockPostResponse,\n headers: {'retry-after': 20},\n });\n\n // Trigger the keepalive failure at threshold to route to reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL)\n const threshold = reg.isCCFlow ? 4 : 5;\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent);\n\n await flushPromises();\n\n // handle429Retry is called with caller 'reconnectOnFailure' → else branch executes and sets retryAfter\n expect(retry429Spy).toBeCalledOnceWith(20, RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\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 describe('handleRegistrationDownEvent tests', () => {\n const registrationDownEvent = {\n type: 'async_event',\n eventId: 'evt-1',\n trackingId: 'tid-1',\n data: {\n eventType: 'registration.down',\n deviceInfo: {\n userId: 'u1',\n device: {deviceId: 'd1', uri: 'https://mobius/device/d1', status: 'ACTIVE'},\n },\n },\n };\n\n beforeEach(async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n reg.callManager.callCollection = {};\n });\n\n it('runs cleanup immediately when no active calls are present (socket disabled)', async () => {\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const setStatusSpy = jest.spyOn(reg, 'setStatus');\n const disconnectSocketSpy = jest.spyOn(\n APIRequest.getInstance({webex}),\n 'disconnectFromMobiusSocket'\n );\n\n lineEmitter.mockClear();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(setStatusSpy).toHaveBeenCalledWith(RegistrationStatus.INACTIVE);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(reg.reconnectPending).toBe(false);\n expect(reg.scheduled429Retry).toBe(false);\n expect(reg.failoverImmediately).toBe(false);\n expect(reg.retryAfter).toBeUndefined();\n expect(reg.registerRetry).toBe(false);\n expect(disconnectSocketSpy).not.toHaveBeenCalled();\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n });\n\n it('ends the active call and still runs cleanup when an active call is present', async () => {\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const setStatusSpy = jest.spyOn(reg, 'setStatus');\n\n const activeCall = reg.callManager.createCall() as ICall;\n const endSpy = jest.spyOn(activeCall, 'end');\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n lineEmitter.mockClear();\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(endSpy).toHaveBeenCalledTimes(1);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(setStatusSpy).toHaveBeenCalledWith(RegistrationStatus.INACTIVE);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n });\n\n it('runs cleanup without calling end when no active call is present on re-invocation', async () => {\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const setStatusSpy = jest.spyOn(reg, 'setStatus');\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n clearKeepaliveSpy.mockClear();\n setStatusSpy.mockClear();\n lineEmitter.mockClear();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(setStatusSpy).toHaveBeenCalledWith(RegistrationStatus.INACTIVE);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n });\n\n it('disconnects the Mobius WebSocket when socket is enabled', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n jest.spyOn(apiRequest, 'isSocketEnabled').mockReturnValue(true);\n const disconnectSocketSpy = jest\n .spyOn(apiRequest, 'disconnectFromMobiusSocket')\n .mockResolvedValue();\n\n lineEmitter.mockClear();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(disconnectSocketSpy).toHaveBeenCalledWith({\n code: 3050,\n reason: 'done (permanent)',\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n });\n\n it('still emits UNREGISTERED when socket disconnect fails', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n jest.spyOn(apiRequest, 'isSocketEnabled').mockReturnValue(true);\n const disconnectSocketSpy = jest\n .spyOn(apiRequest, 'disconnectFromMobiusSocket')\n .mockRejectedValue(new Error('socket teardown failed'));\n\n lineEmitter.mockClear();\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(disconnectSocketSpy).toHaveBeenCalled();\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mobius socket disconnect failed after registration-down'),\n {file: REGISTRATION_FILE, method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT}\n );\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n });\n });\n\n describe('attemptRegistrationWithServers transport alignment', () => {\n let apiRequest: APIRequest;\n let setSocketEnabledSpy: jest.SpyInstance;\n\n beforeEach(() => {\n apiRequest = APIRequest.getInstance({webex});\n // Keep the actual transport on HTTP (no-op) so the registration flow stays simple;\n // we only assert which boolean the method derives from the server group's URL scheme.\n setSocketEnabledSpy = jest.spyOn(apiRequest, 'setSocketEnabled').mockImplementation(() => {});\n webex.request.mockResolvedValue(successPayload);\n });\n\n it('enables the WebSocket transport when the server group uses the wss:// scheme', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, [\n 'wss://mobius.example.com/api/v1/calling/web/',\n ]);\n\n expect(setSocketEnabledSpy).toHaveBeenCalledWith(true);\n });\n\n it('falls back to the HTTP transport when the server group uses the https:// scheme', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, [\n 'https://mobius.example.com/api/v1/calling/web/',\n ]);\n\n expect(setSocketEnabledSpy).toHaveBeenCalledWith(false);\n });\n\n it('does not change the transport when the server group is empty', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, []);\n\n expect(setSocketEnabledSpy).not.toHaveBeenCalled();\n });\n\n it('derives the transport from the first server in the group', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, [\n 'wss://primary.example.com/api/v1/calling/web/',\n 'https://backup.example.com/api/v1/calling/web/',\n ]);\n\n expect(setSocketEnabledSpy).toHaveBeenCalledWith(true);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_types5","_request","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","jest","mock","getMobiusSocketInstance","fn","mockReturnValue","sendWssRequest","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","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","APIRequest","resetInstance","getInstance","isMobiusSocketEnabled","afterEach","request","clearAllTimers","useRealTimers","localStorage","clear","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","RegistrationStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","deviceId","objectContaining","file","REGISTRATION_FILE","REGISTER_UTIL","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","REGISTRATION_UTIL","undefined","stop","_callee2","error","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","REGISTRATION_ERROR","_callee3","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","mockDeleteResponse","IDLE","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_context5","isCCFlow","_callee6","_context6","_callee7","_context7","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_callee8","_context8","_callee9","_context9","_callee0","failurePayload429Small","_context0","setActiveMobiusUrl","RECONNECT_ON_FAILURE_UTIL","reconnectOnFailure","toHaveBeenCalledTimes","toHaveBeenCalledWith","_callee1","attemptRegistrationWithServersSpy","_context1","_callee10","_context10","_callee11","_context11","handleConnectionRestoration","METHODS","HANDLE_CONNECTION_RESTORATION","_callee12","_context12","_callee13","key","raw","state","_context13","getItem","toBeTruthy","JSON","parse","attempt","timeElapsed","retryScheduledTime","any","serverType","_callee14","now","_failoverSpy$mock$cal","attemptArg","timeElapsedArg","_context14","Math","floor","_now","setItem","_stringify","_slicedToArray2","calls","toBe","toBeGreaterThanOrEqual","_callee15","_context15","getActiveMobiusUrl","_callee16","_context16","CONTACT_CENTER","_callee17","_context17","isPrimaryActiveSpy","_callee18","_context18","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee19","_context19","global","fetch","json","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","REG_429_RETRY_UTIL","failbackTimer","_callee20","_context20","FAILBACK_UTIL","_callee21","finalErrorPayload","_context21","_callee22","_context22","_callee23","_context23","_callee24","_context24","callManager","createCall","_keys","getActiveCalls","_callee25","_context25","beforeEachSetupForKeepalive","_ref26","_callee26","_context26","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","_values","end","_callee27","postMessageSpy","_context27","Worker","prototype","type","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee28","worker","_context28","err","keepAliveRetryCount","_callee29","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_context29","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","_callee30","_context30","toBeUndefined","KEEPALIVE_SUCCESS","_callee31","_context31","_callee32","clearKeepaliveSpy","_context32","toHaveBeenCalled","_callee33","clearTimerSpy","threshold","_context33","lastCalledWith","keepaliveTimer","String","callCollection","CALLS_CLEARED_HANDLER_UTIL","_callee34","handle404CbSpy","registerSpy","_context34","KEEPALIVE_UTIL","_callee35","_reg$deviceInfo$devic","keepaliveSpy","adjustedResumeDelayMs","_context35","deviceInfo","each","description","retryAfterDelta","_ref37","_callee36","_ref36","_reg$deviceInfo$devic2","_context36","_x","_callee37","_context37","setStatus","startFailoverTimer","_callee38","_context38","conflictError","sendKeepaliveFailure","_ref40","_callee39","_context39","_x2","_x3","getSupersededError","unregisteredCall","find","_ref41","_ref42","event","_ref44","_callee40","_ref43","handle404Spy","_context40","sessionSupersededCb","Function","HANDLE_409_KEEPALIVE_FAILURE","_x4","_callee41","supersededError","_context41","_ref46","_ref47","toHaveLength","RECONNECTING","toHaveBeenLastCalledWith","LineError","getError","message","SESSION_SUPERSEDED_MESSAGE","SESSION_SUPERSEDED","status","context","_callee42","uploadLogsSpy","_context42","KEEPALIVE_ERROR","_callee43","apiRequest","disconnectSocketSpy","_context43","code","reason","_callee44","_context44","Error","stringContaining","_ref52","_callee45","_ref51","handle409Spy","_context45","_x5","_callee46","pingSuccessPayload","_context46","isPrimaryActive","sent","_callee47","pingFailurePayload","_context47","registrationDownEvent","eventId","trackingId","eventType","_callee48","_context48","_callee49","setStatusSpy","_context49","handleRegistrationDownEvent","scheduled429Retry","failoverImmediately","registerRetry","_callee50","activeCall","endSpy","_context50","_callee51","_context51","_callee52","_context52","_callee53","_context53","HANDLE_REGISTRATION_DOWN_EVENT","setSocketEnabledSpy","mockImplementation","_callee54","_context54","attemptRegistrationWithServers","_callee55","_context55","_callee56","_context56","_callee57","_context57"],"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 REGISTER_UTIL,\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 RECONNECT_ON_FAILURE_UTIL,\n METHODS,\n SESSION_SUPERSEDED_MESSAGE,\n} from '../constants';\nimport {ICall} from '../calling/types';\nimport {LINE_EVENTS} from '../line/types';\nimport {createLineError, LineError} from '../../Errors/catalog/LineError';\nimport {IRegistration} from './types';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE} from '../../Metrics/types';\nimport {APIRequest} from '../utils/request';\n\njest.mock('../../mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn().mockReturnValue({\n sendWssRequest: jest.fn(),\n }),\n}));\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 APIRequest.resetInstance();\n APIRequest.getInstance({webex, isMobiusSocketEnabled: false});\n setupRegistration(MockServiceData);\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n localStorage.clear();\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} responseTrackingId: webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\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: mockDeleteResponse,\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 expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(webex.request).toBeCalledWith(\n expect.objectContaining({\n uri: mockPostResponse.device.uri,\n method: 'DELETE',\n })\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('restorePreviousRegistration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during reconnect', async () => {\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to set the retry-after value\n // Verify restore is invoked first and retry-after captured before scheduling\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during reconnect', async () => {\n // Setup: Register successfully with primary first\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore gets invoked, 429 with retry-after is observed and captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n });\n it('should restart registration with primary if we get 429 while on backup', async () => {\n // Setup: Register successfully with primary first\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.backup[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL); // This call is being used to trigger the retry\n // Verify restore path taken first and 429 handling captured\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(retry429Spy).toBeCalledOnceWith(100, RECONNECT_ON_FAILURE_UTIL);\n // No failover scheduling expected in this path\n expect(failoverSpy).not.toBeCalled();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.backup[0]]\n );\n // Immediately try primary servers when retry-after >= 60 seconds on backup\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(RECONNECT_ON_FAILURE_UTIL);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n RECONNECT_ON_FAILURE_UTIL,\n [mobiusUris.primary[0]]\n );\n });\n });\n\n describe('handleConnectionRestoration 429 handling tests', () => {\n beforeEach(() => {\n jest.useFakeTimers();\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('should schedule retry when 429 with retry-after < 60 seconds during handleConnectionRestoration', async () => {\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 30,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(restartSpy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(restartSpy).toHaveBeenCalledTimes(1);\n expect(restartSpy).toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n\n it('should try backup servers when 429 with retry-after >= 60 seconds on primary during handleConnectionRestoration', async () => {\n const attemptRegistrationWithServersSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n reg.setActiveMobiusUrl(mobiusUris.primary[0]);\n const failurePayload429Small = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: RECONNECT_ON_FAILURE_UTIL,\n headers: {\n 'retry-after': 100,\n },\n });\n webex.request\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload)\n .mockRejectedValueOnce(failurePayload429Small)\n .mockResolvedValueOnce(successPayload);\n\n await reg.handleConnectionRestoration(true);\n expect(restoreSpy).toBeCalledOnceWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n expect(retry429Spy).toBeCalledOnceWith(100, METHODS.HANDLE_CONNECTION_RESTORATION);\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(attemptRegistrationWithServersSpy).toHaveBeenCalledTimes(2);\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 1,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n [mobiusUris.primary[0]]\n );\n // Immediately try backup servers when retry-after >= 60 seconds on primary\n expect(attemptRegistrationWithServersSpy).toHaveBeenNthCalledWith(\n 2,\n METHODS.HANDLE_CONNECTION_RESTORATION,\n mobiusUris.backup\n );\n expect(restartSpy).not.toHaveBeenCalledTimes(1);\n expect(restartSpy).not.toHaveBeenCalledWith(METHODS.HANDLE_CONNECTION_RESTORATION);\n });\n });\n\n describe('Registration failover tests', () => {\n it('persists failover state in localStorage when primary retry is scheduled', async () => {\n jest.useFakeTimers();\n // Force initial registration to fail to schedule failover\n webex.request.mockRejectedValueOnce(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n\n // A failover timer should be scheduled; verify localStorage contains state\n const key = `wxc-failover-state.${webex.internal.device.userId}`;\n const raw = localStorage.getItem(key);\n expect(raw).toBeTruthy();\n const state = JSON.parse(raw as string);\n expect(state).toEqual(\n expect.objectContaining({\n attempt: 1,\n timeElapsed: 0,\n retryScheduledTime: expect.any(Number),\n serverType: 'primary',\n })\n );\n });\n\n it('resumes failover from localStorage on triggerRegistration', async () => {\n jest.useFakeTimers();\n const key = `wxc-failover-state.${webex.internal.device.userId}`;\n const now = Math.floor(Date.now() / 1000);\n // Seed a cached state indicating a retry should have already occurred 5s ago\n localStorage.setItem(\n key,\n JSON.stringify({\n attempt: 3,\n timeElapsed: 12,\n retryScheduledTime: now - 5,\n serverType: 'primary',\n })\n );\n\n const failoverSpy = jest.spyOn(reg as any, 'startFailoverTimer');\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(failoverSpy).toHaveBeenCalledTimes(1);\n const [attemptArg, timeElapsedArg] = failoverSpy.mock.calls[0];\n expect(attemptArg).toBe(3);\n expect(timeElapsedArg).toBeGreaterThanOrEqual(12);\n });\n\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 // Mock to fail twice with 429 (once for executeFailback, once for restorePreviousRegistration)\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(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 // After handling 429 during failback, the counter is incremented to 1\n expect(reg.failback429RetryAttempts).toBe(1);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n // restartRegistration is not called immediately because 429 with retry-after < 60\n // schedules a delayed retry instead\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).not.toBe(undefined); // Timer is set in handle429Retry\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 interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\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(RECONNECT_ON_FAILURE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_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(RECONNECT_ON_FAILURE_UTIL);\n\n localStorage.clear();\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(RECONNECT_ON_FAILURE_UTIL);\n expect(restartSpy).toBeCalledOnceWith(RECONNECT_ON_FAILURE_UTIL);\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 localStorage.clear();\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(RECONNECT_ON_FAILURE_UTIL);\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(RECONNECT_ON_FAILURE_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 webex.request.mockResolvedValueOnce(successPayload);\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 const handle404CbSpy = jest.spyOn(reg, 'handle404KeepaliveFailure');\n const registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n\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(\n {statusCode: 404},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.ERROR, undefined, expect.anything());\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(2);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n\n expect(handle404CbSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(registerSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n });\n\n it('checks for keep-alive failure with 429', async () => {\n await beforeEachSetupForKeepalive();\n const keepaliveSpy = jest.spyOn(reg, 'startKeepaliveTimer');\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n const keepaliveInterval = reg.deviceInfo.keepaliveInterval as number;\n // Choose a retryAfter strictly greater than keepaliveInterval so the\n // adjusted resume delay (retryAfter - keepaliveInterval) is positive and verifiable.\n const retryAfter = keepaliveInterval + 30;\n const adjustedResumeDelayMs = (retryAfter - keepaliveInterval) * SEC_TO_MSEC_MFACTOR;\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 429, headers: {'retry-after': retryAfter}},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 429 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith(\n {statusCode: 429, headers: {'retry-after': retryAfter}},\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n },\n expect.anything()\n );\n expect(retry429Spy).toBeCalledOnceWith(retryAfter, 'startKeepaliveTimer');\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\n\n // Resume timer must NOT fire before the adjusted (retryAfter - keepaliveInterval) interval.\n jest.advanceTimersByTime(adjustedResumeDelayMs - 1);\n await flushPromises();\n expect(keepaliveSpy).not.toBeCalled();\n expect(reg.webWorker).toBeUndefined();\n\n // Advance the remaining 1ms to hit the exact adjusted timeout; keepalive must resume now.\n jest.advanceTimersByTime(1);\n await flushPromises();\n\n expect(keepaliveSpy).toBeCalledOnceWith(\n reg.deviceInfo.device?.uri as string,\n keepaliveInterval,\n 'UNKNOWN'\n );\n expect(logSpy).toBeCalledWith(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: 'handle429Retry',\n });\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n })\n );\n });\n\n it.each([\n {\n description: 'retryAfter less than keepaliveInterval -> negative delay fires immediately',\n retryAfterDelta: -10,\n },\n {\n description: 'retryAfter equal to keepaliveInterval -> zero delay fires immediately',\n retryAfterDelta: 0,\n },\n ])(\n 'adjusts retry-after with keepaliveInterval on 429 keepalive failure ($description)',\n async ({retryAfterDelta}) => {\n await beforeEachSetupForKeepalive();\n const keepaliveSpy = jest.spyOn(reg, 'startKeepaliveTimer');\n const keepaliveInterval = reg.deviceInfo.keepaliveInterval as number;\n const retryAfter = keepaliveInterval + retryAfterDelta;\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 429, headers: {'retry-after': retryAfter}},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(keepaliveSpy).not.toBeCalled();\n\n // With a non-positive adjusted delay, the timer should fire on the next tick.\n jest.advanceTimersByTime(0);\n await flushPromises();\n\n expect(keepaliveSpy).toBeCalledOnceWith(\n reg.deviceInfo.device?.uri as string,\n keepaliveInterval,\n 'UNKNOWN'\n );\n expect(logSpy).toBeCalledWith(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: 'handle429Retry',\n });\n }\n );\n\n it('ensure retryAfter is set when 429 occurs during failover retry', async () => {\n await beforeEachSetupForKeepalive();\n // Simulate loss of registration so failover path attempts a new registration\n reg.clearKeepaliveTimer();\n reg.setStatus(RegistrationStatus.INACTIVE);\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // Make the failover interval deterministic and simulate 429 on the failover attempt\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(33);\n webex.request.mockRejectedValueOnce(failurePayload429One);\n\n // Directly schedule the failover attempt\n await (reg as any).startFailoverTimer();\n\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect((reg as any).retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n\n jest.useRealTimers();\n });\n\n it('sets retryAfter when reconnectOnFailure caller receives 429 after keepalive threshold miss', async () => {\n await beforeEachSetupForKeepalive();\n const retry429Spy = jest.spyOn(reg, 'handle429Retry');\n // On reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL) first restore attempt, make registration respond with 429 (retry-after: 20)\n webex.request.mockRejectedValueOnce({\n statusCode: 429,\n body: mockPostResponse,\n headers: {'retry-after': 20},\n });\n\n // Trigger the keepalive failure at threshold to route to reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL)\n const threshold = reg.isCCFlow ? 4 : 5;\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent);\n\n await flushPromises();\n\n // handle429Retry is called with caller 'reconnectOnFailure' → else branch executes and sets retryAfter\n expect(retry429Spy).toBeCalledOnceWith(20, RECONNECT_ON_FAILURE_UTIL);\n expect(reg.retryAfter).toEqual(undefined); // Clear retryAfter after 429 retry\n });\n\n describe('409 Conflict on keepalive (session superseded)', () => {\n const conflictError = {statusCode: 409, headers: {trackingid: 'tid-409'}};\n\n const sendKeepaliveFailure = async (err, keepAliveRetryCount) => {\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err,\n keepAliveRetryCount,\n },\n } as MessageEvent);\n\n await flushPromises();\n };\n\n const getSupersededError = (): LineError => {\n const unregisteredCall = lineEmitter.mock.calls.find(\n ([event]) => event === LINE_EVENTS.UNREGISTERED\n );\n\n return unregisteredCall?.[2];\n };\n\n it.each([\n {description: 'on the very first keepalive failure', keepAliveRetryCount: 1},\n {description: 'when the retry count already reached the threshold', keepAliveRetryCount: 5},\n ])('stops keepalive without re-registration $description', async ({keepAliveRetryCount}) => {\n await beforeEachSetupForKeepalive();\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n const handle404Spy = jest.spyOn(reg, 'handle404KeepaliveFailure');\n lineEmitter.mockClear();\n\n await sendKeepaliveFailure(conflictError, keepAliveRetryCount);\n\n // The 409 is classified by the common registration error handler.\n expect(handleErrorSpy).toHaveBeenCalledWith(\n conflictError,\n expect.anything(),\n {file: REGISTRATION_FILE, method: KEEPALIVE_UTIL},\n expect.objectContaining({sessionSupersededCb: expect.any(Function)})\n );\n expect(warnSpy).toBeCalledWith(\n '409 Conflict: session superseded by another device for this user',\n {file: REGISTRATION_FILE, method: KEEPALIVE_UTIL}\n );\n expect(warnSpy).toBeCalledWith(\n `Stopping keepalive without re-registration, session superseded by another device for this user - keepaliveRetryCount: ${keepAliveRetryCount}`,\n {file: REGISTRATION_FILE, method: METHODS.HANDLE_409_KEEPALIVE_FAILURE}\n );\n\n // Keepalive is stopped and no further keepalive can be sent.\n expect(clearTimerSpy).toHaveBeenCalled();\n expect(reg.webWorker).toBeUndefined();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(reg.failbackTimer).toStrictEqual(undefined);\n\n // No re-registration of any kind is attempted.\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartSpy).not.toHaveBeenCalled();\n expect(failoverSpy).not.toHaveBeenCalled();\n expect(registerSpy).not.toHaveBeenCalled();\n expect(handle404Spy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n });\n\n it('notifies the consumer with a single UNREGISTERED carrying the superseded reason', async () => {\n await beforeEachSetupForKeepalive();\n lineEmitter.mockClear();\n\n await sendKeepaliveFailure(conflictError, 1);\n\n expect(\n lineEmitter.mock.calls.filter(([event]) => event === LINE_EVENTS.UNREGISTERED)\n ).toHaveLength(1);\n expect(lineEmitter).not.toHaveBeenCalledWith(LINE_EVENTS.RECONNECTING);\n expect(lineEmitter).toHaveBeenLastCalledWith(\n LINE_EVENTS.UNREGISTERED,\n undefined,\n expect.any(LineError)\n );\n\n const supersededError = getSupersededError();\n\n expect(supersededError.getError()).toStrictEqual({\n message: SESSION_SUPERSEDED_MESSAGE,\n type: ERROR_TYPE.SESSION_SUPERSEDED,\n status: RegistrationStatus.INACTIVE,\n context: {file: REGISTRATION_FILE, method: KEEPALIVE_UTIL},\n });\n });\n\n it('submits the keepalive failure metric and uploads logs', async () => {\n await beforeEachSetupForKeepalive();\n const uploadLogsSpy = jest.spyOn(utils, 'uploadLogs');\n lineEmitter.mockClear();\n metricSpy.mockClear();\n\n await sendKeepaliveFailure(conflictError, 2);\n\n expect(metricSpy).toBeCalledOnceWith(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n METHODS.HANDLE_409_KEEPALIVE_FAILURE,\n 'PRIMARY',\n conflictError.headers.trackingid,\n 2,\n getSupersededError()\n );\n expect(uploadLogsSpy).toHaveBeenCalled();\n });\n\n it('closes the Mobius WebSocket when the socket transport is enabled', async () => {\n await beforeEachSetupForKeepalive();\n const apiRequest = APIRequest.getInstance({webex});\n jest.spyOn(apiRequest, 'isSocketEnabled').mockReturnValue(true);\n const disconnectSocketSpy = jest\n .spyOn(apiRequest, 'disconnectFromMobiusSocket')\n .mockResolvedValue();\n lineEmitter.mockClear();\n\n await sendKeepaliveFailure(conflictError, 1);\n\n expect(disconnectSocketSpy).toBeCalledOnceWith({\n code: 3050,\n reason: 'done (permanent)',\n });\n expect(lineEmitter).toHaveBeenLastCalledWith(\n LINE_EVENTS.UNREGISTERED,\n undefined,\n expect.any(LineError)\n );\n });\n\n it('still notifies the consumer when the Mobius WebSocket teardown fails', async () => {\n await beforeEachSetupForKeepalive();\n const apiRequest = APIRequest.getInstance({webex});\n jest.spyOn(apiRequest, 'isSocketEnabled').mockReturnValue(true);\n jest\n .spyOn(apiRequest, 'disconnectFromMobiusSocket')\n .mockRejectedValue(new Error('socket teardown failed'));\n lineEmitter.mockClear();\n\n await sendKeepaliveFailure(conflictError, 1);\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mobius socket disconnect failed after session-superseded'),\n {file: REGISTRATION_FILE, method: METHODS.HANDLE_409_KEEPALIVE_FAILURE}\n );\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenLastCalledWith(\n LINE_EVENTS.UNREGISTERED,\n undefined,\n expect.any(LineError)\n );\n });\n\n it.each([\n {description: '404 device not found', err: {statusCode: 404}},\n {description: '429 too many requests', err: {statusCode: 429, headers: {'retry-after': 5}}},\n {description: '503 service unavailable', err: {statusCode: 503}},\n ])('leaves the existing handling of $description untouched', async ({err}) => {\n await beforeEachSetupForKeepalive();\n const handle409Spy = jest.spyOn(reg, 'handle409KeepaliveFailure');\n lineEmitter.mockClear();\n handleErrorSpy.mockClear();\n\n await sendKeepaliveFailure(err, 1);\n\n expect(handle409Spy).not.toHaveBeenCalled();\n expect(handleErrorSpy).toHaveBeenCalledWith(\n err,\n expect.anything(),\n {file: REGISTRATION_FILE, method: KEEPALIVE_UTIL},\n expect.anything()\n );\n expect(lineEmitter).not.toHaveBeenCalledWith(\n LINE_EVENTS.UNREGISTERED,\n undefined,\n expect.anything()\n );\n });\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 describe('handleRegistrationDownEvent tests', () => {\n const registrationDownEvent = {\n type: 'async_event',\n eventId: 'evt-1',\n trackingId: 'tid-1',\n data: {\n eventType: 'registration.down',\n deviceInfo: {\n userId: 'u1',\n device: {deviceId: 'd1', uri: 'https://mobius/device/d1', status: 'ACTIVE'},\n },\n },\n };\n\n beforeEach(async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n reg.callManager.callCollection = {};\n });\n\n it('runs cleanup immediately when no active calls are present (socket disabled)', async () => {\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const setStatusSpy = jest.spyOn(reg, 'setStatus');\n const disconnectSocketSpy = jest.spyOn(\n APIRequest.getInstance({webex}),\n 'disconnectFromMobiusSocket'\n );\n\n lineEmitter.mockClear();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(setStatusSpy).toHaveBeenCalledWith(RegistrationStatus.INACTIVE);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(reg.reconnectPending).toBe(false);\n expect(reg.scheduled429Retry).toBe(false);\n expect(reg.failoverImmediately).toBe(false);\n expect(reg.retryAfter).toBeUndefined();\n expect(reg.registerRetry).toBe(false);\n expect(disconnectSocketSpy).not.toHaveBeenCalled();\n /* A registration-down stop has no reason to report to the consumer. */\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED, undefined, undefined);\n });\n\n it('ends the active call and still runs cleanup when an active call is present', async () => {\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const setStatusSpy = jest.spyOn(reg, 'setStatus');\n\n const activeCall = reg.callManager.createCall() as ICall;\n const endSpy = jest.spyOn(activeCall, 'end');\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n lineEmitter.mockClear();\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(endSpy).toHaveBeenCalledTimes(1);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(setStatusSpy).toHaveBeenCalledWith(RegistrationStatus.INACTIVE);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED, undefined, undefined);\n });\n\n it('runs cleanup without calling end when no active call is present on re-invocation', async () => {\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const setStatusSpy = jest.spyOn(reg, 'setStatus');\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n clearKeepaliveSpy.mockClear();\n setStatusSpy.mockClear();\n lineEmitter.mockClear();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(setStatusSpy).toHaveBeenCalledWith(RegistrationStatus.INACTIVE);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED, undefined, undefined);\n });\n\n it('disconnects the Mobius WebSocket when socket is enabled', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n jest.spyOn(apiRequest, 'isSocketEnabled').mockReturnValue(true);\n const disconnectSocketSpy = jest\n .spyOn(apiRequest, 'disconnectFromMobiusSocket')\n .mockResolvedValue();\n\n lineEmitter.mockClear();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(disconnectSocketSpy).toHaveBeenCalledWith({\n code: 3050,\n reason: 'done (permanent)',\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED, undefined, undefined);\n });\n\n it('still emits UNREGISTERED when socket disconnect fails', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n jest.spyOn(apiRequest, 'isSocketEnabled').mockReturnValue(true);\n const disconnectSocketSpy = jest\n .spyOn(apiRequest, 'disconnectFromMobiusSocket')\n .mockRejectedValue(new Error('socket teardown failed'));\n\n lineEmitter.mockClear();\n\n await reg.handleRegistrationDownEvent(registrationDownEvent as any);\n\n expect(disconnectSocketSpy).toHaveBeenCalled();\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mobius socket disconnect failed after registration-down'),\n {file: REGISTRATION_FILE, method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT}\n );\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED, undefined, undefined);\n });\n });\n\n describe('attemptRegistrationWithServers transport alignment', () => {\n let apiRequest: APIRequest;\n let setSocketEnabledSpy: jest.SpyInstance;\n\n beforeEach(() => {\n apiRequest = APIRequest.getInstance({webex});\n // Keep the actual transport on HTTP (no-op) so the registration flow stays simple;\n // we only assert which boolean the method derives from the server group's URL scheme.\n setSocketEnabledSpy = jest.spyOn(apiRequest, 'setSocketEnabled').mockImplementation(() => {});\n webex.request.mockResolvedValue(successPayload);\n });\n\n it('enables the WebSocket transport when the server group uses the wss:// scheme', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, [\n 'wss://mobius.example.com/api/v1/calling/web/',\n ]);\n\n expect(setSocketEnabledSpy).toHaveBeenCalledWith(true);\n });\n\n it('falls back to the HTTP transport when the server group uses the https:// scheme', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, [\n 'https://mobius.example.com/api/v1/calling/web/',\n ]);\n\n expect(setSocketEnabledSpy).toHaveBeenCalledWith(false);\n });\n\n it('does not change the transport when the server group is empty', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, []);\n\n expect(setSocketEnabledSpy).not.toHaveBeenCalled();\n });\n\n it('derives the transport from the first server in the group', async () => {\n await reg.attemptRegistrationWithServers(REGISTRATION_UTIL, [\n 'wss://primary.example.com/api/v1/calling/web/',\n 'https://backup.example.com/api/v1/calling/web/',\n ]);\n\n expect(setSocketEnabledSpy).toHaveBeenCalledWith(true);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}