@webex/calling 3.8.0 → 3.8.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/CallHistory/CallHistory.js +100 -63
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +115 -19
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallHistory/constants.js +9 -1
  6. package/dist/CallHistory/constants.js.map +1 -1
  7. package/dist/CallSettings/CallSettings.js +46 -13
  8. package/dist/CallSettings/CallSettings.js.map +1 -1
  9. package/dist/CallSettings/UcmBackendConnector.js +62 -18
  10. package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
  11. package/dist/CallSettings/UcmBackendConnector.test.js +70 -7
  12. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
  13. package/dist/CallSettings/WxCallBackendConnector.js +153 -103
  14. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  15. package/dist/CallSettings/WxCallBackendConnector.test.js +52 -15
  16. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  17. package/dist/CallSettings/constants.js +15 -1
  18. package/dist/CallSettings/constants.js.map +1 -1
  19. package/dist/CallingClient/CallingClient.js +220 -159
  20. package/dist/CallingClient/CallingClient.js.map +1 -1
  21. package/dist/CallingClient/CallingClient.test.js +53 -24
  22. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  23. package/dist/CallingClient/calling/call.js +251 -189
  24. package/dist/CallingClient/calling/call.js.map +1 -1
  25. package/dist/CallingClient/calling/call.test.js +96 -41
  26. package/dist/CallingClient/calling/call.test.js.map +1 -1
  27. package/dist/CallingClient/calling/callManager.js +73 -48
  28. package/dist/CallingClient/calling/callManager.js.map +1 -1
  29. package/dist/CallingClient/calling/callManager.test.js +96 -37
  30. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  31. package/dist/CallingClient/constants.js +105 -3
  32. package/dist/CallingClient/constants.js.map +1 -1
  33. package/dist/CallingClient/line/index.js +47 -18
  34. package/dist/CallingClient/line/index.js.map +1 -1
  35. package/dist/CallingClient/line/line.test.js +2 -2
  36. package/dist/CallingClient/line/line.test.js.map +1 -1
  37. package/dist/CallingClient/registration/register.js +359 -297
  38. package/dist/CallingClient/registration/register.js.map +1 -1
  39. package/dist/CallingClient/registration/register.test.js +561 -163
  40. package/dist/CallingClient/registration/register.test.js.map +1 -1
  41. package/dist/CallingClient/registration/types.js.map +1 -1
  42. package/dist/Contacts/ContactsClient.js +156 -102
  43. package/dist/Contacts/ContactsClient.js.map +1 -1
  44. package/dist/Contacts/ContactsClient.test.js +197 -49
  45. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  46. package/dist/Contacts/constants.js +11 -1
  47. package/dist/Contacts/constants.js.map +1 -1
  48. package/dist/Errors/types.js +2 -0
  49. package/dist/Errors/types.js.map +1 -1
  50. package/dist/Events/impl/index.js +1 -1
  51. package/dist/Events/impl/index.js.map +1 -1
  52. package/dist/Metrics/index.js +102 -41
  53. package/dist/Metrics/index.js.map +1 -1
  54. package/dist/Metrics/index.test.js +10 -4
  55. package/dist/Metrics/index.test.js.map +1 -1
  56. package/dist/Metrics/types.js +4 -1
  57. package/dist/Metrics/types.js.map +1 -1
  58. package/dist/SDKConnector/types.js.map +1 -1
  59. package/dist/Voicemail/BroadworksBackendConnector.js +154 -91
  60. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  61. package/dist/Voicemail/BroadworksBackendConnector.test.js +99 -19
  62. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
  63. package/dist/Voicemail/UcmBackendConnector.js +105 -54
  64. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  65. package/dist/Voicemail/UcmBackendConnector.test.js +127 -17
  66. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
  67. package/dist/Voicemail/Voicemail.js +198 -79
  68. package/dist/Voicemail/Voicemail.js.map +1 -1
  69. package/dist/Voicemail/Voicemail.test.js +188 -23
  70. package/dist/Voicemail/Voicemail.test.js.map +1 -1
  71. package/dist/Voicemail/WxCallBackendConnector.js +277 -161
  72. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  73. package/dist/Voicemail/WxCallBackendConnector.test.js +268 -10
  74. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
  75. package/dist/Voicemail/constants.js +25 -1
  76. package/dist/Voicemail/constants.js.map +1 -1
  77. package/dist/Voicemail/types.js.map +1 -1
  78. package/dist/common/Utils.js +168 -104
  79. package/dist/common/Utils.js.map +1 -1
  80. package/dist/common/Utils.test.js +199 -35
  81. package/dist/common/Utils.test.js.map +1 -1
  82. package/dist/common/constants.js +2 -1
  83. package/dist/common/constants.js.map +1 -1
  84. package/dist/common/testUtil.js +3 -0
  85. package/dist/common/testUtil.js.map +1 -1
  86. package/dist/common/types.js.map +1 -1
  87. package/dist/index.js +12 -0
  88. package/dist/index.js.map +1 -1
  89. package/dist/module/CallHistory/CallHistory.js +32 -13
  90. package/dist/module/CallHistory/constants.js +6 -0
  91. package/dist/module/CallSettings/CallSettings.js +36 -3
  92. package/dist/module/CallSettings/UcmBackendConnector.js +50 -5
  93. package/dist/module/CallSettings/WxCallBackendConnector.js +54 -18
  94. package/dist/module/CallSettings/constants.js +12 -0
  95. package/dist/module/CallingClient/CallingClient.js +54 -16
  96. package/dist/module/CallingClient/calling/call.js +172 -121
  97. package/dist/module/CallingClient/calling/callManager.js +51 -26
  98. package/dist/module/CallingClient/constants.js +102 -2
  99. package/dist/module/CallingClient/line/index.js +37 -8
  100. package/dist/module/CallingClient/registration/register.js +103 -64
  101. package/dist/module/Contacts/ContactsClient.js +65 -21
  102. package/dist/module/Contacts/constants.js +10 -0
  103. package/dist/module/Errors/types.js +2 -0
  104. package/dist/module/Events/impl/index.js +1 -1
  105. package/dist/module/Metrics/index.js +57 -2
  106. package/dist/module/Metrics/types.js +3 -0
  107. package/dist/module/Voicemail/BroadworksBackendConnector.js +66 -17
  108. package/dist/module/Voicemail/UcmBackendConnector.js +51 -11
  109. package/dist/module/Voicemail/Voicemail.js +109 -9
  110. package/dist/module/Voicemail/WxCallBackendConnector.js +67 -18
  111. package/dist/module/Voicemail/constants.js +21 -0
  112. package/dist/module/common/Utils.js +51 -12
  113. package/dist/module/common/constants.js +1 -0
  114. package/dist/module/common/testUtil.js +3 -0
  115. package/dist/module/index.js +1 -0
  116. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  117. package/dist/types/CallHistory/constants.d.ts +6 -0
  118. package/dist/types/CallHistory/constants.d.ts.map +1 -1
  119. package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
  120. package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
  121. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  122. package/dist/types/CallSettings/constants.d.ts +12 -0
  123. package/dist/types/CallSettings/constants.d.ts.map +1 -1
  124. package/dist/types/CallingClient/CallingClient.d.ts +2 -3
  125. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  126. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  127. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  128. package/dist/types/CallingClient/constants.d.ts +102 -2
  129. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  130. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  131. package/dist/types/CallingClient/registration/register.d.ts +3 -1
  132. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  133. package/dist/types/CallingClient/registration/types.d.ts +1 -0
  134. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  135. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  136. package/dist/types/Contacts/constants.d.ts +10 -0
  137. package/dist/types/Contacts/constants.d.ts.map +1 -1
  138. package/dist/types/Errors/types.d.ts +2 -0
  139. package/dist/types/Errors/types.d.ts.map +1 -1
  140. package/dist/types/Metrics/index.d.ts +1 -1
  141. package/dist/types/Metrics/index.d.ts.map +1 -1
  142. package/dist/types/Metrics/types.d.ts +7 -2
  143. package/dist/types/Metrics/types.d.ts.map +1 -1
  144. package/dist/types/SDKConnector/types.d.ts +11 -2
  145. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  146. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  147. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  148. package/dist/types/Voicemail/Voicemail.d.ts +1 -1
  149. package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
  150. package/dist/types/Voicemail/WxCallBackendConnector.d.ts +3 -1
  151. package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
  152. package/dist/types/Voicemail/constants.d.ts +21 -0
  153. package/dist/types/Voicemail/constants.d.ts.map +1 -1
  154. package/dist/types/Voicemail/types.d.ts +1 -1
  155. package/dist/types/Voicemail/types.d.ts.map +1 -1
  156. package/dist/types/common/Utils.d.ts +4 -4
  157. package/dist/types/common/Utils.d.ts.map +1 -1
  158. package/dist/types/common/constants.d.ts +1 -0
  159. package/dist/types/common/constants.d.ts.map +1 -1
  160. package/dist/types/common/testUtil.d.ts +3 -0
  161. package/dist/types/common/testUtil.d.ts.map +1 -1
  162. package/dist/types/common/types.d.ts +12 -0
  163. package/dist/types/common/types.d.ts.map +1 -1
  164. package/dist/types/index.d.ts +2 -0
  165. package/dist/types/index.d.ts.map +1 -1
  166. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_testUtil","_types2","_ContactsClient","_constants","_Logger","_interopRequireDefault","_constants2","utils","_interopRequireWildcard","_contactFixtures","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","webex","getTestUtilsWebex","contactClient","contactServiceUrl","concat","internal","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","scimUrl","WEBEX_API_BTS","IDENTITY_ENDPOINT_RESOURCE","SCIM_ENDPOINT_RESOURCE","device","orgId","SCIM_USER_FILTER","contactServiceGroupUrl","GROUP_FILTER","serviceErrorCodeHandlerSpy","jest","spyOn","failureResponsePayload","statusCode","body","mockGroupResponse","mockContactResponseBodyOne","groups","beforeEach","createContactsClient","level","LOGGER","INFO","expect","toBeTruthy","getSDKConnector","getWebex","afterEach","request","mockClear","clearAllMocks","errorCodes","name","payloadData","inputStatusCode","expectedData","contacts","mockContactListOne","mockContactGroupListOne","expectedMessage","SUCCESS_MESSAGE","expectedStatusCode","decryptTextList","mockCity","mockCountry","mockState","mockStreet","mockZipCode","mockAvatarURL","mockCompany","mockDisplayNameOne","mockEmail","mockFirstName","mockLastName","mockNumber1","mockNumber2","mockSipAddress","mockTitle","mockGroupName","cloudContactPresent","scimResponse","mockSCIMListResponse","mockContactResponseBodyTwo","mockContactListTwo","mockContactGroupListTwo","mockDisplayNameTwo","mockContactResponseBodyThird","undefined","error","FAILURE_MESSAGE","map","stat","_assign","toString","it","each","_ref","_asyncToGenerator2","_regenerator","mark","_callee","codeObj","respPayload","contactsResponse","wrap","_callee$","_context","prev","next","mockResolvedValueOnce","text","encryption","decryptText","mockRejectedValueOnce","getContacts","sent","toBeCalledTimes","toHaveBeenNthCalledWith","uri","method","HTTP_METHODS","GET","headers","toBeCalledOnceWith","toEqual","data","any","message","not","toBeCalled","Error","file","CONTACTS_FILE","stop","_x","_callee2","_contactsResponse$dat","successResponsePayload","_callee2$","_context2","mockResolvedValue","kms","createUnboundKeys","mockKmsKey","createResource","encryptText","createContactGroup","group","groupId","toBe","count","keyUris","displayName","encryptionKeyUrl","groupType","schemas","_callee3","_contactsResponse$dat2","logInfoSpy","_callee3$","_context3","log","toBeCalledWith","POST","CONTACTS_SCHEMA","_callee4","logSpy","_callee4$","_context4","_callee5","loggerContext","warnSpy","_callee5$","_context5","mockRejectedValue","_callee6","_callee6$","_context6","deleteContactGroup","DELETE","_callee7","response","_callee7$","_context7","_callee8","_res$data$contact","_result$data$contact","mockContactResponse","contact","res","result","_callee8$","_context8","slice","createContact","contactId","DEFAULT_GROUP_NAME","_callee9","_res$data$contact2","successContactGroupResponsePayload","successContactResponsePayload","_callee9$","_context9","contactType","_callee10","_res$data$contact3","successResponsePayloadGroup","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","_callee12$","_context12","deleteContact","_callee13","_callee13$","_context13","userId","mockContactMinimum","mockSCIMMinListResponse","avatarURL","avatarUrlDomain","department","emails","firstName","lastName","manager","ownerId","phoneNumbers","sipAddresses","resolved","mockContact","janeDoe","_callee14","mockData","_callee14$","_context14","warn"],"sources":["ContactsClient.test.ts"],"sourcesContent":["import {HTTP_METHODS, SCIMListResponse, WebexRequestPayload} from '../common/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {LOGGER} from '../Logger/types';\nimport {Contact, ContactResponse, IContacts} from './types';\nimport {createContactsClient} from './ContactsClient';\nimport {\n FAILURE_MESSAGE,\n IDENTITY_ENDPOINT_RESOURCE,\n SCIM_ENDPOINT_RESOURCE,\n SCIM_USER_FILTER,\n SUCCESS_MESSAGE,\n WEBEX_API_BTS,\n} from '../common/constants';\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACT_FILTER,\n ENCRYPT_FILTER,\n DEFAULT_GROUP_NAME,\n USERS,\n GROUP_FILTER,\n CONTACTS_SCHEMA,\n} from './constants';\nimport * as utils from '../common/Utils';\nimport {\n mockCity,\n mockCompany,\n mockContactListTwo,\n mockContactResponseBodyTwo,\n mockContactListOne,\n mockContactResponseBodyOne,\n mockCountry,\n mockDisplayNameOne,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSCIMListResponse,\n mockSipAddress,\n mockState,\n mockStreet,\n mockTitle,\n mockZipCode,\n mockDisplayNameTwo,\n mockContactResponseBodyThird,\n mockKmsKey,\n mockGroupName,\n mockContactGroupListOne,\n mockContactGroupListTwo,\n mockAvatarURL,\n mockSCIMMinListResponse,\n mockContactMinimum,\n} from './contactFixtures';\n\ndescribe('ContactClient Tests', () => {\n const webex = getTestUtilsWebex();\n\n let contactClient: IContacts;\n\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`;\n const scimUrl = `${WEBEX_API_BTS}/${IDENTITY_ENDPOINT_RESOURCE}/${SCIM_ENDPOINT_RESOURCE}/${webex.internal.device.orgId}/${SCIM_USER_FILTER}id%20eq%20%22801bb994-343b-4f6b-97ae-d13c91d4b877%22`;\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceGroupUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`;\n const serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n const failureResponsePayload = <WebexRequestPayload>{\n statusCode: 503,\n body: {},\n };\n const mockGroupResponse = mockContactResponseBodyOne.groups[0];\n\n beforeEach(() => {\n contactClient = createContactsClient(webex, {level: LOGGER.INFO});\n\n expect(contactClient).toBeTruthy();\n expect(contactClient.getSDKConnector().getWebex()).toBeTruthy();\n });\n\n afterEach(() => {\n webex.request.mockClear();\n jest.clearAllMocks();\n });\n\n /**\n * TestCase inputs\n * name: TestCase name\n * payloadData: Response body\n * inputStatusCode: Status code received in response\n * expectedData: Expected data field in ContactResponse after processing\n * expectedMessage: Expected message field in ContactResponse after processing\n * expectedStatusCode: Expected status code field in ContactResponse after processing\n * decryptTextList: Array of decrypted contact list.\n */\n const errorCodes: {\n name: string;\n payloadData: unknown;\n inputStatusCode: number;\n expectedData: unknown;\n expectedMessage: string;\n expectedStatusCode: number;\n decryptTextList: Array<string>;\n cloudContactPresent?: boolean;\n scimResponse?: SCIMListResponse;\n }[] = [\n {\n name: 'Success case 1: fetch contacts using get contacts api, custom and cloud contact present',\n payloadData: mockContactResponseBodyOne,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListOne, groups: mockContactGroupListOne},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [\n mockCity,\n mockCountry,\n mockState,\n mockStreet,\n mockZipCode,\n mockAvatarURL,\n mockCompany,\n mockDisplayNameOne,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSipAddress,\n mockTitle,\n mockNumber2,\n mockSipAddress,\n mockGroupName,\n ],\n cloudContactPresent: true,\n scimResponse: mockSCIMListResponse,\n },\n {\n name: 'Success case 2: fetch contacts using get contacts api, single custom contact with mandatory details present',\n payloadData: mockContactResponseBodyTwo,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListTwo, groups: mockContactGroupListTwo},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [mockDisplayNameTwo, mockGroupName],\n },\n {\n name: 'Success case 3: fetch contacts using get contacts api, no contacts returned',\n payloadData: mockContactResponseBodyThird,\n inputStatusCode: 200,\n expectedData: {contacts: [], groups: []},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [],\n },\n {\n name: 'Failed case: 200 OK with no response body',\n payloadData: undefined,\n inputStatusCode: 200,\n expectedData: {error: '422 Exception has occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 422,\n decryptTextList: [],\n },\n {\n name: 'Failed case 403: fetch contacts using get contacts api',\n payloadData: {error: '403 Forbidden'},\n inputStatusCode: 403,\n expectedData: {error: 'User request is forbidden'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 403,\n decryptTextList: [],\n },\n {\n name: 'Failed case 408: fetch contacts using get contacts api',\n payloadData: {error: '408 Request Timeout'},\n inputStatusCode: 408,\n expectedData: {error: 'Request to the server timedout'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 408,\n decryptTextList: [],\n },\n {\n name: 'Failed case 500: fetch contacts using get contacts api',\n payloadData: {error: '500 Internal Server Error'},\n inputStatusCode: 500,\n expectedData: {error: 'Internal server error occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 500,\n decryptTextList: [],\n },\n {\n name: 'Failed case 503: fetch contacts using get contacts api',\n payloadData: {error: '503 Service Unavailable'},\n inputStatusCode: 503,\n expectedData: {error: 'Unable to establish a connection with the server'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 503,\n decryptTextList: [],\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n /* eslint-disable dot-notation */\n return this['name'];\n },\n })\n );\n\n it.each(errorCodes)('%s', async (codeObj) => {\n const respPayload = {\n statusCode: codeObj.inputStatusCode,\n };\n\n if (codeObj.inputStatusCode === 200) {\n respPayload['body'] = codeObj.payloadData;\n webex.request.mockResolvedValueOnce(respPayload);\n codeObj.decryptTextList.forEach((text) => {\n webex.internal.encryption.decryptText.mockResolvedValueOnce(text);\n });\n\n if (codeObj.scimResponse) {\n webex.request.mockResolvedValueOnce(mockSCIMListResponse);\n }\n } else {\n respPayload['message'] = FAILURE_MESSAGE;\n respPayload['data'] = codeObj.payloadData;\n webex.request.mockRejectedValueOnce(respPayload);\n }\n\n const contactsResponse = await contactClient.getContacts();\n\n if (codeObj.inputStatusCode === 200) {\n if (codeObj.cloudContactPresent) {\n expect(webex.request).toBeCalledTimes(2);\n } else {\n expect(webex.request).toBeCalledTimes(1);\n }\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n uri: contactServiceUrl,\n method: HTTP_METHODS.GET,\n });\n\n if (codeObj.cloudContactPresent) {\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n uri: scimUrl,\n method: HTTP_METHODS.GET,\n headers: {\n 'cisco-device-url':\n 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',\n 'spark-user-agent': 'webex-calling/beta',\n },\n });\n }\n } else {\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.GET,\n });\n }\n\n expect(contactsResponse).toEqual({\n data: expect.any(Object),\n message: codeObj.expectedMessage,\n statusCode: codeObj.expectedStatusCode,\n });\n\n if (codeObj.expectedMessage === SUCCESS_MESSAGE) {\n expect(serviceErrorCodeHandlerSpy).not.toBeCalled();\n } else {\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n codeObj.payloadData ? respPayload : expect.any(Error),\n {\n file: CONTACTS_FILE,\n method: 'getContacts',\n }\n );\n }\n });\n\n it('create a contact group without encryptionKey', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = '';\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText\n .mockResolvedValueOnce('Encrypted Other')\n .mockResolvedValueOnce('Encrypted Top');\n\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Other',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Top',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n });\n\n it('create a contact group with existing key info', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockResolvedValue(successResponsePayload);\n\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted Top Contacts');\n const logInfoSpy = jest.spyOn(log, 'info');\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(logInfoSpy).not.toBeCalledWith('Requesting kms for a new KRO and key', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted Top Contacts',\n encryptionKeyUrl: mockContactGroupListOne[0].encryptionKeyUrl,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n });\n\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n });\n\n it('create a contact group with same displayName', async () => {\n contactClient['groups'] = mockContactResponseBodyOne.groups;\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const logSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.createContactGroup(mockGroupResponse.displayName);\n\n expect(webex.request).not.toBeCalled();\n expect(contactsResponse.statusCode).toBe(400);\n expect(logSpy).toBeCalledOnceWith(\n `Group name ${mockGroupResponse.displayName} already exists.`,\n {\n file: CONTACTS_FILE,\n method: 'createContactGroup',\n }\n );\n expect(contactClient['groups']).toEqual(mockContactResponseBodyOne.groups);\n });\n\n it('create a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'createContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n const warnSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.createContactGroup('New group');\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n expect(warnSpy).toBeCalledTimes(2);\n expect(warnSpy).toHaveBeenNthCalledWith(1, 'Unable to create contact group.', loggerContext);\n expect(warnSpy).toHaveBeenNthCalledWith(\n 2,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('delete a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'deleteContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const warnSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.deleteContactGroup(mockGroupResponse.groupId);\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n method: HTTP_METHODS.DELETE,\n uri: `${contactServiceGroupUrl}/${mockGroupResponse.groupId}`,\n });\n expect(warnSpy).toBeCalledTimes(2);\n expect(warnSpy).toHaveBeenNthCalledWith(\n 1,\n `Unable to delete contact group ${mockGroupResponse.groupId}`,\n loggerContext\n );\n expect(warnSpy).toHaveBeenNthCalledWith(\n 2,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('successful deletion of contact group', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['groups'] = [mockContactGroupListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContactGroup(mockContactGroupListOne[0].groupId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceGroupUrl}/${mockContactGroupListOne[0].groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['groups']).toEqual([]);\n });\n\n it('create a contact with an existing group', async () => {\n const mockContactResponse = mockContactResponseBodyTwo.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted contact name');\n const logSpy = jest.spyOn(log, 'info');\n\n contactClient['groups'] = mockContactGroupListOne;\n contactClient['encryptionKeyUrl'] = mockContactGroupListOne[0].encryptionKeyUrl;\n\n const contact = mockContactListTwo.slice()[0] as Contact;\n\n contact.groups = [];\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n expect(logSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n\n expect(webex.internal.encryption.encryptText).toBeCalledOnceWith(\n mockContactGroupListOne[0].encryptionKeyUrl,\n contact.displayName\n );\n\n expect(webex.request).toBeCalledOnceWith({\n body: {\n ...contact,\n displayName: 'Encrypted contact name',\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n });\n\n logSpy.mockClear();\n\n /* for coverage */\n const result: ContactResponse = await contactClient.createContact(contact);\n\n expect(result.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(logSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n });\n\n it('create a contact without a group and encryptionKey', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[1];\n\n contactClient['groups'] = [];\n contactClient['encryptionKey'] = '';\n contactClient['defaultGroupId'] = '';\n const successContactGroupResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n const successContactResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request\n .mockResolvedValueOnce(successContactGroupResponsePayload)\n .mockResolvedValueOnce(successContactResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n const contact = {\n contactType: 'CUSTOM',\n } as Contact;\n\n const res = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n body: {\n contactType: 'CUSTOM',\n encryptionKeyUrl: mockKmsKey.uri,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n schemas: CONTACTS_SCHEMA,\n },\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n });\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n });\n\n it('create a cloud contact with no existing groups', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n const successResponsePayloadGroup = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponseBodyOne.groups[0],\n };\n\n webex.request\n .mockResolvedValueOnce(successResponsePayloadGroup)\n .mockResolvedValueOnce(successResponsePayload)\n .mockResolvedValueOnce(mockSCIMListResponse);\n\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n\n const contact = {\n contactType: 'CLOUD',\n } as Contact;\n\n contact.groups = [];\n\n let res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(400);\n expect(res.data.error).toEqual('contactId is required for contactType:CLOUD.');\n\n contact.contactId = mockContactResponse.contactId;\n\n res = await contactClient.createContact(contact);\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n method: HTTP_METHODS.POST,\n uri: contactServiceGroupUrl,\n body: {\n displayName: 'Encrypted group name',\n groupType: 'NORMAL',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n body: {\n contactId: mockContactResponse.contactId,\n contactType: 'CLOUD',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n },\n });\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n uri: scimUrl,\n method: HTTP_METHODS.GET,\n headers: {\n 'cisco-device-url':\n 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',\n 'spark-user-agent': 'webex-calling/beta',\n },\n });\n });\n\n it('create a contact - service unavailable', async () => {\n webex.request.mockRejectedValue(failureResponsePayload);\n\n contactClient['groups'] = mockContactGroupListOne.slice();\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n const contact = {\n contactType: 'CLOUD',\n contactId: '801bb994-343b-4f6b-97ae-d13c91d4b877',\n } as Contact;\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n body: {\n ...contact,\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: 'createContact',\n });\n expect(res.statusCode).toEqual(503);\n });\n\n it('successful deletion of contacts', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['contacts'] = [mockContactListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['contacts']).toEqual([]);\n });\n\n it('delete a contact - service unavailable', async () => {\n contactClient['contacts'] = mockContactListOne;\n\n webex.request.mockRejectedValue(failureResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: 'deleteContact',\n });\n\n expect(contactClient['contacts']).toEqual(mockContactListOne);\n });\n\n it('test resolveContacts function for a minimal contact with few details', () => {\n const contact = contactClient['resolveCloudContacts'](\n {userId: mockContactMinimum},\n mockSCIMMinListResponse.body\n );\n\n expect(contact).toEqual([\n {\n avatarURL: '',\n avatarUrlDomain: undefined,\n contactId: 'userId',\n contactType: 'CLOUD',\n department: undefined,\n displayName: undefined,\n emails: undefined,\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n firstName: undefined,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n lastName: undefined,\n manager: undefined,\n ownerId: 'ownerId',\n phoneNumbers: undefined,\n sipAddresses: undefined,\n resolved: true,\n },\n ]);\n });\n\n it(\"test resolveContacts function when contactsDataMap list doesn't match resolved list\", () => {\n const mockContact = {\n firstName: 'Jane',\n lastName: 'Doe',\n contactId: 'janeDoe',\n };\n\n const contact = contactClient['resolveCloudContacts'](\n {userId: mockContactMinimum, janeDoe: mockContact},\n mockSCIMMinListResponse.body\n );\n\n expect(contact).toEqual([\n {\n firstName: 'Jane',\n lastName: 'Doe',\n contactId: 'janeDoe',\n resolved: false,\n },\n {\n avatarURL: '',\n avatarUrlDomain: undefined,\n contactId: 'userId',\n contactType: 'CLOUD',\n department: undefined,\n displayName: undefined,\n emails: undefined,\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n firstName: undefined,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n lastName: undefined,\n manager: undefined,\n ownerId: 'ownerId',\n phoneNumbers: undefined,\n sipAddresses: undefined,\n resolved: true,\n },\n ]);\n });\n\n it('test resolveContacts function encountering an error', () => {\n const contact = contactClient['resolveCloudContacts'](\n {userId: mockContactMinimum},\n mockSCIMMinListResponse\n );\n\n expect(contact).toEqual(null);\n });\n\n it('logs error for chunk when scimQuery API call fails in the loop for getContacts', async () => {\n const mockData = errorCodes[0];\n const respPayload = {\n statusCode: mockData.inputStatusCode,\n body: mockData.payloadData,\n };\n webex.request.mockResolvedValueOnce(respPayload).mockRejectedValueOnce({\n ...respPayload,\n statusCode: 503,\n message: FAILURE_MESSAGE,\n data: mockData.payloadData,\n });\n\n mockData.decryptTextList.forEach((text) => {\n webex.internal.encryption.decryptText.mockResolvedValueOnce(text);\n });\n\n jest.spyOn(log, 'warn');\n\n await contactClient.getContacts();\n\n expect(webex.request).toBeCalledTimes(2);\n expect(log.warn).toBeCalledTimes(1);\n expect(log.warn).toBeCalledWith('Error processing contact chunk 0-50', {\n file: 'Contacts',\n method: 'getContacts',\n });\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","_testUtil","_types2","_ContactsClient","_constants","_Logger","_interopRequireDefault","_constants2","utils","_interopRequireWildcard","_contactFixtures","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","webex","getTestUtilsWebex","contactClient","contactServiceUrl","concat","internal","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","scimUrl","WEBEX_API_BTS","IDENTITY_ENDPOINT_RESOURCE","SCIM_ENDPOINT_RESOURCE","device","orgId","SCIM_USER_FILTER","contactServiceGroupUrl","GROUP_FILTER","serviceErrorCodeHandlerSpy","jest","spyOn","uploadLogsSpy","mockResolvedValue","failureResponsePayload","statusCode","body","mockGroupResponse","mockContactResponseBodyOne","groups","beforeEach","createContactsClient","level","LOGGER","INFO","expect","toBeTruthy","getSDKConnector","getWebex","log","afterEach","request","mockClear","clearAllMocks","errorCodes","name","payloadData","inputStatusCode","expectedData","contacts","mockContactListOne","mockContactGroupListOne","expectedMessage","SUCCESS_MESSAGE","expectedStatusCode","decryptTextList","mockCity","mockCountry","mockState","mockStreet","mockZipCode","mockAvatarURL","mockCompany","mockDisplayNameOne","mockEmail","mockFirstName","mockLastName","mockNumber1","mockNumber2","mockSipAddress","mockTitle","mockGroupName","cloudContactPresent","scimResponse","mockSCIMListResponse","mockContactResponseBodyTwo","mockContactListTwo","mockContactGroupListTwo","mockDisplayNameTwo","mockContactResponseBodyThird","undefined","error","FAILURE_MESSAGE","map","stat","_assign","toString","it","each","_ref","_asyncToGenerator2","_regenerator","mark","_callee","codeObj","respPayload","contactsResponse","wrap","_callee$","_context","prev","next","mockResolvedValueOnce","text","encryption","decryptText","mockRejectedValueOnce","getContacts","sent","toBeCalledTimes","toHaveBeenNthCalledWith","uri","method","HTTP_METHODS","GET","headers","info","toHaveBeenCalledWith","METHOD_START_MESSAGE","file","CONTACTS_FILE","METHODS","GET_CONTACTS","toHaveBeenCalled","toBeCalledOnceWith","toEqual","data","any","message","not","toBeCalled","Error","stop","_x","_callee2","_contactsResponse$dat","successResponsePayload","_callee2$","_context2","kms","createUnboundKeys","mockKmsKey","createResource","encryptText","createContactGroup","group","groupId","toBe","count","keyUris","displayName","encryptionKeyUrl","groupType","schemas","CREATE_CONTACT_GROUP","CREATE_NEW_ENCRYPTION_KEY_URL","DEFAULT_GROUP_NAME","_callee3","_contactsResponse$dat2","infoSpy","_callee3$","_context3","toBeCalledWith","POST","CONTACTS_SCHEMA","_callee4","logSpy","_callee4$","_context4","_callee5","loggerContext","warnSpy","errorSpy","_callee5$","_context5","mockRejectedValue","_callee6","_callee6$","_context6","deleteContactGroup","DELETE","_callee7","response","_callee7$","_context7","_callee8","_res$data$contact","_result$data$contact","mockContactResponse","contact","res","result","_callee8$","_context8","slice","createContact","contactId","contactType","CREATE_CONTACT","_callee9","_res$data$contact2","successContactGroupResponsePayload","successContactResponsePayload","_callee9$","_context9","FETCH_ENCRYPTION_KEY_URL","_callee10","_res$data$contact3","successResponsePayloadGroup","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","_callee12$","_context12","deleteContact","DELETE_CONTACT","_callee13","_callee13$","_context13","userId","mockContactMinimum","mockSCIMMinListResponse","avatarURL","avatarUrlDomain","department","emails","firstName","lastName","manager","ownerId","phoneNumbers","sipAddresses","resolved","mockContact","janeDoe","_callee14","mockData","_callee14$","_context14"],"sources":["ContactsClient.test.ts"],"sourcesContent":["import {HTTP_METHODS, SCIMListResponse, WebexRequestPayload} from '../common/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {LOGGER} from '../Logger/types';\nimport {Contact, ContactResponse, IContacts} from './types';\nimport {createContactsClient} from './ContactsClient';\nimport {\n FAILURE_MESSAGE,\n IDENTITY_ENDPOINT_RESOURCE,\n METHOD_START_MESSAGE,\n SCIM_ENDPOINT_RESOURCE,\n SCIM_USER_FILTER,\n SUCCESS_MESSAGE,\n WEBEX_API_BTS,\n} from '../common/constants';\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACT_FILTER,\n ENCRYPT_FILTER,\n DEFAULT_GROUP_NAME,\n USERS,\n GROUP_FILTER,\n CONTACTS_SCHEMA,\n METHODS,\n} from './constants';\nimport * as utils from '../common/Utils';\nimport {\n mockCity,\n mockCompany,\n mockContactListTwo,\n mockContactResponseBodyTwo,\n mockContactListOne,\n mockContactResponseBodyOne,\n mockCountry,\n mockDisplayNameOne,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSCIMListResponse,\n mockSipAddress,\n mockState,\n mockStreet,\n mockTitle,\n mockZipCode,\n mockDisplayNameTwo,\n mockContactResponseBodyThird,\n mockKmsKey,\n mockGroupName,\n mockContactGroupListOne,\n mockContactGroupListTwo,\n mockAvatarURL,\n mockSCIMMinListResponse,\n mockContactMinimum,\n} from './contactFixtures';\n\ndescribe('ContactClient Tests', () => {\n const webex = getTestUtilsWebex();\n\n let contactClient: IContacts;\n\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`;\n const scimUrl = `${WEBEX_API_BTS}/${IDENTITY_ENDPOINT_RESOURCE}/${SCIM_ENDPOINT_RESOURCE}/${webex.internal.device.orgId}/${SCIM_USER_FILTER}id%20eq%20%22801bb994-343b-4f6b-97ae-d13c91d4b877%22`;\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceGroupUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`;\n const serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n const uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n const failureResponsePayload = <WebexRequestPayload>{\n statusCode: 503,\n body: {},\n };\n const mockGroupResponse = mockContactResponseBodyOne.groups[0];\n\n beforeEach(() => {\n contactClient = createContactsClient(webex, {level: LOGGER.INFO});\n\n expect(contactClient).toBeTruthy();\n expect(contactClient.getSDKConnector().getWebex()).toBeTruthy();\n\n // Set up log spies for each test\n jest.spyOn(log, 'info');\n jest.spyOn(log, 'log');\n jest.spyOn(log, 'warn');\n jest.spyOn(log, 'error');\n });\n\n afterEach(() => {\n webex.request.mockClear();\n jest.clearAllMocks();\n });\n\n /**\n * TestCase inputs\n * name: TestCase name\n * payloadData: Response body\n * inputStatusCode: Status code received in response\n * expectedData: Expected data field in ContactResponse after processing\n * expectedMessage: Expected message field in ContactResponse after processing\n * expectedStatusCode: Expected status code field in ContactResponse after processing\n * decryptTextList: Array of decrypted contact list.\n */\n const errorCodes: {\n name: string;\n payloadData: unknown;\n inputStatusCode: number;\n expectedData: unknown;\n expectedMessage: string;\n expectedStatusCode: number;\n decryptTextList: Array<string>;\n cloudContactPresent?: boolean;\n scimResponse?: SCIMListResponse;\n }[] = [\n {\n name: 'Success case 1: fetch contacts using get contacts api, custom and cloud contact present',\n payloadData: mockContactResponseBodyOne,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListOne, groups: mockContactGroupListOne},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [\n mockCity,\n mockCountry,\n mockState,\n mockStreet,\n mockZipCode,\n mockAvatarURL,\n mockCompany,\n mockDisplayNameOne,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSipAddress,\n mockTitle,\n mockNumber2,\n mockSipAddress,\n mockGroupName,\n ],\n cloudContactPresent: true,\n scimResponse: mockSCIMListResponse,\n },\n {\n name: 'Success case 2: fetch contacts using get contacts api, single custom contact with mandatory details present',\n payloadData: mockContactResponseBodyTwo,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListTwo, groups: mockContactGroupListTwo},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [mockDisplayNameTwo, mockGroupName],\n },\n {\n name: 'Success case 3: fetch contacts using get contacts api, no contacts returned',\n payloadData: mockContactResponseBodyThird,\n inputStatusCode: 200,\n expectedData: {contacts: [], groups: []},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [],\n },\n {\n name: 'Failed case: 200 OK with no response body',\n payloadData: undefined,\n inputStatusCode: 200,\n expectedData: {error: '422 Exception has occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 422,\n decryptTextList: [],\n },\n {\n name: 'Failed case 403: fetch contacts using get contacts api',\n payloadData: {error: '403 Forbidden'},\n inputStatusCode: 403,\n expectedData: {error: 'User request is forbidden'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 403,\n decryptTextList: [],\n },\n {\n name: 'Failed case 408: fetch contacts using get contacts api',\n payloadData: {error: '408 Request Timeout'},\n inputStatusCode: 408,\n expectedData: {error: 'Request to the server timedout'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 408,\n decryptTextList: [],\n },\n {\n name: 'Failed case 500: fetch contacts using get contacts api',\n payloadData: {error: '500 Internal Server Error'},\n inputStatusCode: 500,\n expectedData: {error: 'Internal server error occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 500,\n decryptTextList: [],\n },\n {\n name: 'Failed case 503: fetch contacts using get contacts api',\n payloadData: {error: '503 Service Unavailable'},\n inputStatusCode: 503,\n expectedData: {error: 'Unable to establish a connection with the server'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 503,\n decryptTextList: [],\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n /* eslint-disable dot-notation */\n return this['name'];\n },\n })\n );\n\n it.each(errorCodes)('%s', async (codeObj) => {\n const respPayload = {\n statusCode: codeObj.inputStatusCode,\n };\n\n if (codeObj.inputStatusCode === 200) {\n respPayload['body'] = codeObj.payloadData;\n webex.request.mockResolvedValueOnce(respPayload);\n codeObj.decryptTextList.forEach((text) => {\n webex.internal.encryption.decryptText.mockResolvedValueOnce(text);\n });\n\n if (codeObj.scimResponse) {\n webex.request.mockResolvedValueOnce(mockSCIMListResponse);\n }\n } else {\n respPayload['message'] = FAILURE_MESSAGE;\n respPayload['data'] = codeObj.payloadData;\n webex.request.mockRejectedValueOnce(respPayload);\n }\n\n const contactsResponse = await contactClient.getContacts();\n\n if (codeObj.inputStatusCode === 200) {\n if (codeObj.cloudContactPresent) {\n expect(webex.request).toBeCalledTimes(2);\n } else {\n expect(webex.request).toBeCalledTimes(1);\n }\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n uri: contactServiceUrl,\n method: HTTP_METHODS.GET,\n });\n\n if (codeObj.cloudContactPresent) {\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n uri: scimUrl,\n method: HTTP_METHODS.GET,\n headers: {\n 'cisco-device-url':\n 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',\n 'spark-user-agent': 'webex-calling/beta',\n },\n });\n }\n\n expect(log.info).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CONTACTS_FILE,\n method: METHODS.GET_CONTACTS,\n });\n\n if (codeObj.payloadData) {\n expect(log.log).toHaveBeenCalledWith('Successfully fetched contacts and groups', {\n file: CONTACTS_FILE,\n method: METHODS.GET_CONTACTS,\n });\n } else {\n expect(log.error).toHaveBeenCalled();\n }\n } else {\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.GET,\n });\n\n expect(log.info).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CONTACTS_FILE,\n method: METHODS.GET_CONTACTS,\n });\n expect(log.error).toHaveBeenCalled();\n }\n\n expect(contactsResponse).toEqual({\n data: expect.any(Object),\n message: codeObj.expectedMessage,\n statusCode: codeObj.expectedStatusCode,\n });\n\n if (codeObj.expectedMessage === SUCCESS_MESSAGE) {\n expect(serviceErrorCodeHandlerSpy).not.toBeCalled();\n } else {\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n codeObj.payloadData ? respPayload : expect.any(Error),\n {\n file: CONTACTS_FILE,\n method: METHODS.GET_CONTACTS,\n }\n );\n }\n });\n\n it('create a contact group without encryptionKey', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = '';\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText\n .mockResolvedValueOnce('Encrypted Other')\n .mockResolvedValueOnce('Encrypted Top');\n\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Other',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Top',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n\n expect(log.info).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with displayName: Top Contacts`,\n {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT_GROUP,\n }\n );\n expect(log.info).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n });\n expect(log.info).toHaveBeenCalledWith('Requesting kms for a new KRO and key', {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n });\n expect(log.log).toHaveBeenCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n expect(log.log).toHaveBeenCalledWith(`Contact group Top Contacts successfully created`, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT_GROUP,\n });\n });\n\n it('create a contact group with existing key info', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockResolvedValue(successResponsePayload);\n\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted Top Contacts');\n const infoSpy = jest.spyOn(log, 'info');\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(infoSpy).toBeCalledWith(`${METHOD_START_MESSAGE} with displayName: Top Contacts`, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT_GROUP,\n });\n expect(log.log).toBeCalledWith(`Contact group Top Contacts successfully created`, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT_GROUP,\n });\n expect(infoSpy).not.toBeCalledWith(METHOD_START_MESSAGE, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n });\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted Top Contacts',\n encryptionKeyUrl: mockContactGroupListOne[0].encryptionKeyUrl,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n });\n\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n });\n\n it('create a contact group with same displayName', async () => {\n contactClient['groups'] = mockContactResponseBodyOne.groups;\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const logSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.createContactGroup(mockGroupResponse.displayName);\n\n expect(webex.request).not.toBeCalled();\n expect(contactsResponse.statusCode).toBe(400);\n expect(logSpy).toBeCalledOnceWith(\n `Group name ${mockGroupResponse.displayName} already exists.`,\n {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT_GROUP,\n }\n );\n expect(log.info).toBeCalledWith(\n `${METHOD_START_MESSAGE} with displayName: ${mockGroupResponse.displayName}`,\n {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT_GROUP,\n }\n );\n expect(contactClient['groups']).toEqual(mockContactResponseBodyOne.groups);\n });\n\n it('create a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'createContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n const warnSpy = jest.spyOn(log, 'warn');\n const errorSpy = jest.spyOn(log, 'error');\n\n const contactsResponse = await contactClient.createContactGroup('New group');\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n expect(log.info).toBeCalledWith(\n `${METHOD_START_MESSAGE} with displayName: New group`,\n loggerContext\n );\n expect(warnSpy).toBeCalledTimes(1);\n expect(warnSpy).toHaveBeenNthCalledWith(\n 1,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n expect(errorSpy).toBeCalledTimes(1);\n expect(errorSpy).toHaveBeenNthCalledWith(\n 1,\n Error(`Unable to create contact group: ${failureResponsePayload}`),\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('delete a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'deleteContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const warnSpy = jest.spyOn(log, 'warn');\n const errorSpy = jest.spyOn(log, 'error');\n const contactsResponse = await contactClient.deleteContactGroup(mockGroupResponse.groupId);\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n method: HTTP_METHODS.DELETE,\n uri: `${contactServiceGroupUrl}/${mockGroupResponse.groupId}`,\n });\n expect(log.info).toBeCalledWith(\n `${METHOD_START_MESSAGE} with groupId: ${mockGroupResponse.groupId}`,\n loggerContext\n );\n expect(log.info).toBeCalledWith(\n `Deleting contact group: ${mockGroupResponse.groupId}`,\n loggerContext\n );\n expect(warnSpy).toBeCalledTimes(1);\n expect(errorSpy).toBeCalledTimes(1);\n expect(uploadLogsSpy).toBeCalledTimes(1);\n expect(errorSpy).toHaveBeenNthCalledWith(\n 1,\n Error(\n `Unable to delete contact group ${mockGroupResponse.groupId}: ${failureResponsePayload}`\n ),\n loggerContext\n );\n expect(warnSpy).toHaveBeenNthCalledWith(\n 1,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('successful deletion of contact group', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['groups'] = [mockContactGroupListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContactGroup(mockContactGroupListOne[0].groupId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceGroupUrl}/${mockContactGroupListOne[0].groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['groups']).toEqual([]);\n\n expect(log.info).toBeCalledWith(\n `Deleting contact group: ${mockContactGroupListOne[0].groupId}`,\n {\n file: CONTACTS_FILE,\n method: 'deleteContactGroup',\n }\n );\n expect(log.log).toBeCalledWith(\n `Contact group ${mockContactGroupListOne[0].groupId} successfully deleted`,\n {\n file: CONTACTS_FILE,\n method: 'deleteContactGroup',\n }\n );\n });\n\n it('create a contact with an existing group', async () => {\n const mockContactResponse = mockContactResponseBodyTwo.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted contact name');\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n\n contactClient['groups'] = mockContactGroupListOne;\n contactClient['encryptionKeyUrl'] = mockContactGroupListOne[0].encryptionKeyUrl;\n\n const contact = mockContactListTwo.slice()[0] as Contact;\n\n contact.groups = [];\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(infoSpy).toBeCalledWith(\n `${METHOD_START_MESSAGE} with contactType: ${contact.contactType}`,\n {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT,\n }\n );\n expect(logSpy).toBeCalledWith(`Contact successfully created`, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT,\n });\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n expect(infoSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n\n expect(webex.internal.encryption.encryptText).toBeCalledOnceWith(\n mockContactGroupListOne[0].encryptionKeyUrl,\n contact.displayName\n );\n\n expect(webex.request).toBeCalledOnceWith({\n body: {\n ...contact,\n displayName: 'Encrypted contact name',\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n });\n\n logSpy.mockClear();\n\n /* for coverage */\n const result: ContactResponse = await contactClient.createContact(contact);\n\n expect(result.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(logSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n });\n\n it('create a contact without a group and encryptionKey', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[1];\n\n contactClient['groups'] = [];\n contactClient['encryptionKey'] = '';\n contactClient['defaultGroupId'] = '';\n const successContactGroupResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n const successContactResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request\n .mockResolvedValueOnce(successContactGroupResponsePayload)\n .mockResolvedValueOnce(successContactResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n const contact = {\n contactType: 'CUSTOM',\n } as Contact;\n\n const res = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n body: {\n contactType: 'CUSTOM',\n encryptionKeyUrl: mockKmsKey.uri,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n schemas: CONTACTS_SCHEMA,\n },\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n });\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n\n expect(log.info).toBeCalledWith(`${METHOD_START_MESSAGE} with contactType: CUSTOM`, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT,\n });\n expect(log.info).toBeCalledWith(METHOD_START_MESSAGE, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n });\n expect(log.info).toBeCalledWith('Requesting kms for a new KRO and key', {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n });\n expect(log.log).toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: METHODS.FETCH_ENCRYPTION_KEY_URL,\n });\n expect(log.log).toBeCalledWith(`Contact successfully created`, {\n file: CONTACTS_FILE,\n method: 'createContact',\n });\n });\n\n it('create a cloud contact with no existing groups', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n const successResponsePayloadGroup = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponseBodyOne.groups[0],\n };\n\n webex.request\n .mockResolvedValueOnce(successResponsePayloadGroup)\n .mockResolvedValueOnce(successResponsePayload)\n .mockResolvedValueOnce(mockSCIMListResponse);\n\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n\n const contact = {\n contactType: 'CLOUD',\n } as Contact;\n\n contact.groups = [];\n\n let res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(400);\n expect(res.data.error).toEqual('contactId is required for contactType:CLOUD.');\n expect(log.info).toBeCalledWith(`${METHOD_START_MESSAGE} with contactType: CLOUD`, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT,\n });\n\n contact.contactId = mockContactResponse.contactId;\n\n res = await contactClient.createContact(contact);\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n\n expect(webex.request).toBeCalledTimes(3);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n method: HTTP_METHODS.POST,\n uri: contactServiceGroupUrl,\n body: {\n displayName: 'Encrypted group name',\n groupType: 'NORMAL',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n body: {\n contactId: mockContactResponse.contactId,\n contactType: 'CLOUD',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n },\n });\n expect(webex.request).toHaveBeenNthCalledWith(3, {\n uri: scimUrl,\n method: HTTP_METHODS.GET,\n headers: {\n 'cisco-device-url':\n 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',\n 'spark-user-agent': 'webex-calling/beta',\n },\n });\n\n expect(log.log).toBeCalledWith(`Contact successfully created`, {\n file: CONTACTS_FILE,\n method: 'createContact',\n });\n });\n\n it('create a contact - service unavailable', async () => {\n webex.request.mockRejectedValue(failureResponsePayload);\n\n contactClient['groups'] = mockContactGroupListOne.slice();\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n const contact = {\n contactType: 'CLOUD',\n contactId: '801bb994-343b-4f6b-97ae-d13c91d4b877',\n } as Contact;\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n body: {\n ...contact,\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT,\n });\n expect(res.statusCode).toEqual(503);\n\n expect(log.info).toBeCalledWith(`${METHOD_START_MESSAGE} with contactType: CLOUD`, {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT,\n });\n expect(log.error).toBeCalledWith(Error(`Failed to create contact: ${failureResponsePayload}`), {\n file: CONTACTS_FILE,\n method: METHODS.CREATE_CONTACT,\n });\n });\n\n it('successful deletion of contacts', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['contacts'] = [mockContactListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['contacts']).toEqual([]);\n\n expect(log.info).toBeCalledWith(\n `${METHOD_START_MESSAGE} with contactId: ${mockContactListOne[0].contactId}`,\n {\n file: CONTACTS_FILE,\n method: METHODS.DELETE_CONTACT,\n }\n );\n expect(log.info).toBeCalledWith(`Deleting contact : ${mockContactListOne[0].contactId}`, {\n file: CONTACTS_FILE,\n method: METHODS.DELETE_CONTACT,\n });\n });\n\n it('delete a contact - service unavailable', async () => {\n contactClient['contacts'] = mockContactListOne;\n\n webex.request.mockRejectedValue(failureResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: METHODS.DELETE_CONTACT,\n });\n\n expect(contactClient['contacts']).toEqual(mockContactListOne);\n\n expect(log.info).toBeCalledWith(\n `${METHOD_START_MESSAGE} with contactId: ${mockContactListOne[0].contactId}`,\n {\n file: CONTACTS_FILE,\n method: METHODS.DELETE_CONTACT,\n }\n );\n expect(log.info).toBeCalledWith(`Deleting contact : ${mockContactListOne[0].contactId}`, {\n file: CONTACTS_FILE,\n method: METHODS.DELETE_CONTACT,\n });\n });\n\n it('test resolveContacts function for a minimal contact with few details', () => {\n const contact = contactClient['resolveCloudContacts'](\n {userId: mockContactMinimum},\n mockSCIMMinListResponse.body\n );\n\n expect(contact).toEqual([\n {\n avatarURL: '',\n avatarUrlDomain: undefined,\n contactId: 'userId',\n contactType: 'CLOUD',\n department: undefined,\n displayName: undefined,\n emails: undefined,\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n firstName: undefined,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n lastName: undefined,\n manager: undefined,\n ownerId: 'ownerId',\n phoneNumbers: undefined,\n sipAddresses: undefined,\n resolved: true,\n },\n ]);\n });\n\n it(\"test resolveContacts function when contactsDataMap list doesn't match resolved list\", () => {\n const mockContact = {\n firstName: 'Jane',\n lastName: 'Doe',\n contactId: 'janeDoe',\n };\n\n const contact = contactClient['resolveCloudContacts'](\n {userId: mockContactMinimum, janeDoe: mockContact},\n mockSCIMMinListResponse.body\n );\n\n expect(contact).toEqual([\n {\n firstName: 'Jane',\n lastName: 'Doe',\n contactId: 'janeDoe',\n resolved: false,\n },\n {\n avatarURL: '',\n avatarUrlDomain: undefined,\n contactId: 'userId',\n contactType: 'CLOUD',\n department: undefined,\n displayName: undefined,\n emails: undefined,\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n firstName: undefined,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n lastName: undefined,\n manager: undefined,\n ownerId: 'ownerId',\n phoneNumbers: undefined,\n sipAddresses: undefined,\n resolved: true,\n },\n ]);\n });\n\n it('test resolveContacts function encountering an error', () => {\n const warnSpy = jest.spyOn(log, 'warn');\n\n const contact = contactClient['resolveCloudContacts'](\n {userId: mockContactMinimum},\n mockSCIMMinListResponse\n );\n\n expect(contact).toEqual(null);\n expect(warnSpy).toHaveBeenCalledWith('Error occurred while parsing resolved contacts', {\n file: CONTACTS_FILE,\n method: 'resolveCloudContacts',\n });\n });\n\n it('logs error for chunk when scimQuery API call fails in the loop for getContacts', async () => {\n const mockData = errorCodes[0];\n const respPayload = {\n statusCode: mockData.inputStatusCode,\n body: mockData.payloadData,\n };\n webex.request.mockResolvedValueOnce(respPayload).mockRejectedValueOnce({\n ...respPayload,\n statusCode: 503,\n message: FAILURE_MESSAGE,\n data: mockData.payloadData,\n });\n\n mockData.decryptTextList.forEach((text) => {\n webex.internal.encryption.decryptText.mockResolvedValueOnce(text);\n });\n\n const warnSpy = jest.spyOn(log, 'warn');\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n\n await contactClient.getContacts();\n\n expect(webex.request).toBeCalledTimes(2);\n expect(warnSpy).toBeCalledTimes(1);\n expect(warnSpy).toBeCalledWith('Error processing contact chunk 0-50', {\n file: 'Contacts',\n method: METHODS.GET_CONTACTS,\n });\n expect(infoSpy).toBeCalledWith(METHOD_START_MESSAGE, {\n file: CONTACTS_FILE,\n method: METHODS.GET_CONTACTS,\n });\n expect(logSpy).toBeCalledWith('Successfully fetched contacts and groups', {\n file: CONTACTS_FILE,\n method: METHODS.GET_CONTACTS,\n });\n });\n});\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.encryptedFields = exports.USERS = exports.SCIM_ID_FILTER = exports.OR = exports.GROUP_FILTER = exports.ENCRYPT_FILTER = exports.DEFAULT_GROUP_NAME = exports.CONTACT_FILTER = exports.CONTACTS_SCHEMA = exports.CONTACTS_FILE = void 0;
7
+ exports.encryptedFields = exports.USERS = exports.SCIM_ID_FILTER = exports.OR = exports.METHODS = exports.GROUP_FILTER = exports.ENCRYPT_FILTER = exports.DEFAULT_GROUP_NAME = exports.CONTACT_FILTER = exports.CONTACTS_SCHEMA = exports.CONTACTS_FILE = void 0;
8
8
  var CONTACTS_FILE = exports.CONTACTS_FILE = 'Contacts';
9
9
  var CONTACT_FILTER = exports.CONTACT_FILTER = 'contacts';
10
10
  var GROUP_FILTER = exports.GROUP_FILTER = 'groups';
@@ -27,4 +27,14 @@ var encryptedFields = exports.encryptedFields = /*#__PURE__*/function (encrypted
27
27
  encryptedFields["TITLE"] = "title";
28
28
  return encryptedFields;
29
29
  }({});
30
+ var METHODS = exports.METHODS = {
31
+ GET_CONTACTS: 'getContacts',
32
+ CREATE_NEW_ENCRYPTION_KEY_URL: 'createNewEncryptionKeyUrl',
33
+ FETCH_ENCRYPTION_KEY_URL: 'fetchEncryptionKeyUrl',
34
+ FETCH_DEFAULT_GROUP: 'fetchDefaultGroup',
35
+ CREATE_CONTACT_GROUP: 'createContactGroup',
36
+ DELETE_CONTACT_GROUP: 'deleteContactGroup',
37
+ CREATE_CONTACT: 'createContact',
38
+ DELETE_CONTACT: 'deleteContact'
39
+ };
30
40
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CONTACTS_FILE","exports","CONTACT_FILTER","GROUP_FILTER","ENCRYPT_FILTER","USERS","DEFAULT_GROUP_NAME","CONTACTS_SCHEMA","SCIM_ID_FILTER","OR","encryptedFields"],"sources":["constants.ts"],"sourcesContent":["export const CONTACTS_FILE = 'Contacts';\nexport const CONTACT_FILTER = 'contacts';\nexport const GROUP_FILTER = 'groups';\nexport const ENCRYPT_FILTER = 'encrypt';\nexport const USERS = 'Users';\nexport const DEFAULT_GROUP_NAME = 'Other contacts';\nexport const CONTACTS_SCHEMA = 'urn:cisco:codev:identity:contact:core:1.0';\nexport const SCIM_ID_FILTER = 'id eq';\nexport const OR = ' or ';\n\nexport enum encryptedFields {\n ADDRESS_INFO = 'addressInfo',\n AVATAR_URL = 'avatarURL',\n COMPANY = 'companyName',\n DISPLAY_NAME = 'displayName',\n EMAILS = 'emails',\n FIRST_NAME = 'firstName',\n LAST_NAME = 'lastName',\n PHONE_NUMBERS = 'phoneNumbers',\n SIP_ADDRESSES = 'sipAddresses',\n TITLE = 'title',\n}\n"],"mappings":";;;;;;;AAAO,IAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,UAAU;AAChC,IAAME,cAAc,GAAAD,OAAA,CAAAC,cAAA,GAAG,UAAU;AACjC,IAAMC,YAAY,GAAAF,OAAA,CAAAE,YAAA,GAAG,QAAQ;AAC7B,IAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG,SAAS;AAChC,IAAMC,KAAK,GAAAJ,OAAA,CAAAI,KAAA,GAAG,OAAO;AACrB,IAAMC,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAG,gBAAgB;AAC3C,IAAMC,eAAe,GAAAN,OAAA,CAAAM,eAAA,GAAG,2CAA2C;AACnE,IAAMC,cAAc,GAAAP,OAAA,CAAAO,cAAA,GAAG,OAAO;AAC9B,IAAMC,EAAE,GAAAR,OAAA,CAAAQ,EAAA,GAAG,MAAM;AAAC,IAEbC,eAAe,GAAAT,OAAA,CAAAS,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA"}
1
+ {"version":3,"names":["CONTACTS_FILE","exports","CONTACT_FILTER","GROUP_FILTER","ENCRYPT_FILTER","USERS","DEFAULT_GROUP_NAME","CONTACTS_SCHEMA","SCIM_ID_FILTER","OR","encryptedFields","METHODS","GET_CONTACTS","CREATE_NEW_ENCRYPTION_KEY_URL","FETCH_ENCRYPTION_KEY_URL","FETCH_DEFAULT_GROUP","CREATE_CONTACT_GROUP","DELETE_CONTACT_GROUP","CREATE_CONTACT","DELETE_CONTACT"],"sources":["constants.ts"],"sourcesContent":["export const CONTACTS_FILE = 'Contacts';\nexport const CONTACT_FILTER = 'contacts';\nexport const GROUP_FILTER = 'groups';\nexport const ENCRYPT_FILTER = 'encrypt';\nexport const USERS = 'Users';\nexport const DEFAULT_GROUP_NAME = 'Other contacts';\nexport const CONTACTS_SCHEMA = 'urn:cisco:codev:identity:contact:core:1.0';\nexport const SCIM_ID_FILTER = 'id eq';\nexport const OR = ' or ';\n\nexport enum encryptedFields {\n ADDRESS_INFO = 'addressInfo',\n AVATAR_URL = 'avatarURL',\n COMPANY = 'companyName',\n DISPLAY_NAME = 'displayName',\n EMAILS = 'emails',\n FIRST_NAME = 'firstName',\n LAST_NAME = 'lastName',\n PHONE_NUMBERS = 'phoneNumbers',\n SIP_ADDRESSES = 'sipAddresses',\n TITLE = 'title',\n}\n\nexport const METHODS = {\n GET_CONTACTS: 'getContacts',\n CREATE_NEW_ENCRYPTION_KEY_URL: 'createNewEncryptionKeyUrl',\n FETCH_ENCRYPTION_KEY_URL: 'fetchEncryptionKeyUrl',\n FETCH_DEFAULT_GROUP: 'fetchDefaultGroup',\n CREATE_CONTACT_GROUP: 'createContactGroup',\n DELETE_CONTACT_GROUP: 'deleteContactGroup',\n CREATE_CONTACT: 'createContact',\n DELETE_CONTACT: 'deleteContact',\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,UAAU;AAChC,IAAME,cAAc,GAAAD,OAAA,CAAAC,cAAA,GAAG,UAAU;AACjC,IAAMC,YAAY,GAAAF,OAAA,CAAAE,YAAA,GAAG,QAAQ;AAC7B,IAAMC,cAAc,GAAAH,OAAA,CAAAG,cAAA,GAAG,SAAS;AAChC,IAAMC,KAAK,GAAAJ,OAAA,CAAAI,KAAA,GAAG,OAAO;AACrB,IAAMC,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAG,gBAAgB;AAC3C,IAAMC,eAAe,GAAAN,OAAA,CAAAM,eAAA,GAAG,2CAA2C;AACnE,IAAMC,cAAc,GAAAP,OAAA,CAAAO,cAAA,GAAG,OAAO;AAC9B,IAAMC,EAAE,GAAAR,OAAA,CAAAQ,EAAA,GAAG,MAAM;AAAC,IAEbC,eAAe,GAAAT,OAAA,CAAAS,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAapB,IAAMC,OAAO,GAAAV,OAAA,CAAAU,OAAA,GAAG;EACrBC,YAAY,EAAE,aAAa;EAC3BC,6BAA6B,EAAE,2BAA2B;EAC1DC,wBAAwB,EAAE,uBAAuB;EACjDC,mBAAmB,EAAE,mBAAmB;EACxCC,oBAAoB,EAAE,oBAAoB;EAC1CC,oBAAoB,EAAE,oBAAoB;EAC1CC,cAAc,EAAE,eAAe;EAC/BC,cAAc,EAAE;AAClB,CAAC"}
@@ -14,12 +14,14 @@ var ERROR_LAYER = exports.ERROR_LAYER = /*#__PURE__*/function (ERROR_LAYER) {
14
14
  var ERROR_TYPE = exports.ERROR_TYPE = /*#__PURE__*/function (ERROR_TYPE) {
15
15
  ERROR_TYPE["CALL_ERROR"] = "call_error";
16
16
  ERROR_TYPE["DEFAULT"] = "default_error";
17
+ ERROR_TYPE["BAD_REQUEST"] = "bad_request";
17
18
  ERROR_TYPE["FORBIDDEN_ERROR"] = "forbidden";
18
19
  ERROR_TYPE["NOT_FOUND"] = "not_found";
19
20
  ERROR_TYPE["REGISTRATION_ERROR"] = "registration_error";
20
21
  ERROR_TYPE["SERVICE_UNAVAILABLE"] = "service_unavailable";
21
22
  ERROR_TYPE["TIMEOUT"] = "timeout";
22
23
  ERROR_TYPE["TOKEN_ERROR"] = "token_error";
24
+ ERROR_TYPE["TOO_MANY_REQUESTS"] = "too_many_requests";
23
25
  ERROR_TYPE["SERVER_ERROR"] = "server_error";
24
26
  return ERROR_TYPE;
25
27
  }({});
@@ -1 +1 @@
1
- {"version":3,"names":["ERROR_LAYER","exports","ERROR_TYPE","ERROR_CODE","CALL_ERROR_CODE","DEVICE_ERROR_CODE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-interface */\nimport {CorrelationId, IMetaContext, RegistrationStatus} from '../common/types';\n\nexport type ErrorMessage = string;\n\nexport enum ERROR_LAYER {\n CALL_CONTROL = 'call_control',\n MEDIA = 'media',\n}\n\nexport enum ERROR_TYPE {\n CALL_ERROR = 'call_error',\n DEFAULT = 'default_error',\n FORBIDDEN_ERROR = 'forbidden',\n NOT_FOUND = 'not_found',\n REGISTRATION_ERROR = 'registration_error',\n SERVICE_UNAVAILABLE = 'service_unavailable',\n TIMEOUT = 'timeout',\n TOKEN_ERROR = 'token_error',\n SERVER_ERROR = 'server_error',\n}\n\nexport enum ERROR_CODE {\n UNAUTHORIZED = 401,\n FORBIDDEN = 403,\n DEVICE_NOT_FOUND = 404,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n SERVICE_UNAVAILABLE = 503,\n BAD_REQUEST = 400,\n REQUEST_TIMEOUT = 408,\n TOO_MANY_REQUESTS = 429,\n}\n\nexport enum CALL_ERROR_CODE {\n INVALID_STATUS_UPDATE = 111,\n DEVICE_NOT_REGISTERED = 112,\n CALL_NOT_FOUND = 113,\n ERROR_PROCESSING = 114,\n USER_BUSY = 115,\n PARSING_ERROR = 116,\n TIMEOUT_ERROR = 117,\n NOT_ACCEPTABLE = 118,\n CALL_REJECTED = 119,\n NOT_AVAILABLE = 120,\n}\n\nexport enum DEVICE_ERROR_CODE {\n DEVICE_LIMIT_EXCEEDED = 101,\n DEVICE_CREATION_DISABLED = 102,\n DEVICE_CREATION_FAILED = 103,\n}\n\nexport interface ErrorContext extends IMetaContext {}\n\nexport type ErrorObject = {\n message: ErrorMessage;\n type: ERROR_TYPE;\n context: ErrorContext;\n};\n\nexport interface LineErrorObject extends ErrorObject {\n status: RegistrationStatus;\n}\n\nexport interface CallErrorObject extends ErrorObject {\n correlationId: CorrelationId;\n errorLayer: ERROR_LAYER;\n}\n"],"mappings":";;;;;;;AAAA;AAAA,IAKYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAKXE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAYVC,UAAU,GAAAF,OAAA,CAAAE,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAYVC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAafC,iBAAiB,GAAAJ,OAAA,CAAAI,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA"}
1
+ {"version":3,"names":["ERROR_LAYER","exports","ERROR_TYPE","ERROR_CODE","CALL_ERROR_CODE","DEVICE_ERROR_CODE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-interface */\nimport {CorrelationId, IMetaContext, RegistrationStatus} from '../common/types';\n\nexport type ErrorMessage = string;\n\nexport enum ERROR_LAYER {\n CALL_CONTROL = 'call_control',\n MEDIA = 'media',\n}\n\nexport enum ERROR_TYPE {\n CALL_ERROR = 'call_error',\n DEFAULT = 'default_error',\n BAD_REQUEST = 'bad_request',\n FORBIDDEN_ERROR = 'forbidden',\n NOT_FOUND = 'not_found',\n REGISTRATION_ERROR = 'registration_error',\n SERVICE_UNAVAILABLE = 'service_unavailable',\n TIMEOUT = 'timeout',\n TOKEN_ERROR = 'token_error',\n TOO_MANY_REQUESTS = 'too_many_requests',\n SERVER_ERROR = 'server_error',\n}\n\nexport enum ERROR_CODE {\n UNAUTHORIZED = 401,\n FORBIDDEN = 403,\n DEVICE_NOT_FOUND = 404,\n INTERNAL_SERVER_ERROR = 500,\n NOT_IMPLEMENTED = 501,\n SERVICE_UNAVAILABLE = 503,\n BAD_REQUEST = 400,\n REQUEST_TIMEOUT = 408,\n TOO_MANY_REQUESTS = 429,\n}\n\nexport enum CALL_ERROR_CODE {\n INVALID_STATUS_UPDATE = 111,\n DEVICE_NOT_REGISTERED = 112,\n CALL_NOT_FOUND = 113,\n ERROR_PROCESSING = 114,\n USER_BUSY = 115,\n PARSING_ERROR = 116,\n TIMEOUT_ERROR = 117,\n NOT_ACCEPTABLE = 118,\n CALL_REJECTED = 119,\n NOT_AVAILABLE = 120,\n}\n\nexport enum DEVICE_ERROR_CODE {\n DEVICE_LIMIT_EXCEEDED = 101,\n DEVICE_CREATION_DISABLED = 102,\n DEVICE_CREATION_FAILED = 103,\n}\n\nexport interface ErrorContext extends IMetaContext {}\n\nexport type ErrorObject = {\n message: ErrorMessage;\n type: ERROR_TYPE;\n context: ErrorContext;\n};\n\nexport interface LineErrorObject extends ErrorObject {\n status: RegistrationStatus;\n}\n\nexport interface CallErrorObject extends ErrorObject {\n correlationId: CorrelationId;\n errorLayer: ERROR_LAYER;\n}\n"],"mappings":";;;;;;;AAAA;AAAA,IAKYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAKXE,UAAU,GAAAD,OAAA,CAAAC,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAcVC,UAAU,GAAAF,OAAA,CAAAE,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAYVC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAfA,eAAe,CAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAafC,iBAAiB,GAAAJ,OAAA,CAAAI,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA"}
@@ -43,7 +43,7 @@ var Eventing = exports.Eventing = /*#__PURE__*/function (_ref) {
43
43
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
44
44
  args[_key - 1] = arguments[_key];
45
45
  }
46
- _Logger.default.log("".concat(timestamp, " ").concat(_types.LOG_PREFIX.EVENT, ": ").concat(event.toString(), " - event emitted with parameters -> ").concat(args, " = "), {
46
+ _Logger.default.info("".concat(timestamp, " ").concat(_types.LOG_PREFIX.EVENT, ": ").concat(event.toString(), " - event emitted with parameters -> ").concat(args, " = "), {
47
47
  file: 'Events/impl/index.ts',
48
48
  method: 'emit'
49
49
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_events","_interopRequireDefault","require","_Logger","_types","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Eventing","exports","_ref","_inherits2","_super","_classCallCheck2","_createClass2","key","value","emit","event","_get2","timestamp","Date","toUTCString","_len","length","args","Array","_key","Logger","log","concat","LOG_PREFIX","EVENT","toString","file","method","_get3","on","listener","off","EventEmitter"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport EventEmitter from 'events';\nimport TypedEmitter, {EventMap} from 'typed-emitter'; // eslint-disable-line import/no-extraneous-dependencies\nimport Logger from '../../Logger';\nimport {LOG_PREFIX} from '../../Logger/types';\n\n/**\n *\n */\nexport class Eventing<T extends EventMap> extends (EventEmitter as {\n new <T extends EventMap>(): TypedEmitter<T>;\n})<T> {\n /**\n * @event\n *\n * @param event - Event that is going ot be emitted.\n * @param args - Parameters that are emitted with the event.\n */\n emit<E extends keyof T>(event: E, ...args: Parameters<T[E]>): boolean {\n const timestamp = new Date().toUTCString();\n\n Logger.log(\n `${timestamp} ${\n LOG_PREFIX.EVENT\n }: ${event.toString()} - event emitted with parameters -> ${args} = `,\n {\n file: 'Events/impl/index.ts',\n method: 'emit',\n }\n );\n\n return super.emit(event, ...args);\n }\n\n /**\n * .\n * @event\n *\n * @param event - Event to listen to.\n * @param listener - Callback for event.\n */\n on<E extends keyof T>(event: E, listener: T[E]): this {\n return super.on(event, listener);\n }\n\n /**\n * .\n * @event\n *\n * @param event - Event to remove listener on.\n * @param listener - Callback for event.\n */\n off<E extends keyof T>(event: E, listener: T[E]): this {\n return super.off(event, listener);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_events","_interopRequireDefault","require","_Logger","_types","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Eventing","exports","_ref","_inherits2","_super","_classCallCheck2","_createClass2","key","value","emit","event","_get2","timestamp","Date","toUTCString","_len","length","args","Array","_key","Logger","info","concat","LOG_PREFIX","EVENT","toString","file","method","_get3","on","listener","off","EventEmitter"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport EventEmitter from 'events';\nimport TypedEmitter, {EventMap} from 'typed-emitter'; // eslint-disable-line import/no-extraneous-dependencies\nimport Logger from '../../Logger';\nimport {LOG_PREFIX} from '../../Logger/types';\n\n/**\n *\n */\nexport class Eventing<T extends EventMap> extends (EventEmitter as {\n new <T extends EventMap>(): TypedEmitter<T>;\n})<T> {\n /**\n * @event\n *\n * @param event - Event that is going ot be emitted.\n * @param args - Parameters that are emitted with the event.\n */\n emit<E extends keyof T>(event: E, ...args: Parameters<T[E]>): boolean {\n const timestamp = new Date().toUTCString();\n\n Logger.info(\n `${timestamp} ${\n LOG_PREFIX.EVENT\n }: ${event.toString()} - event emitted with parameters -> ${args} = `,\n {\n file: 'Events/impl/index.ts',\n method: 'emit',\n }\n );\n\n return super.emit(event, ...args);\n }\n\n /**\n * .\n * @event\n *\n * @param event - Event to listen to.\n * @param listener - Callback for event.\n */\n on<E extends keyof T>(event: E, listener: T[E]): this {\n return super.on(event, listener);\n }\n\n /**\n * .\n * @event\n *\n * @param event - Event to remove listener on.\n * @param listener - Callback for event.\n */\n off<E extends keyof T>(event: E, listener: T[E]): this {\n return super.off(event, listener);\n }\n}\n"],"mappings":"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"}