@webex/calling 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -346,7 +346,7 @@ describe('CallingClient Tests', function () {
346
346
 
347
347
  /**
348
348
  * Input sdk config to callingClient with serviceData carrying valid value for indicator
349
- * 'contactcenter', and a valid domain type string for domain field in it.
349
+ * 'contactcenter' , and a valid domain type string for domain field in it.
350
350
  *
351
351
  * Execution should proceed properly and createRegistration should be called with same serviceData.
352
352
  *
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncMutex","require","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","_interopRequireWildcard","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_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","describe","handleErrorSpy","jest","spyOn","webex","getTestUtilsWebex","internal","services","mockCatalogUS","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","logSpy","log","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","urlSpy","callingClient","wrap","_callee$","_context","prev","next","_hostCatalog","mockCatalogEU","window","mockImplementation","url","URL","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledWith","toStrictEqual","mockEUServiceHosts","mockRestore","stop","_callee2","_callee2$","_context2","_serviceUrls","mobius","mockUSServiceHosts","afterEach","undefined","_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","discovery","region","country","toBeCalledOnceWith","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","REGISTRATION_FILE","getActiveMobiusUrl","lastCalledWith","_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","fn","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","mock","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\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';\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\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\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 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).toBeCalledWith('Updating region and country from the SDK config', {\n file: 'CallingClient',\n method: 'getMobiusServers',\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 expect(handleErrorSpy).not.toBeCalled();\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 jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\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).toBeCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toBeCalledWith('handleConnectionRestoration');\n expect(webex.request).toBeCalledTimes(6);\n expect(registerSpy).toBeCalledWith('handleConnectionRestoration', [reg.getActiveMobiusUrl()]);\n expect(registerSpy).lastCalledWith('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 jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\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).toBeCalledOnceWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toBeCalledOnceWith('handleConnectionRestoration');\n expect(webex.request).toBeCalledTimes(6);\n expect(registerSpy).toBeCalledWith('handleConnectionRestoration', [reg.getActiveMobiusUrl()]);\n expect(registerSpy).lastCalledWith('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","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","_interopRequireWildcard","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_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","describe","handleErrorSpy","jest","spyOn","webex","getTestUtilsWebex","internal","services","mockCatalogUS","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","logSpy","log","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","urlSpy","callingClient","wrap","_callee$","_context","prev","next","_hostCatalog","mockCatalogEU","window","mockImplementation","url","URL","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledWith","toStrictEqual","mockEUServiceHosts","mockRestore","stop","_callee2","_callee2$","_context2","_serviceUrls","mobius","mockUSServiceHosts","afterEach","undefined","_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","discovery","region","country","toBeCalledOnceWith","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","REGISTRATION_FILE","getActiveMobiusUrl","lastCalledWith","_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","fn","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","mock","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\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';\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\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\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 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).toBeCalledWith('Updating region and country from the SDK config', {\n file: 'CallingClient',\n method: 'getMobiusServers',\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 expect(handleErrorSpy).not.toBeCalled();\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 jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\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).toBeCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toBeCalledWith('handleConnectionRestoration');\n expect(webex.request).toBeCalledTimes(6);\n expect(registerSpy).toBeCalledWith('handleConnectionRestoration', [reg.getActiveMobiusUrl()]);\n expect(registerSpy).lastCalledWith('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 jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 500);\n\n await flushPromises();\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).toBeCalledOnceWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toBeCalledOnceWith('handleConnectionRestoration');\n expect(webex.request).toBeCalledTimes(6);\n expect(registerSpy).toBeCalledWith('handleConnectionRestoration', [reg.getActiveMobiusUrl()]);\n expect(registerSpy).lastCalledWith('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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"}
@@ -478,7 +478,8 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
478
478
  throw new Error("".concat(response));
479
479
  case 10:
480
480
  contacts = responseBody.contacts, groups = responseBody.groups;
481
- contacts.map( /*#__PURE__*/function () {
481
+ _context11.next = 13;
482
+ return _promise.default.all(contacts.map( /*#__PURE__*/function () {
482
483
  var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(contact) {
483
484
  var decryptedContact;
484
485
  return _regenerator.default.wrap(function _callee9$(_context9) {
@@ -508,20 +509,19 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
508
509
  return function (_x11) {
509
510
  return _ref13.apply(this, arguments);
510
511
  };
511
- }());
512
-
513
- // Resolve cloud contacts
512
+ }()));
513
+ case 13:
514
514
  if (!(0, _keys.default)(cloudContactsMap).length) {
515
- _context11.next = 20;
515
+ _context11.next = 21;
516
516
  break;
517
517
  }
518
518
  contactIdList = (0, _keys.default)(cloudContactsMap);
519
519
  query = contactIdList.map(function (item) {
520
520
  return "".concat(_constants2.SCIM_ID_FILTER, " \"").concat(item, "\"");
521
521
  }).join(_constants2.OR);
522
- _context11.next = 17;
522
+ _context11.next = 18;
523
523
  return (0, _Utils.scimQuery)(query);
524
- case 17:
524
+ case 18:
525
525
  result = _context11.sent;
526
526
  resolvedContacts = this.resolveCloudContacts(cloudContactsMap, result.body);
527
527
  if (resolvedContacts) {
@@ -529,8 +529,8 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
529
529
  return contactList.push(item);
530
530
  });
531
531
  }
532
- case 20:
533
- _context11.next = 22;
532
+ case 21:
533
+ _context11.next = 23;
534
534
  return _promise.default.all(groups.map( /*#__PURE__*/function () {
535
535
  var _ref14 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(group, idx) {
536
536
  return _regenerator.default.wrap(function _callee10$(_context10) {
@@ -550,7 +550,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
550
550
  return _ref14.apply(this, arguments);
551
551
  };
552
552
  }()));
553
- case 22:
553
+ case 23:
554
554
  this.groups = groups;
555
555
  this.contacts = contactList;
556
556
  contactResponse = {
@@ -562,17 +562,17 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
562
562
  message: _constants.SUCCESS_MESSAGE
563
563
  };
564
564
  return _context11.abrupt("return", contactResponse);
565
- case 28:
566
- _context11.prev = 28;
565
+ case 29:
566
+ _context11.prev = 29;
567
567
  _context11.t0 = _context11["catch"](3);
568
568
  errorInfo = _context11.t0;
569
569
  errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
570
570
  return _context11.abrupt("return", errorStatus);
571
- case 33:
571
+ case 34:
572
572
  case "end":
573
573
  return _context11.stop();
574
574
  }
575
- }, _callee11, this, [[3, 28]]);
575
+ }, _callee11, this, [[3, 29]]);
576
576
  }));
