@webex/calling 3.9.0-next.8 → 3.9.0-next.9
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/CallHistory/CallHistory.js +51 -46
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +146 -147
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallHistory/types.js.map +1 -1
- package/dist/CallSettings/CallSettings.js +8 -8
- package/dist/CallSettings/CallSettings.js.map +1 -1
- package/dist/CallSettings/CallSettings.test.js +1 -1
- package/dist/CallSettings/CallSettings.test.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +12 -11
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +9 -10
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +66 -59
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +108 -109
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/constants.js.map +1 -1
- package/dist/CallSettings/testFixtures.js.map +1 -1
- package/dist/CallSettings/types.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +142 -85
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +184 -173
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/callRecordFixtures.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.js +2 -2
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.test.js +8 -7
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/types.js.map +1 -1
- package/dist/CallingClient/calling/call.js +343 -320
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +405 -406
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +3 -4
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +67 -68
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/index.js.map +1 -1
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/callingClientFixtures.js.map +1 -1
- package/dist/CallingClient/constants.js +2 -1
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +7 -7
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +6 -6
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/line/types.js.map +1 -1
- package/dist/CallingClient/registration/index.js.map +1 -1
- package/dist/CallingClient/registration/register.js +239 -230
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +172 -173
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/registerFixtures.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +5 -4
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +14 -14
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/types.js.map +1 -1
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +2 -6
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +244 -238
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +89 -90
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Contacts/constants.js +2 -2
- package/dist/Contacts/constants.js.map +1 -1
- package/dist/Contacts/contactFixtures.js.map +1 -1
- package/dist/Contacts/types.js.map +1 -1
- package/dist/Errors/catalog/CallError.js +2 -2
- package/dist/Errors/catalog/CallError.js.map +1 -1
- package/dist/Errors/catalog/CallingDeviceError.js +2 -2
- package/dist/Errors/catalog/CallingDeviceError.js.map +1 -1
- package/dist/Errors/catalog/ExtendedError.js +3 -3
- package/dist/Errors/catalog/ExtendedError.js.map +1 -1
- package/dist/Errors/catalog/LineError.js +2 -2
- package/dist/Errors/catalog/LineError.js.map +1 -1
- package/dist/Errors/index.js.map +1 -1
- package/dist/Errors/types.js.map +1 -1
- package/dist/Events/impl/index.js +2 -2
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/Events/types.js.map +1 -1
- package/dist/Logger/index.js.map +1 -1
- package/dist/Logger/index.test.js.map +1 -1
- package/dist/Logger/types.js.map +1 -1
- package/dist/Metrics/index.js +109 -46
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +8 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/index.js +0 -1
- package/dist/SDKConnector/index.js.map +1 -1
- package/dist/SDKConnector/index.test.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/SDKConnector/utils.js.map +1 -1
- package/dist/SDKConnector/utils.test.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +42 -39
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +119 -120
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +54 -47
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +73 -74
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +12 -11
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/Voicemail.test.js +2 -2
- package/dist/Voicemail/Voicemail.test.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +78 -70
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +184 -185
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/constants.js.map +1 -1
- package/dist/Voicemail/types.js.map +1 -1
- package/dist/Voicemail/voicemailFixture.js.map +1 -1
- package/dist/api.js.map +1 -1
- package/dist/common/Utils.js +80 -63
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +95 -104
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/index.js.map +1 -1
- package/dist/common/testUtil.js +1 -1
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +4 -0
- package/dist/module/CallSettings/UcmBackendConnector.js +1 -0
- package/dist/module/CallSettings/WxCallBackendConnector.js +7 -0
- package/dist/module/CallingClient/CallingClient.js +62 -20
- package/dist/module/CallingClient/calling/call.js +66 -43
- package/dist/module/CallingClient/constants.js +2 -1
- package/dist/module/CallingClient/registration/register.js +6 -3
- package/dist/module/CallingClient/registration/webWorker.js +2 -1
- package/dist/module/CallingClient/windowsChromiumIceWarmupUtils.js +1 -4
- package/dist/module/Contacts/ContactsClient.js +23 -17
- package/dist/module/Contacts/constants.js +1 -1
- package/dist/module/Metrics/index.js +42 -0
- package/dist/module/Metrics/types.js +7 -0
- package/dist/module/Voicemail/BroadworksBackendConnector.js +3 -0
- package/dist/module/Voicemail/UcmBackendConnector.js +6 -0
- package/dist/module/Voicemail/WxCallBackendConnector.js +8 -0
- package/dist/module/common/Utils.js +22 -8
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +2 -1
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts +2 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/windowsChromiumIceWarmupUtils.d.ts +2 -4
- package/dist/types/CallingClient/windowsChromiumIceWarmupUtils.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Contacts/constants.d.ts +1 -1
- package/dist/types/Contacts/constants.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +10 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_types5","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","fn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","mockResponse","getMockRequestTemplate","uri","concat","primary","body","userId","internal","device","clientDeviceUri","url","serviceData","ccMockResponse","failurePayload","statusCode","mockPostResponse","headers","trackingid","failurePayload429One","failurePayload429Two","failurePayload429Three","failurePayload429Four","successPayload","reg","restartSpy","restoreSpy","postRegistrationSpy","deregisterSpy","failoverSpy","retry429Spy","metricSpy","setupRegistration","mockServiceData","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","metricManager","beforeEach","afterEach","request","clearAllTimers","useRealTimers","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","RegistrationStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","deviceId","objectContaining","file","REGISTRATION_FILE","any","String","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","REGISTRATION_UTIL","undefined","stop","_callee2","error","_callee2$","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","REGISTRATION_ERROR","_callee3","_callee3$","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","global","fetch","json","mockDeleteResponse","IDLE","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_callee4$","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_callee5$","_context5","isCCFlow","_callee6","_callee6$","_context6","_callee7","_callee7$","_context7","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_callee8","_callee8$","_context8","_callee9","_callee9$","_context9","_callee10","_callee10$","_context10","getActiveMobiusUrl","_callee11","_callee11$","_context11","CONTACT_CENTER","_callee12","_callee12$","_context12","isPrimaryActiveSpy","_callee13","_callee13$","_context13","mockReturnValue","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee14","_callee14$","_context14","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","toBe","REG_429_RETRY_UTIL","failbackTimer","_callee15","_callee15$","_context15","FAILBACK_UTIL","_callee16","finalErrorPayload","_callee16$","_context16","_callee17","_callee17$","_context17","_callee18","_callee18$","_context18","_callee19","_callee19$","_context19","callManager","createCall","_keys","getActiveCalls","_callee20","_callee20$","_context20","beforeEachSetupForKeepalive","_ref21","_callee21","_callee21$","_context21","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","calls","_values","end","_callee22","postMessageSpy","_callee22$","_context22","Worker","toHaveBeenCalledWith","type","accessToken","deviceUrl","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee23","worker","_callee23$","_context23","err","keepAliveRetryCount","_callee24","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_callee24$","_context24","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","KEEPALIVE_UTIL","_callee25","_callee25$","_context25","toBeUndefined","startKeepaliveTimer","name","KEEPALIVE_SUCCESS","_callee26","_callee26$","_context26","_callee27","clearKeepaliveSpy","_callee27$","_context27","toHaveBeenCalled","_callee28","clearTimerSpy","threshold","_callee28$","_context28","lastCalledWith","keepaliveTimer","callCollection","reconnectOnFailure","CALLS_CLEARED_HANDLER_UTIL","_callee29","_callee29$","_context29","_callee30","pingSuccessPayload","status","_callee30$","_context30","isPrimaryActive","sent","_callee31","pingFailurePayload","_callee31$","_context31"],"sources":["register.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\nimport {Mutex} from 'async-mutex';\nimport {createRegistration} from './register';\nimport {\n getMobiusDiscoveryResponse,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport * as utils from '../../common/Utils';\nimport log from '../../Logger';\nimport {LOGGER} from '../../Logger/types';\nimport {URL, mockDeleteResponse, mockPostResponse} from './registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {ERROR_TYPE} from '../../Errors/types';\nimport {\n CALLS_CLEARED_HANDLER_UTIL,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_REHOMING_INTERVAL_MIN,\n FAILBACK_UTIL,\n FAILOVER_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REGISTRATION_UTIL,\n REG_429_RETRY_UTIL,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n SEC_TO_MSEC_MFACTOR,\n} from '../constants';\nimport {ICall} from '../calling/types';\nimport {LINE_EVENTS} from '../line/types';\nimport {createLineError} from '../../Errors/catalog/LineError';\nimport {IRegistration} from './types';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE} from '../../Metrics/types';\n\nconst webex = getTestUtilsWebex();\nconst MockServiceData = {\n indicator: ServiceIndicator.CALLING,\n domain: '',\n};\nconst logSpy = jest.spyOn(log, 'log');\nconst infoSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\njest.spyOn(utils, 'uploadLogs').mockResolvedValue();\ndescribe('Registration Tests', () => {\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n const lineEmitter = jest.fn();\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n\n const mockResponse = {\n ...getMockRequestTemplate(),\n uri: `${mobiusUris.primary[0]}device`,\n body: {\n userId: webex.internal.device.userId,\n clientDeviceUri: webex.internal.device.url,\n serviceData: {\n domain: '',\n indicator: 'calling',\n },\n },\n };\n\n const ccMockResponse = {\n ...mockResponse,\n body: {\n ...mockResponse.body,\n serviceData: {\n domain: '',\n indicator: 'contactcenter',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n const failurePayload429One = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 42,\n },\n });\n\n const failurePayload429Two = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 33,\n },\n });\n\n const failurePayload429Three = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 136,\n },\n });\n\n const failurePayload429Four = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 81,\n },\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n let reg: IRegistration;\n let restartSpy;\n let restoreSpy;\n let postRegistrationSpy;\n let deregisterSpy;\n let failoverSpy;\n let retry429Spy;\n let metricSpy;\n\n const setupRegistration = (mockServiceData) => {\n const mutex = new Mutex();\n reg = createRegistration(webex, mockServiceData, mutex, lineEmitter, LOGGER.INFO);\n reg.setMobiusServers(mobiusUris.primary, mobiusUris.backup);\n jest.clearAllMocks();\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n deregisterSpy = jest.spyOn(reg, 'deregister');\n failoverSpy = jest.spyOn(reg, 'startFailoverTimer');\n retry429Spy = jest.spyOn(reg, 'handle429Retry');\n metricSpy = jest.spyOn(reg.metricManager, 'submitRegistrationMetric');\n };\n\n beforeEach(() => {\n setupRegistration(MockServiceData);\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('verify successful registration', async () => {\n webex.request.mockReturnValueOnce({\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.CONNECTING);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.REGISTERED, mockPostResponse);\n\n // Check that log.log was called for successful registration\n expect(logSpy).toBeCalledWith(\n `Registration successful for deviceId: ${mockPostResponse.device.deviceId} userId: ${mockPostResponse.userId}`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: expect.any(String),\n })\n );\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('verify failure registration', async () => {\n webex.request.mockRejectedValue({\n body: mockPostResponse,\n statusCode: 401,\n headers: {},\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n const error = createLineError(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n {},\n ERROR_TYPE.TOKEN_ERROR,\n RegistrationStatus.INACTIVE\n );\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.ERROR, undefined, error);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n '',\n undefined,\n error\n );\n });\n\n it('verify failure registration 403-101', async () => {\n webex.request\n .mockRejectedValueOnce({\n body: {\n userId: mockPostResponse.userId,\n errorCode: 101,\n devices: [mockPostResponse.device],\n },\n statusCode: 403,\n })\n .mockResolvedValueOnce({\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(global.fetch).toBeCalledOnceWith(mockPostResponse.device.uri, {\n method: 'DELETE',\n headers: expect.anything(),\n });\n\n expect(warnSpy).toBeCalledWith('User device limit exceeded', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restored successfully.', expect.anything());\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(4);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(3, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.REGISTERED, mockPostResponse);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'UNKNOWN',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n describe('429 handling tests', () => {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n const logSpy = jest.spyOn(log, 'log');\n\n beforeEach(() => {\n mobiusUris.backup.pop();\n });\n\n afterEach(() => {\n mobiusUris.backup.push(URL);\n jest.clearAllMocks();\n });\n\n it('handle 429 received during initial registration failure and first attempt with primary', async () => {\n jest.useFakeTimers();\n logSpy.mockClear();\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration failed with 429 with higher retyrAfter, interval should be updtaed with retryAfter.\n * The first attempt to register with primary should be made after retryAfter seconds.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'triggerRegistration'\n );\n expect(reg.retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n /* The first attempt to register with primary failed with 429 with lower retryAfter, interval should remain the same.\n * The second attempt to register with primary will be scheduled as per the interval calculated.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429Two.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(reg.retryAfter).toEqual(failurePayload429Two.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(43 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* The second attempt to register with primary failed with 500, the retryAfter should be undefined.\n * The third attempt to register with primary will be scheduled as per the interval calculated.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined);\n expect(failoverSpy).toBeCalledOnceWith(3, 85);\n });\n\n it('handle 429 received with higher retryAfter than the interval when interval with elapsedTime is already reaching threshold timer so we failover immediately', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 3`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while the last attempt for primary', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration and first 2 attempts with primary failed with non-final 5xx error responses.\n * Last attempt with primary failed with 429, the retryAfter should be used to schedule the next attempt but\n * the failover is triggered before the scheduling logic kicks in.\n */\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 41 seconds, number of attempts : 3`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(41 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(4, 114);\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(5, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while failing over to backup server for CC flow', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n /* Failover to backup server failed with 429, the retryAfter is used to schedule the next attempt with backup server.\n * Interval will be updated with retryAfter as interval calculated is less than the retryAfter.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with backup servers in ${failurePayload429One.headers['retry-after']} seconds.`,\n loggerContext\n );\n\n webex.request.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('checking the retryAfter exceeding the threshold timers in first attempt itself', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(40);\n webex.request.mockRejectedValueOnce(failurePayload429Three);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Three.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n });\n\n it('checking the retryAfter exceeding the threshold timers in later attempts', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(39)\n .mockReturnValueOnce(43);\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Four)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 43 seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Four.headers['retry-after']} seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n });\n\n describe('Registration failover tests', () => {\n it('verify unreachable primary with reachable backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(metricSpy).toHaveBeenNthCalledWith(\n 3,\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n FAILOVER_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('cc: verify unreachable primary with reachable backup server', async () => {\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n });\n\n it('verify unreachable primary and backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /*\n * 2 calls for primary -> initial and after timer expiry.\n * 2 calls for each backup entry -> 2 * 2 = 4.\n * So a total of 6 calls to webex.request and handleErrors\n */\n expect(webex.request).toBeCalledTimes(6);\n expect(handleErrorSpy).toBeCalledTimes(6);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[1]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n });\n\n describe('Registration failback tests', () => {\n let isPrimaryActiveSpy;\n beforeEach(async () => {\n isPrimaryActiveSpy = jest.spyOn(reg, 'isPrimaryActive');\n isPrimaryActiveSpy.mockReturnValue(true);\n /* keep keepalive as active so that it wont interfere with the failback tests */\n jest.useFakeTimers();\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n reg.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n reg.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n\n /* These 2 calls to handleErrorSpy are for primary after which it fails over to backup */\n expect(handleErrorSpy).toBeCalledTimes(2);\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n });\n\n it('verify 429 error with failback to primary after initial registration with backup: Restore failure', async () => {\n // delete should be successful\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n postRegistrationSpy.mockRejectedValue(failurePayload429Two);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n jest.advanceTimersByTime(10000);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429Two.headers['retry-after'],\n 'executeFailback'\n );\n expect(reg.failback429RetryAttempts).toBe(0);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n expect(restartSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure', async () => {\n postRegistrationSpy.mockRejectedValue(failurePayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure with final error', async () => {\n const finalErrorPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 401,\n body: mockPostResponse,\n });\n postRegistrationSpy.mockClear();\n postRegistrationSpy\n .mockRejectedValue(finalErrorPayload)\n .mockRejectedValueOnce(failurePayload);\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore success', async () => {\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify successful failback to primary after initial registration with backup', async () => {\n postRegistrationSpy.mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url must now match with the primary url */\n expect(deregisterSpy).toBeCalledOnceWith();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.primary[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.failbackTimer).toBe(undefined);\n expect(restoreSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(mockPostResponse.rehomingIntervalMin);\n expect(reg.rehomingIntervalMax).toBe(mockPostResponse.rehomingIntervalMax);\n });\n\n it('verify unsuccessful failback attempt due to active call', async () => {\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(deregisterSpy).not.toBeCalled();\n expect(restoreSpy).not.toBeCalled();\n expect(restartSpy).not.toBeCalled();\n\n expect(infoSpy).toBeCalledWith(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback attempt due to primary server being down', async () => {\n isPrimaryActiveSpy.mockReturnValue(false);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(deregisterSpy).not.toBeCalled();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n });\n\n // Keep-alive related test cases\n describe('Keep-alive Tests', () => {\n const beforeEachSetupForKeepalive = async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n };\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n reg.clearKeepaliveTimer();\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n\n await beforeEachSetupForKeepalive();\n\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n\n reg.webWorker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\n\n const worker = reg.webWorker;\n lineEmitter.mockClear();\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_FAILURE', err: {statusCode: 503}, keepAliveRetryCount: 1},\n } as MessageEvent);\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n // Run any necessary setup for keepalive\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Clear previous event emissions\n lineEmitter.mockClear();\n\n // Assume registration is active\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n // Use fake timers to trigger keepalive initialization\n jest.useFakeTimers();\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n\n // Simulate the worker sending a KEEPALIVE_FAILURE message with retry count at threshold.\n const RETRY_COUNT_THRESHOLD = reg.isCCFlow ? 4 : 5;\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: RETRY_COUNT_THRESHOLD,\n },\n };\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n\n jest.useRealTimers();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 5 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.webWorker).toBeDefined();\n\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const url = 'https://mobius-dfw.webex.com/api/v1/calling/web/';\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 5,\n },\n } as MessageEvent);\n\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(reconnectSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n\n // Advance timers and flush any remaining promises.\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n // reconnectSpy should have been called only once.\n expect(reconnectSpy).toBeCalledTimes(1);\n expect(restoreSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n expect(restartSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n // Active Mobius URL should remain unchanged.\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(handleErrorSpy).toBeCalledTimes(3);\n\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n // In a complete failure‐then-recovery scenario, we expect another failure event to have been handled.\n // For that, simulate a second failure event on the new worker.\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledTimes(4);\n\n // And then re-register successfully:\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n });\n\n it('cc: verify failover to backup server after 4 keep alive failure with primary server', async () => {\n // Register with contact center service\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n await beforeEachSetupForKeepalive();\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n // Spy on clearKeepaliveTimer and simulate reconnectOnFailure behavior\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n // Simulate a KEEPALIVE_FAILURE message from the worker with a retry count equal to threshold (4 for CC)\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 4,\n },\n } as MessageEvent);\n\n // Wait for any asynchronous actions to complete\n await flushPromises();\n\n // Verify that the keepalive timer was cleared and reconnectOnFailure was triggered\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(reconnectSpy).toHaveBeenCalledWith(reg.startKeepaliveTimer.name);\n\n // Verify that the active Mobius URL has been updated to the backup server and registration is active\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Simulate an active call.\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const threshold = reg.isCCFlow ? 4 : 5;\n\n // Simulate a KEEPALIVE_FAILURE event with a 503 error at threshold.\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent;\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n // At this point, clearKeepaliveTimer was called so the worker is terminated.\n expect(clearTimerSpy).toHaveBeenCalled();\n expect(reg.webWorker).toBeUndefined();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(true);\n expect(infoSpy).toBeCalledWith(\n 'Active call(s) present, deferred reconnect till call cleanup.',\n {file: REGISTRATION_FILE, method: expect.any(String)}\n );\n\n reconnectSpy.mockClear();\n\n // Now simulate call cleanup.\n reg.callManager.callCollection = {};\n webex.request.mockResolvedValueOnce(successPayload);\n\n // Call reconnectOnFailure manually. With no active calls, this should trigger re-registration.\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n await flushPromises();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n // After re-registration, registration status becomes ACTIVE and a new worker is created.\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n expect(reconnectSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n });\n\n it('checks for keep-alive failure with final error: 404', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n jest.spyOn(utils, 'handleRegistrationErrors').mockResolvedValue(true);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 404 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith({statusCode: 404}, expect.anything(), {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\n });\n });\n\n describe('Primary server status checks', () => {\n it('success: primary server status to be up', async () => {\n const pingSuccessPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n });\n webex.request.mockResolvedValue(pingSuccessPayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(true);\n });\n\n it('failed: primary server status to be down', async () => {\n const pingFailurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n });\n webex.request.mockResolvedValue(pingFailurePayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(false);\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_asyncMutex","require","_register","_testUtil","_types","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_types2","_registerFixtures","_common","_types3","_constants","_types4","_LineError","_types5","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","webex","getTestUtilsWebex","MockServiceData","indicator","ServiceIndicator","CALLING","domain","logSpy","jest","spyOn","log","infoSpy","warnSpy","handleErrorSpy","mockResolvedValue","describe","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","lineEmitter","fn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","mockResponse","getMockRequestTemplate","uri","concat","primary","body","userId","internal","device","clientDeviceUri","url","serviceData","ccMockResponse","failurePayload","statusCode","mockPostResponse","headers","trackingid","failurePayload429One","failurePayload429Two","failurePayload429Three","failurePayload429Four","successPayload","reg","restartSpy","restoreSpy","postRegistrationSpy","deregisterSpy","failoverSpy","retry429Spy","metricSpy","setupRegistration","mockServiceData","mutex","Mutex","createRegistration","LOGGER","INFO","setMobiusServers","backup","clearAllMocks","metricManager","beforeEach","afterEach","request","clearAllTimers","useRealTimers","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","mockReturnValueOnce","triggerRegistration","expect","toBeCalledOnceWith","method","getStatus","toEqual","RegistrationStatus","ACTIVE","toBeCalledTimes","toBeCalledWith","LINE_EVENTS","CONNECTING","REGISTERED","deviceId","objectContaining","file","REGISTRATION_FILE","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","REGISTRATION_UTIL","undefined","stop","_callee2","error","_callee2$","_context2","mockRejectedValue","createLineError","ERROR_TYPE","TOKEN_ERROR","INACTIVE","nthCalledWith","ERROR","REGISTRATION_ERROR","_callee3","_callee3$","_context3","mockRejectedValueOnce","errorCode","devices","mockResolvedValueOnce","global","fetch","json","mockDeleteResponse","IDLE","anything","UNREGISTERED","loggerContext","FAILOVER_UTIL","pop","_callee4","_callee4$","_context4","useFakeTimers","mockClear","toHaveBeenNthCalledWith","retryAfter","advanceTimersByTime","Number","SEC_TO_MSEC_MFACTOR","not","toBeCalled","_callee5","_callee5$","_context5","isCCFlow","_callee6","_callee6$","_context6","_callee7","_callee7$","_context7","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_callee8","_callee8$","_context8","_callee9","_callee9$","_context9","_callee0","_callee0$","_context0","getActiveMobiusUrl","_callee1","_callee1$","_context1","CONTACT_CENTER","_callee10","_callee10$","_context10","isPrimaryActiveSpy","_callee11","_callee11$","_context11","mockReturnValue","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","toStrictEqual","_callee12","_callee12$","_context12","MINUTES_TO_SEC_MFACTOR","failback429RetryAttempts","toBe","REG_429_RETRY_UTIL","failbackTimer","_callee13","_callee13$","_context13","FAILBACK_UTIL","_callee14","finalErrorPayload","_callee14$","_context14","_callee15","_callee15$","_context15","_callee16","_callee16$","_context16","_callee17","_callee17$","_context17","callManager","createCall","_keys","getActiveCalls","_callee18","_callee18$","_context18","beforeEachSetupForKeepalive","_ref19","_callee19","_callee19$","_context19","webWorker","toBeDefined","clearKeepaliveTimer","reconnectPending","calls","_values","end","_callee20","postMessageSpy","_callee20$","_context20","Worker","prototype","toHaveBeenCalledWith","type","accessToken","any","String","deviceUrl","interval","retryCountThreshold","onmessage","data","RECONNECTED","_callee21","worker","_callee21$","_context21","err","keepAliveRetryCount","_callee22","reconnectSpy","restartRegSpy","RETRY_COUNT_THRESHOLD","failureEvent","_callee22$","_context22","keepaliveInterval","WorkerMessageType","KEEPALIVE_FAILURE","KEEPALIVE_UTIL","_callee23","_callee23$","_context23","toBeUndefined","startKeepaliveTimer","name","KEEPALIVE_SUCCESS","_callee24","_callee24$","_context24","_callee25","clearKeepaliveSpy","_callee25$","_context25","toHaveBeenCalled","_callee26","clearTimerSpy","threshold","_callee26$","_context26","lastCalledWith","keepaliveTimer","callCollection","reconnectOnFailure","CALLS_CLEARED_HANDLER_UTIL","_callee27","_callee27$","_context27","_callee28","pingSuccessPayload","status","_callee28$","_context28","isPrimaryActive","sent","_callee29","pingFailurePayload","_callee29$","_context29"],"sources":["register.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\nimport {Mutex} from 'async-mutex';\nimport {createRegistration} from './register';\nimport {\n getMobiusDiscoveryResponse,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport * as utils from '../../common/Utils';\nimport log from '../../Logger';\nimport {LOGGER} from '../../Logger/types';\nimport {URL, mockDeleteResponse, mockPostResponse} from './registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {ERROR_TYPE} from '../../Errors/types';\nimport {\n CALLS_CLEARED_HANDLER_UTIL,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_REHOMING_INTERVAL_MIN,\n FAILBACK_UTIL,\n FAILOVER_UTIL,\n KEEPALIVE_UTIL,\n MINUTES_TO_SEC_MFACTOR,\n REGISTRATION_FILE,\n REGISTRATION_UTIL,\n REG_429_RETRY_UTIL,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n SEC_TO_MSEC_MFACTOR,\n} from '../constants';\nimport {ICall} from '../calling/types';\nimport {LINE_EVENTS} from '../line/types';\nimport {createLineError} from '../../Errors/catalog/LineError';\nimport {IRegistration} from './types';\nimport {METRIC_EVENT, REG_ACTION, METRIC_TYPE} from '../../Metrics/types';\n\nconst webex = getTestUtilsWebex();\nconst MockServiceData = {\n indicator: ServiceIndicator.CALLING,\n domain: '',\n};\nconst logSpy = jest.spyOn(log, 'log');\nconst infoSpy = jest.spyOn(log, 'info');\nconst warnSpy = jest.spyOn(log, 'warn');\nconst handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\njest.spyOn(utils, 'uploadLogs').mockResolvedValue();\ndescribe('Registration Tests', () => {\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n const lineEmitter = jest.fn();\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n\n const mockResponse = {\n ...getMockRequestTemplate(),\n uri: `${mobiusUris.primary[0]}device`,\n body: {\n userId: webex.internal.device.userId,\n clientDeviceUri: webex.internal.device.url,\n serviceData: {\n domain: '',\n indicator: 'calling',\n },\n },\n };\n\n const ccMockResponse = {\n ...mockResponse,\n body: {\n ...mockResponse.body,\n serviceData: {\n domain: '',\n indicator: 'contactcenter',\n },\n },\n };\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n const failurePayload429One = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 42,\n },\n });\n\n const failurePayload429Two = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 33,\n },\n });\n\n const failurePayload429Three = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 136,\n },\n });\n\n const failurePayload429Four = <WebexRequestPayload>(<unknown>{\n statusCode: 429,\n body: mockPostResponse,\n headers: {\n 'retry-after': 81,\n },\n });\n\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n let reg: IRegistration;\n let restartSpy;\n let restoreSpy;\n let postRegistrationSpy;\n let deregisterSpy;\n let failoverSpy;\n let retry429Spy;\n let metricSpy;\n\n const setupRegistration = (mockServiceData) => {\n const mutex = new Mutex();\n reg = createRegistration(webex, mockServiceData, mutex, lineEmitter, LOGGER.INFO);\n reg.setMobiusServers(mobiusUris.primary, mobiusUris.backup);\n jest.clearAllMocks();\n restartSpy = jest.spyOn(reg, 'restartRegistration');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n postRegistrationSpy = jest.spyOn(reg, 'postRegistration');\n deregisterSpy = jest.spyOn(reg, 'deregister');\n failoverSpy = jest.spyOn(reg, 'startFailoverTimer');\n retry429Spy = jest.spyOn(reg, 'handle429Retry');\n metricSpy = jest.spyOn(reg.metricManager, 'submitRegistrationMetric');\n };\n\n beforeEach(() => {\n setupRegistration(MockServiceData);\n });\n\n afterEach(() => {\n webex.request = jest.fn();\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n });\n\n it('verify successful registration', async () => {\n webex.request.mockReturnValueOnce({\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.CONNECTING);\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.REGISTERED, mockPostResponse);\n\n // Check that log.log was called for successful registration\n expect(logSpy).toBeCalledWith(\n `Registration successful for deviceId: ${mockPostResponse.device.deviceId} userId: ${mockPostResponse.userId} responseTrackingId: webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15`,\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'register',\n })\n );\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('verify failure registration', async () => {\n webex.request.mockRejectedValue({\n body: mockPostResponse,\n statusCode: 401,\n headers: {},\n });\n\n await reg.triggerRegistration();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n });\n\n const error = createLineError(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.',\n {},\n ERROR_TYPE.TOKEN_ERROR,\n RegistrationStatus.INACTIVE\n );\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toBeCalledTimes(2);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.ERROR, undefined, error);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'PRIMARY',\n '',\n undefined,\n error\n );\n });\n\n it('verify failure registration 403-101', async () => {\n webex.request\n .mockRejectedValueOnce({\n body: {\n userId: mockPostResponse.userId,\n errorCode: 101,\n devices: [mockPostResponse.device],\n },\n statusCode: 403,\n })\n .mockResolvedValueOnce({\n statusCode: 200,\n body: mockPostResponse,\n headers: {\n trackingid: 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n },\n });\n\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n });\n expect(global.fetch).toBeCalledOnceWith(mockPostResponse.device.uri, {\n method: 'DELETE',\n headers: expect.anything(),\n });\n\n expect(warnSpy).toBeCalledWith('User device limit exceeded', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restoration in progress.', expect.anything());\n expect(infoSpy).toBeCalledWith('Registration restored successfully.', expect.anything());\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(lineEmitter).toBeCalledTimes(4);\n expect(lineEmitter).nthCalledWith(1, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(2, LINE_EVENTS.UNREGISTERED);\n expect(lineEmitter).nthCalledWith(3, LINE_EVENTS.CONNECTING);\n expect(lineEmitter).nthCalledWith(4, LINE_EVENTS.REGISTERED, mockPostResponse);\n expect(metricSpy).toBeCalledWith(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n REGISTRATION_UTIL,\n 'UNKNOWN',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n describe('429 handling tests', () => {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n const logSpy = jest.spyOn(log, 'log');\n\n beforeEach(() => {\n mobiusUris.backup.pop();\n });\n\n afterEach(() => {\n mobiusUris.backup.push(URL);\n jest.clearAllMocks();\n });\n\n it('handle 429 received during initial registration failure and first attempt with primary', async () => {\n jest.useFakeTimers();\n logSpy.mockClear();\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Two)\n .mockRejectedValueOnce(failurePayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration failed with 429 with higher retyrAfter, interval should be updtaed with retryAfter.\n * The first attempt to register with primary should be made after retryAfter seconds.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'triggerRegistration'\n );\n expect(reg.retryAfter).toEqual(failurePayload429One.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n /* The first attempt to register with primary failed with 429 with lower retryAfter, interval should remain the same.\n * The second attempt to register with primary will be scheduled as per the interval calculated.\n */\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429Two.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(reg.retryAfter).toEqual(failurePayload429Two.headers['retry-after']);\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n retry429Spy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(43 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /* The second attempt to register with primary failed with 500, the retryAfter should be undefined.\n * The third attempt to register with primary will be scheduled as per the interval calculated.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(reg.retryAfter).toEqual(undefined);\n expect(failoverSpy).toBeCalledOnceWith(3, 85);\n });\n\n it('handle 429 received with higher retryAfter than the interval when interval with elapsedTime is already reaching threshold timer so we failover immediately', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 3`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while the last attempt for primary', async () => {\n reg.isCCFlow = true;\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(33)\n .mockReturnValueOnce(40)\n .mockReturnValueOnce(47)\n .mockReturnValueOnce(52);\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n /* Initial registration and first 2 attempts with primary failed with non-final 5xx error responses.\n * Last attempt with primary failed with 429, the retryAfter should be used to schedule the next attempt but\n * the failover is triggered before the scheduling logic kicks in.\n */\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 33 seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(33 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(2, 33);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 2`,\n loggerContext\n );\n\n logSpy.mockClear();\n failoverSpy.mockClear();\n jest.advanceTimersByTime(40 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).not.toBeCalled();\n expect(failoverSpy).toBeCalledOnceWith(3, 73);\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in 41 seconds, number of attempts : 3`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(41 * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(4, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(failoverSpy).toBeCalledOnceWith(4, 114);\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(5, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('handle 429 received while failing over to backup server for CC flow', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload429One)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n /* Failover to backup server failed with 429, the retryAfter is used to schedule the next attempt with backup server.\n * Interval will be updated with retryAfter as interval calculated is less than the retryAfter.\n */\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(retry429Spy).toBeCalledOnceWith(\n failurePayload429One.headers['retry-after'],\n 'startFailoverTimer'\n );\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with backup servers in ${failurePayload429One.headers['retry-after']} seconds.`,\n loggerContext\n );\n\n webex.request.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toBeCalledOnceWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('checking the retryAfter exceeding the threshold timers in first attempt itself', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest.spyOn(reg as any, 'getRegRetryInterval').mockReturnValueOnce(40);\n webex.request.mockRejectedValueOnce(failurePayload429Three);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 40 seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Three.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n });\n\n it('checking the retryAfter exceeding the threshold timers in later attempts', async () => {\n reg.isCCFlow = true;\n jest.useFakeTimers();\n jest\n .spyOn(reg as any, 'getRegRetryInterval')\n .mockReturnValueOnce(39)\n .mockReturnValueOnce(43);\n webex.request\n .mockRejectedValueOnce(failurePayload429One)\n .mockRejectedValueOnce(failurePayload429Four)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(failoverSpy).toBeCalledOnceWith();\n\n expect(logSpy).toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429One.headers['retry-after']} seconds, number of attempts : 1`,\n loggerContext\n );\n\n failoverSpy.mockClear();\n jest.advanceTimersByTime(\n Number(failurePayload429One.headers['retry-after']) * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(failoverSpy).toBeCalledOnceWith(2, failurePayload429One.headers['retry-after']);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in 43 seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(logSpy).not.toBeCalledWith(\n `Scheduled retry with primary in ${failurePayload429Four.headers['retry-after']} seconds, number of attempts : 2`,\n loggerContext\n );\n\n expect(infoSpy).toBeCalledWith(`Failing over to backup servers.`, loggerContext);\n\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n });\n\n describe('Registration failover tests', () => {\n it('verify unreachable primary with reachable backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(metricSpy).toHaveBeenNthCalledWith(\n 3,\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n FAILOVER_UTIL,\n 'BACKUP',\n 'webex-js-sdk_06bafdd0-2f9b-4cd7-b438-9c0d95ecec9b_15',\n undefined,\n undefined\n );\n });\n\n it('cc: verify unreachable primary with reachable backup server', async () => {\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n\n jest.useFakeTimers();\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...ccMockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n });\n\n it('verify unreachable primary and backup servers', async () => {\n jest.useFakeTimers();\n // try the primary twice and register successfully with backup servers\n webex.request.mockRejectedValue(failurePayload);\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.IDLE);\n await reg.triggerRegistration();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n\n /*\n * 2 calls for primary -> initial and after timer expiry.\n * 2 calls for each backup entry -> 2 * 2 = 4.\n * So a total of 6 calls to webex.request and handleErrors\n */\n expect(webex.request).toBeCalledTimes(6);\n expect(handleErrorSpy).toBeCalledTimes(6);\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.primary[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[0]}device`,\n });\n expect(webex.request).toBeCalledWith({\n ...mockResponse,\n method: 'POST',\n uri: `${mobiusUris.backup[1]}device`,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n });\n });\n\n describe('Registration failback tests', () => {\n let isPrimaryActiveSpy;\n beforeEach(async () => {\n isPrimaryActiveSpy = jest.spyOn(reg, 'isPrimaryActive');\n isPrimaryActiveSpy.mockReturnValue(true);\n /* keep keepalive as active so that it wont interfere with the failback tests */\n jest.useFakeTimers();\n postRegistrationSpy\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(successPayload);\n\n await reg.triggerRegistration();\n\n jest.advanceTimersByTime(REG_TRY_BACKUP_TIMER_VAL_IN_SEC * SEC_TO_MSEC_MFACTOR);\n await flushPromises();\n reg.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n reg.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n\n /* These 2 calls to handleErrorSpy are for primary after which it fails over to backup */\n expect(handleErrorSpy).toBeCalledTimes(2);\n\n /* Active Url must match with the backup url as per the test */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n });\n\n it('verify 429 error with failback to primary after initial registration with backup: Restore failure', async () => {\n // delete should be successful\n global.fetch = jest.fn(() => Promise.resolve({json: () => mockDeleteResponse})) as jest.Mock;\n\n postRegistrationSpy.mockRejectedValue(failurePayload429Two);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n jest.advanceTimersByTime(10000);\n await flushPromises();\n\n expect(retry429Spy).toBeCalledWith(\n failurePayload429Two.headers['retry-after'],\n 'executeFailback'\n );\n expect(reg.failback429RetryAttempts).toBe(0);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n expect(restartSpy).toBeCalledOnceWith(REG_429_RETRY_UTIL);\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure', async () => {\n postRegistrationSpy.mockRejectedValue(failurePayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restartSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore failure with final error', async () => {\n const finalErrorPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 401,\n body: mockPostResponse,\n });\n postRegistrationSpy.mockClear();\n postRegistrationSpy\n .mockRejectedValue(finalErrorPayload)\n .mockRejectedValueOnce(failurePayload);\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n expect(reg.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.failbackTimer).toBe(undefined);\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback to primary after initial registration with backup: Restore success', async () => {\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(restoreSpy).toBeCalledOnceWith(FAILBACK_UTIL);\n expect(restartSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify successful failback to primary after initial registration with backup', async () => {\n postRegistrationSpy.mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(`Attempting failback to primary.`, {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n });\n\n /* Active Url must now match with the primary url */\n expect(deregisterSpy).toBeCalledOnceWith();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.primary[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.failbackTimer).toBe(undefined);\n expect(restoreSpy).not.toBeCalled();\n expect(reg.rehomingIntervalMin).toBe(mockPostResponse.rehomingIntervalMin);\n expect(reg.rehomingIntervalMax).toBe(mockPostResponse.rehomingIntervalMax);\n });\n\n it('verify unsuccessful failback attempt due to active call', async () => {\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n postRegistrationSpy.mockRejectedValueOnce(failurePayload).mockResolvedValue(successPayload);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(deregisterSpy).not.toBeCalled();\n expect(restoreSpy).not.toBeCalled();\n expect(restartSpy).not.toBeCalled();\n\n expect(infoSpy).toBeCalledWith(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n expect(reg.rehomingIntervalMin).toBe(DEFAULT_REHOMING_INTERVAL_MIN);\n expect(reg.rehomingIntervalMax).toBe(DEFAULT_REHOMING_INTERVAL_MAX);\n });\n\n it('verify unsuccessful failback attempt due to primary server being down', async () => {\n isPrimaryActiveSpy.mockReturnValue(false);\n\n /* Wait for failback to be triggered. */\n jest.advanceTimersByTime(\n reg.rehomingIntervalMax * MINUTES_TO_SEC_MFACTOR * SEC_TO_MSEC_MFACTOR\n );\n await flushPromises();\n\n expect(infoSpy).toBeCalledWith(\n `Active calls present or primary Mobius is down, deferring failback to next cycle.`,\n {\n method: 'executeFailback',\n file: REGISTRATION_FILE,\n }\n );\n\n /* Active Url should still match backup url */\n expect(deregisterSpy).not.toBeCalled();\n expect(reg.getActiveMobiusUrl()).toStrictEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n });\n });\n\n // Keep-alive related test cases\n describe('Keep-alive Tests', () => {\n const beforeEachSetupForKeepalive = async () => {\n postRegistrationSpy.mockResolvedValueOnce(successPayload);\n jest.useFakeTimers();\n await reg.triggerRegistration();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n };\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n\n reg.clearKeepaliveTimer();\n reg.reconnectPending = false;\n const calls = Object.values(reg.callManager.getActiveCalls()) as ICall[];\n\n calls.forEach((call) => {\n call.end();\n });\n });\n\n it('verify successful keep-alive cases', async () => {\n const postMessageSpy = jest.spyOn(Worker.prototype, 'postMessage');\n\n await beforeEachSetupForKeepalive();\n\n expect(reg.webWorker).toBeDefined();\n expect(postMessageSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'START_KEEPALIVE',\n accessToken: expect.any(String),\n deviceUrl: expect.any(String),\n interval: expect.any(Number),\n retryCountThreshold: expect.any(Number),\n url: expect.any(String),\n })\n );\n\n reg.webWorker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toBeCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Retry Success', async () => {\n await beforeEachSetupForKeepalive();\n\n const worker = reg.webWorker;\n lineEmitter.mockClear();\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_FAILURE', err: {statusCode: 503}, keepAliveRetryCount: 1},\n } as MessageEvent);\n\n worker.onmessage({\n data: {type: 'KEEPALIVE_SUCCESS', statusCode: 200},\n } as MessageEvent);\n\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.RECONNECTED);\n });\n\n it('verify failure keep-alive cases: Restore failure', async () => {\n // Run any necessary setup for keepalive\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Clear previous event emissions\n lineEmitter.mockClear();\n\n // Assume registration is active\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n // Use fake timers to trigger keepalive initialization\n jest.useFakeTimers();\n jest.advanceTimersByTime(mockPostResponse.keepaliveInterval * SEC_TO_MSEC_MFACTOR);\n\n // Simulate the worker sending a KEEPALIVE_FAILURE message with retry count at threshold.\n const RETRY_COUNT_THRESHOLD = reg.isCCFlow ? 4 : 5;\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: RETRY_COUNT_THRESHOLD,\n },\n };\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restartRegSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n\n jest.useRealTimers();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Keep-alive missed 5 times. Status -> 503 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n });\n\n it('verify failure keep-alive cases: Restore Success', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.webWorker).toBeDefined();\n\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const url = 'https://mobius-dfw.webex.com/api/v1/calling/web/';\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 5,\n },\n } as MessageEvent);\n\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(reconnectSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n\n // Advance timers and flush any remaining promises.\n jest.advanceTimersByTime(1000);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n // reconnectSpy should have been called only once.\n expect(reconnectSpy).toBeCalledTimes(1);\n expect(restoreSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n expect(restartSpy).toBeCalledOnceWith(reg.startKeepaliveTimer.name);\n // Active Mobius URL should remain unchanged.\n expect(reg.getActiveMobiusUrl()).toStrictEqual(url);\n });\n\n it('verify failure followed by recovery of keepalive', async () => {\n await beforeEachSetupForKeepalive();\n expect(reg.getStatus()).toBe(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n webex.request\n .mockRejectedValueOnce(failurePayload)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValue(successPayload);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.webWorker).toBeUndefined();\n expect(handleErrorSpy).toBeCalledTimes(3);\n\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n // In a complete failure‐then-recovery scenario, we expect another failure event to have been handled.\n // For that, simulate a second failure event on the new worker.\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: failurePayload,\n keepAliveRetryCount: reg.isCCFlow ? 4 : 5,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(handleErrorSpy).toBeCalledTimes(4);\n\n // And then re-register successfully:\n await reg.triggerRegistration();\n await flushPromises();\n expect(reg.webWorker).toBeDefined();\n\n reg.webWorker.onmessage({\n data: {type: WorkerMessageType.KEEPALIVE_SUCCESS, statusCode: 200},\n } as MessageEvent);\n await flushPromises();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n });\n\n it('cc: verify failover to backup server after 4 keep alive failure with primary server', async () => {\n // Register with contact center service\n setupRegistration({...MockServiceData, indicator: ServiceIndicator.CONTACT_CENTER});\n await beforeEachSetupForKeepalive();\n\n webex.request.mockResolvedValueOnce(successPayload);\n await reg.triggerRegistration();\n\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n\n // Spy on clearKeepaliveTimer and simulate reconnectOnFailure behavior\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n\n // Simulate a KEEPALIVE_FAILURE message from the worker with a retry count equal to threshold (4 for CC)\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: 4,\n },\n } as MessageEvent);\n\n // Wait for any asynchronous actions to complete\n await flushPromises();\n\n // Verify that the keepalive timer was cleared and reconnectOnFailure was triggered\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n expect(reconnectSpy).toHaveBeenCalledWith(reg.startKeepaliveTimer.name);\n\n // Verify that the active Mobius URL has been updated to the backup server and registration is active\n expect(reg.getActiveMobiusUrl()).toEqual(mobiusUris.backup[0]);\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n });\n\n it('verify failure keep-alive case with active call present: Restore Success after call ends', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n\n // Simulate an active call.\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const threshold = reg.isCCFlow ? 4 : 5;\n\n // Simulate a KEEPALIVE_FAILURE event with a 503 error at threshold.\n const failureEvent = {\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 503},\n keepAliveRetryCount: threshold,\n },\n } as MessageEvent;\n\n reg.webWorker.onmessage(failureEvent);\n await flushPromises();\n\n // At this point, clearKeepaliveTimer was called so the worker is terminated.\n expect(clearTimerSpy).toHaveBeenCalled();\n expect(reg.webWorker).toBeUndefined();\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).lastCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(reg.keepaliveTimer).toStrictEqual(undefined);\n expect(reg.failbackTimer).toStrictEqual(undefined);\n expect(reconnectSpy).toBeCalledOnceWith(KEEPALIVE_UTIL);\n expect(restoreSpy).not.toBeCalled();\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(true);\n expect(infoSpy).toBeCalledWith(\n 'Active call(s) present, deferred reconnect till call cleanup.',\n {file: REGISTRATION_FILE, method: expect.any(String)}\n );\n\n reconnectSpy.mockClear();\n\n // Now simulate call cleanup.\n reg.callManager.callCollection = {};\n webex.request.mockResolvedValueOnce(successPayload);\n\n // Call reconnectOnFailure manually. With no active calls, this should trigger re-registration.\n await reg.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n await flushPromises();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n // After re-registration, registration status becomes ACTIVE and a new worker is created.\n expect(reg.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(reg.webWorker).toBeDefined();\n expect(reconnectSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restoreSpy).toBeCalledOnceWith(CALLS_CLEARED_HANDLER_UTIL);\n expect(restartRegSpy).not.toBeCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n });\n\n it('checks for keep-alive failure with final error: 404', async () => {\n await beforeEachSetupForKeepalive();\n const reconnectSpy = jest.spyOn(reg, 'reconnectOnFailure');\n const restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n const restartRegSpy = jest.spyOn(reg, 'restartRegistration');\n const clearTimerSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n jest.spyOn(utils, 'handleRegistrationErrors').mockResolvedValue(true);\n\n reg.webWorker.onmessage({\n data: {\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {statusCode: 404},\n keepAliveRetryCount: 1,\n },\n } as MessageEvent);\n await flushPromises();\n\n expect(warnSpy).toBeCalledWith(\n 'Keep-alive missed 1 times. Status -> 404 ',\n expect.objectContaining({\n file: REGISTRATION_FILE,\n method: 'startKeepaliveTimer',\n })\n );\n expect(handleErrorSpy).toBeCalledOnceWith({statusCode: 404}, expect.anything(), {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n });\n expect(reg.getStatus()).toEqual(RegistrationStatus.INACTIVE);\n expect(lineEmitter).toHaveBeenCalledWith(LINE_EVENTS.UNREGISTERED);\n expect(clearTimerSpy).toBeCalledTimes(1);\n expect(reconnectSpy).not.toHaveBeenCalled();\n expect(restoreSpy).not.toHaveBeenCalled();\n expect(restartRegSpy).not.toHaveBeenCalled();\n expect(reg.reconnectPending).toStrictEqual(false);\n expect(reg.keepaliveTimer).toBe(undefined);\n expect(reg.webWorker).toBeUndefined();\n });\n });\n\n describe('Primary server status checks', () => {\n it('success: primary server status to be up', async () => {\n const pingSuccessPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n });\n webex.request.mockResolvedValue(pingSuccessPayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(true);\n });\n\n it('failed: primary server status to be down', async () => {\n const pingFailurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n });\n webex.request.mockResolvedValue(pingFailurePayload);\n const status = await reg.isPrimaryActive();\n\n expect(webex.request).toBeCalledWith({\n method: 'GET',\n uri: `https://mobius-dfw.webex.com/api/v1/ping`,\n ...getMockRequestTemplate(),\n });\n expect(status).toEqual(false);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEVICE_ID","exports","CLIENT_DEVICE_URL","URL","mockPostResponse","userId","device","deviceId","uri","status","lastSeen","addresses","clientDeviceUri","keepaliveInterval","rehomingIntervalMin","rehomingIntervalMax","mockDeleteResponse"],"sources":["registerFixtures.ts"],"sourcesContent":["export const DEVICE_ID = '9381a370-b26b-3c5b-8901-4e8dab405dcc';\nexport const CLIENT_DEVICE_URL = 'https://clientDeviceUrl';\n\nexport const URL = 'https://wdm-intb.ciscospark.com/wdm/api/v1/';\nexport const mockPostResponse = {\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n device: {\n deviceId: 'beb3c025-8c6a-3c44-8f3d-9b7d65363ac1',\n uri: 'https://wdm-intb.ciscospark.com/wdm/api/v1/calling/web/devices/beb3c025-8c6a-3c44-8f3d-9b7d65363ac1',\n status: 'active',\n lastSeen: '2022-04-05T05:08:46Z',\n addresses: ['sip:pbs9p4cbr9_G6JJNI5DD5NP@64941297.int10.bcld.webex.com'],\n clientDeviceUri: CLIENT_DEVICE_URL,\n },\n keepaliveInterval: 30,\n rehomingIntervalMin: 90,\n rehomingIntervalMax: 180,\n};\n\nexport const mockDeleteResponse = {\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n device: {\n deviceId: DEVICE_ID,\n uri: 'https://wdm-intb.ciscospark.com/wdm/api/v1/calling/web/devices/9381a370-b26b-3c5b-8901-4e8dab405dcc',\n status: 'active',\n lastSeen: '2022-04-05T05:16:37Z',\n addresses: ['sip:pbs9p4cbr9_G6JJNI5DD5NP@64941297.int10.bcld.webex.com'],\n clientDeviceUri: CLIENT_DEVICE_URL,\n },\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,sCAAsC;AACxD,IAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,yBAAyB;AAEnD,IAAMC,GAAG,GAAAF,OAAA,CAAAE,GAAA,GAAG,6CAA6C;AACzD,IAAMC,gBAAgB,GAAAH,OAAA,CAAAG,gBAAA,GAAG;EAC9BC,MAAM,EAAE,sCAAsC;EAC9CC,MAAM,EAAE;IACNC,QAAQ,EAAE,sCAAsC;IAChDC,GAAG,EAAE,qGAAqG;IAC1GC,MAAM,EAAE,QAAQ;IAChBC,QAAQ,EAAE,sBAAsB;IAChCC,SAAS,EAAE,CAAC,2DAA2D,CAAC;IACxEC,eAAe,EAAEV;EACnB,CAAC;EACDW,iBAAiB,EAAE,EAAE;EACrBC,mBAAmB,EAAE,EAAE;EACvBC,mBAAmB,EAAE;AACvB,CAAC;AAEM,IAAMC,kBAAkB,GAAAf,OAAA,CAAAe,kBAAA,GAAG;EAChCX,MAAM,EAAE,sCAAsC;EAC9CC,MAAM,EAAE;IACNC,QAAQ,EAAEP,SAAS;IACnBQ,GAAG,EAAE,qGAAqG;IAC1GC,MAAM,EAAE,QAAQ;IAChBC,QAAQ,EAAE,sBAAsB;IAChCC,SAAS,EAAE,CAAC,2DAA2D,CAAC;IACxEC,eAAe,EAAEV;EACnB;AACF,CAAC"}
|
|
1
|
+
{"version":3,"names":["DEVICE_ID","exports","CLIENT_DEVICE_URL","URL","mockPostResponse","userId","device","deviceId","uri","status","lastSeen","addresses","clientDeviceUri","keepaliveInterval","rehomingIntervalMin","rehomingIntervalMax","mockDeleteResponse"],"sources":["registerFixtures.ts"],"sourcesContent":["export const DEVICE_ID = '9381a370-b26b-3c5b-8901-4e8dab405dcc';\nexport const CLIENT_DEVICE_URL = 'https://clientDeviceUrl';\n\nexport const URL = 'https://wdm-intb.ciscospark.com/wdm/api/v1/';\nexport const mockPostResponse = {\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n device: {\n deviceId: 'beb3c025-8c6a-3c44-8f3d-9b7d65363ac1',\n uri: 'https://wdm-intb.ciscospark.com/wdm/api/v1/calling/web/devices/beb3c025-8c6a-3c44-8f3d-9b7d65363ac1',\n status: 'active',\n lastSeen: '2022-04-05T05:08:46Z',\n addresses: ['sip:pbs9p4cbr9_G6JJNI5DD5NP@64941297.int10.bcld.webex.com'],\n clientDeviceUri: CLIENT_DEVICE_URL,\n },\n keepaliveInterval: 30,\n rehomingIntervalMin: 90,\n rehomingIntervalMax: 180,\n};\n\nexport const mockDeleteResponse = {\n userId: '8a67806f-fc4d-446b-a131-31e71ea5b0e9',\n device: {\n deviceId: DEVICE_ID,\n uri: 'https://wdm-intb.ciscospark.com/wdm/api/v1/calling/web/devices/9381a370-b26b-3c5b-8901-4e8dab405dcc',\n status: 'active',\n lastSeen: '2022-04-05T05:16:37Z',\n addresses: ['sip:pbs9p4cbr9_G6JJNI5DD5NP@64941297.int10.bcld.webex.com'],\n clientDeviceUri: CLIENT_DEVICE_URL,\n },\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,sCAAsC;AACxD,IAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,yBAAyB;AAEnD,IAAMC,GAAG,GAAAF,OAAA,CAAAE,GAAA,GAAG,6CAA6C;AACzD,IAAMC,gBAAgB,GAAAH,OAAA,CAAAG,gBAAA,GAAG;EAC9BC,MAAM,EAAE,sCAAsC;EAC9CC,MAAM,EAAE;IACNC,QAAQ,EAAE,sCAAsC;IAChDC,GAAG,EAAE,qGAAqG;IAC1GC,MAAM,EAAE,QAAQ;IAChBC,QAAQ,EAAE,sBAAsB;IAChCC,SAAS,EAAE,CAAC,2DAA2D,CAAC;IACxEC,eAAe,EAAEV;EACnB,CAAC;EACDW,iBAAiB,EAAE,EAAE;EACrBC,mBAAmB,EAAE,EAAE;EACvBC,mBAAmB,EAAE;AACvB,CAAC;AAEM,IAAMC,kBAAkB,GAAAf,OAAA,CAAAe,kBAAA,GAAG;EAChCX,MAAM,EAAE,sCAAsC;EAC9CC,MAAM,EAAE;IACNC,QAAQ,EAAEP,SAAS;IACnBQ,GAAG,EAAE,qGAAqG;IAC1GC,MAAM,EAAE,QAAQ;IAChBC,QAAQ,EAAE,sBAAsB;IAChCC,SAAS,EAAE,CAAC,2DAA2D,CAAC;IACxEC,eAAe,EAAEV;EACnB;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, RegistrationStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\nexport type retry429CallBack = (retryAfter: number, caller: string) => void;\n\n/**\n * Represents an interface for managing registration-related operations.\n */\nexport interface IRegistration {\n /**\n * Sets the primary and backup Mobius server URLs.\n *\n * @param primaryMobiusUris - An array of primary Mobius server URLs.\n * @param backupMobiusUris - An array of backup Mobius server URLs.\n */\n setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;\n\n /**\n * Triggers the registration process with the given list of servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n triggerRegistration(): Promise<void>;\n\n /**\n * Checks if the device is currently registered.\n *\n */\n isDeviceRegistered(): boolean;\n\n /**\n * Sets the status of the registration.\n *\n * @param value - The registration status to set.\n */\n setStatus(value: RegistrationStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): RegistrationStatus;\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n getDeviceInfo(): IDeviceInfo;\n\n /**\n * Clears the keep-alive timer used for registration.\n */\n clearKeepaliveTimer(): void;\n\n /**\n * Deregisters the device.\n */\n deregister(): void;\n\n /**\n * Sets the active Mobius server URL to use for registration.\n *\n * @param url - The Mobius server URL to set as active.\n */\n setActiveMobiusUrl(url: string): void;\n\n /**\n * Retrieves the active Mobius server URL.\n *\n */\n getActiveMobiusUrl(): string;\n\n /**\n * Attempts to reconnect after a connection failure.\n *\n * @param caller - The caller's identifier for reconnection.\n */\n reconnectOnFailure(caller: string): Promise<void>;\n\n /**\n * Checks if a reconnection attempt is pending.\n *\n */\n isReconnectPending(): boolean;\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n * @param retry - Set to `true` to trigger a retry after restoration.\n */\n handleConnectionRestoration(retry: boolean): Promise<boolean>;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, RegistrationStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\nexport type retry429CallBack = (retryAfter: number, caller: string) => void;\n\n/**\n * Represents an interface for managing registration-related operations.\n */\nexport interface IRegistration {\n /**\n * Sets the primary and backup Mobius server URLs.\n *\n * @param primaryMobiusUris - An array of primary Mobius server URLs.\n * @param backupMobiusUris - An array of backup Mobius server URLs.\n */\n setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;\n\n /**\n * Triggers the registration process with the given list of servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n triggerRegistration(): Promise<void>;\n\n /**\n * Checks if the device is currently registered.\n *\n */\n isDeviceRegistered(): boolean;\n\n /**\n * Sets the status of the registration.\n *\n * @param value - The registration status to set.\n */\n setStatus(value: RegistrationStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): RegistrationStatus;\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n getDeviceInfo(): IDeviceInfo;\n\n /**\n * Clears the keep-alive timer used for registration.\n */\n clearKeepaliveTimer(): void;\n\n /**\n * Deregisters the device.\n */\n deregister(): void;\n\n /**\n * Sets the active Mobius server URL to use for registration.\n *\n * @param url - The Mobius server URL to set as active.\n */\n setActiveMobiusUrl(url: string): void;\n\n /**\n * Retrieves the active Mobius server URL.\n *\n */\n getActiveMobiusUrl(): string;\n\n /**\n * Attempts to reconnect after a connection failure.\n *\n * @param caller - The caller's identifier for reconnection.\n */\n reconnectOnFailure(caller: string): Promise<void>;\n\n /**\n * Checks if a reconnection attempt is pending.\n *\n */\n isReconnectPending(): boolean;\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n * @param retry - Set to `true` to trigger a retry after restoration.\n */\n handleConnectionRestoration(retry: boolean): Promise<boolean>;\n}\n"],"mappings":"","ignoreList":[]}
|