@webex/calling 3.11.0 → 3.12.0-llmrefactor.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/dist/CallHistory/CallHistory.js +596 -0
  2. package/dist/CallHistory/CallHistory.js.map +1 -0
  3. package/dist/CallHistory/CallHistory.test.js +916 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -0
  5. package/dist/CallHistory/callHistoryFixtures.js +650 -0
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
  7. package/dist/CallHistory/constants.js +38 -0
  8. package/dist/CallHistory/constants.js.map +1 -0
  9. package/dist/CallHistory/types.js +7 -0
  10. package/dist/CallHistory/types.js.map +1 -0
  11. package/dist/CallRecording/CallRecording.js +160 -0
  12. package/dist/CallRecording/CallRecording.js.map +1 -0
  13. package/dist/CallRecording/CallRecording.test.js +257 -0
  14. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  15. package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
  16. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  17. package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
  18. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  19. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  20. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  21. package/dist/CallRecording/constants.js +50 -0
  22. package/dist/CallRecording/constants.js.map +1 -0
  23. package/dist/CallRecording/types.js +137 -0
  24. package/dist/CallRecording/types.js.map +1 -0
  25. package/dist/CallRecording/utils.js +42 -0
  26. package/dist/CallRecording/utils.js.map +1 -0
  27. package/dist/CallRecording/utils.test.js +97 -0
  28. package/dist/CallRecording/utils.test.js.map +1 -0
  29. package/dist/CallSettings/CallSettings.js +311 -0
  30. package/dist/CallSettings/CallSettings.js.map +1 -0
  31. package/dist/CallSettings/CallSettings.test.js +122 -0
  32. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  33. package/dist/CallSettings/UcmBackendConnector.js +308 -0
  34. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  35. package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
  36. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  37. package/dist/CallSettings/WxCallBackendConnector.js +597 -0
  38. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  39. package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
  40. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  41. package/dist/CallSettings/constants.js +31 -0
  42. package/dist/CallSettings/constants.js.map +1 -0
  43. package/dist/CallSettings/testFixtures.js +68 -0
  44. package/dist/CallSettings/testFixtures.js.map +1 -0
  45. package/dist/CallSettings/types.js +7 -0
  46. package/dist/CallSettings/types.js.map +1 -0
  47. package/dist/CallingClient/CallingClient.js +1349 -0
  48. package/dist/CallingClient/CallingClient.js.map +1 -0
  49. package/dist/CallingClient/CallingClient.test.js +1625 -0
  50. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  51. package/dist/CallingClient/callRecordFixtures.js +101 -0
  52. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  53. package/dist/CallingClient/calling/CallerId/index.js +275 -0
  54. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  55. package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
  56. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  57. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  58. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  59. package/dist/CallingClient/calling/call.js +3666 -0
  60. package/dist/CallingClient/calling/call.js.map +1 -0
  61. package/dist/CallingClient/calling/call.test.js +3970 -0
  62. package/dist/CallingClient/calling/call.test.js.map +1 -0
  63. package/dist/CallingClient/calling/callManager.js +531 -0
  64. package/dist/CallingClient/calling/callManager.js.map +1 -0
  65. package/dist/CallingClient/calling/callManager.test.js +881 -0
  66. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  67. package/dist/CallingClient/calling/index.js +30 -0
  68. package/dist/CallingClient/calling/index.js.map +1 -0
  69. package/dist/CallingClient/calling/types.js +79 -0
  70. package/dist/CallingClient/calling/types.js.map +1 -0
  71. package/dist/CallingClient/callingClientFixtures.js +143 -0
  72. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  73. package/dist/CallingClient/constants.js +272 -0
  74. package/dist/CallingClient/constants.js.map +1 -0
  75. package/dist/CallingClient/line/index.js +339 -0
  76. package/dist/CallingClient/line/index.js.map +1 -0
  77. package/dist/CallingClient/line/line.test.js +379 -0
  78. package/dist/CallingClient/line/line.test.js.map +1 -0
  79. package/dist/CallingClient/line/types.js +21 -0
  80. package/dist/CallingClient/line/types.js.map +1 -0
  81. package/dist/CallingClient/registration/index.js +19 -0
  82. package/dist/CallingClient/registration/index.js.map +1 -0
  83. package/dist/CallingClient/registration/register.js +2079 -0
  84. package/dist/CallingClient/registration/register.js.map +1 -0
  85. package/dist/CallingClient/registration/register.test.js +2476 -0
  86. package/dist/CallingClient/registration/register.test.js.map +1 -0
  87. package/dist/CallingClient/registration/registerFixtures.js +36 -0
  88. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  89. package/dist/CallingClient/registration/types.js +33 -0
  90. package/dist/CallingClient/registration/types.js.map +1 -0
  91. package/dist/CallingClient/registration/webWorker.js +67 -0
  92. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  93. package/dist/CallingClient/registration/webWorker.test.js +189 -0
  94. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  95. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  96. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  97. package/dist/CallingClient/types.js +14 -0
  98. package/dist/CallingClient/types.js.map +1 -0
  99. package/dist/CallingClient/utils/constants.js +58 -0
  100. package/dist/CallingClient/utils/constants.js.map +1 -0
  101. package/dist/CallingClient/utils/index.js +63 -0
  102. package/dist/CallingClient/utils/index.js.map +1 -0
  103. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  104. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  105. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  106. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  107. package/dist/CallingClient/utils/request.js +435 -0
  108. package/dist/CallingClient/utils/request.js.map +1 -0
  109. package/dist/CallingClient/utils/request.test.js +999 -0
  110. package/dist/CallingClient/utils/request.test.js.map +1 -0
  111. package/dist/CallingClient/utils/types.js +7 -0
  112. package/dist/CallingClient/utils/types.js.map +1 -0
  113. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  114. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  115. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  116. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  117. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  118. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  119. package/dist/Contacts/ContactsClient.js +1208 -0
  120. package/dist/Contacts/ContactsClient.js.map +1 -0
  121. package/dist/Contacts/ContactsClient.test.js +999 -0
  122. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  123. package/dist/Contacts/constants.js +40 -0
  124. package/dist/Contacts/constants.js.map +1 -0
  125. package/dist/Contacts/contactFixtures.js +430 -0
  126. package/dist/Contacts/contactFixtures.js.map +1 -0
  127. package/dist/Contacts/types.js +43 -0
  128. package/dist/Contacts/types.js.map +1 -0
  129. package/dist/Errors/catalog/CallError.js +89 -0
  130. package/dist/Errors/catalog/CallError.js.map +1 -0
  131. package/dist/Errors/catalog/CallingDeviceError.js +83 -0
  132. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  133. package/dist/Errors/catalog/ExtendedError.js +42 -0
  134. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  135. package/dist/Errors/catalog/LineError.js +85 -0
  136. package/dist/Errors/catalog/LineError.js.map +1 -0
  137. package/dist/Errors/index.js +28 -0
  138. package/dist/Errors/index.js.map +1 -0
  139. package/dist/Errors/types.js +61 -0
  140. package/dist/Errors/types.js.map +1 -0
  141. package/dist/Events/impl/index.js +79 -0
  142. package/dist/Events/impl/index.js.map +1 -0
  143. package/dist/Events/types.js +134 -0
  144. package/dist/Events/types.js.map +1 -0
  145. package/dist/Logger/index.js +228 -0
  146. package/dist/Logger/index.js.map +1 -0
  147. package/dist/Logger/index.test.js +87 -0
  148. package/dist/Logger/index.test.js.map +1 -0
  149. package/dist/Logger/types.js +34 -0
  150. package/dist/Logger/types.js.map +1 -0
  151. package/dist/Metrics/index.js +595 -0
  152. package/dist/Metrics/index.js.map +1 -0
  153. package/dist/Metrics/index.test.js +819 -0
  154. package/dist/Metrics/index.test.js.map +1 -0
  155. package/dist/Metrics/types.js +82 -0
  156. package/dist/Metrics/types.js.map +1 -0
  157. package/dist/SDKConnector/index.js +102 -0
  158. package/dist/SDKConnector/index.js.map +1 -0
  159. package/dist/SDKConnector/index.test.js +9 -0
  160. package/dist/SDKConnector/index.test.js.map +1 -0
  161. package/dist/SDKConnector/types.js +7 -0
  162. package/dist/SDKConnector/types.js.map +1 -0
  163. package/dist/SDKConnector/utils.js +39 -0
  164. package/dist/SDKConnector/utils.js.map +1 -0
  165. package/dist/SDKConnector/utils.test.js +9 -0
  166. package/dist/SDKConnector/utils.test.js.map +1 -0
  167. package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
  168. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  169. package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
  170. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  171. package/dist/Voicemail/UcmBackendConnector.js +628 -0
  172. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  173. package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
  174. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  175. package/dist/Voicemail/Voicemail.js +472 -0
  176. package/dist/Voicemail/Voicemail.js.map +1 -0
  177. package/dist/Voicemail/Voicemail.test.js +391 -0
  178. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  179. package/dist/Voicemail/WxCallBackendConnector.js +657 -0
  180. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  181. package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
  182. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  183. package/dist/Voicemail/constants.js +61 -0
  184. package/dist/Voicemail/constants.js.map +1 -0
  185. package/dist/Voicemail/types.js +7 -0
  186. package/dist/Voicemail/types.js.map +1 -0
  187. package/dist/Voicemail/voicemailFixture.js +524 -0
  188. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  189. package/dist/api.js +213 -0
  190. package/dist/api.js.map +1 -0
  191. package/dist/common/Utils.js +1624 -0
  192. package/dist/common/Utils.js.map +1 -0
  193. package/dist/common/Utils.test.js +2225 -0
  194. package/dist/common/Utils.test.js.map +1 -0
  195. package/dist/common/constants.js +62 -0
  196. package/dist/common/constants.js.map +1 -0
  197. package/dist/common/index.js +19 -0
  198. package/dist/common/index.js.map +1 -0
  199. package/dist/common/testUtil.js +988 -0
  200. package/dist/common/testUtil.js.map +1 -0
  201. package/dist/common/types.js +78 -0
  202. package/dist/common/types.js.map +1 -0
  203. package/dist/index.js +452 -0
  204. package/dist/index.js.map +1 -0
  205. package/dist/mobius-socket/config.js +24 -0
  206. package/dist/mobius-socket/config.js.map +1 -0
  207. package/dist/mobius-socket/errors.js +143 -0
  208. package/dist/mobius-socket/errors.js.map +1 -0
  209. package/dist/mobius-socket/errors.test.js +20 -0
  210. package/dist/mobius-socket/errors.test.js.map +1 -0
  211. package/dist/mobius-socket/index.js +57 -0
  212. package/dist/mobius-socket/index.js.map +1 -0
  213. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  214. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  215. package/dist/mobius-socket/mobius-socket.js +849 -0
  216. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  217. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  218. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  219. package/dist/mobius-socket/socket/constants.js +55 -0
  220. package/dist/mobius-socket/socket/constants.js.map +1 -0
  221. package/dist/mobius-socket/socket/index.js +15 -0
  222. package/dist/mobius-socket/socket/index.js.map +1 -0
  223. package/dist/mobius-socket/socket/socket-base.js +604 -0
  224. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  225. package/dist/mobius-socket/socket/socket.js +19 -0
  226. package/dist/mobius-socket/socket/socket.js.map +1 -0
  227. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  228. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  229. package/dist/mobius-socket/socket/types.js +7 -0
  230. package/dist/mobius-socket/socket/types.js.map +1 -0
  231. package/dist/mobius-socket/socket.test.js +727 -0
  232. package/dist/mobius-socket/socket.test.js.map +1 -0
  233. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  234. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  235. package/dist/mobius-socket/test/promise-tick.js +28 -0
  236. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  237. package/dist/mobius-socket/types.js +7 -0
  238. package/dist/mobius-socket/types.js.map +1 -0
  239. package/dist/module/CallHistory/CallHistory.js +28 -17
  240. package/dist/module/CallRecording/CallRecording.js +56 -0
  241. package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
  242. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  243. package/dist/module/CallRecording/constants.js +28 -0
  244. package/dist/module/CallRecording/types.js +19 -0
  245. package/dist/module/CallRecording/utils.js +14 -0
  246. package/dist/module/CallingClient/CallingClient.js +166 -8
  247. package/dist/module/CallingClient/calling/call.js +201 -68
  248. package/dist/module/CallingClient/calling/callManager.js +51 -11
  249. package/dist/module/CallingClient/calling/types.js +2 -0
  250. package/dist/module/CallingClient/constants.js +29 -0
  251. package/dist/module/CallingClient/line/index.js +4 -2
  252. package/dist/module/CallingClient/registration/register.js +274 -64
  253. package/dist/module/CallingClient/registration/types.js +5 -1
  254. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  255. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  256. package/dist/module/CallingClient/utils/constants.js +36 -0
  257. package/dist/module/CallingClient/utils/index.js +5 -0
  258. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  259. package/dist/module/CallingClient/utils/request.js +211 -0
  260. package/dist/module/CallingClient/utils/types.js +1 -0
  261. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  262. package/dist/module/Contacts/ContactsClient.js +1 -1
  263. package/dist/module/Errors/types.js +2 -0
  264. package/dist/module/Events/types.js +23 -10
  265. package/dist/module/Metrics/index.js +48 -1
  266. package/dist/module/Metrics/types.js +18 -0
  267. package/dist/module/api.js +3 -2
  268. package/dist/module/common/Utils.js +85 -22
  269. package/dist/module/common/testUtil.js +6 -1
  270. package/dist/module/common/types.js +3 -0
  271. package/dist/module/index.js +7 -3
  272. package/dist/module/mobius-socket/config.js +15 -0
  273. package/dist/module/mobius-socket/errors.js +58 -0
  274. package/dist/module/mobius-socket/index.js +24 -0
  275. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  276. package/dist/module/mobius-socket/socket/constants.js +26 -0
  277. package/dist/module/mobius-socket/socket/index.js +4 -0
  278. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  279. package/dist/module/mobius-socket/socket/socket.js +9 -0
  280. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  281. package/dist/module/mobius-socket/socket/types.js +1 -0
  282. package/dist/module/mobius-socket/types.js +1 -0
  283. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  284. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  285. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  286. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  287. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  288. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  289. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  290. package/dist/types/CallRecording/constants.d.ts +29 -0
  291. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  292. package/dist/types/CallRecording/types.d.ts +176 -0
  293. package/dist/types/CallRecording/types.d.ts.map +1 -0
  294. package/dist/types/CallRecording/utils.d.ts +3 -0
  295. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  296. package/dist/types/CallingClient/CallingClient.d.ts +10 -1
  297. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  298. package/dist/types/CallingClient/calling/call.d.ts +17 -3
  299. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  300. package/dist/types/CallingClient/calling/callManager.d.ts +8 -4
  301. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  302. package/dist/types/CallingClient/calling/types.d.ts +38 -9
  303. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  304. package/dist/types/CallingClient/constants.d.ts +29 -0
  305. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  306. package/dist/types/CallingClient/line/index.d.ts +1 -1
  307. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  308. package/dist/types/CallingClient/registration/register.d.ts +10 -2
  309. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  310. package/dist/types/CallingClient/registration/types.d.ts +29 -3
  311. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  312. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  313. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  314. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  315. package/dist/types/CallingClient/types.d.ts +6 -3
  316. package/dist/types/CallingClient/types.d.ts.map +1 -1
  317. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  318. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  319. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  320. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  321. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  322. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  323. package/dist/types/CallingClient/utils/request.d.ts +28 -0
  324. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  325. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  326. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  327. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  328. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  329. package/dist/types/Errors/types.d.ts +2 -0
  330. package/dist/types/Errors/types.d.ts.map +1 -1
  331. package/dist/types/Events/types.d.ts +80 -16
  332. package/dist/types/Events/types.d.ts.map +1 -1
  333. package/dist/types/Metrics/index.d.ts.map +1 -1
  334. package/dist/types/Metrics/types.d.ts +19 -2
  335. package/dist/types/Metrics/types.d.ts.map +1 -1
  336. package/dist/types/SDKConnector/types.d.ts +39 -12
  337. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  338. package/dist/types/api.d.ts +6 -4
  339. package/dist/types/api.d.ts.map +1 -1
  340. package/dist/types/common/Utils.d.ts +9 -4
  341. package/dist/types/common/Utils.d.ts.map +1 -1
  342. package/dist/types/common/testUtil.d.ts +5 -1
  343. package/dist/types/common/testUtil.d.ts.map +1 -1
  344. package/dist/types/common/types.d.ts +9 -1
  345. package/dist/types/common/types.d.ts.map +1 -1
  346. package/dist/types/index.d.ts +9 -4
  347. package/dist/types/index.d.ts.map +1 -1
  348. package/dist/types/mobius-socket/config.d.ts +17 -0
  349. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  350. package/dist/types/mobius-socket/errors.d.ts +32 -0
  351. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  352. package/dist/types/mobius-socket/index.d.ts +14 -0
  353. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  354. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  355. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  356. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  357. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  358. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  359. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  360. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  361. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  362. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  363. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  364. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  365. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  366. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  367. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  368. package/dist/types/mobius-socket/types.d.ts +21 -0
  369. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  370. package/package.json +21 -5
  371. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  372. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -0,0 +1,999 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