577
577
  function getContacts() {
578
578
  return _getContacts.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_FILE","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","internal","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref10","_callee6$","_context6","_x10","_x9","_ref11","_ref12","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee11","_this5","contactList","cloudContactsMap","response","responseBody","contactIdList","query","result","resolvedContacts","contactResponse","errorInfo","errorStatus","_callee11$","_context11","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","body","Error","_ref13","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x11","_keys","SCIM_ID_FILTER","join","OR","scimQuery","_ref14","_callee10","group","idx","_callee10$","_context10","_x12","_x13","statusCode","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","serviceErrorCodeHandler","getContacts","_createNewEncryptionKeyUrl","_callee12","unboundedKeyUri","unboundedKeys","_callee12$","_context12","createNewEncryptionKeyUrl","info","kms","createUnboundKeys","count","createResource","keyUris","_fetchEncryptionKeyUrl","_callee13","_response$data$group","_response$data$group2","_callee13$","_context13","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee14","i","_callee14$","_context14","fetchDefaultGroup","_createContactGroup","_callee15","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_this$groups","_callee15$","_context15","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x14","_x15","_x16","_deleteContactGroup","_callee16","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee16$","_context16","deleteContactGroup","DELETE","findIndex","splice","_x17","_createContact","_callee17","contactInfo","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee17$","_context17","createContact","_x18","_deleteContact","_callee18","_this$contacts3","contactToDelete","_this$contacts4","_callee18$","_context18","deleteContact","_x19","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_FILE);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'getContacts',\n };\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n });\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const query = contactIdList.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n const resolvedContacts = this.resolveCloudContacts(\n cloudContactsMap,\n result.body as SCIMListResponse\n );\n if (resolvedContacts) {\n resolvedContacts.map((item) => contactList.push(item));\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createNewEncryptionKeyUrl.name,\n };\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.info(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n if (this.defaultGroupId) {\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.info('No default group found.', {\n file: CONTACTS_FILE,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n return group.groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContactGroup.name,\n };\n\n log.info(`Creating contact group ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Unable to create contact group.', loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContactGroup.name,\n };\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact group ${groupId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n };\n\n log.info(`Request to create contact: contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Failed to create contact.', {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n });\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContact.name,\n };\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact ${contactId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_FILE","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","internal","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref10","_callee6$","_context6","_x10","_x9","_ref11","_ref12","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee11","_this5","contactList","cloudContactsMap","response","responseBody","contactIdList","query","result","resolvedContacts","contactResponse","errorInfo","errorStatus","_callee11$","_context11","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","body","Error","_ref13","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x11","_keys","SCIM_ID_FILTER","join","OR","scimQuery","_ref14","_callee10","group","idx","_callee10$","_context10","_x12","_x13","statusCode","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","serviceErrorCodeHandler","getContacts","_createNewEncryptionKeyUrl","_callee12","unboundedKeyUri","unboundedKeys","_callee12$","_context12","createNewEncryptionKeyUrl","info","kms","createUnboundKeys","count","createResource","keyUris","_fetchEncryptionKeyUrl","_callee13","_response$data$group","_response$data$group2","_callee13$","_context13","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee14","i","_callee14$","_context14","fetchDefaultGroup","_createContactGroup","_callee15","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_this$groups","_callee15$","_context15","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x14","_x15","_x16","_deleteContactGroup","_callee16","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee16$","_context16","deleteContactGroup","DELETE","findIndex","splice","_x17","_createContact","_callee17","contactInfo","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee17$","_context17","createContact","_x18","_deleteContact","_callee18","_this$contacts3","contactToDelete","_this$contacts4","_callee18$","_context18","deleteContact","_x19","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_FILE);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'getContacts',\n };\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const query = contactIdList.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n const resolvedContacts = this.resolveCloudContacts(\n cloudContactsMap,\n result.body as SCIMListResponse\n );\n if (resolvedContacts) {\n resolvedContacts.map((item) => contactList.push(item));\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createNewEncryptionKeyUrl.name,\n };\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.info(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n if (this.defaultGroupId) {\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.info('No default group found.', {\n file: CONTACTS_FILE,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n return group.groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContactGroup.name,\n };\n\n log.info(`Creating contact group ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Unable to create contact group.', loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContactGroup.name,\n };\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact group ${groupId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n };\n\n log.info(`Request to create contact: contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Failed to create contact.', {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n });\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContact.name,\n };\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact ${contactId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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"}
@@ -202,7 +202,7 @@ export class ContactsClient {
202
202
  throw new Error(`${response}`);
203
203
  }
204
204
  const { contacts, groups } = responseBody;
205
- contacts.map(async (contact) => {
205
+ await Promise.all(contacts.map(async (contact) => {
206
206
  if (contact.contactType === ContactType.CUSTOM) {
207
207
  const decryptedContact = await this.decryptContact(contact);
208
208
  contactList.push(decryptedContact);
@@ -210,7 +210,7 @@ export class ContactsClient {
210
210
  else if (contact.contactType === ContactType.CLOUD && contact.contactId) {
211
211
  cloudContactsMap[contact.contactId] = contact;
212
212
  }
213
- });
213
+ }));
214
214
  if (Object.keys(cloudContactsMap).length) {
215
215
  const contactIdList = Object.keys(cloudContactsMap);
216
216
  const query = contactIdList.map((item) => `${SCIM_ID_FILTER} "${item}"`).join(OR);
@@ -1 +1 @@
1
- {"version":3,"file":"ContactsClient.d.ts","sourceRoot":"","sources":["../../../src/Contacts/ContactsClient.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAgB9D,OAAO,EACL,OAAO,EAGP,eAAe,EAEf,SAAS,EAET,SAAS,EACV,MAAM,SAAS,CAAC;AAcjB,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,QAAQ,CAAwB;IAExC,OAAO,CAAC,cAAc,CAAS;gBAKnB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;YAoBtC,oBAAoB;YAuBpB,oBAAoB;YAsBpB,cAAc;YAkEd,cAAc;IA+D5B,OAAO,CAAC,oBAAoB;IAwEf,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;YAkFtC,yBAAyB;YAsBzB,qBAAqB;YAoCrB,iBAAiB;IAuClB,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,EACzB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,eAAe,CAAC;IA6Ed,kBAAkB,CAAC,OAAO,EAAE,MAAM;IA2ClC,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IA2G7D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyChE,eAAe,IAAI,aAAa;CAGxC;AAQD,eAAO,MAAM,oBAAoB,UAAW,QAAQ,UAAU,eAAe,KAAG,SAC7C,CAAC"}
1
+ {"version":3,"file":"ContactsClient.d.ts","sourceRoot":"","sources":["../../../src/Contacts/ContactsClient.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAgB9D,OAAO,EACL,OAAO,EAGP,eAAe,EAEf,SAAS,EAET,SAAS,EACV,MAAM,SAAS,CAAC;AAcjB,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,QAAQ,CAAwB;IAExC,OAAO,CAAC,cAAc,CAAS;gBAKnB,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;YAoBtC,oBAAoB;YAuBpB,oBAAoB;YAsBpB,cAAc;YAkEd,cAAc;IA+D5B,OAAO,CAAC,oBAAoB;IAwEf,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;YAoFtC,yBAAyB;YAsBzB,qBAAqB;YAoCrB,iBAAiB;IAuClB,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,EACzB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,eAAe,CAAC;IA6Ed,kBAAkB,CAAC,OAAO,EAAE,MAAM;IA2ClC,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IA2G7D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyChE,eAAe,IAAI,aAAa;CAGxC;AAQD,eAAO,MAAM,oBAAoB,UAAW,QAAQ,UAAU,eAAe,KAAG,SAC7C,CAAC"}
package/package.json CHANGED
@@ -37,8 +37,8 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@types/platform": "1.3.4",
40
- "@webex/internal-media-core": "2.11.3",
41
- "@webex/media-helpers": "3.6.0",
40
+ "@webex/internal-media-core": "2.12.2",
41
+ "@webex/media-helpers": "3.7.0",
42
42
  "async-mutex": "0.4.0",
43
43
  "buffer": "6.0.3",
44
44
  "jest-html-reporters": "3.0.11",
@@ -129,5 +129,5 @@
129
129
  "staticpath": "docs",
130
130
  "noprompt": true
131
131
  },
132
- "version": "3.6.0"
132
+ "version": "3.7.0"
133
133
  }