@webex/calling 3.8.1-next.8 → 3.8.1-web-workers-keepalive.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallingClient/CallingClient.test.js +8 -6
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +4 -10
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +351 -345
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +292 -263
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +115 -0
- package/dist/CallingClient/registration/webWorker.js.map +1 -0
- package/dist/CallingClient/registration/webWorker.test.js +256 -0
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
- package/dist/CallingClient/registration/webWorkerStr.js +15 -0
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
- package/dist/common/types.js +8 -1
- package/dist/common/types.js.map +1 -1
- package/dist/module/CallingClient/registration/register.js +54 -54
- package/dist/module/CallingClient/registration/webWorker.js +59 -0
- package/dist/module/CallingClient/registration/webWorkerStr.js +93 -0
- package/dist/module/common/types.js +7 -0
- package/dist/types/CallingClient/registration/register.d.ts +1 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts +2 -0
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -0
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +3 -0
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -0
- package/dist/types/common/types.d.ts +12 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -704,6 +704,7 @@ describe('CallingClient Tests', function () {
|
|
|
704
704
|
return _regenerator.default.wrap(function _callee22$(_context22) {
|
|
705
705
|
while (1) switch (_context22.prev = _context22.next) {
|
|
706
706
|
case 0:
|
|
707
|
+
warnSpy.mockClear();
|
|
707
708
|
expect(line.getStatus()).toEqual(_types2.RegistrationStatus.ACTIVE);
|
|
708
709
|
|
|
709
710
|
/* Set mercury connection to be down and execute a delay of 2.5 seconds */
|
|
@@ -720,9 +721,9 @@ describe('CallingClient Tests', function () {
|
|
|
720
721
|
webex.internal.mercury.connected = true;
|
|
721
722
|
logSpy.mockReset();
|
|
722
723
|
jest.advanceTimersByTime(_constants.NETWORK_FLAP_TIMEOUT + 500);
|
|
723
|
-
_context22.next =
|
|
724
|
+
_context22.next = 10;
|
|
724
725
|
return flushPromises();
|
|
725
|
-
case
|
|
726
|
+
case 10:
|
|
726
727
|
_Logger.default.info('Mercury connection is up again, re-registering with Webex Calling if needed', {
|
|
727
728
|
file: _constants.REGISTRATION_FILE,
|
|
728
729
|
method: 'handleConnectionRestoration'
|
|
@@ -738,7 +739,7 @@ describe('CallingClient Tests', function () {
|
|
|
738
739
|
expect(webex.request).toHaveBeenCalledTimes(6);
|
|
739
740
|
expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [reg.getActiveMobiusUrl()]);
|
|
740
741
|
expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [_callingClientFixtures.primaryUrl]);
|
|
741
|
-
case
|
|
742
|
+
case 17:
|
|
742
743
|
case "end":
|
|
743
744
|
return _context22.stop();
|
|
744
745
|
}
|
|
@@ -804,6 +805,7 @@ describe('CallingClient Tests', function () {
|
|
|
804
805
|
return _regenerator.default.wrap(function _callee24$(_context24) {
|
|
805
806
|
while (1) switch (_context24.prev = _context24.next) {
|
|
806
807
|
case 0:
|
|
808
|
+
warnSpy.mockClear();
|
|
807
809
|
handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');
|
|
808
810
|
reg.setStatus(_types2.RegistrationStatus.IDLE);
|
|
809
811
|
|
|
@@ -820,9 +822,9 @@ describe('CallingClient Tests', function () {
|
|
|
820
822
|
/* Set mercury connection to be up and execute a delay of 2.5 seconds */
|
|
821
823
|
webex.internal.mercury.connected = true;
|
|
822
824
|
jest.advanceTimersByTime(_constants.NETWORK_FLAP_TIMEOUT + 500);
|
|
823
|
-
_context24.next =
|
|
825
|
+
_context24.next = 10;
|
|
824
826
|
return flushPromises();
|
|
825
|
-
case
|
|
827
|
+
case 10:
|
|
826
828
|
/* We should be detecting the network recovery */
|
|
827
829
|
expect(logSpy).not.toBeCalledWith('Mercury connection is up again, re-registering with Webex Calling if needed', {
|
|
828
830
|
file: _constants.REGISTRATION_FILE,
|
|
@@ -834,7 +836,7 @@ describe('CallingClient Tests', function () {
|
|
|
834
836
|
* will not trigger de-registration/registration
|
|
835
837
|
*/
|
|
836
838
|
expect(handleConnectionRestoreSpy).not.toBeCalledOnceWith();
|
|
837
|
-
case
|
|
839
|
+
case 12:
|
|
838
840
|
case "end":
|
|
839
841
|
return _context24.stop();
|
|
840
842
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_constants2","_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","global","crypto","randomUUID","jest","mock","originalModule","requireActual","uploadLogs","fn","mockImplementation","_promise","resolve","undefined","handleCallingClientErrors","spyOn","mockResolvedValue","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","logSpy","log","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","urlSpy","callingClient","wrap","_callee$","_context","prev","next","_hostCatalog","mockCatalogEU","window","url","URL","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledWith","toStrictEqual","mockEUServiceHosts","mockRestore","stop","_callee2","_callee2$","_context2","_serviceUrls","mobius","toHaveBeenCalledTimes","mockUSServiceHosts","afterEach","_callee4","_callee4$","_context4","_callee3","_callee3$","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_callee6$","_context6","indicator","domain","_callee5","_callee5$","_context5","serviceData","_callee7","_callee7$","_context7","t0","message","toEqual","assertions","_callee8","_callee8$","_context8","_callee10","_callee10$","_context10","_callee9","_callee9$","_context9","_callee11","_callee11$","_context11","CONTACT_CENTER","_callee13","_callee13$","_context13","_callee12","_callee12$","_context12","_callee14","_callee14$","_context14","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee15","_callee15$","_context15","request","mockResolvedValueOnce","ipPayload","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","getMockRequestTemplate","uri","concat","URL_ENDPOINT","IP_ENDPOINT","DISCOVERY_URL","myIP","addAuthHeader","headers","SPARK_USER_AGENT","regionBody","clientRegion","countryCode","_callee16","failurePayload","_callee16$","_context16","statusCode","mockRejectedValueOnce","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","_callee17","_callee17$","_context17","_callee18","infoSpy","_callee18$","_context18","mockReset","discovery","region","country","METHOD_START_MESSAGE","toBeCalledOnceWith","toHaveBeenCalled","mobiusCluster","checkCluster","_ref19","_callee19","mockServiceHosts","mockCatalog","_callee19$","_context19","_x","_x2","each","_ref20","_callee20","clusterName","_callee20$","_context20","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","reg","restoreSpy","deRegSpy","restartRegisterSpy","registerSpy","beforeEach","_callee21","_callee21$","_context21","useFakeTimers","registrationPayload","_values","lineDict","registration","register","_callee22","_callee22$","_context22","getStatus","RegistrationStatus","ACTIVE","mercury","connected","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","NETWORK_CHANGE_DETECTION_UTIL","info","REGISTRATION_FILE","getActiveMobiusUrl","_callee23","mockRegistrationBody","successPayload","_callee23$","_context23","body","getMockDeviceInfo","_callee24","handleConnectionRestoreSpy","_callee24$","_context24","setStatus","IDLE","_callee25","_callee25$","_context25","createCall","_keys","getActiveCalls","toBe","_callee26","_callee26$","_context26","getLines","mutex","Mutex","userId","device","clientDeviceUri","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","primary","backupMobiusUris","backup","beforeAll","_callee27","calls","_callee27$","_context27","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","state","value","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockReturnValue","mockDeviceId","lineId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","on","_callee28","_callee28$","_context28","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMockDeviceInfo,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {CallType, RegistrationStatus, ServiceIndicator, WebexRequestPayload} from '../common/types';\n/* eslint-disable dot-notation */\nimport {CALLING_CLIENT_EVENT_KEYS, CallSessionEvent, MOBIUS_EVENT_KEYS} from '../Events/types';\nimport log from '../Logger';\nimport {createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n IP_ENDPOINT,\n NETWORK_CHANGE_DETECTION_UTIL,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n ipPayload,\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n myIP,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport {filterMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.mock('../common/Utils', () => {\n const originalModule = jest.requireActual('../common/Utils');\n\n return {\n ...originalModule,\n uploadLogs: jest.fn().mockImplementation(() => Promise.resolve(undefined)),\n handleCallingClientErrors: jest.fn(),\n };\n});\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const logSpy = jest.spyOn(log, 'info');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n const urlSpy = jest.spyOn(window, 'URL').mockImplementation((url) => new window.URL(url));\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(urlSpy).toHaveBeenCalledWith(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n\n urlSpy.mockRestore();\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter', but an empty string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify empty invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify valid service domain', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(3);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}${IP_ENDPOINT}`,\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n uri: `${DISCOVERY_URL}/${myIP}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(3, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('case when region discovery fails', async () => {\n const failurePayload = {\n statusCode: 500,\n };\n\n webex.request.mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).nthCalledWith(1, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-us-east-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(2, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-ca-central-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(3, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(4, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-ap-southeast-2.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n ''\n );\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails', async () => {\n const failurePayload = {\n statusCode: 500,\n };\n\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(3);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}${IP_ENDPOINT}`,\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n uri: `${DISCOVERY_URL}/${myIP}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n ''\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n const infoSpy = jest.spyOn(log, 'info');\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Network activity detection tests', () => {\n let callingClient;\n let line;\n let reg;\n let restoreSpy;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let deRegSpy;\n let restartRegisterSpy;\n let registerSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(line.registration, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('detect a network flap in mercury connection', async () => {\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n /* We should be detecting the network flap */\n expect(warnSpy).toBeCalledOnceWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: NETWORK_CHANGE_DETECTION_UTIL}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n\n logSpy.mockReset();\n\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n log.info('Mercury connection is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n });\n\n /* We should be detecting the network recovery */\n expect(logSpy).toHaveBeenCalledWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(webex.request).toHaveBeenCalledTimes(6);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n });\n\n it('Simulate a network flap with no active calls and re-verify registration: Restore Failure', async () => {\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: '',\n });\n\n const mockRegistrationBody = getMockDeviceInfo();\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockRegistrationBody,\n });\n\n webex.request.mockRejectedValueOnce(failurePayload).mockResolvedValueOnce(successPayload);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n /* We should be detecting the network flap */\n expect(warnSpy).toBeCalledWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: NETWORK_CHANGE_DETECTION_UTIL}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n\n logSpy.mockReset();\n\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n log.info('Mercury connection is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n });\n\n /* We should be detecting the network recovery */\n expect(logSpy).toBeCalledWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(webex.request).toHaveBeenCalledTimes(6);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n });\n\n it('Simulate a network flap before initial registration is done', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n reg.setStatus(RegistrationStatus.IDLE);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n /* We should be detecting the network flap */\n expect(warnSpy).toBeCalledOnceWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: NETWORK_CHANGE_DETECTION_UTIL}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n /* We should be detecting the network recovery */\n expect(logSpy).not.toBeCalledWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n\n /*\n * When initial registration is not done, network flap\n * will not trigger de-registration/registration\n */\n expect(handleConnectionRestoreSpy).not.toBeCalledOnceWith();\n });\n\n it('Simulate a network flap with 1 active call', async () => {\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n await flushPromises();\n\n /* We should be detecting the network flap */\n expect(warnSpy).not.toBeCalledOnceWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: 'handleConnectionRestoration'}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n /* We should be detecting the network recovery */\n expect(logSpy).not.toBeCalledOnceWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {file: REGISTRATION_FILE, method: 'handleConnectionRestoration'}\n );\n\n expect(registerSpy).not.toBeCalledWith(true);\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_constants2","_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","global","crypto","randomUUID","jest","mock","originalModule","requireActual","uploadLogs","fn","mockImplementation","_promise","resolve","undefined","handleCallingClientErrors","spyOn","mockResolvedValue","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","logSpy","log","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","urlSpy","callingClient","wrap","_callee$","_context","prev","next","_hostCatalog","mockCatalogEU","window","url","URL","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledWith","toStrictEqual","mockEUServiceHosts","mockRestore","stop","_callee2","_callee2$","_context2","_serviceUrls","mobius","toHaveBeenCalledTimes","mockUSServiceHosts","afterEach","_callee4","_callee4$","_context4","_callee3","_callee3$","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_callee6$","_context6","indicator","domain","_callee5","_callee5$","_context5","serviceData","_callee7","_callee7$","_context7","t0","message","toEqual","assertions","_callee8","_callee8$","_context8","_callee10","_callee10$","_context10","_callee9","_callee9$","_context9","_callee11","_callee11$","_context11","CONTACT_CENTER","_callee13","_callee13$","_context13","_callee12","_callee12$","_context12","_callee14","_callee14$","_context14","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee15","_callee15$","_context15","request","mockResolvedValueOnce","ipPayload","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","getMockRequestTemplate","uri","concat","URL_ENDPOINT","IP_ENDPOINT","DISCOVERY_URL","myIP","addAuthHeader","headers","SPARK_USER_AGENT","regionBody","clientRegion","countryCode","_callee16","failurePayload","_callee16$","_context16","statusCode","mockRejectedValueOnce","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","_callee17","_callee17$","_context17","_callee18","infoSpy","_callee18$","_context18","mockReset","discovery","region","country","METHOD_START_MESSAGE","toBeCalledOnceWith","toHaveBeenCalled","mobiusCluster","checkCluster","_ref19","_callee19","mockServiceHosts","mockCatalog","_callee19$","_context19","_x","_x2","each","_ref20","_callee20","clusterName","_callee20$","_context20","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","reg","restoreSpy","deRegSpy","restartRegisterSpy","registerSpy","beforeEach","_callee21","_callee21$","_context21","useFakeTimers","registrationPayload","_values","lineDict","registration","register","_callee22","_callee22$","_context22","mockClear","getStatus","RegistrationStatus","ACTIVE","mercury","connected","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","NETWORK_CHANGE_DETECTION_UTIL","info","REGISTRATION_FILE","getActiveMobiusUrl","_callee23","mockRegistrationBody","successPayload","_callee23$","_context23","body","getMockDeviceInfo","_callee24","handleConnectionRestoreSpy","_callee24$","_context24","setStatus","IDLE","_callee25","_callee25$","_context25","createCall","_keys","getActiveCalls","toBe","_callee26","_callee26$","_context26","getLines","mutex","Mutex","userId","device","clientDeviceUri","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","primary","backupMobiusUris","backup","beforeAll","_callee27","calls","_callee27$","_context27","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","state","value","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockReturnValue","mockDeviceId","lineId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","on","_callee28","_callee28$","_context28","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMockDeviceInfo,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {CallType, RegistrationStatus, ServiceIndicator, WebexRequestPayload} from '../common/types';\n/* eslint-disable dot-notation */\nimport {CALLING_CLIENT_EVENT_KEYS, CallSessionEvent, MOBIUS_EVENT_KEYS} from '../Events/types';\nimport log from '../Logger';\nimport {createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n IP_ENDPOINT,\n NETWORK_CHANGE_DETECTION_UTIL,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n ipPayload,\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n myIP,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport {filterMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.mock('../common/Utils', () => {\n const originalModule = jest.requireActual('../common/Utils');\n\n return {\n ...originalModule,\n uploadLogs: jest.fn().mockImplementation(() => Promise.resolve(undefined)),\n handleCallingClientErrors: jest.fn(),\n };\n});\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const logSpy = jest.spyOn(log, 'info');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n const urlSpy = jest.spyOn(window, 'URL').mockImplementation((url) => new window.URL(url));\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(urlSpy).toHaveBeenCalledWith(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n\n urlSpy.mockRestore();\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter', but an empty string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify empty invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'contactcenter' must carry a non-empty valid domain type string.\n */\n it('ContactCenter: verify valid service domain', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(3);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}${IP_ENDPOINT}`,\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n uri: `${DISCOVERY_URL}/${myIP}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(3, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('case when region discovery fails', async () => {\n const failurePayload = {\n statusCode: 500,\n };\n\n webex.request.mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).nthCalledWith(1, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-us-east-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(2, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-ca-central-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(3, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(webex.request).nthCalledWith(4, {\n ...getMockRequestTemplate(),\n uri: 'https://mobius-ap-southeast-2.prod.infra.webex.com/api/v1/calling/web/myip',\n method: 'GET',\n });\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n ''\n );\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails', async () => {\n const failurePayload = {\n statusCode: 500,\n };\n\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(3);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}${IP_ENDPOINT}`,\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n uri: `${DISCOVERY_URL}/${myIP}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n ''\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n const infoSpy = jest.spyOn(log, 'info');\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Network activity detection tests', () => {\n let callingClient;\n let line;\n let reg;\n let restoreSpy;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let deRegSpy;\n let restartRegisterSpy;\n let registerSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n\n webex.request\n .mockResolvedValueOnce(ipPayload)\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(line.registration, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('detect a network flap in mercury connection', async () => {\n warnSpy.mockClear();\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n /* We should be detecting the network flap */\n expect(warnSpy).toBeCalledOnceWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: NETWORK_CHANGE_DETECTION_UTIL}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n\n logSpy.mockReset();\n\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n log.info('Mercury connection is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n });\n\n /* We should be detecting the network recovery */\n expect(logSpy).toHaveBeenCalledWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(webex.request).toHaveBeenCalledTimes(6);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n });\n\n it('Simulate a network flap with no active calls and re-verify registration: Restore Failure', async () => {\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n const failurePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 500,\n body: '',\n });\n\n const mockRegistrationBody = getMockDeviceInfo();\n const successPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockRegistrationBody,\n });\n\n webex.request.mockRejectedValueOnce(failurePayload).mockResolvedValueOnce(successPayload);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n /* We should be detecting the network flap */\n expect(warnSpy).toBeCalledWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: NETWORK_CHANGE_DETECTION_UTIL}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n\n logSpy.mockReset();\n\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n log.info('Mercury connection is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n });\n\n /* We should be detecting the network recovery */\n expect(logSpy).toBeCalledWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(webex.request).toHaveBeenCalledTimes(6);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n });\n\n it('Simulate a network flap before initial registration is done', async () => {\n warnSpy.mockClear();\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n reg.setStatus(RegistrationStatus.IDLE);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n /* We should be detecting the network flap */\n expect(warnSpy).toBeCalledOnceWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: NETWORK_CHANGE_DETECTION_UTIL}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n /* We should be detecting the network recovery */\n expect(logSpy).not.toBeCalledWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n\n /*\n * When initial registration is not done, network flap\n * will not trigger de-registration/registration\n */\n expect(handleConnectionRestoreSpy).not.toBeCalledOnceWith();\n });\n\n it('Simulate a network flap with 1 active call', async () => {\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n /** create a new call */\n reg.callManager.createCall();\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(1);\n\n /* Set mercury connection to be down and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = false;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n await flushPromises();\n\n /* We should be detecting the network flap */\n expect(warnSpy).not.toBeCalledOnceWith(\n 'Network has flapped, waiting for mercury connection to be up',\n {file: CALLING_CLIENT_FILE, method: 'handleConnectionRestoration'}\n );\n\n /* Set mercury connection to be up and execute a delay of 2.5 seconds */\n webex.internal.mercury.connected = true;\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\n\n /* We should be detecting the network recovery */\n expect(logSpy).not.toBeCalledOnceWith(\n 'Mercury connection is up again, re-registering with Webex Calling if needed',\n {file: REGISTRATION_FILE, method: 'handleConnectionRestoration'}\n );\n\n expect(registerSpy).not.toBeCalledWith(true);\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n});\n"],"mappings":"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"}
|
|
@@ -54,6 +54,8 @@ describe('Line Tests', function () {
|
|
|
54
54
|
guestName: 'testUser'
|
|
55
55
|
};
|
|
56
56
|
var handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');
|
|
57
|
+
// Simulate node fetch by adding the mock webex.request
|
|
58
|
+
global.fetch = webex.request;
|
|
57
59
|
jest.clearAllMocks();
|
|
58
60
|
describe('Line Registration tests', function () {
|
|
59
61
|
var line;
|
|
@@ -103,12 +105,8 @@ describe('Line Tests', function () {
|
|
|
103
105
|
_context.next = 16;
|
|
104
106
|
return _promise.default.resolve();
|
|
105
107
|
case 16:
|
|
106
|
-
expect(webex.request).toBeCalledOnceWith(_objectSpread(_objectSpread({}, (0, _testUtil.getMockRequestTemplate)()), {}, {
|
|
107
|
-
uri: "".concat(mockRegistrationBody.device.uri, "/status"),
|
|
108
|
-
method: 'POST'
|
|
109
|
-
}));
|
|
110
108
|
jest.useRealTimers();
|
|
111
|
-
case
|
|
109
|
+
case 17:
|
|
112
110
|
case "end":
|
|
113
111
|
return _context.stop();
|
|
114
112
|
}
|
|
@@ -149,12 +147,8 @@ describe('Line Tests', function () {
|
|
|
149
147
|
_context2.next = 18;
|
|
150
148
|
return _promise.default.resolve();
|
|
151
149
|
case 18:
|
|
152
|
-
expect(webex.request).toBeCalledOnceWith(_objectSpread(_objectSpread({}, (0, _testUtil.getMockRequestTemplate)()), {}, {
|
|
153
|
-
uri: "".concat(mockRegistrationBody.device.uri, "/status"),
|
|
154
|
-
method: 'POST'
|
|
155
|
-
}));
|
|
156
150
|
jest.useRealTimers();
|
|
157
|
-
case
|
|
151
|
+
case 19:
|
|
158
152
|
case "end":
|
|
159
153
|
return _context2.stop();
|
|
160
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_asyncMutex","require","_testUtil","_registerFixtures","_common","_types","_types2","_","_interopRequireDefault","utils","_interopRequireWildcard","_SDKConnector","_constants","_types3","regUtils","_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$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","mutex","Mutex","webex","getTestUtilsWebex","SDKConnector","setWebex","defaultServiceData","indicator","ServiceIndicator","CALLING","domain","createRegistrationSpy","jest","spyOn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primaryMobiusUris","fn","primary","backupMobiusUris","backup","userId","internal","device","clientDeviceUri","url","mockJwe","guestServiceData","GUEST_CALLING","guestName","handleErrorSpy","clearAllMocks","line","mockRegistrationBody","getMockDeviceInfo","discoveryBody","primaryUrl","concat","uris","registrationPayload","statusCode","body","beforeEach","Line","LOGGER","INFO","afterEach","clearAllTimers","useRealTimers","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","useFakeTimers","request","mockReturnValue","expect","toBeCalledOnceWith","any","anything","undefined","getStatus","toEqual","RegistrationStatus","IDLE","register","getMockRequestTemplate","serviceData","uri","method","not","toBeCalled","ACTIVE","getActiveMobiusUrl","getLoggingLevel","getDeviceId","deviceId","mockClear","advanceTimersByTime","_promise","resolve","stop","_callee2","guestLine","_callee2$","_context2","jwe","_callee3","_callee3$","_context3","LINE_EVENTS","ERROR","mockRejectedValue","on","error","message","toBe","waitForMsecs","INACTIVE","file","REGISTRATION_FILE","_callee4","_callee4$","_context4","mockReturnValueOnce","deregister","createCallSpy","callManager","makeCall","address","type","CallType","URI","CallDirection","OUTBOUND","lineId","toBeTruthy","getCall","getCorrelationId","direction","toStrictEqual","end","destination","done","toBeUndefined","assertions","toBeCalledWith","String"],"sources":["line.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport {\n getMobiusDiscoveryResponse,\n getMockDeviceInfo,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {URL} from '../registration/registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {\n CallDirection,\n CallType,\n MobiusServers,\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {LINE_EVENTS} from './types';\nimport Line from '.';\nimport * as utils from '../../common/Utils';\nimport SDKConnector from '../../SDKConnector';\nimport {REGISTRATION_FILE} from '../constants';\nimport {LOGGER} from '../../Logger/types';\nimport * as regUtils from '../registration/register';\n\ndescribe('Line Tests', () => {\n const mutex = new Mutex();\n const webex = getTestUtilsWebex();\n SDKConnector.setWebex(webex);\n\n const defaultServiceData = {indicator: ServiceIndicator.CALLING, domain: ''};\n const createRegistrationSpy = jest.spyOn(regUtils, 'createRegistration');\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mockJwe = 'mockJwe';\n const guestServiceData = {\n indicator: ServiceIndicator.GUEST_CALLING,\n domain: '',\n guestName: 'testUser',\n };\n\n const handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\n\n jest.clearAllMocks();\n\n describe('Line Registration tests', () => {\n let line;\n const mockRegistrationBody = getMockDeviceInfo();\n\n const discoveryBody: MobiusServers = getMobiusDiscoveryResponse();\n const primaryUrl = `${discoveryBody.primary.uris[0]}/calling/web/`;\n\n const registrationPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockRegistrationBody,\n });\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n\n it('verify successful Registration cases and keepalive', async () => {\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n defaultServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n undefined\n );\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: defaultServiceData,\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(line.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(line.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(line.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${mockRegistrationBody.device.uri}/status`,\n method: 'POST',\n });\n jest.useRealTimers();\n });\n\n it('verify successful Registration cases and keepalive for a guest user', async () => {\n createRegistrationSpy.mockClear();\n const guestLine = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n guestServiceData,\n mockJwe\n );\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n guestServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n mockJwe\n );\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.IDLE);\n await guestLine.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: {...guestServiceData, jwe: mockJwe},\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(guestLine.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(guestLine.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(guestLine.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${mockRegistrationBody.device.uri}/status`,\n method: 'POST',\n });\n jest.useRealTimers();\n });\n\n it('verify failure Registration cases all requests fail ', async () => {\n line.removeAllListeners(LINE_EVENTS.ERROR);\n\n webex.request.mockRejectedValue({\n statusCode: 401,\n });\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.'\n );\n });\n\n expect(line.getStatus()).toBe(RegistrationStatus.IDLE);\n line.register();\n await utils.waitForMsecs(20);\n\n expect(line.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(handleErrorSpy).toBeCalledOnceWith(\n expect.anything(),\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n },\n expect.anything(),\n expect.anything()\n );\n });\n\n it('verify successful de-registration cases', async () => {\n webex.request.mockReturnValueOnce(registrationPayload);\n\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n await line.deregister();\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n });\n });\n\n describe('Line calling tests', () => {\n let line;\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n it('Return a successful call object while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '5003', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:5003',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(line.getCall(call ? call.getCorrelationId() : '')).toBe(call);\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Return a successful call object while making call to FAC codes', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '*25', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:*25',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Remove spaces from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '+91 123 456 7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:+911234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:+911234567890');\n call?.end();\n });\n\n it('Remove hyphen from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '123-456-7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:1234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:1234567890');\n call?.end();\n });\n\n it('attempt to create call with incorrect number format 1', (done) => {\n // There may be other listeners , which may create race\n line.removeAllListeners(LINE_EVENTS.ERROR);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n try {\n const call = line.makeCall({address: 'select#$@^^', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with incorrect number format 2', (done) => {\n expect.assertions(4);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n\n try {\n const call = line.makeCall({address: '+1@8883332505', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with guest calling service indicator', () => {\n expect.assertions(2);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n // Mocking the serviceData to have GUEST_CALLING indicator\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n {indicator: ServiceIndicator.GUEST_CALLING}\n );\n const call = line.makeCall();\n\n expect(call).toBeTruthy();\n expect(createCallSpy).toBeCalledWith(CallDirection.OUTBOUND, undefined, expect.any(String));\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_asyncMutex","require","_testUtil","_registerFixtures","_common","_types","_types2","_","_interopRequireDefault","utils","_interopRequireWildcard","_SDKConnector","_constants","_types3","regUtils","_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$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","mutex","Mutex","webex","getTestUtilsWebex","SDKConnector","setWebex","defaultServiceData","indicator","ServiceIndicator","CALLING","domain","createRegistrationSpy","jest","spyOn","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primaryMobiusUris","fn","primary","backupMobiusUris","backup","userId","internal","device","clientDeviceUri","url","mockJwe","guestServiceData","GUEST_CALLING","guestName","handleErrorSpy","global","fetch","request","clearAllMocks","line","mockRegistrationBody","getMockDeviceInfo","discoveryBody","primaryUrl","concat","uris","registrationPayload","statusCode","body","beforeEach","Line","LOGGER","INFO","afterEach","clearAllTimers","useRealTimers","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","useFakeTimers","mockReturnValue","expect","toBeCalledOnceWith","any","anything","undefined","getStatus","toEqual","RegistrationStatus","IDLE","register","getMockRequestTemplate","serviceData","uri","method","not","toBeCalled","ACTIVE","getActiveMobiusUrl","getLoggingLevel","getDeviceId","deviceId","mockClear","advanceTimersByTime","_promise","resolve","stop","_callee2","guestLine","_callee2$","_context2","jwe","_callee3","_callee3$","_context3","LINE_EVENTS","ERROR","mockRejectedValue","on","error","message","toBe","waitForMsecs","INACTIVE","file","REGISTRATION_FILE","_callee4","_callee4$","_context4","mockReturnValueOnce","deregister","createCallSpy","callManager","makeCall","address","type","CallType","URI","CallDirection","OUTBOUND","lineId","toBeTruthy","getCall","getCorrelationId","direction","toStrictEqual","end","destination","done","toBeUndefined","assertions","toBeCalledWith","String"],"sources":["line.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport {\n getMobiusDiscoveryResponse,\n getMockDeviceInfo,\n getMockRequestTemplate,\n getTestUtilsWebex,\n} from '../../common/testUtil';\nimport {URL} from '../registration/registerFixtures';\nimport {filterMobiusUris} from '../../common';\nimport {\n CallDirection,\n CallType,\n MobiusServers,\n RegistrationStatus,\n ServiceIndicator,\n WebexRequestPayload,\n} from '../../common/types';\nimport {LINE_EVENTS} from './types';\nimport Line from '.';\nimport * as utils from '../../common/Utils';\nimport SDKConnector from '../../SDKConnector';\nimport {REGISTRATION_FILE} from '../constants';\nimport {LOGGER} from '../../Logger/types';\nimport * as regUtils from '../registration/register';\n\ndescribe('Line Tests', () => {\n const mutex = new Mutex();\n const webex = getTestUtilsWebex();\n SDKConnector.setWebex(webex);\n\n const defaultServiceData = {indicator: ServiceIndicator.CALLING, domain: ''};\n const createRegistrationSpy = jest.spyOn(regUtils, 'createRegistration');\n\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mockJwe = 'mockJwe';\n const guestServiceData = {\n indicator: ServiceIndicator.GUEST_CALLING,\n domain: '',\n guestName: 'testUser',\n };\n\n const handleErrorSpy = jest.spyOn(utils, 'handleRegistrationErrors');\n // Simulate node fetch by adding the mock webex.request\n global.fetch = webex.request;\n\n jest.clearAllMocks();\n\n describe('Line Registration tests', () => {\n let line;\n const mockRegistrationBody = getMockDeviceInfo();\n\n const discoveryBody: MobiusServers = getMobiusDiscoveryResponse();\n const primaryUrl = `${discoveryBody.primary.uris[0]}/calling/web/`;\n\n const registrationPayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: mockRegistrationBody,\n });\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n\n it('verify successful Registration cases and keepalive', async () => {\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n defaultServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n undefined\n );\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: defaultServiceData,\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(line.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(line.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(line.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n jest.useRealTimers();\n });\n\n it('verify successful Registration cases and keepalive for a guest user', async () => {\n createRegistrationSpy.mockClear();\n const guestLine = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n guestServiceData,\n mockJwe\n );\n jest.useFakeTimers();\n webex.request.mockReturnValue(registrationPayload);\n\n expect(createRegistrationSpy).toBeCalledOnceWith(\n webex,\n guestServiceData,\n expect.any(Mutex),\n expect.anything(),\n LOGGER.INFO,\n mockJwe\n );\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.IDLE);\n await guestLine.register();\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n body: {\n userId,\n clientDeviceUri,\n serviceData: {...guestServiceData, jwe: mockJwe},\n },\n uri: `${primaryUrl}device`,\n method: 'POST',\n });\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(guestLine.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n expect(guestLine.getActiveMobiusUrl()).toEqual(primaryUrl);\n expect(guestLine.getLoggingLevel()).toEqual(LOGGER.INFO);\n expect(guestLine.getDeviceId()).toEqual(mockRegistrationBody.device.deviceId);\n\n webex.request.mockClear();\n\n jest.advanceTimersByTime(30 * 1000);\n await Promise.resolve();\n\n jest.useRealTimers();\n });\n\n it('verify failure Registration cases all requests fail ', async () => {\n line.removeAllListeners(LINE_EVENTS.ERROR);\n\n webex.request.mockRejectedValue({\n statusCode: 401,\n });\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'User is unauthorized due to an expired token. Sign out, then sign back in.'\n );\n });\n\n expect(line.getStatus()).toBe(RegistrationStatus.IDLE);\n line.register();\n await utils.waitForMsecs(20);\n\n expect(line.getStatus()).toBe(RegistrationStatus.INACTIVE);\n expect(handleErrorSpy).toBeCalledOnceWith(\n expect.anything(),\n expect.anything(),\n {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n },\n expect.anything(),\n expect.anything()\n );\n });\n\n it('verify successful de-registration cases', async () => {\n webex.request.mockReturnValueOnce(registrationPayload);\n\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n await line.register();\n expect(line.getStatus()).toEqual(RegistrationStatus.ACTIVE);\n\n await line.deregister();\n expect(line.getStatus()).toEqual(RegistrationStatus.IDLE);\n });\n });\n\n describe('Line calling tests', () => {\n let line;\n\n beforeEach(() => {\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n jest.useRealTimers();\n line.removeAllListeners();\n });\n it('Return a successful call object while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '5003', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:5003',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(line.getCall(call ? call.getCorrelationId() : '')).toBe(call);\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Return a successful call object while making call to FAC codes', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '*25', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:*25',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n call?.end();\n });\n\n it('Remove spaces from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '+91 123 456 7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:+911234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:+911234567890');\n call?.end();\n });\n\n it('Remove hyphen from dialled number while making call', () => {\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n const call = line.makeCall({address: '123-456-7890', type: CallType.URI});\n\n expect(createCallSpy).toBeCalledOnceWith(CallDirection.OUTBOUND, undefined, line.lineId, {\n address: 'tel:1234567890',\n type: 'uri',\n });\n expect(call).toBeTruthy();\n expect(call ? call.direction : undefined).toStrictEqual(CallDirection.OUTBOUND);\n expect(call ? call.destination.address : undefined).toStrictEqual('tel:1234567890');\n call?.end();\n });\n\n it('attempt to create call with incorrect number format 1', (done) => {\n // There may be other listeners , which may create race\n line.removeAllListeners(LINE_EVENTS.ERROR);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n try {\n const call = line.makeCall({address: 'select#$@^^', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with incorrect number format 2', (done) => {\n expect.assertions(4);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n line.on(LINE_EVENTS.ERROR, (error) => {\n expect(error.message).toBe(\n 'An invalid phone number was detected. Check the number and try again.'\n );\n done();\n });\n\n try {\n const call = line.makeCall({address: '+1@8883332505', type: CallType.URI});\n\n expect(call).toBeUndefined();\n expect(createCallSpy).not.toBeCalledOnceWith({});\n } catch (error) {\n done(error);\n }\n });\n\n it('attempt to create call with guest calling service indicator', () => {\n expect.assertions(2);\n const createCallSpy = jest.spyOn(line.callManager, 'createCall');\n\n // Mocking the serviceData to have GUEST_CALLING indicator\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO,\n {indicator: ServiceIndicator.GUEST_CALLING}\n );\n const call = line.makeCall();\n\n expect(call).toBeTruthy();\n expect(createCallSpy).toBeCalledWith(CallDirection.OUTBOUND, undefined, expect.any(String));\n });\n });\n});\n"],"mappings":"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"}
|