@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.
- package/dist/CallHistory/CallHistory.js +201 -0
- package/dist/CallHistory/CallHistory.js.map +1 -0
- package/dist/CallHistory/CallHistory.test.js +133 -0
- package/dist/CallHistory/CallHistory.test.js.map +1 -0
- package/dist/CallHistory/callHistoryFixtures.js +310 -0
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
- package/dist/CallHistory/constants.js +26 -0
- package/dist/CallHistory/constants.js.map +1 -0
- package/dist/CallHistory/types.js +7 -0
- package/dist/CallHistory/types.js.map +1 -0
- package/dist/CallSettings/CallSettings.js +274 -0
- package/dist/CallSettings/CallSettings.js.map +1 -0
- package/dist/CallSettings/CallSettings.test.js +122 -0
- package/dist/CallSettings/CallSettings.test.js.map +1 -0
- package/dist/CallSettings/UcmBackendConnector.js +217 -0
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
- package/dist/CallSettings/UcmBackendConnector.test.js +227 -0
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
- package/dist/CallSettings/WxCallBackendConnector.js +541 -0
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
- package/dist/CallSettings/WxCallBackendConnector.test.js +802 -0
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
- package/dist/CallSettings/constants.js +30 -0
- package/dist/CallSettings/constants.js.map +1 -0
- package/dist/CallSettings/testFixtures.js +72 -0
- package/dist/CallSettings/testFixtures.js.map +1 -0
- package/dist/CallSettings/types.js +7 -0
- package/dist/CallSettings/types.js.map +1 -0
- package/dist/CallingClient/CallingClient.js +572 -0
- package/dist/CallingClient/CallingClient.js.map +1 -0
- package/dist/CallingClient/CallingClient.test.js +931 -0
- package/dist/CallingClient/CallingClient.test.js.map +1 -0
- package/dist/CallingClient/callRecordFixtures.js +103 -0
- package/dist/CallingClient/callRecordFixtures.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/index.js +287 -0
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/index.test.js +274 -0
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/types.js +7 -0
- package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
- package/dist/CallingClient/calling/call.js +2995 -0
- package/dist/CallingClient/calling/call.js.map +1 -0
- package/dist/CallingClient/calling/call.test.js +2616 -0
- package/dist/CallingClient/calling/call.test.js.map +1 -0
- package/dist/CallingClient/calling/callManager.js +443 -0
- package/dist/CallingClient/calling/callManager.js.map +1 -0
- package/dist/CallingClient/calling/callManager.test.js +683 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -0
- package/dist/CallingClient/calling/index.js +30 -0
- package/dist/CallingClient/calling/index.js.map +1 -0
- package/dist/CallingClient/calling/types.js +71 -0
- package/dist/CallingClient/calling/types.js.map +1 -0
- package/dist/CallingClient/callingClientFixtures.js +53 -0
- package/dist/CallingClient/callingClientFixtures.js.map +1 -0
- package/dist/CallingClient/constants.js +226 -0
- package/dist/CallingClient/constants.js.map +1 -0
- package/dist/CallingClient/line/index.js +312 -0
- package/dist/CallingClient/line/index.js.map +1 -0
- package/dist/CallingClient/line/line.test.js +270 -0
- package/dist/CallingClient/line/line.test.js.map +1 -0
- package/dist/CallingClient/line/types.js +25 -0
- package/dist/CallingClient/line/types.js.map +1 -0
- package/dist/CallingClient/registration/index.js +19 -0
- package/dist/CallingClient/registration/index.js.map +1 -0
- package/dist/CallingClient/registration/register.js +1295 -0
- package/dist/CallingClient/registration/register.js.map +1 -0
- package/dist/CallingClient/registration/register.test.js +838 -0
- package/dist/CallingClient/registration/register.test.js.map +1 -0
- package/dist/CallingClient/registration/registerFixtures.js +41 -0
- package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
- package/dist/CallingClient/registration/types.js +7 -0
- package/dist/CallingClient/registration/types.js.map +1 -0
- package/dist/CallingClient/types.js +7 -0
- package/dist/CallingClient/types.js.map +1 -0
- package/dist/Contacts/ContactsClient.js +1145 -0
- package/dist/Contacts/ContactsClient.js.map +1 -0
- package/dist/Contacts/ContactsClient.test.js +725 -0
- package/dist/Contacts/ContactsClient.test.js.map +1 -0
- package/dist/Contacts/constants.js +36 -0
- package/dist/Contacts/constants.js.map +1 -0
- package/dist/Contacts/contactFixtures.js +340 -0
- package/dist/Contacts/contactFixtures.js.map +1 -0
- package/dist/Contacts/types.js +23 -0
- package/dist/Contacts/types.js.map +1 -0
- package/dist/Errors/catalog/CallError.js +94 -0
- package/dist/Errors/catalog/CallError.js.map +1 -0
- package/dist/Errors/catalog/CallingDeviceError.js +88 -0
- package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
- package/dist/Errors/catalog/ExtendedError.js +45 -0
- package/dist/Errors/catalog/ExtendedError.js.map +1 -0
- package/dist/Errors/catalog/LineError.js +90 -0
- package/dist/Errors/catalog/LineError.js.map +1 -0
- package/dist/Errors/index.js +21 -0
- package/dist/Errors/index.js.map +1 -0
- package/dist/Errors/types.js +62 -0
- package/dist/Errors/types.js.map +1 -0
- package/dist/Events/impl/index.js +82 -0
- package/dist/Events/impl/index.js.map +1 -0
- package/dist/Events/types.js +111 -0
- package/dist/Events/types.js.map +1 -0
- package/dist/Logger/index.js +221 -0
- package/dist/Logger/index.js.map +1 -0
- package/dist/Logger/index.test.js +62 -0
- package/dist/Logger/index.test.js.map +1 -0
- package/dist/Logger/types.js +37 -0
- package/dist/Logger/types.js.map +1 -0
- package/dist/Metrics/index.js +329 -0
- package/dist/Metrics/index.js.map +1 -0
- package/dist/Metrics/index.test.js +291 -0
- package/dist/Metrics/index.test.js.map +1 -0
- package/dist/Metrics/types.js +50 -0
- package/dist/Metrics/types.js.map +1 -0
- package/dist/SDKConnector/index.js +105 -0
- package/dist/SDKConnector/index.js.map +1 -0
- package/dist/SDKConnector/index.test.js +9 -0
- package/dist/SDKConnector/index.test.js.map +1 -0
- package/dist/SDKConnector/types.js +7 -0
- package/dist/SDKConnector/types.js.map +1 -0
- package/dist/SDKConnector/utils.js +40 -0
- package/dist/SDKConnector/utils.js.map +1 -0
- package/dist/SDKConnector/utils.test.js +9 -0
- package/dist/SDKConnector/utils.test.js.map +1 -0
- package/dist/Voicemail/BroadworksBackendConnector.js +632 -0
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
- package/dist/Voicemail/BroadworksBackendConnector.test.js +733 -0
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/UcmBackendConnector.js +566 -0
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
- package/dist/Voicemail/UcmBackendConnector.test.js +628 -0
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/Voicemail.js +378 -0
- package/dist/Voicemail/Voicemail.js.map +1 -0
- package/dist/Voicemail/Voicemail.test.js +226 -0
- package/dist/Voicemail/Voicemail.test.js.map +1 -0
- package/dist/Voicemail/WxCallBackendConnector.js +540 -0
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
- package/dist/Voicemail/WxCallBackendConnector.test.js +942 -0
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/constants.js +66 -0
- package/dist/Voicemail/constants.js.map +1 -0
- package/dist/Voicemail/types.js +7 -0
- package/dist/Voicemail/types.js.map +1 -0
- package/dist/Voicemail/voicemailFixture.js +559 -0
- package/dist/Voicemail/voicemailFixture.js.map +1 -0
- package/dist/api.js +164 -0
- package/dist/api.js.map +1 -0
- package/dist/common/Utils.js +1264 -0
- package/dist/common/Utils.js.map +1 -0
- package/dist/common/Utils.test.js +1227 -0
- package/dist/common/Utils.test.js.map +1 -0
- package/dist/common/constants.js +90 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/index.js +19 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/testUtil.js +968 -0
- package/dist/common/testUtil.js.map +1 -0
- package/dist/common/types.js +75 -0
- package/dist/common/types.js.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/module/Contacts/ContactsClient.js +3 -0
- package/dist/module/api.js +6 -5
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
- package/dist/types/CallSettings/types.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts +2 -1
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Contacts/types.d.ts +2 -0
- package/dist/types/Contacts/types.d.ts.map +1 -1
- package/dist/types/api.d.ts +6 -5
- package/dist/types/api.d.ts.map +1 -1
- 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
|