@webex/calling 3.0.0-next.6 → 3.0.0-next.8

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 (172) hide show
  1. package/dist/CallHistory/CallHistory.js +201 -0
  2. package/dist/CallHistory/CallHistory.js.map +1 -0
  3. package/dist/CallHistory/CallHistory.test.js +133 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -0
  5. package/dist/CallHistory/callHistoryFixtures.js +310 -0
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
  7. package/dist/CallHistory/constants.js +26 -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/CallSettings/CallSettings.js +274 -0
  12. package/dist/CallSettings/CallSettings.js.map +1 -0
  13. package/dist/CallSettings/CallSettings.test.js +122 -0
  14. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  15. package/dist/CallSettings/UcmBackendConnector.js +217 -0
  16. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  17. package/dist/CallSettings/UcmBackendConnector.test.js +227 -0
  18. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  19. package/dist/CallSettings/WxCallBackendConnector.js +541 -0
  20. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  21. package/dist/CallSettings/WxCallBackendConnector.test.js +802 -0
  22. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  23. package/dist/CallSettings/constants.js +30 -0
  24. package/dist/CallSettings/constants.js.map +1 -0
  25. package/dist/CallSettings/testFixtures.js +72 -0
  26. package/dist/CallSettings/testFixtures.js.map +1 -0
  27. package/dist/CallSettings/types.js +7 -0
  28. package/dist/CallSettings/types.js.map +1 -0
  29. package/dist/CallingClient/CallingClient.js +572 -0
  30. package/dist/CallingClient/CallingClient.js.map +1 -0
  31. package/dist/CallingClient/CallingClient.test.js +931 -0
  32. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  33. package/dist/CallingClient/callRecordFixtures.js +103 -0
  34. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  35. package/dist/CallingClient/calling/CallerId/index.js +287 -0
  36. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  37. package/dist/CallingClient/calling/CallerId/index.test.js +274 -0
  38. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  39. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  40. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  41. package/dist/CallingClient/calling/call.js +2995 -0
  42. package/dist/CallingClient/calling/call.js.map +1 -0
  43. package/dist/CallingClient/calling/call.test.js +2616 -0
  44. package/dist/CallingClient/calling/call.test.js.map +1 -0
  45. package/dist/CallingClient/calling/callManager.js +443 -0
  46. package/dist/CallingClient/calling/callManager.js.map +1 -0
  47. package/dist/CallingClient/calling/callManager.test.js +683 -0
  48. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  49. package/dist/CallingClient/calling/index.js +30 -0
  50. package/dist/CallingClient/calling/index.js.map +1 -0
  51. package/dist/CallingClient/calling/types.js +71 -0
  52. package/dist/CallingClient/calling/types.js.map +1 -0
  53. package/dist/CallingClient/callingClientFixtures.js +53 -0
  54. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  55. package/dist/CallingClient/constants.js +226 -0
  56. package/dist/CallingClient/constants.js.map +1 -0
  57. package/dist/CallingClient/line/index.js +312 -0
  58. package/dist/CallingClient/line/index.js.map +1 -0
  59. package/dist/CallingClient/line/line.test.js +270 -0
  60. package/dist/CallingClient/line/line.test.js.map +1 -0
  61. package/dist/CallingClient/line/types.js +25 -0
  62. package/dist/CallingClient/line/types.js.map +1 -0
  63. package/dist/CallingClient/registration/index.js +19 -0
  64. package/dist/CallingClient/registration/index.js.map +1 -0
  65. package/dist/CallingClient/registration/register.js +1295 -0
  66. package/dist/CallingClient/registration/register.js.map +1 -0
  67. package/dist/CallingClient/registration/register.test.js +838 -0
  68. package/dist/CallingClient/registration/register.test.js.map +1 -0
  69. package/dist/CallingClient/registration/registerFixtures.js +41 -0
  70. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  71. package/dist/CallingClient/registration/types.js +7 -0
  72. package/dist/CallingClient/registration/types.js.map +1 -0
  73. package/dist/CallingClient/types.js +7 -0
  74. package/dist/CallingClient/types.js.map +1 -0
  75. package/dist/Contacts/ContactsClient.js +1145 -0
  76. package/dist/Contacts/ContactsClient.js.map +1 -0
  77. package/dist/Contacts/ContactsClient.test.js +725 -0
  78. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  79. package/dist/Contacts/constants.js +36 -0
  80. package/dist/Contacts/constants.js.map +1 -0
  81. package/dist/Contacts/contactFixtures.js +340 -0
  82. package/dist/Contacts/contactFixtures.js.map +1 -0
  83. package/dist/Contacts/types.js +23 -0
  84. package/dist/Contacts/types.js.map +1 -0
  85. package/dist/Errors/catalog/CallError.js +94 -0
  86. package/dist/Errors/catalog/CallError.js.map +1 -0
  87. package/dist/Errors/catalog/CallingDeviceError.js +88 -0
  88. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  89. package/dist/Errors/catalog/ExtendedError.js +45 -0
  90. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  91. package/dist/Errors/catalog/LineError.js +90 -0
  92. package/dist/Errors/catalog/LineError.js.map +1 -0
  93. package/dist/Errors/index.js +21 -0
  94. package/dist/Errors/index.js.map +1 -0
  95. package/dist/Errors/types.js +62 -0
  96. package/dist/Errors/types.js.map +1 -0
  97. package/dist/Events/impl/index.js +82 -0
  98. package/dist/Events/impl/index.js.map +1 -0
  99. package/dist/Events/types.js +111 -0
  100. package/dist/Events/types.js.map +1 -0
  101. package/dist/Logger/index.js +221 -0
  102. package/dist/Logger/index.js.map +1 -0
  103. package/dist/Logger/index.test.js +62 -0
  104. package/dist/Logger/index.test.js.map +1 -0
  105. package/dist/Logger/types.js +37 -0
  106. package/dist/Logger/types.js.map +1 -0
  107. package/dist/Metrics/index.js +329 -0
  108. package/dist/Metrics/index.js.map +1 -0
  109. package/dist/Metrics/index.test.js +291 -0
  110. package/dist/Metrics/index.test.js.map +1 -0
  111. package/dist/Metrics/types.js +50 -0
  112. package/dist/Metrics/types.js.map +1 -0
  113. package/dist/SDKConnector/index.js +105 -0
  114. package/dist/SDKConnector/index.js.map +1 -0
  115. package/dist/SDKConnector/index.test.js +9 -0
  116. package/dist/SDKConnector/index.test.js.map +1 -0
  117. package/dist/SDKConnector/types.js +7 -0
  118. package/dist/SDKConnector/types.js.map +1 -0
  119. package/dist/SDKConnector/utils.js +40 -0
  120. package/dist/SDKConnector/utils.js.map +1 -0
  121. package/dist/SDKConnector/utils.test.js +9 -0
  122. package/dist/SDKConnector/utils.test.js.map +1 -0
  123. package/dist/Voicemail/BroadworksBackendConnector.js +632 -0
  124. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  125. package/dist/Voicemail/BroadworksBackendConnector.test.js +733 -0
  126. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  127. package/dist/Voicemail/UcmBackendConnector.js +566 -0
  128. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  129. package/dist/Voicemail/UcmBackendConnector.test.js +628 -0
  130. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  131. package/dist/Voicemail/Voicemail.js +378 -0
  132. package/dist/Voicemail/Voicemail.js.map +1 -0
  133. package/dist/Voicemail/Voicemail.test.js +226 -0
  134. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  135. package/dist/Voicemail/WxCallBackendConnector.js +540 -0
  136. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  137. package/dist/Voicemail/WxCallBackendConnector.test.js +942 -0
  138. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  139. package/dist/Voicemail/constants.js +66 -0
  140. package/dist/Voicemail/constants.js.map +1 -0
  141. package/dist/Voicemail/types.js +7 -0
  142. package/dist/Voicemail/types.js.map +1 -0
  143. package/dist/Voicemail/voicemailFixture.js +559 -0
  144. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  145. package/dist/api.js +164 -0
  146. package/dist/api.js.map +1 -0
  147. package/dist/common/Utils.js +1264 -0
  148. package/dist/common/Utils.js.map +1 -0
  149. package/dist/common/Utils.test.js +1227 -0
  150. package/dist/common/Utils.test.js.map +1 -0
  151. package/dist/common/constants.js +90 -0
  152. package/dist/common/constants.js.map +1 -0
  153. package/dist/common/index.js +19 -0
  154. package/dist/common/index.js.map +1 -0
  155. package/dist/common/testUtil.js +968 -0
  156. package/dist/common/testUtil.js.map +1 -0
  157. package/dist/common/types.js +75 -0
  158. package/dist/common/types.js.map +1 -0
  159. package/dist/index.js +63 -0
  160. package/dist/index.js.map +1 -0
  161. package/dist/module/Contacts/ContactsClient.js +3 -0
  162. package/dist/module/api.js +6 -5
  163. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  164. package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
  165. package/dist/types/CallSettings/types.d.ts.map +1 -1
  166. package/dist/types/Contacts/ContactsClient.d.ts +2 -1
  167. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  168. package/dist/types/Contacts/types.d.ts +2 -0
  169. package/dist/types/Contacts/types.d.ts.map +1 -1
  170. package/dist/types/api.d.ts +6 -5
  171. package/dist/types/api.d.ts.map +1 -1
  172. package/package.json +2 -2