7
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
8
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
9
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
10
+ var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
11
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
15
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
16
+ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
17
+ var _types = require("../common/types");
18
+ var _testUtil = require("../common/testUtil");
19
+ var _types2 = require("../Logger/types");
20
+ var _ContactsClient = require("./ContactsClient");
21
+ var _constants = require("../common/constants");
22
+ var _Logger = _interopRequireDefault(require("../Logger"));
23
+ var _constants2 = require("./constants");
24
+ var utils = _interopRequireWildcard(require("../common/Utils"));
25
+ var _constants3 = require("../CallingClient/constants");
26
+ var _contactFixtures = require("./contactFixtures");
27
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
28
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
30
+ describe('ContactClient Tests', function () {
31
+ var webex = (0, _testUtil.getTestUtilsWebex)();
32
+ var contactClient;
33
+
34
+ // eslint-disable-next-line no-underscore-dangle
35
+ var contactServiceUrl = "".concat(webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER);
36
+ var scimUrl = "".concat(_constants.WEBEX_API_BTS, "/").concat(_constants.IDENTITY_ENDPOINT_RESOURCE, "/").concat(_constants.SCIM_ENDPOINT_RESOURCE, "/").concat(webex.internal.device.orgId, "/").concat(_constants.SCIM_USER_FILTER, "id%20eq%20%22801bb994-343b-4f6b-97ae-d13c91d4b877%22");
37
+ // eslint-disable-next-line no-underscore-dangle
38
+ var contactServiceGroupUrl = "".concat(webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER);
39
+ var serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');
40
+ var uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();
41
+ var failureResponsePayload = {
42
+ statusCode: 503,
43
+ body: {}
44
+ };
45
+ var mockGroupResponse = _contactFixtures.mockContactResponseBodyOne.groups[0];
46
+ beforeEach(function () {
47
+ contactClient = (0, _ContactsClient.createContactsClient)(webex, {
48
+ level: _types2.LOGGER.INFO
49
+ });
50
+ expect(contactClient).toBeTruthy();
51
+ expect(contactClient.getSDKConnector().getWebex()).toBeTruthy();
52
+
53
+ // Set up log spies for each test
54
+ jest.spyOn(_Logger.default, 'info');
55
+ jest.spyOn(_Logger.default, 'log');
56
+ jest.spyOn(_Logger.default, 'warn');
57
+ jest.spyOn(_Logger.default, 'error');
58
+ });
59
+ afterEach(function () {
60
+ webex.request.mockClear();
61
+ jest.clearAllMocks();
62
+ });
63
+
64
+ /**
65
+ * TestCase inputs
66
+ * name: TestCase name
67
+ * payloadData: Response body
68
+ * inputStatusCode: Status code received in response
69
+ * expectedData: Expected data field in ContactResponse after processing
70
+ * expectedMessage: Expected message field in ContactResponse after processing
71
+ * expectedStatusCode: Expected status code field in ContactResponse after processing
72
+ * decryptTextList: Array of decrypted contact list.
73
+ */
74
+ var errorCodes = [{
75
+ name: 'Success case 1: fetch contacts using get contacts api, custom and cloud contact present',
76
+ payloadData: _contactFixtures.mockContactResponseBodyOne,
77
+ inputStatusCode: 200,
78
+ expectedData: {
79
+ contacts: _contactFixtures.mockContactListOne,
80
+ groups: _contactFixtures.mockContactGroupListOne
81
+ },
82
+ expectedMessage: _constants.SUCCESS_MESSAGE,
83
+ expectedStatusCode: 200,
84
+ decryptTextList: [_contactFixtures.mockCity, _contactFixtures.mockCountry, _contactFixtures.mockState, _contactFixtures.mockStreet, _contactFixtures.mockZipCode, _contactFixtures.mockAvatarURL, _contactFixtures.mockCompany, _contactFixtures.mockDisplayNameOne, _contactFixtures.mockEmail, _contactFixtures.mockFirstName, _contactFixtures.mockLastName, _contactFixtures.mockNumber1, _contactFixtures.mockNumber2, _contactFixtures.mockSipAddress, _contactFixtures.mockTitle, _contactFixtures.mockNumber2, _contactFixtures.mockSipAddress, _contactFixtures.mockGroupName],
85
+ cloudContactPresent: true,
86
+ scimResponse: _contactFixtures.mockSCIMListResponse
87
+ }, {
88
+ name: 'Success case 2: fetch contacts using get contacts api, single custom contact with mandatory details present',
89
+ payloadData: _contactFixtures.mockContactResponseBodyTwo,
90
+ inputStatusCode: 200,
91
+ expectedData: {
92
+ contacts: _contactFixtures.mockContactListTwo,
93
+ groups: _contactFixtures.mockContactGroupListTwo
94
+ },
95
+ expectedMessage: _constants.SUCCESS_MESSAGE,
96
+ expectedStatusCode: 200,
97
+ decryptTextList: [_contactFixtures.mockDisplayNameTwo, _contactFixtures.mockGroupName]
98
+ }, {
99
+ name: 'Success case 3: fetch contacts using get contacts api, no contacts returned',
100
+ payloadData: _contactFixtures.mockContactResponseBodyThird,
101
+ inputStatusCode: 200,
102
+ expectedData: {
103
+ contacts: [],
104
+ groups: []
105
+ },
106
+ expectedMessage: _constants.SUCCESS_MESSAGE,
107
+ expectedStatusCode: 200,
108
+ decryptTextList: []
109
+ }, {
110
+ name: 'Failed case: 200 OK with no response body',
111
+ payloadData: undefined,
112
+ inputStatusCode: 200,
113
+ expectedData: {
114
+ error: '422 Exception has occurred'
115
+ },
116
+ expectedMessage: _constants.FAILURE_MESSAGE,
117
+ expectedStatusCode: 422,
118
+ decryptTextList: []
119
+ }, {
120
+ name: 'Failed case 403: fetch contacts using get contacts api',
121
+ payloadData: {
122
+ error: '403 Forbidden'
123
+ },
124
+ inputStatusCode: 403,
125
+ expectedData: {
126
+ error: 'User request is forbidden'
127
+ },
128
+ expectedMessage: _constants.FAILURE_MESSAGE,
129
+ expectedStatusCode: 403,
130
+ decryptTextList: []
131
+ }, {
132
+ name: 'Failed case 408: fetch contacts using get contacts api',
133
+ payloadData: {
134
+ error: '408 Request Timeout'
135
+ },
136
+ inputStatusCode: 408,
137
+ expectedData: {
138
+ error: 'Request to the server timedout'
139
+ },
140
+ expectedMessage: _constants.FAILURE_MESSAGE,
141
+ expectedStatusCode: 408,
142
+ decryptTextList: []
143
+ }, {
144
+ name: 'Failed case 500: fetch contacts using get contacts api',
145
+ payloadData: {
146
+ error: '500 Internal Server Error'
147
+ },
148
+ inputStatusCode: 500,
149
+ expectedData: {
150
+ error: 'Internal server error occurred'
151
+ },
152
+ expectedMessage: _constants.FAILURE_MESSAGE,
153
+ expectedStatusCode: 500,
154
+ decryptTextList: []
155
+ }, {
156
+ name: 'Failed case 503: fetch contacts using get contacts api',
157
+ payloadData: {
158
+ error: '503 Service Unavailable'
159
+ },
160
+ inputStatusCode: 503,
161
+ expectedData: {
162
+ error: 'Unable to establish a connection with the server'
163
+ },
164
+ expectedMessage: _constants.FAILURE_MESSAGE,
165
+ expectedStatusCode: 503,
166
+ decryptTextList: []
167
+ }].map(function (stat) {
168
+ return (0, _assign.default)(stat, {
169
+ toString: function toString() {
170
+ /* eslint-disable dot-notation */
171
+ return this['name'];
172
+ }
173
+ });
174
+ });
175
+ it.each(errorCodes)('%s', /*#__PURE__*/function () {
176
+ var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(codeObj) {
177
+ var respPayload, contactsResponse;
178
+ return _regenerator.default.wrap(function (_context) {
179
+ while (1) switch (_context.prev = _context.next) {
180
+ case 0:
181
+ respPayload = {
182
+ statusCode: codeObj.inputStatusCode
183
+ };
184
+ if (codeObj.inputStatusCode === 200) {
185
+ respPayload['body'] = codeObj.payloadData;
186
+ webex.request.mockResolvedValueOnce(respPayload);
187
+ codeObj.decryptTextList.forEach(function (text) {
188
+ webex.internal.encryption.decryptText.mockResolvedValueOnce(text);
189
+ });
190
+ if (codeObj.scimResponse) {
191
+ webex.request.mockResolvedValueOnce(_contactFixtures.mockSCIMListResponse);
192
+ }
193
+ } else {
194
+ respPayload['message'] = _constants.FAILURE_MESSAGE;
195
+ respPayload['data'] = codeObj.payloadData;
196
+ webex.request.mockRejectedValueOnce(respPayload);
197
+ }
198
+ _context.next = 1;
199
+ return contactClient.getContacts();
200
+ case 1:
201
+ contactsResponse = _context.sent;
202
+ if (codeObj.inputStatusCode === 200) {
203
+ if (codeObj.cloudContactPresent) {
204
+ expect(webex.request).toBeCalledTimes(2);
205
+ } else {
206
+ expect(webex.request).toBeCalledTimes(1);
207
+ }
208
+ expect(webex.request).toHaveBeenNthCalledWith(1, {
209
+ uri: contactServiceUrl,
210
+ method: _types.HTTP_METHODS.GET
211
+ });
212
+ if (codeObj.cloudContactPresent) {
213
+ expect(webex.request).toHaveBeenNthCalledWith(2, {
214
+ uri: scimUrl,
215
+ method: _types.HTTP_METHODS.GET,
216
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants3.CISCO_DEVICE_URL, 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5'), 'spark-user-agent', 'webex-calling/beta')
217
+ });
218
+ }
219
+ expect(_Logger.default.info).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, {
220
+ file: _constants2.CONTACTS_CLIENT,
221
+ method: _constants2.METHODS.GET_CONTACTS
222
+ });
223
+ if (codeObj.payloadData) {
224
+ expect(_Logger.default.log).toHaveBeenCalledWith('Successfully fetched contacts and groups', {
225
+ file: _constants2.CONTACTS_CLIENT,
226
+ method: _constants2.METHODS.GET_CONTACTS
227
+ });
228
+ } else {
229
+ expect(_Logger.default.error).toHaveBeenCalled();
230
+ }
231
+ } else {
232
+ expect(webex.request).toBeCalledOnceWith({
233
+ uri: contactServiceUrl,
234
+ method: _types.HTTP_METHODS.GET
235
+ });
236
+ expect(_Logger.default.info).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, {
237
+ file: _constants2.CONTACTS_CLIENT,
238
+ method: _constants2.METHODS.GET_CONTACTS
239
+ });
240
+ expect(_Logger.default.error).toHaveBeenCalled();
241
+ }
242
+ expect(contactsResponse).toEqual({
243
+ data: expect.any(Object),
244
+ message: codeObj.expectedMessage,
245
+ statusCode: codeObj.expectedStatusCode
246
+ });
247
+ if (codeObj.expectedMessage === _constants.SUCCESS_MESSAGE) {
248
+ expect(serviceErrorCodeHandlerSpy).not.toBeCalled();
249
+ } else {
250
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(codeObj.payloadData ? respPayload : expect.any(Error), {
251
+ file: _constants2.CONTACTS_CLIENT,
252
+ method: _constants2.METHODS.GET_CONTACTS
253
+ });
254
+ }
255
+ case 2:
256
+ case "end":
257
+ return _context.stop();
258
+ }
259
+ }, _callee);
260
+ }));
261
+ return function (_x) {
262
+ return _ref.apply(this, arguments);
263
+ };
264
+ }());
265
+ it('create a contact group without encryptionKey', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
266
+ var _contactsResponse$dat;
267
+ var successResponsePayload, contactsResponse;
268
+ return _regenerator.default.wrap(function (_context2) {
269
+ while (1) switch (_context2.prev = _context2.next) {
270
+ case 0:
271
+ successResponsePayload = {
272
+ statusCode: 201,
273
+ body: mockGroupResponse
274
+ };
275
+ contactClient['groups'] = [];
276
+ contactClient['encryptionKeyUrl'] = '';
277
+ webex.request.mockResolvedValue(successResponsePayload);
278
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
279
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
280
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted Other').mockResolvedValueOnce('Encrypted Top');
281
+ _context2.next = 1;
282
+ return contactClient.createContactGroup('Top Contacts');
283
+ case 1:
284
+ contactsResponse = _context2.sent;
285
+ expect(contactsResponse.statusCode).toEqual(201);
286
+ expect((_contactsResponse$dat = contactsResponse.data.group) === null || _contactsResponse$dat === void 0 ? void 0 : _contactsResponse$dat.groupId).toBe(mockGroupResponse.groupId);
287
+ expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({
288
+ count: 1
289
+ });
290
+ expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({
291
+ keyUris: [_contactFixtures.mockKmsKey.uri]
292
+ });
293
+ expect(webex.request).toBeCalledTimes(2);
294
+ expect(webex.request).toHaveBeenNthCalledWith(1, {
295
+ uri: contactServiceGroupUrl,
296
+ method: 'POST',
297
+ body: {
298
+ displayName: 'Encrypted Other',
299
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
300
+ groupType: 'NORMAL',
301
+ schemas: 'urn:cisco:codev:identity:contact:core:1.0'
302
+ }
303
+ });
304
+ expect(webex.request).toHaveBeenNthCalledWith(2, {
305
+ uri: contactServiceGroupUrl,
306
+ method: 'POST',
307
+ body: {
308
+ displayName: 'Encrypted Top',
309
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
310
+ groupType: 'NORMAL',
311
+ schemas: 'urn:cisco:codev:identity:contact:core:1.0'
312
+ }
313
+ });
314
+ expect(contactClient['groups'].length).toEqual(2);
315
+ expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');
316
+ expect(_Logger.default.info).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with displayName: Top Contacts"), {
317
+ file: _constants2.CONTACTS_CLIENT,
318
+ method: _constants2.METHODS.CREATE_CONTACT_GROUP
319
+ });
320
+ expect(_Logger.default.info).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, {
321
+ file: _constants2.CONTACTS_CLIENT,
322
+ method: _constants2.METHODS.CREATE_NEW_ENCRYPTION_KEY_URL
323
+ });
324
+ expect(_Logger.default.info).toHaveBeenCalledWith('Requesting kms for a new KRO and key', {
325
+ file: _constants2.CONTACTS_CLIENT,
326
+ method: _constants2.METHODS.CREATE_NEW_ENCRYPTION_KEY_URL
327
+ });
328
+ expect(_Logger.default.log).toHaveBeenCalledWith("Creating a default group: ".concat(_constants2.DEFAULT_GROUP_NAME), {
329
+ file: _constants2.CONTACTS_CLIENT,
330
+ method: 'fetchEncryptionKeyUrl'
331
+ });
332
+ expect(_Logger.default.log).toHaveBeenCalledWith("Contact group Top Contacts successfully created", {
333
+ file: _constants2.CONTACTS_CLIENT,
334
+ method: _constants2.METHODS.CREATE_CONTACT_GROUP
335
+ });
336
+ case 2:
337
+ case "end":
338
+ return _context2.stop();
339
+ }
340
+ }, _callee2);
341
+ })));
342
+ it('create a contact group with existing key info', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
343
+ var _contactsResponse$dat2;
344
+ var successResponsePayload, infoSpy, contactsResponse;
345
+ return _regenerator.default.wrap(function (_context3) {
346
+ while (1) switch (_context3.prev = _context3.next) {
347
+ case 0:
348
+ successResponsePayload = {
349
+ statusCode: 201,
350
+ body: mockGroupResponse
351
+ };
352
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
353
+ webex.request.mockResolvedValue(successResponsePayload);
354
+ webex.internal.encryption.encryptText.mockResolvedValue('Encrypted Top Contacts');
355
+ infoSpy = jest.spyOn(_Logger.default, 'info');
356
+ _context3.next = 1;
357
+ return contactClient.createContactGroup('Top Contacts');
358
+ case 1:
359
+ contactsResponse = _context3.sent;
360
+ expect(contactsResponse.statusCode).toEqual(201);
361
+ expect((_contactsResponse$dat2 = contactsResponse.data.group) === null || _contactsResponse$dat2 === void 0 ? void 0 : _contactsResponse$dat2.groupId).toBe(mockGroupResponse.groupId);
362
+ expect(infoSpy).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with displayName: Top Contacts"), {
363
+ file: _constants2.CONTACTS_CLIENT,
364
+ method: _constants2.METHODS.CREATE_CONTACT_GROUP
365
+ });
366
+ expect(_Logger.default.log).toBeCalledWith("Contact group Top Contacts successfully created", {
367
+ file: _constants2.CONTACTS_CLIENT,
368
+ method: _constants2.METHODS.CREATE_CONTACT_GROUP
369
+ });
370
+ expect(infoSpy).not.toBeCalledWith(_constants.METHOD_START_MESSAGE, {
371
+ file: _constants2.CONTACTS_CLIENT,
372
+ method: _constants2.METHODS.CREATE_NEW_ENCRYPTION_KEY_URL
373
+ });
374
+ expect(webex.request).toBeCalledOnceWith({
375
+ uri: contactServiceGroupUrl,
376
+ method: _types.HTTP_METHODS.POST,
377
+ body: {
378
+ displayName: 'Encrypted Top Contacts',
379
+ encryptionKeyUrl: _contactFixtures.mockContactGroupListOne[0].encryptionKeyUrl,
380
+ groupType: 'NORMAL',
381
+ schemas: _constants2.CONTACTS_SCHEMA
382
+ }
383
+ });
384
+ expect(contactClient['groups'].length).toEqual(2);
385
+ expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');
386
+ case 2:
387
+ case "end":
388
+ return _context3.stop();
389
+ }
390
+ }, _callee3);
391
+ })));
392
+ it('create a contact group with same displayName', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
393
+ var logSpy, contactsResponse;
394
+ return _regenerator.default.wrap(function (_context4) {
395
+ while (1) switch (_context4.prev = _context4.next) {
396
+ case 0:
397
+ contactClient['groups'] = _contactFixtures.mockContactResponseBodyOne.groups;
398
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
399
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
400
+ logSpy = jest.spyOn(_Logger.default, 'warn');
401
+ _context4.next = 1;
402
+ return contactClient.createContactGroup(mockGroupResponse.displayName);
403
+ case 1:
404
+ contactsResponse = _context4.sent;
405
+ expect(webex.request).not.toBeCalled();
406
+ expect(contactsResponse.statusCode).toBe(400);
407
+ expect(logSpy).toBeCalledOnceWith("Group name ".concat(mockGroupResponse.displayName, " already exists."), {
408
+ file: _constants2.CONTACTS_CLIENT,
409
+ method: _constants2.METHODS.CREATE_CONTACT_GROUP
410
+ });
411
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with displayName: ").concat(mockGroupResponse.displayName), {
412
+ file: _constants2.CONTACTS_CLIENT,
413
+ method: _constants2.METHODS.CREATE_CONTACT_GROUP
414
+ });
415
+ expect(contactClient['groups']).toEqual(_contactFixtures.mockContactResponseBodyOne.groups);
416
+ case 2:
417
+ case "end":
418
+ return _context4.stop();
419
+ }
420
+ }, _callee4);
421
+ })));
422
+ it('create a contact group - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
423
+ var loggerContext, warnSpy, errorSpy, contactsResponse;
424
+ return _regenerator.default.wrap(function (_context5) {
425
+ while (1) switch (_context5.prev = _context5.next) {
426
+ case 0:
427
+ loggerContext = {
428
+ file: _constants2.CONTACTS_CLIENT,
429
+ method: 'createContactGroup'
430
+ };
431
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
432
+ webex.request.mockRejectedValue(failureResponsePayload);
433
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
434
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
435
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');
436
+ warnSpy = jest.spyOn(_Logger.default, 'warn');
437
+ errorSpy = jest.spyOn(_Logger.default, 'error');
438
+ _context5.next = 1;
439
+ return contactClient.createContactGroup('New group');
440
+ case 1:
441
+ contactsResponse = _context5.sent;
442
+ expect(contactsResponse.statusCode).toBe(503);
443
+ expect(webex.request).toBeCalledOnceWith({
444
+ uri: contactServiceGroupUrl,
445
+ method: _types.HTTP_METHODS.POST,
446
+ body: {
447
+ displayName: 'Encrypted group name',
448
+ encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',
449
+ groupType: 'NORMAL',
450
+ schemas: 'urn:cisco:codev:identity:contact:core:1.0'
451
+ }
452
+ });
453
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with displayName: New group"), loggerContext);
454
+ expect(warnSpy).toBeCalledTimes(1);
455
+ expect(warnSpy).toHaveBeenNthCalledWith(1, '503 Unable to establish a connection with the server', loggerContext);
456
+ expect(errorSpy).toBeCalledTimes(1);
457
+ expect(errorSpy).toHaveBeenNthCalledWith(1, "Unable to create contact group: ".concat((0, _stringify.default)(failureResponsePayload)), loggerContext);
458
+ expect(contactClient['groups']).toEqual(_contactFixtures.mockContactGroupListOne);
459
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);
460
+ case 2:
461
+ case "end":
462
+ return _context5.stop();
463
+ }
464
+ }, _callee5);
465
+ })));
466
+ it('delete a contact group - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
467
+ var loggerContext, warnSpy, errorSpy, contactsResponse;
468
+ return _regenerator.default.wrap(function (_context6) {
469
+ while (1) switch (_context6.prev = _context6.next) {
470
+ case 0:
471
+ loggerContext = {
472
+ file: _constants2.CONTACTS_CLIENT,
473
+ method: 'deleteContactGroup'
474
+ };
475
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
476
+ webex.request.mockRejectedValue(failureResponsePayload);
477
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
478
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
479
+ warnSpy = jest.spyOn(_Logger.default, 'warn');
480
+ errorSpy = jest.spyOn(_Logger.default, 'error');
481
+ _context6.next = 1;
482
+ return contactClient.deleteContactGroup(mockGroupResponse.groupId);
483
+ case 1:
484
+ contactsResponse = _context6.sent;
485
+ expect(contactsResponse.statusCode).toBe(503);
486
+ expect(webex.request).toBeCalledOnceWith({
487
+ method: _types.HTTP_METHODS.DELETE,
488
+ uri: "".concat(contactServiceGroupUrl, "/").concat(mockGroupResponse.groupId)
489
+ });
490
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with groupId: ").concat(mockGroupResponse.groupId), loggerContext);
491
+ expect(_Logger.default.info).toBeCalledWith("Deleting contact group: ".concat(mockGroupResponse.groupId), loggerContext);
492
+ expect(warnSpy).toBeCalledTimes(1);
493
+ expect(errorSpy).toBeCalledTimes(1);
494
+ expect(uploadLogsSpy).toBeCalledTimes(1);
495
+ expect(errorSpy).toHaveBeenNthCalledWith(1, "Unable to delete contact group ".concat(mockGroupResponse.groupId, ": ").concat((0, _stringify.default)(failureResponsePayload)), loggerContext);
496
+ expect(warnSpy).toHaveBeenNthCalledWith(1, '503 Unable to establish a connection with the server', loggerContext);
497
+ expect(contactClient['groups']).toEqual(_contactFixtures.mockContactGroupListOne);
498
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);
499
+ case 2:
500
+ case "end":
501
+ return _context6.stop();
502
+ }
503
+ }, _callee6);
504
+ })));
505
+ it('successful deletion of contact group', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
506
+ var successResponsePayload, response;
507
+ return _regenerator.default.wrap(function (_context7) {
508
+ while (1) switch (_context7.prev = _context7.next) {
509
+ case 0:
510
+ successResponsePayload = {
511
+ statusCode: 204
512
+ };
513
+ contactClient['groups'] = [_contactFixtures.mockContactGroupListOne[0]];
514
+ webex.request.mockResolvedValue(successResponsePayload);
515
+ _context7.next = 1;
516
+ return contactClient.deleteContactGroup(_contactFixtures.mockContactGroupListOne[0].groupId);
517
+ case 1:
518
+ response = _context7.sent;
519
+ expect(response.statusCode).toEqual(204);
520
+ expect(webex.request).toBeCalledOnceWith({
521
+ uri: "".concat(contactServiceGroupUrl, "/").concat(_contactFixtures.mockContactGroupListOne[0].groupId),
522
+ method: _types.HTTP_METHODS.DELETE
523
+ });
524
+ expect(contactClient['groups']).toEqual([]);
525
+ expect(_Logger.default.info).toBeCalledWith("Deleting contact group: ".concat(_contactFixtures.mockContactGroupListOne[0].groupId), {
526
+ file: _constants2.CONTACTS_CLIENT,
527
+ method: 'deleteContactGroup'
528
+ });
529
+ expect(_Logger.default.log).toBeCalledWith("Contact group ".concat(_contactFixtures.mockContactGroupListOne[0].groupId, " successfully deleted"), {
530
+ file: _constants2.CONTACTS_CLIENT,
531
+ method: 'deleteContactGroup'
532
+ });
533
+ case 2:
534
+ case "end":
535
+ return _context7.stop();
536
+ }
537
+ }, _callee7);
538
+ })));
539
+ it('create a contact with an existing group', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
540
+ var _res$data$contact, _result$data$contact;
541
+ var mockContactResponse, successResponsePayload, infoSpy, logSpy, contact, res, result;
542
+ return _regenerator.default.wrap(function (_context8) {
543
+ while (1) switch (_context8.prev = _context8.next) {
544
+ case 0:
545
+ mockContactResponse = _contactFixtures.mockContactResponseBodyTwo.contacts[0];
546
+ successResponsePayload = {
547
+ statusCode: 201,
548
+ body: mockContactResponse
549
+ };
550
+ webex.request.mockResolvedValue(successResponsePayload);
551
+ webex.internal.encryption.encryptText.mockResolvedValue('Encrypted contact name');
552
+ infoSpy = jest.spyOn(_Logger.default, 'info');
553
+ logSpy = jest.spyOn(_Logger.default, 'log');
554
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
555
+ contactClient['encryptionKeyUrl'] = _contactFixtures.mockContactGroupListOne[0].encryptionKeyUrl;
556
+ contact = _contactFixtures.mockContactListTwo.slice()[0];
557
+ contact.groups = [];
558
+ _context8.next = 1;
559
+ return contactClient.createContact(contact);
560
+ case 1:
561
+ res = _context8.sent;
562
+ expect(res.statusCode).toEqual(201);
563
+ expect((_res$data$contact = res.data.contact) === null || _res$data$contact === void 0 ? void 0 : _res$data$contact.contactId).toBe(mockContactResponse.contactId);
564
+ expect(infoSpy).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with contactType: ").concat(contact.contactType), {
565
+ file: _constants2.CONTACTS_CLIENT,
566
+ method: _constants2.METHODS.CREATE_CONTACT
567
+ });
568
+ expect(logSpy).toBeCalledWith("Contact successfully created", {
569
+ file: _constants2.CONTACTS_CLIENT,
570
+ method: _constants2.METHODS.CREATE_CONTACT
571
+ });
572
+ expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {
573
+ file: _constants2.CONTACTS_CLIENT,
574
+ method: 'createNewEncryptionKeyUrl'
575
+ });
576
+ expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {
577
+ file: _constants2.CONTACTS_CLIENT,
578
+ method: 'createNewEncryptionKeyUrl'
579
+ });
580
+ expect(infoSpy).not.toBeCalledWith("Creating a default group: ".concat(_constants2.DEFAULT_GROUP_NAME), {
581
+ file: _constants2.CONTACTS_CLIENT,
582
+ method: 'fetchEncryptionKeyUrl'
583
+ });
584
+ expect(webex.internal.encryption.encryptText).toBeCalledOnceWith(_contactFixtures.mockContactGroupListOne[0].encryptionKeyUrl, contact.displayName);
585
+ expect(webex.request).toBeCalledOnceWith({
586
+ body: _objectSpread(_objectSpread({}, contact), {}, {
587
+ displayName: 'Encrypted contact name',
588
+ groups: [_contactFixtures.mockContactGroupListOne[0].groupId],
589
+ schemas: _constants2.CONTACTS_SCHEMA
590
+ }),
591
+ uri: contactServiceUrl,
592
+ method: _types.HTTP_METHODS.POST
593
+ });
594
+ logSpy.mockClear();
595
+
596
+ /* for coverage */
597
+ _context8.next = 2;
598
+ return contactClient.createContact(contact);
599
+ case 2:
600
+ result = _context8.sent;
601
+ expect((_result$data$contact = result.data.contact) === null || _result$data$contact === void 0 ? void 0 : _result$data$contact.contactId).toBe(mockContactResponse.contactId);
602
+ expect(logSpy).not.toBeCalledWith("Creating a default group: ".concat(_constants2.DEFAULT_GROUP_NAME), {
603
+ file: _constants2.CONTACTS_CLIENT,
604
+ method: 'fetchEncryptionKeyUrl'
605
+ });
606
+ case 3:
607
+ case "end":
608
+ return _context8.stop();
609
+ }
610
+ }, _callee8);
611
+ })));
612
+ it('create a contact without a group and encryptionKey', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
613
+ var _res$data$contact2;
614
+ var mockContactResponse, successContactGroupResponsePayload, successContactResponsePayload, contact, res;
615
+ return _regenerator.default.wrap(function (_context9) {
616
+ while (1) switch (_context9.prev = _context9.next) {
617
+ case 0:
618
+ mockContactResponse = _contactFixtures.mockContactResponseBodyOne.contacts[1];
619
+ contactClient['groups'] = [];
620
+ contactClient['encryptionKey'] = '';
621
+ contactClient['defaultGroupId'] = '';
622
+ successContactGroupResponsePayload = {
623
+ statusCode: 201,
624
+ body: mockGroupResponse
625
+ };
626
+ successContactResponsePayload = {
627
+ statusCode: 201,
628
+ body: mockContactResponse
629
+ };
630
+ webex.request.mockResolvedValueOnce(successContactGroupResponsePayload).mockResolvedValueOnce(successContactResponsePayload);
631
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
632
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
633
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');
634
+ contact = {
635
+ contactType: 'CUSTOM'
636
+ };
637
+ _context9.next = 1;
638
+ return contactClient.createContact(contact);
639
+ case 1:
640
+ res = _context9.sent;
641
+ expect(res.statusCode).toEqual(201);
642
+ expect(webex.request).toBeCalledTimes(2);
643
+ expect(webex.request).toHaveBeenNthCalledWith(1, {
644
+ body: {
645
+ displayName: 'Encrypted group name',
646
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
647
+ groupType: 'NORMAL',
648
+ schemas: _constants2.CONTACTS_SCHEMA
649
+ },
650
+ uri: contactServiceGroupUrl,
651
+ method: _types.HTTP_METHODS.POST
652
+ });
653
+ expect(webex.request).toHaveBeenNthCalledWith(2, {
654
+ body: {
655
+ contactType: 'CUSTOM',
656
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
657
+ groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],
658
+ schemas: _constants2.CONTACTS_SCHEMA
659
+ },
660
+ method: _types.HTTP_METHODS.POST,
661
+ uri: contactServiceUrl
662
+ });
663
+ expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({
664
+ count: 1
665
+ });
666
+ expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({
667
+ keyUris: [_contactFixtures.mockKmsKey.uri]
668
+ });
669
+ expect((_res$data$contact2 = res.data.contact) === null || _res$data$contact2 === void 0 ? void 0 : _res$data$contact2.contactId).toBe(mockContactResponse.contactId);
670
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with contactType: CUSTOM"), {
671
+ file: _constants2.CONTACTS_CLIENT,
672
+ method: _constants2.METHODS.CREATE_CONTACT
673
+ });
674
+ expect(_Logger.default.info).toBeCalledWith(_constants.METHOD_START_MESSAGE, {
675
+ file: _constants2.CONTACTS_CLIENT,
676
+ method: _constants2.METHODS.CREATE_NEW_ENCRYPTION_KEY_URL
677
+ });
678
+ expect(_Logger.default.info).toBeCalledWith('Requesting kms for a new KRO and key', {
679
+ file: _constants2.CONTACTS_CLIENT,
680
+ method: _constants2.METHODS.CREATE_NEW_ENCRYPTION_KEY_URL
681
+ });
682
+ expect(_Logger.default.log).toBeCalledWith("Creating a default group: ".concat(_constants2.DEFAULT_GROUP_NAME), {
683
+ file: _constants2.CONTACTS_CLIENT,
684
+ method: _constants2.METHODS.FETCH_ENCRYPTION_KEY_URL
685
+ });
686
+ expect(_Logger.default.log).toBeCalledWith("Contact successfully created", {
687
+ file: _constants2.CONTACTS_CLIENT,
688
+ method: 'createContact'
689
+ });
690
+ case 2:
691
+ case "end":
692
+ return _context9.stop();
693
+ }
694
+ }, _callee9);
695
+ })));
696
+ it('create a cloud contact with no existing groups', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
697
+ var _res$data$contact3;
698
+ var mockContactResponse, successResponsePayload, successResponsePayloadGroup, contact, res;
699
+ return _regenerator.default.wrap(function (_context0) {
700
+ while (1) switch (_context0.prev = _context0.next) {
701
+ case 0:
702
+ mockContactResponse = _contactFixtures.mockContactResponseBodyOne.contacts[0];
703
+ successResponsePayload = {
704
+ statusCode: 201,
705
+ body: mockContactResponse
706
+ };
707
+ successResponsePayloadGroup = {
708
+ statusCode: 201,
709
+ body: _contactFixtures.mockContactResponseBodyOne.groups[0]
710
+ };
711
+ webex.request.mockResolvedValueOnce(successResponsePayloadGroup).mockResolvedValueOnce(successResponsePayload).mockResolvedValueOnce(_contactFixtures.mockSCIMListResponse);
712
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');
713
+ contactClient['groups'] = [];
714
+ contactClient['encryptionKeyUrl'] = _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl;
715
+ contact = {
716
+ contactType: 'CLOUD'
717
+ };
718
+ contact.groups = [];
719
+ _context0.next = 1;
720
+ return contactClient.createContact(contact);
721
+ case 1:
722
+ res = _context0.sent;
723
+ expect(res.statusCode).toEqual(400);
724
+ expect(res.data.error).toEqual('contactId is required for contactType:CLOUD.');
725
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with contactType: CLOUD"), {
726
+ file: _constants2.CONTACTS_CLIENT,
727
+ method: _constants2.METHODS.CREATE_CONTACT
728
+ });
729
+ contact.contactId = mockContactResponse.contactId;
730
+ _context0.next = 2;
731
+ return contactClient.createContact(contact);
732
+ case 2:
733
+ res = _context0.sent;
734
+ expect(res.statusCode).toEqual(201);
735
+ expect((_res$data$contact3 = res.data.contact) === null || _res$data$contact3 === void 0 ? void 0 : _res$data$contact3.contactId).toBe(mockContactResponse.contactId);
736
+ expect(webex.request).toBeCalledTimes(3);
737
+ expect(webex.request).toHaveBeenNthCalledWith(1, {
738
+ method: _types.HTTP_METHODS.POST,
739
+ uri: contactServiceGroupUrl,
740
+ body: {
741
+ displayName: 'Encrypted group name',
742
+ groupType: 'NORMAL',
743
+ encryptionKeyUrl: _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl,
744
+ schemas: _constants2.CONTACTS_SCHEMA
745
+ }
746
+ });
747
+ expect(webex.request).toHaveBeenNthCalledWith(2, {
748
+ method: _types.HTTP_METHODS.POST,
749
+ uri: contactServiceUrl,
750
+ body: {
751
+ contactId: mockContactResponse.contactId,
752
+ contactType: 'CLOUD',
753
+ encryptionKeyUrl: _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl,
754
+ schemas: _constants2.CONTACTS_SCHEMA,
755
+ groups: ['1561977e-3443-4ccf-a591-69686275d7d2']
756
+ }
757
+ });
758
+ expect(webex.request).toHaveBeenNthCalledWith(3, {
759
+ uri: scimUrl,
760
+ method: _types.HTTP_METHODS.GET,
761
+ headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants3.CISCO_DEVICE_URL, 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5'), 'spark-user-agent', 'webex-calling/beta')
762
+ });
763
+ expect(_Logger.default.log).toBeCalledWith("Contact successfully created", {
764
+ file: _constants2.CONTACTS_CLIENT,
765
+ method: 'createContact'
766
+ });
767
+ case 3:
768
+ case "end":
769
+ return _context0.stop();
770
+ }
771
+ }, _callee0);
772
+ })));
773
+ it('create a contact - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
774
+ var contact, res;
775
+ return _regenerator.default.wrap(function (_context1) {
776
+ while (1) switch (_context1.prev = _context1.next) {
777
+ case 0:
778
+ webex.request.mockRejectedValue(failureResponsePayload);
779
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne.slice();
780
+ contactClient['encryptionKeyUrl'] = _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl;
781
+ contact = {
782
+ contactType: 'CLOUD',
783
+ contactId: '801bb994-343b-4f6b-97ae-d13c91d4b877'
784
+ };
785
+ _context1.next = 1;
786
+ return contactClient.createContact(contact);
787
+ case 1:
788
+ res = _context1.sent;
789
+ expect(webex.request).toBeCalledOnceWith({
790
+ uri: contactServiceUrl,
791
+ method: _types.HTTP_METHODS.POST,
792
+ body: _objectSpread(_objectSpread({}, contact), {}, {
793
+ encryptionKeyUrl: _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl,
794
+ groups: [_contactFixtures.mockContactGroupListOne[0].groupId],
795
+ schemas: _constants2.CONTACTS_SCHEMA
796
+ })
797
+ });
798
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {
799
+ file: _constants2.CONTACTS_CLIENT,
800
+ method: _constants2.METHODS.CREATE_CONTACT
801
+ });
802
+ expect(res.statusCode).toEqual(503);
803
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with contactType: CLOUD"), {
804
+ file: _constants2.CONTACTS_CLIENT,
805
+ method: _constants2.METHODS.CREATE_CONTACT
806
+ });
807
+ expect(_Logger.default.error).toBeCalledWith("Failed to create contact: ".concat((0, _stringify.default)(failureResponsePayload)), {
808
+ file: _constants2.CONTACTS_CLIENT,
809
+ method: _constants2.METHODS.CREATE_CONTACT
810
+ });
811
+ case 2:
812
+ case "end":
813
+ return _context1.stop();
814
+ }
815
+ }, _callee1);
816
+ })));
817
+ it('successful deletion of contacts', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10() {
818
+ var successResponsePayload, response;
819
+ return _regenerator.default.wrap(function (_context10) {
820
+ while (1) switch (_context10.prev = _context10.next) {
821
+ case 0:
822
+ successResponsePayload = {
823
+ statusCode: 204
824
+ };
825
+ contactClient['contacts'] = [_contactFixtures.mockContactListOne[0]];
826
+ webex.request.mockResolvedValue(successResponsePayload);
827
+ _context10.next = 1;
828
+ return contactClient.deleteContact(_contactFixtures.mockContactListOne[0].contactId);
829
+ case 1:
830
+ response = _context10.sent;
831
+ expect(response.statusCode).toEqual(204);
832
+ expect(webex.request).toBeCalledOnceWith({
833
+ uri: "".concat(contactServiceUrl, "/").concat(_contactFixtures.mockContactListOne[0].contactId),
834
+ method: _types.HTTP_METHODS.DELETE
835
+ });
836
+ expect(contactClient['contacts']).toEqual([]);
837
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with contactId: ").concat(_contactFixtures.mockContactListOne[0].contactId), {
838
+ file: _constants2.CONTACTS_CLIENT,
839
+ method: _constants2.METHODS.DELETE_CONTACT
840
+ });
841
+ expect(_Logger.default.info).toBeCalledWith("Deleting contact : ".concat(_contactFixtures.mockContactListOne[0].contactId), {
842
+ file: _constants2.CONTACTS_CLIENT,
843
+ method: _constants2.METHODS.DELETE_CONTACT
844
+ });
845
+ case 2:
846
+ case "end":
847
+ return _context10.stop();
848
+ }
849
+ }, _callee10);
850
+ })));
851
+ it('delete a contact - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11() {
852
+ var response;
853
+ return _regenerator.default.wrap(function (_context11) {
854
+ while (1) switch (_context11.prev = _context11.next) {
855
+ case 0:
856
+ contactClient['contacts'] = _contactFixtures.mockContactListOne;
857
+ webex.request.mockRejectedValue(failureResponsePayload);
858
+ _context11.next = 1;
859
+ return contactClient.deleteContact(_contactFixtures.mockContactListOne[0].contactId);
860
+ case 1:
861
+ response = _context11.sent;
862
+ expect(response.statusCode).toEqual(503);
863
+ expect(webex.request).toBeCalledOnceWith({
864
+ uri: "".concat(contactServiceUrl, "/").concat(_contactFixtures.mockContactListOne[0].contactId),
865
+ method: _types.HTTP_METHODS.DELETE
866
+ });
867
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {
868
+ file: _constants2.CONTACTS_CLIENT,
869
+ method: _constants2.METHODS.DELETE_CONTACT
870
+ });
871
+ expect(contactClient['contacts']).toEqual(_contactFixtures.mockContactListOne);
872
+ expect(_Logger.default.info).toBeCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with contactId: ").concat(_contactFixtures.mockContactListOne[0].contactId), {
873
+ file: _constants2.CONTACTS_CLIENT,
874
+ method: _constants2.METHODS.DELETE_CONTACT
875
+ });
876
+ expect(_Logger.default.info).toBeCalledWith("Deleting contact : ".concat(_contactFixtures.mockContactListOne[0].contactId), {
877
+ file: _constants2.CONTACTS_CLIENT,
878
+ method: _constants2.METHODS.DELETE_CONTACT
879
+ });
880
+ case 2:
881
+ case "end":
882
+ return _context11.stop();
883
+ }
884
+ }, _callee11);
885
+ })));
886
+ it('test resolveContacts function for a minimal contact with few details', function () {
887
+ var contact = contactClient['resolveCloudContacts']({
888
+ userId: _contactFixtures.mockContactMinimum
889
+ }, _contactFixtures.mockSCIMMinListResponse.body);
890
+ expect(contact).toEqual([{
891
+ avatarURL: '',
892
+ avatarUrlDomain: undefined,
893
+ contactId: 'userId',
894
+ contactType: 'CLOUD',
895
+ department: undefined,
896
+ displayName: undefined,
897
+ emails: undefined,
898
+ encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',
899
+ firstName: undefined,
900
+ groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],
901
+ lastName: undefined,
902
+ manager: undefined,
903
+ ownerId: 'ownerId',
904
+ phoneNumbers: undefined,
905
+ sipAddresses: undefined,
906
+ resolved: true
907
+ }]);
908
+ });
909
+ it("test resolveContacts function when contactsDataMap list doesn't match resolved list", function () {
910
+ var mockContact = {
911
+ firstName: 'Jane',
912
+ lastName: 'Doe',
913
+ contactId: 'janeDoe'
914
+ };
915
+ var contact = contactClient['resolveCloudContacts']({
916
+ userId: _contactFixtures.mockContactMinimum,
917
+ janeDoe: mockContact
918
+ }, _contactFixtures.mockSCIMMinListResponse.body);
919
+ expect(contact).toEqual([{
920
+ firstName: 'Jane',
921
+ lastName: 'Doe',
922
+ contactId: 'janeDoe',
923
+ resolved: false
924
+ }, {
925
+ avatarURL: '',
926
+ avatarUrlDomain: undefined,
927
+ contactId: 'userId',
928
+ contactType: 'CLOUD',
929
+ department: undefined,
930
+ displayName: undefined,
931
+ emails: undefined,
932
+ encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',
933
+ firstName: undefined,
934
+ groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],
935
+ lastName: undefined,
936
+ manager: undefined,
937
+ ownerId: 'ownerId',
938
+ phoneNumbers: undefined,
939
+ sipAddresses: undefined,
940
+ resolved: true
941
+ }]);
942
+ });
943
+ it('test resolveContacts function encountering an error', function () {
944
+ var warnSpy = jest.spyOn(_Logger.default, 'warn');
945
+ var contact = contactClient['resolveCloudContacts']({
946
+ userId: _contactFixtures.mockContactMinimum
947
+ }, _contactFixtures.mockSCIMMinListResponse);
948
+ expect(contact).toEqual(null);
949
+ expect(warnSpy).toHaveBeenCalledWith('Error occurred while parsing resolved contacts', {
950
+ file: _constants2.CONTACTS_CLIENT,
951
+ method: 'resolveCloudContacts'
952
+ });
953
+ });
954
+ it('logs error for chunk when scimQuery API call fails in the loop for getContacts', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12() {
955
+ var mockData, respPayload, warnSpy, infoSpy, logSpy;
956
+ return _regenerator.default.wrap(function (_context12) {
957
+ while (1) switch (_context12.prev = _context12.next) {
958
+ case 0:
959
+ mockData = errorCodes[0];
960
+ respPayload = {
961
+ statusCode: mockData.inputStatusCode,
962
+ body: mockData.payloadData
963
+ };
964
+ webex.request.mockResolvedValueOnce(respPayload).mockRejectedValueOnce(_objectSpread(_objectSpread({}, respPayload), {}, {
965
+ statusCode: 503,
966
+ message: _constants.FAILURE_MESSAGE,
967
+ data: mockData.payloadData
968
+ }));
969
+ mockData.decryptTextList.forEach(function (text) {
970
+ webex.internal.encryption.decryptText.mockResolvedValueOnce(text);
971
+ });
972
+ warnSpy = jest.spyOn(_Logger.default, 'warn');
973
+ infoSpy = jest.spyOn(_Logger.default, 'info');
974
+ logSpy = jest.spyOn(_Logger.default, 'log');
975
+ _context12.next = 1;
976
+ return contactClient.getContacts();
977
+ case 1:
978
+ expect(webex.request).toBeCalledTimes(2);
979
+ expect(warnSpy).toBeCalledTimes(1);
980
+ expect(warnSpy).toBeCalledWith('Error processing contact chunk 0-50', {
981
+ file: _constants2.CONTACTS_CLIENT,
982
+ method: _constants2.METHODS.GET_CONTACTS
983
+ });
984
+ expect(infoSpy).toBeCalledWith(_constants.METHOD_START_MESSAGE, {
985
+ file: _constants2.CONTACTS_CLIENT,
986
+ method: _constants2.METHODS.GET_CONTACTS
987
+ });
988
+ expect(logSpy).toBeCalledWith('Successfully fetched contacts and groups', {
989
+ file: _constants2.CONTACTS_CLIENT,
990
+ method: _constants2.METHODS.GET_CONTACTS
991
+ });
992
+ case 2:
993
+ case "end":
994
+ return _context12.stop();
995
+ }
996
+ }, _callee12);
997
+ })));
998
+ });
999
+ //# sourceMappingURL=ContactsClient.test.js.map