@webex/calling 3.12.0-next.93 → 3.12.0-next.94
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.
- package/dist/CallingClient/registration/register.js +128 -58
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +362 -76
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/common/Utils.js +7 -18
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +3 -6
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/module/CallingClient/registration/register.js +32 -7
- package/dist/module/common/Utils.js +7 -12
- package/dist/types/CallingClient/registration/register.d.ts +1 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +0 -1
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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","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":[]}
|
|
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","_t2","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","retry","_context46","sessionSuperseded","sent","_callee47","release","restoration","_t","_context47","acquire","_callee48","_context48","_callee49","_context49","_callee50","inFlight","abort","_context50","attemptRegistrationWithServers","_callee51","staleWorker","staleWorkerPostSpy","failKeepalive","currentWorker","_context51","_","reject","SEND_KEEPALIVE","postMessage","terminate","KEEPALIVE_RESULT","_callee52","conflictPayload","_context52","_callee53","pingSuccessPayload","_context53","isPrimaryActive","_callee54","pingFailurePayload","_context54","registrationDownEvent","eventId","trackingId","eventType","_callee55","_context55","_callee56","setStatusSpy","_context56","handleRegistrationDownEvent","scheduled429Retry","failoverImmediately","registerRetry","_callee57","activeCall","endSpy","_context57","_callee58","_context58","_callee59","_context59","_callee60","_context60","HANDLE_REGISTRATION_DOWN_EVENT","setSocketEnabledSpy","mockImplementation","_callee61","_context61","_callee62","_context62","_callee63","_context63","_callee64","_context64"],"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 it('stays terminal when the network recovers after a superseded session', async () => {\n await beforeEachSetupForKeepalive();\n lineEmitter.mockClear();\n\n await sendKeepaliveFailure(conflictError, 1);\n\n expect(reg.sessionSuperseded).toStrictEqual(true);\n restoreSpy.mockClear();\n restartSpy.mockClear();\n\n postRegistrationSpy.mockClear();\n failoverSpy.mockClear();\n\n const retry = await reg.handleConnectionRestoration(true);\n\n /* The restoration runs, but every registration attempt it makes is refused at the\n * choke point, so nothing reaches Mobius and no failover is rescheduled. */\n expect(retry).toStrictEqual(false);\n expect(warnSpy).toHaveBeenCalledWith(\n `Session superseded, skipping registration attempt - caller: ${METHODS.HANDLE_CONNECTION_RESTORATION}`,\n {file: REGISTRATION_FILE, method: METHODS.HANDLE_CONNECTION_RESTORATION}\n );\n expect(postRegistrationSpy).not.toHaveBeenCalled();\n expect(restartSpy).not.toHaveBeenCalled();\n expect(failoverSpy).not.toHaveBeenCalled();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n\n it('abandons a restoration that was already queued when the session was superseded', async () => {\n await beforeEachSetupForKeepalive();\n lineEmitter.mockClear();\n postRegistrationSpy.mockClear();\n restartSpy.mockClear();\n failoverSpy.mockClear();\n\n /* Something else holds the mutex, so the restoration queues behind it having\n * begun while the session was still valid. */\n const release = await reg.mutex.acquire();\n const restoration = reg.handleConnectionRestoration(true);\n\n await flushPromises();\n\n /* The 409 cleanup latches without the mutex, so the flip lands mid-wait. */\n reg.sessionSuperseded = true;\n\n release();\n\n expect(await restoration).toStrictEqual(false);\n\n /* The latch flipped after this restoration had already started, so the choke\n * point is what stops it: no device is registered for the dead session. */\n expect(warnSpy).toHaveBeenCalledWith(\n `Session superseded, skipping registration attempt - caller: ${METHODS.HANDLE_CONNECTION_RESTORATION}`,\n {file: REGISTRATION_FILE, method: METHODS.HANDLE_CONNECTION_RESTORATION}\n );\n expect(postRegistrationSpy).not.toHaveBeenCalled();\n expect(restartSpy).not.toHaveBeenCalled();\n expect(failoverSpy).not.toHaveBeenCalled();\n });\n\n it('stays terminal when all calls are cleared after a superseded session', async () => {\n await beforeEachSetupForKeepalive();\n lineEmitter.mockClear();\n\n await sendKeepaliveFailure(conflictError, 1);\n\n postRegistrationSpy.mockClear();\n restartSpy.mockClear();\n failoverSpy.mockClear();\n\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n\n expect(warnSpy).toHaveBeenCalledWith(\n `Session superseded, skipping registration attempt - caller: ${CALLS_CLEARED_HANDLER_UTIL}`,\n {file: REGISTRATION_FILE, method: CALLS_CLEARED_HANDLER_UTIL}\n );\n expect(postRegistrationSpy).not.toHaveBeenCalled();\n expect(restartSpy).not.toHaveBeenCalled();\n expect(failoverSpy).not.toHaveBeenCalled();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n\n it('lets an explicit registration by the consumer clear the superseded state', async () => {\n await beforeEachSetupForKeepalive();\n lineEmitter.mockClear();\n\n await sendKeepaliveFailure(conflictError, 1);\n\n expect(reg.sessionSuperseded).toStrictEqual(true);\n\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(reg.sessionSuperseded).toStrictEqual(false);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n\n it('latches the superseded state before waiting on the shared mutex', async () => {\n await beforeEachSetupForKeepalive();\n const worker = reg.webWorker;\n lineEmitter.mockClear();\n postRegistrationSpy.mockClear();\n\n /* A recovery already holds the mutex, so the 409 cleanup queues behind it. */\n const release = await reg.mutex.acquire();\n\n const inFlight = worker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: conflictError,\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n\n await flushPromises();\n\n /* The latch and the worker teardown are visible before cleanup has run. */\n expect(reg.sessionSuperseded).toStrictEqual(true);\n expect(reg.webWorker).toBeUndefined();\n expect(lineEmitter).not.toHaveBeenCalledWith(\n LINE_EVENTS.UNREGISTERED,\n undefined,\n expect.anything()\n );\n\n /* A registration path starting now aborts instead of racing the queued cleanup. */\n const abort = await reg.attemptRegistrationWithServers(FAILOVER_UTIL);\n\n expect(abort).toStrictEqual(true);\n expect(postRegistrationSpy).not.toHaveBeenCalled();\n expect(warnSpy).toHaveBeenCalledWith(\n `Session superseded, skipping registration attempt - caller: ${FAILOVER_UTIL}`,\n {file: REGISTRATION_FILE, method: FAILOVER_UTIL}\n );\n\n release();\n await inFlight;\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n\n it('discards a 409 delivered by a keepalive worker that has been replaced', async () => {\n await beforeEachSetupForKeepalive();\n const staleWorker = reg.webWorker;\n const staleWorkerPostSpy = jest.spyOn(staleWorker, 'postMessage');\n const handle409Spy = jest.spyOn(reg, 'handle409KeepaliveFailure');\n let failKeepalive;\n\n jest.spyOn(reg, 'postKeepAlive').mockReturnValue(\n new Promise((_, reject) => {\n failKeepalive = reject;\n })\n );\n lineEmitter.mockClear();\n\n const inFlight = staleWorker.onmessage({\n data: {type: WorkerMessageType.SEND_KEEPALIVE},\n } as MessageEvent);\n\n /* A re-registration (failback, connection restoration) swaps the worker while the\n * keepalive of the previous registration is still in flight. */\n const currentWorker = {postMessage: jest.fn(), terminate: jest.fn(), onmessage: null};\n reg.webWorker = currentWorker;\n\n failKeepalive(conflictError);\n await inFlight;\n await flushPromises();\n\n expect(staleWorkerPostSpy).not.toHaveBeenCalledWith(\n expect.objectContaining({type: WorkerMessageType.KEEPALIVE_RESULT})\n );\n expect(currentWorker.postMessage).not.toHaveBeenCalled();\n expect(handle409Spy).not.toHaveBeenCalled();\n expect(lineEmitter).not.toHaveBeenCalledWith(\n LINE_EVENTS.UNREGISTERED,\n undefined,\n expect.anything()\n );\n });\n });\n });\n\n describe('409 Conflict outside the keepalive flow', () => {\n /* The registration flow passes no sessionSupersededCb, so a 409 there is logged and\n * ignored: no consumer event, no registration-error metric, and non-final so the\n * server loop and failover proceed as they would for any non-fatal status. */\n it('ignores a 409 during registration without notifying the consumer', async () => {\n jest.useFakeTimers();\n const conflictPayload = {statusCode: 409, headers: {trackingid: 'tid-reg-409'}};\n webex.request.mockRejectedValue(conflictPayload);\n lineEmitter.mockClear();\n metricSpy.mockClear();\n\n await reg.triggerRegistration();\n\n expect(warnSpy).toHaveBeenCalledWith(\n '409 Conflict: ignored, caller does not handle a superseded session',\n {file: REGISTRATION_FILE, method: REGISTRATION_UTIL}\n );\n\n /* No consumer notification and no registration-error metric on this path. */\n expect(lineEmitter).not.toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).not.toHaveBeenCalledWith(LINE_EVENTS.ERROR, undefined, expect.anything());\n expect(metricSpy).not.toHaveBeenCalledWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n expect.anything(),\n expect.anything(),\n expect.anything(),\n expect.anything(),\n expect.anything()\n );\n\n /* Non-final: every server was tried and failover was scheduled. */\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(reg.sessionSuperseded).toStrictEqual(false);\n expect(failoverSpy).toHaveBeenCalled();\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":[]}
|