@@ -0,0 +1,725 @@
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 _types = require("../common/types");
17
+ var _testUtil = require("../common/testUtil");
18
+ var _types2 = require("../Logger/types");
19
+ var _ContactsClient = require("./ContactsClient");
20
+ var _constants = require("../common/constants");
21
+ var _Logger = _interopRequireDefault(require("../Logger"));
22
+ var _constants2 = require("./constants");
23
+ var utils = _interopRequireWildcard(require("../common/Utils"));
24
+ var _contactFixtures = require("./contactFixtures");
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
29
+ describe('ContactClient Tests', function () {
30
+ var webex = (0, _testUtil.getTestUtilsWebex)();
31
+ var contactClient;
32
+
33
+ // eslint-disable-next-line no-underscore-dangle
34
+ var contactServiceUrl = "".concat(webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER);
35
+ // eslint-disable-next-line no-underscore-dangle
36
+ var contactServiceGroupUrl = "".concat(webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER);
37
+ var serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');
38
+ var failureResponsePayload = {
39
+ statusCode: 503,
40
+ body: {}
41
+ };
42
+ var mockGroupResponse = _contactFixtures.mockContactResponseBodyOne.groups[0];
43
+ beforeEach(function () {
44
+ contactClient = (0, _ContactsClient.createContactsClient)(webex, {
45
+ level: _types2.LOGGER.INFO
46
+ });
47
+ expect(contactClient).toBeTruthy();
48
+ expect(contactClient.getSDKConnector().getWebex()).toBeTruthy();
49
+ });
50
+ afterEach(function () {
51
+ webex.request.mockClear();
52
+ jest.clearAllMocks();
53
+ });
54
+
55
+ /**
56
+ * TestCase inputs
57
+ * name: TestCase name
58
+ * payloadData: Response body
59
+ * inputStatusCode: Status code received in response
60
+ * expectedData: Expected data field in ContactResponse after processing
61
+ * expectedMessage: Expected message field in ContactResponse after processing
62
+ * expectedStatusCode: Expected status code field in ContactResponse after processing
63
+ * decryptTextList: Array of decrypted contact list.
64
+ */
65
+ var errorCodes = [{
66
+ name: 'Success case 1: fetch contacts using get contacts api, custom and cloud contact present',
67
+ payloadData: _contactFixtures.mockContactResponseBodyOne,
68
+ inputStatusCode: 200,
69
+ expectedData: {
70
+ contacts: _contactFixtures.mockContactListOne,
71
+ groups: _contactFixtures.mockContactGroupListOne
72
+ },
73
+ expectedMessage: _constants.SUCCESS_MESSAGE,
74
+ expectedStatusCode: 200,
75
+ 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]
76
+ }, {
77
+ name: 'Success case 2: fetch contacts using get contacts api, single custom contact with mandatory details present',
78
+ payloadData: _contactFixtures.mockContactResponseBodyTwo,
79
+ inputStatusCode: 200,
80
+ expectedData: {
81
+ contacts: _contactFixtures.mockContactListTwo,
82
+ groups: _contactFixtures.mockContactGroupListTwo
83
+ },
84
+ expectedMessage: _constants.SUCCESS_MESSAGE,
85
+ expectedStatusCode: 200,
86
+ decryptTextList: [_contactFixtures.mockDisplayNameTwo, _contactFixtures.mockGroupName]
87
+ }, {
88
+ name: 'Success case 3: fetch contacts using get contacts api, no contacts returned',
89
+ payloadData: _contactFixtures.mockContactResponseBodyThird,
90
+ inputStatusCode: 200,
91
+ expectedData: {
92
+ contacts: [],
93
+ groups: []
94
+ },
95
+ expectedMessage: _constants.SUCCESS_MESSAGE,
96
+ expectedStatusCode: 200,
97
+ decryptTextList: []
98
+ }, {
99
+ name: 'Failed case: 200 OK with no response body',
100
+ payloadData: undefined,
101
+ inputStatusCode: 200,
102
+ expectedData: {
103
+ error: '422 Exception has occurred'
104
+ },
105
+ expectedMessage: _constants.FAILURE_MESSAGE,
106
+ expectedStatusCode: 422,
107
+ decryptTextList: []
108
+ }, {
109
+ name: 'Failed case 403: fetch contacts using get contacts api',
110
+ payloadData: {
111
+ error: '403 Forbidden'
112
+ },
113
+ inputStatusCode: 403,
114
+ expectedData: {
115
+ error: 'User request is forbidden'
116
+ },
117
+ expectedMessage: _constants.FAILURE_MESSAGE,
118
+ expectedStatusCode: 403,
119
+ decryptTextList: []
120
+ }, {
121
+ name: 'Failed case 408: fetch contacts using get contacts api',
122
+ payloadData: {
123
+ error: '408 Request Timeout'
124
+ },
125
+ inputStatusCode: 408,
126
+ expectedData: {
127
+ error: 'Request to the server timedout'
128
+ },
129
+ expectedMessage: _constants.FAILURE_MESSAGE,
130
+ expectedStatusCode: 408,
131
+ decryptTextList: []
132
+ }, {
133
+ name: 'Failed case 500: fetch contacts using get contacts api',
134
+ payloadData: {
135
+ error: '500 Internal Server Error'
136
+ },
137
+ inputStatusCode: 500,
138
+ expectedData: {
139
+ error: 'Internal server error occurred'
140
+ },
141
+ expectedMessage: _constants.FAILURE_MESSAGE,
142
+ expectedStatusCode: 500,
143
+ decryptTextList: []
144
+ }, {
145
+ name: 'Failed case 503: fetch contacts using get contacts api',
146
+ payloadData: {
147
+ error: '503 Service Unavailable'
148
+ },
149
+ inputStatusCode: 503,
150
+ expectedData: {
151
+ error: 'Unable to establish a connection with the server'
152
+ },
153
+ expectedMessage: _constants.FAILURE_MESSAGE,
154
+ expectedStatusCode: 503,
155
+ decryptTextList: []
156
+ }].map(function (stat) {
157
+ return (0, _assign.default)(stat, {
158
+ toString: function toString() {
159
+ /* eslint-disable dot-notation */
160
+ return this['name'];
161
+ }
162
+ });
163
+ });
164
+ it.each(errorCodes)('%s', /*#__PURE__*/function () {
165
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(codeObj) {
166
+ var respPayload, contactsResponse;
167
+ return _regenerator.default.wrap(function _callee$(_context) {
168
+ while (1) switch (_context.prev = _context.next) {
169
+ case 0:
170
+ respPayload = {
171
+ statusCode: codeObj.inputStatusCode
172
+ };
173
+ if (codeObj.inputStatusCode === 200) {
174
+ respPayload['body'] = codeObj.payloadData;
175
+ webex.request.mockResolvedValueOnce(respPayload);
176
+ codeObj.decryptTextList.forEach(function (text) {
177
+ webex.internal.encryption.decryptText.mockResolvedValueOnce(text);
178
+ });
179
+ webex.internal.dss.lookup.mockResolvedValueOnce(_contactFixtures.mockDSSResponse);
180
+ } else {
181
+ respPayload['message'] = _constants.FAILURE_MESSAGE;
182
+ respPayload['data'] = codeObj.payloadData;
183
+ webex.request.mockRejectedValueOnce(respPayload);
184
+ }
185
+ _context.next = 4;
186
+ return contactClient.getContacts();
187
+ case 4:
188
+ contactsResponse = _context.sent;
189
+ expect(webex.request).toBeCalledOnceWith({
190
+ uri: contactServiceUrl,
191
+ method: _types.HTTP_METHODS.GET
192
+ });
193
+ expect(contactsResponse).toEqual({
194
+ data: codeObj.expectedData,
195
+ message: codeObj.expectedMessage,
196
+ statusCode: codeObj.expectedStatusCode
197
+ });
198
+ if (codeObj.expectedMessage === _constants.SUCCESS_MESSAGE) {
199
+ expect(serviceErrorCodeHandlerSpy).not.toBeCalled();
200
+ } else {
201
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(codeObj.payloadData ? respPayload : expect.any(Error), {
202
+ file: _constants2.CONTACTS_FILE,
203
+ method: 'getContacts'
204
+ });
205
+ }
206
+ case 8:
207
+ case "end":
208
+ return _context.stop();
209
+ }
210
+ }, _callee);
211
+ }));
212
+ return function (_x) {
213
+ return _ref.apply(this, arguments);
214
+ };
215
+ }());
216
+ it('create a contact group without encryptionKey', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
217
+ var _contactsResponse$dat;
218
+ var successResponsePayload, contactsResponse;
219
+ return _regenerator.default.wrap(function _callee2$(_context2) {
220
+ while (1) switch (_context2.prev = _context2.next) {
221
+ case 0:
222
+ successResponsePayload = {
223
+ statusCode: 201,
224
+ body: mockGroupResponse
225
+ };
226
+ contactClient['groups'] = [];
227
+ contactClient['encryptionKeyUrl'] = '';
228
+ webex.request.mockResolvedValue(successResponsePayload);
229
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
230
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
231
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted Other').mockResolvedValueOnce('Encrypted Top');
232
+ _context2.next = 9;
233
+ return contactClient.createContactGroup('Top Contacts');
234
+ case 9:
235
+ contactsResponse = _context2.sent;
236
+ expect(contactsResponse.statusCode).toEqual(201);
237
+ expect((_contactsResponse$dat = contactsResponse.data.group) === null || _contactsResponse$dat === void 0 ? void 0 : _contactsResponse$dat.groupId).toBe(mockGroupResponse.groupId);
238
+ expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({
239
+ count: 1
240
+ });
241
+ expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({
242
+ keyUris: [_contactFixtures.mockKmsKey.uri]
243
+ });
244
+ expect(webex.request).toBeCalledTimes(2);
245
+ expect(webex.request).toHaveBeenNthCalledWith(1, {
246
+ uri: contactServiceGroupUrl,
247
+ method: 'POST',
248
+ body: {
249
+ displayName: 'Encrypted Other',
250
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
251
+ groupType: 'NORMAL',
252
+ schemas: 'urn:cisco:codev:identity:contact:core:1.0'
253
+ }
254
+ });
255
+ expect(webex.request).toHaveBeenNthCalledWith(2, {
256
+ uri: contactServiceGroupUrl,
257
+ method: 'POST',
258
+ body: {
259
+ displayName: 'Encrypted Top',
260
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
261
+ groupType: 'NORMAL',
262
+ schemas: 'urn:cisco:codev:identity:contact:core:1.0'
263
+ }
264
+ });
265
+ expect(contactClient['groups'].length).toEqual(2);
266
+ expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');
267
+ case 19:
268
+ case "end":
269
+ return _context2.stop();
270
+ }
271
+ }, _callee2);
272
+ })));
273
+ it('create a contact group with existing key info', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
274
+ var _contactsResponse$dat2;
275
+ var successResponsePayload, logInfoSpy, contactsResponse;
276
+ return _regenerator.default.wrap(function _callee3$(_context3) {
277
+ while (1) switch (_context3.prev = _context3.next) {
278
+ case 0:
279
+ successResponsePayload = {
280
+ statusCode: 201,
281
+ body: mockGroupResponse
282
+ };
283
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
284
+ webex.request.mockResolvedValue(successResponsePayload);
285
+ webex.internal.encryption.encryptText.mockResolvedValue('Encrypted Top Contacts');
286
+ logInfoSpy = jest.spyOn(_Logger.default, 'info');
287
+ _context3.next = 7;
288
+ return contactClient.createContactGroup('Top Contacts');
289
+ case 7:
290
+ contactsResponse = _context3.sent;
291
+ expect(contactsResponse.statusCode).toEqual(201);
292
+ expect((_contactsResponse$dat2 = contactsResponse.data.group) === null || _contactsResponse$dat2 === void 0 ? void 0 : _contactsResponse$dat2.groupId).toBe(mockGroupResponse.groupId);
293
+ expect(logInfoSpy).not.toBeCalledWith('Requesting kms for a new KRO and key', {
294
+ file: _constants2.CONTACTS_FILE,
295
+ method: 'createNewEncryptionKeyUrl'
296
+ });
297
+ expect(webex.request).toBeCalledOnceWith({
298
+ uri: contactServiceGroupUrl,
299
+ method: _types.HTTP_METHODS.POST,
300
+ body: {
301
+ displayName: 'Encrypted Top Contacts',
302
+ encryptionKeyUrl: _contactFixtures.mockContactGroupListOne[0].encryptionKeyUrl,
303
+ groupType: 'NORMAL',
304
+ schemas: _constants2.CONTACTS_SCHEMA
305
+ }
306
+ });
307
+ expect(contactClient['groups'].length).toEqual(2);
308
+ expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');
309
+ case 14:
310
+ case "end":
311
+ return _context3.stop();
312
+ }
313
+ }, _callee3);
314
+ })));
315
+ it('create a contact group with same displayName', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
316
+ var logSpy, contactsResponse;
317
+ return _regenerator.default.wrap(function _callee4$(_context4) {
318
+ while (1) switch (_context4.prev = _context4.next) {
319
+ case 0:
320
+ contactClient['groups'] = _contactFixtures.mockContactResponseBodyOne.groups;
321
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
322
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
323
+ logSpy = jest.spyOn(_Logger.default, 'warn');
324
+ _context4.next = 6;
325
+ return contactClient.createContactGroup(mockGroupResponse.displayName);
326
+ case 6:
327
+ contactsResponse = _context4.sent;
328
+ expect(webex.request).not.toBeCalled();
329
+ expect(contactsResponse.statusCode).toBe(400);
330
+ expect(logSpy).toBeCalledOnceWith("Group name ".concat(mockGroupResponse.displayName, " already exists."), {
331
+ file: _constants2.CONTACTS_FILE,
332
+ method: 'createContactGroup'
333
+ });
334
+ expect(contactClient['groups']).toEqual(_contactFixtures.mockContactResponseBodyOne.groups);
335
+ case 11:
336
+ case "end":
337
+ return _context4.stop();
338
+ }
339
+ }, _callee4);
340
+ })));
341
+ it('create a contact group - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
342
+ var loggerContext, warnSpy, contactsResponse;
343
+ return _regenerator.default.wrap(function _callee5$(_context5) {
344
+ while (1) switch (_context5.prev = _context5.next) {
345
+ case 0:
346
+ loggerContext = {
347
+ file: _constants2.CONTACTS_FILE,
348
+ method: 'createContactGroup'
349
+ };
350
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
351
+ webex.request.mockRejectedValue(failureResponsePayload);
352
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
353
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
354
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');
355
+ warnSpy = jest.spyOn(_Logger.default, 'warn');
356
+ _context5.next = 9;
357
+ return contactClient.createContactGroup('New group');
358
+ case 9:
359
+ contactsResponse = _context5.sent;
360
+ expect(contactsResponse.statusCode).toBe(503);
361
+ expect(webex.request).toBeCalledOnceWith({
362
+ uri: contactServiceGroupUrl,
363
+ method: _types.HTTP_METHODS.POST,
364
+ body: {
365
+ displayName: 'Encrypted group name',
366
+ encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',
367
+ groupType: 'NORMAL',
368
+ schemas: 'urn:cisco:codev:identity:contact:core:1.0'
369
+ }
370
+ });
371
+ expect(warnSpy).toBeCalledTimes(2);
372
+ expect(warnSpy).toHaveBeenNthCalledWith(1, 'Unable to create contact group.', loggerContext);
373
+ expect(warnSpy).toHaveBeenNthCalledWith(2, '503 Unable to establish a connection with the server', loggerContext);
374
+ expect(contactClient['groups']).toEqual(_contactFixtures.mockContactGroupListOne);
375
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);
376
+ case 17:
377
+ case "end":
378
+ return _context5.stop();
379
+ }
380
+ }, _callee5);
381
+ })));
382
+ it('delete a contact group - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
383
+ var loggerContext, warnSpy, contactsResponse;
384
+ return _regenerator.default.wrap(function _callee6$(_context6) {
385
+ while (1) switch (_context6.prev = _context6.next) {
386
+ case 0:
387
+ loggerContext = {
388
+ file: _constants2.CONTACTS_FILE,
389
+ method: 'deleteContactGroup'
390
+ };
391
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
392
+ webex.request.mockRejectedValue(failureResponsePayload);
393
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
394
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
395
+ warnSpy = jest.spyOn(_Logger.default, 'warn');
396
+ _context6.next = 8;
397
+ return contactClient.deleteContactGroup(mockGroupResponse.groupId);
398
+ case 8:
399
+ contactsResponse = _context6.sent;
400
+ expect(contactsResponse.statusCode).toBe(503);
401
+ expect(webex.request).toBeCalledOnceWith({
402
+ method: _types.HTTP_METHODS.DELETE,
403
+ uri: "".concat(contactServiceGroupUrl, "/").concat(mockGroupResponse.groupId)
404
+ });
405
+ expect(warnSpy).toBeCalledTimes(2);
406
+ expect(warnSpy).toHaveBeenNthCalledWith(1, "Unable to delete contact group ".concat(mockGroupResponse.groupId), loggerContext);
407
+ expect(warnSpy).toHaveBeenNthCalledWith(2, '503 Unable to establish a connection with the server', loggerContext);
408
+ expect(contactClient['groups']).toEqual(_contactFixtures.mockContactGroupListOne);
409
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);
410
+ case 16:
411
+ case "end":
412
+ return _context6.stop();
413
+ }
414
+ }, _callee6);
415
+ })));
416
+ it('successful deletion of contact group', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
417
+ var successResponsePayload, response;
418
+ return _regenerator.default.wrap(function _callee7$(_context7) {
419
+ while (1) switch (_context7.prev = _context7.next) {
420
+ case 0:
421
+ successResponsePayload = {
422
+ statusCode: 204
423
+ };
424
+ contactClient['groups'] = [_contactFixtures.mockContactGroupListOne[0]];
425
+ webex.request.mockResolvedValue(successResponsePayload);
426
+ _context7.next = 5;
427
+ return contactClient.deleteContactGroup(_contactFixtures.mockContactGroupListOne[0].groupId);
428
+ case 5:
429
+ response = _context7.sent;
430
+ expect(response.statusCode).toEqual(204);
431
+ expect(webex.request).toBeCalledOnceWith({
432
+ uri: "".concat(contactServiceGroupUrl, "/").concat(_contactFixtures.mockContactGroupListOne[0].groupId),
433
+ method: _types.HTTP_METHODS.DELETE
434
+ });
435
+ expect(contactClient['groups']).toEqual([]);
436
+ case 9:
437
+ case "end":
438
+ return _context7.stop();
439
+ }
440
+ }, _callee7);
441
+ })));
442
+ it('create a contact with an existing group', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
443
+ var _res$data$contact, _result$data$contact;
444
+ var mockContactResponse, successResponsePayload, logSpy, contact, res, result;
445
+ return _regenerator.default.wrap(function _callee8$(_context8) {
446
+ while (1) switch (_context8.prev = _context8.next) {
447
+ case 0:
448
+ mockContactResponse = _contactFixtures.mockContactResponseBodyTwo.contacts[0];
449
+ successResponsePayload = {
450
+ statusCode: 201,
451
+ body: mockContactResponse
452
+ };
453
+ webex.request.mockResolvedValue(successResponsePayload);
454
+ webex.internal.encryption.encryptText.mockResolvedValue('Encrypted contact name');
455
+ logSpy = jest.spyOn(_Logger.default, 'info');
456
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne;
457
+ contactClient['encryptionKeyUrl'] = _contactFixtures.mockContactGroupListOne[0].encryptionKeyUrl;
458
+ contact = _contactFixtures.mockContactListTwo.slice()[0];
459
+ contact.groups = [];
460
+ _context8.next = 11;
461
+ return contactClient.createContact(contact);
462
+ case 11:
463
+ res = _context8.sent;
464
+ expect(res.statusCode).toEqual(201);
465
+ expect((_res$data$contact = res.data.contact) === null || _res$data$contact === void 0 ? void 0 : _res$data$contact.contactId).toBe(mockContactResponse.contactId);
466
+ expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {
467
+ file: _constants2.CONTACTS_FILE,
468
+ method: 'createNewEncryptionKeyUrl'
469
+ });
470
+ expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {
471
+ file: _constants2.CONTACTS_FILE,
472
+ method: 'createNewEncryptionKeyUrl'
473
+ });
474
+ expect(logSpy).not.toBeCalledWith("Creating a default group: ".concat(_constants2.DEFAULT_GROUP_NAME), {
475
+ file: _constants2.CONTACTS_FILE,
476
+ method: 'fetchEncryptionKeyUrl'
477
+ });
478
+ expect(webex.internal.encryption.encryptText).toBeCalledOnceWith(_contactFixtures.mockContactGroupListOne[0].encryptionKeyUrl, contact.displayName);
479
+ expect(webex.request).toBeCalledOnceWith({
480
+ body: _objectSpread(_objectSpread({}, contact), {}, {
481
+ displayName: 'Encrypted contact name',
482
+ groups: [_contactFixtures.mockContactGroupListOne[0].groupId],
483
+ schemas: _constants2.CONTACTS_SCHEMA
484
+ }),
485
+ uri: contactServiceUrl,
486
+ method: _types.HTTP_METHODS.POST
487
+ });
488
+ logSpy.mockClear();
489
+
490
+ /* for coverage */
491
+ _context8.next = 22;
492
+ return contactClient.createContact(contact);
493
+ case 22:
494
+ result = _context8.sent;
495
+ expect((_result$data$contact = result.data.contact) === null || _result$data$contact === void 0 ? void 0 : _result$data$contact.contactId).toBe(mockContactResponse.contactId);
496
+ expect(logSpy).not.toBeCalledWith("Creating a default group: ".concat(_constants2.DEFAULT_GROUP_NAME), {
497
+ file: _constants2.CONTACTS_FILE,
498
+ method: 'fetchEncryptionKeyUrl'
499
+ });
500
+ case 25:
501
+ case "end":
502
+ return _context8.stop();
503
+ }
504
+ }, _callee8);
505
+ })));
506
+ it('create a contact without a group and encryptionKey', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
507
+ var _res$data$contact2;
508
+ var mockContactResponse, successContactGroupResponsePayload, successContactResponsePayload, contact, res;
509
+ return _regenerator.default.wrap(function _callee9$(_context9) {
510
+ while (1) switch (_context9.prev = _context9.next) {
511
+ case 0:
512
+ mockContactResponse = _contactFixtures.mockContactResponseBodyOne.contacts[1];
513
+ contactClient['groups'] = [];
514
+ contactClient['encryptionKey'] = '';
515
+ contactClient['defaultGroupId'] = '';
516
+ successContactGroupResponsePayload = {
517
+ statusCode: 201,
518
+ body: mockGroupResponse
519
+ };
520
+ successContactResponsePayload = {
521
+ statusCode: 201,
522
+ body: mockContactResponse
523
+ };
524
+ webex.request.mockResolvedValueOnce(successContactGroupResponsePayload).mockResolvedValueOnce(successContactResponsePayload);
525
+ webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([_contactFixtures.mockKmsKey]);
526
+ webex.internal.encryption.kms.createResource.mockResolvedValue(_contactFixtures.mockKmsKey);
527
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');
528
+ contact = {
529
+ contactType: 'CUSTOM'
530
+ };
531
+ _context9.next = 13;
532
+ return contactClient.createContact(contact);
533
+ case 13:
534
+ res = _context9.sent;
535
+ expect(res.statusCode).toEqual(201);
536
+ expect(webex.request).toBeCalledTimes(2);
537
+ expect(webex.request).toHaveBeenNthCalledWith(1, {
538
+ body: {
539
+ displayName: 'Encrypted group name',
540
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
541
+ groupType: 'NORMAL',
542
+ schemas: _constants2.CONTACTS_SCHEMA
543
+ },
544
+ uri: contactServiceGroupUrl,
545
+ method: _types.HTTP_METHODS.POST
546
+ });
547
+ expect(webex.request).toHaveBeenNthCalledWith(2, {
548
+ body: {
549
+ contactType: 'CUSTOM',
550
+ encryptionKeyUrl: _contactFixtures.mockKmsKey.uri,
551
+ groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],
552
+ schemas: _constants2.CONTACTS_SCHEMA
553
+ },
554
+ method: _types.HTTP_METHODS.POST,
555
+ uri: contactServiceUrl
556
+ });
557
+ expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({
558
+ count: 1
559
+ });
560
+ expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({
561
+ keyUris: [_contactFixtures.mockKmsKey.uri]
562
+ });
563
+ expect((_res$data$contact2 = res.data.contact) === null || _res$data$contact2 === void 0 ? void 0 : _res$data$contact2.contactId).toBe(mockContactResponse.contactId);
564
+ case 21:
565
+ case "end":
566
+ return _context9.stop();
567
+ }
568
+ }, _callee9);
569
+ })));
570
+ it('create a cloud contact with no existing groups', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
571
+ var _res$data$contact3;
572
+ var mockContactResponse, successResponsePayload, successResponsePayloadGroup, contact, res;
573
+ return _regenerator.default.wrap(function _callee10$(_context10) {
574
+ while (1) switch (_context10.prev = _context10.next) {
575
+ case 0:
576
+ mockContactResponse = _contactFixtures.mockContactResponseBodyOne.contacts[0];
577
+ successResponsePayload = {
578
+ statusCode: 201,
579
+ body: mockContactResponse
580
+ };
581
+ successResponsePayloadGroup = {
582
+ statusCode: 201,
583
+ body: _contactFixtures.mockContactResponseBodyOne.groups[0]
584
+ };
585
+ webex.request.mockResolvedValueOnce(successResponsePayloadGroup).mockResolvedValueOnce(successResponsePayload);
586
+ webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');
587
+ contactClient['groups'] = [];
588
+ contactClient['encryptionKeyUrl'] = _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl;
589
+ contact = {
590
+ contactType: 'CLOUD'
591
+ };
592
+ contact.groups = [];
593
+ _context10.next = 11;
594
+ return contactClient.createContact(contact);
595
+ case 11:
596
+ res = _context10.sent;
597
+ expect(res.statusCode).toEqual(400);
598
+ expect(res.data.error).toEqual('contactId is required for contactType:CLOUD.');
599
+ webex.internal.dss.lookup.mockResolvedValueOnce(_contactFixtures.mockDSSResponse);
600
+ contact.contactId = mockContactResponse.contactId;
601
+ _context10.next = 18;
602
+ return contactClient.createContact(contact);
603
+ case 18:
604
+ res = _context10.sent;
605
+ expect(res.statusCode).toEqual(201);
606
+ expect((_res$data$contact3 = res.data.contact) === null || _res$data$contact3 === void 0 ? void 0 : _res$data$contact3.contactId).toBe(mockContactResponse.contactId);
607
+ expect(webex.request).toBeCalledTimes(2);
608
+ expect(webex.request).toHaveBeenNthCalledWith(1, {
609
+ method: _types.HTTP_METHODS.POST,
610
+ uri: contactServiceGroupUrl,
611
+ body: {
612
+ displayName: 'Encrypted group name',
613
+ groupType: 'NORMAL',
614
+ encryptionKeyUrl: _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl,
615
+ schemas: _constants2.CONTACTS_SCHEMA
616
+ }
617
+ });
618
+ expect(webex.request).toHaveBeenNthCalledWith(2, {
619
+ method: _types.HTTP_METHODS.POST,
620
+ uri: contactServiceUrl,
621
+ body: {
622
+ contactId: mockContactResponse.contactId,
623
+ contactType: 'CLOUD',
624
+ encryptionKeyUrl: _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl,
625
+ schemas: _constants2.CONTACTS_SCHEMA,
626
+ groups: ['1561977e-3443-4ccf-a591-69686275d7d2']
627
+ }
628
+ });
629
+ case 24:
630
+ case "end":
631
+ return _context10.stop();
632
+ }
633
+ }, _callee10);
634
+ })));
635
+ it('create a contact - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {
636
+ var contact, res;
637
+ return _regenerator.default.wrap(function _callee11$(_context11) {
638
+ while (1) switch (_context11.prev = _context11.next) {
639
+ case 0:
640
+ webex.request.mockRejectedValue(failureResponsePayload);
641
+ contactClient['groups'] = _contactFixtures.mockContactGroupListOne.slice();
642
+ contactClient['encryptionKeyUrl'] = _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl;
643
+ contact = {
644
+ contactType: 'CLOUD',
645
+ contactId: '801bb994-343b-4f6b-97ae-d13c91d4b877'
646
+ };
647
+ _context11.next = 6;
648
+ return contactClient.createContact(contact);
649
+ case 6:
650
+ res = _context11.sent;
651
+ expect(webex.request).toBeCalledOnceWith({
652
+ uri: contactServiceUrl,
653
+ method: _types.HTTP_METHODS.POST,
654
+ body: _objectSpread(_objectSpread({}, contact), {}, {
655
+ encryptionKeyUrl: _contactFixtures.mockContactResponseBodyOne.groups[0].encryptionKeyUrl,
656
+ groups: [_contactFixtures.mockContactGroupListOne[0].groupId],
657
+ schemas: _constants2.CONTACTS_SCHEMA
658
+ })
659
+ });
660
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {
661
+ file: _constants2.CONTACTS_FILE,
662
+ method: 'createContact'
663
+ });
664
+ expect(res.statusCode).toEqual(503);
665
+ case 10:
666
+ case "end":
667
+ return _context11.stop();
668
+ }
669
+ }, _callee11);
670
+ })));
671
+ it('successful deletion of contacts', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
672
+ var successResponsePayload, response;
673
+ return _regenerator.default.wrap(function _callee12$(_context12) {
674
+ while (1) switch (_context12.prev = _context12.next) {
675
+ case 0:
676
+ successResponsePayload = {
677
+ statusCode: 204
678
+ };
679
+ contactClient['contacts'] = [_contactFixtures.mockContactListOne[0]];
680
+ webex.request.mockResolvedValue(successResponsePayload);
681
+ _context12.next = 5;
682
+ return contactClient.deleteContact(_contactFixtures.mockContactListOne[0].contactId);
683
+ case 5:
684
+ response = _context12.sent;
685
+ expect(response.statusCode).toEqual(204);
686
+ expect(webex.request).toBeCalledOnceWith({
687
+ uri: "".concat(contactServiceUrl, "/").concat(_contactFixtures.mockContactListOne[0].contactId),
688
+ method: _types.HTTP_METHODS.DELETE
689
+ });
690
+ expect(contactClient['contacts']).toEqual([]);
691
+ case 9:
692
+ case "end":
693
+ return _context12.stop();
694
+ }
695
+ }, _callee12);
696
+ })));
697
+ it('delete a contact - service unavailable', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
698
+ var response;
699
+ return _regenerator.default.wrap(function _callee13$(_context13) {
700
+ while (1) switch (_context13.prev = _context13.next) {
701
+ case 0:
702
+ contactClient['contacts'] = _contactFixtures.mockContactListOne;
703
+ webex.request.mockRejectedValue(failureResponsePayload);
704
+ _context13.next = 4;
705
+ return contactClient.deleteContact(_contactFixtures.mockContactListOne[0].contactId);
706
+ case 4:
707
+ response = _context13.sent;
708
+ expect(response.statusCode).toEqual(503);
709
+ expect(webex.request).toBeCalledOnceWith({
710
+ uri: "".concat(contactServiceUrl, "/").concat(_contactFixtures.mockContactListOne[0].contactId),
711
+ method: _types.HTTP_METHODS.DELETE
712
+ });
713
+ expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {
714
+ file: _constants2.CONTACTS_FILE,
715
+ method: 'deleteContact'
716
+ });
717
+ expect(contactClient['contacts']).toEqual(_contactFixtures.mockContactListOne);
718
+ case 9:
719
+ case "end":
720
+ return _context13.stop();
721
+ }
722
+ }, _callee13);
723
+ })));
724
+ });
725
+ //# sourceMappingURL=ContactsClient.test.js.map