@webex/internal-plugin-dss 2.37.0 → 2.37.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.js +0 -2
- package/dist/constants.js.map +1 -1
- package/dist/dss.js +13 -68
- package/dist/dss.js.map +1 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +1 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +1 -1
- package/package.json +6 -6
- package/src/dss.ts +31 -27
- package/src/types.ts +7 -7
- package/test/unit/spec/dss.ts +135 -158
package/dist/constants.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
|
|
9
7
|
exports.SEARCH_TYPES = exports.DSS_UNREGISTERED = exports.DSS_SERVICE_NAME = exports.DSS_SEARCH_MERCURY_EVENT = exports.DSS_RESULT = exports.DSS_REGISTERED = exports.DSS_LOOKUP_RESULT = exports.DSS_LOOKUP_MERCURY_EVENT = void 0;
|
|
10
8
|
var DSS_REGISTERED = 'dss:registered';
|
|
11
9
|
exports.DSS_REGISTERED = DSS_REGISTERED;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DSS_REGISTERED","DSS_UNREGISTERED","DSS_LOOKUP_MERCURY_EVENT","DSS_SEARCH_MERCURY_EVENT","DSS_LOOKUP_RESULT","DSS_RESULT","DSS_SERVICE_NAME","SEARCH_TYPES","PERSON","CALLING_SERVICE","EXTERNAL_CALLING","ROOM","ROBOT"],"sources":["constants.ts"],"sourcesContent":["export const DSS_REGISTERED = 'dss:registered';\nexport const DSS_UNREGISTERED = 'dss:unregistered';\nexport const DSS_LOOKUP_MERCURY_EVENT = 'event:directory.lookup';\nexport const DSS_SEARCH_MERCURY_EVENT = 'event:directory.search';\nexport const DSS_LOOKUP_RESULT = 'dss:lookup.result';\nexport const DSS_RESULT = 'dss:result';\nexport const DSS_SERVICE_NAME = 'directorySearch';\nexport const SEARCH_TYPES = {\n PERSON: 'PERSON',\n CALLING_SERVICE: 'CALLING_SERVICE',\n EXTERNAL_CALLING: 'EXTERNAL_CALLING',\n ROOM: 'ROOM',\n ROBOT: 'ROBOT',\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["DSS_REGISTERED","DSS_UNREGISTERED","DSS_LOOKUP_MERCURY_EVENT","DSS_SEARCH_MERCURY_EVENT","DSS_LOOKUP_RESULT","DSS_RESULT","DSS_SERVICE_NAME","SEARCH_TYPES","PERSON","CALLING_SERVICE","EXTERNAL_CALLING","ROOM","ROBOT"],"sources":["constants.ts"],"sourcesContent":["export const DSS_REGISTERED = 'dss:registered';\nexport const DSS_UNREGISTERED = 'dss:unregistered';\nexport const DSS_LOOKUP_MERCURY_EVENT = 'event:directory.lookup';\nexport const DSS_SEARCH_MERCURY_EVENT = 'event:directory.search';\nexport const DSS_LOOKUP_RESULT = 'dss:lookup.result';\nexport const DSS_RESULT = 'dss:result';\nexport const DSS_SERVICE_NAME = 'directorySearch';\nexport const SEARCH_TYPES = {\n PERSON: 'PERSON',\n CALLING_SERVICE: 'CALLING_SERVICE',\n EXTERNAL_CALLING: 'EXTERNAL_CALLING',\n ROOM: 'ROOM',\n ROBOT: 'ROBOT',\n};\n"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAG,gBAAgB;AAAC;AACxC,IAAMC,gBAAgB,GAAG,kBAAkB;AAAC;AAC5C,IAAMC,wBAAwB,GAAG,wBAAwB;AAAC;AAC1D,IAAMC,wBAAwB,GAAG,wBAAwB;AAAC;AAC1D,IAAMC,iBAAiB,GAAG,mBAAmB;AAAC;AAC9C,IAAMC,UAAU,GAAG,YAAY;AAAC;AAChC,IAAMC,gBAAgB,GAAG,iBAAiB;AAAC;AAC3C,IAAMC,YAAY,GAAG;EAC1BC,MAAM,EAAE,QAAQ;EAChBC,eAAe,EAAE,iBAAiB;EAClCC,gBAAgB,EAAE,kBAAkB;EACpCC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE;AACT,CAAC;AAAC"}
|
package/dist/dss.js
CHANGED
|
@@ -1,54 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
-
|
|
5
4
|
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
6
|
-
|
|
7
5
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
8
|
-
|
|
9
6
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
10
|
-
|
|
11
7
|
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
12
|
-
|
|
13
8
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
14
|
-
|
|
15
9
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
16
|
-
|
|
17
10
|
_Object$defineProperty(exports, "__esModule", {
|
|
18
11
|
value: true
|
|
19
12
|
});
|
|
20
|
-
|
|
21
13
|
exports.default = void 0;
|
|
22
|
-
|
|
23
14
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
24
|
-
|
|
25
15
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
26
|
-
|
|
27
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
28
|
-
|
|
29
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
|
|
30
|
-
|
|
31
18
|
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
32
|
-
|
|
33
19
|
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
|
|
34
|
-
|
|
35
20
|
var _range2 = _interopRequireDefault(require("lodash/range"));
|
|
36
|
-
|
|
37
21
|
var _uuid = _interopRequireDefault(require("uuid"));
|
|
38
|
-
|
|
39
22
|
var _webexCore = require("@webex/webex-core");
|
|
40
|
-
|
|
41
23
|
require("@webex/internal-plugin-mercury");
|
|
42
|
-
|
|
43
24
|
var _constants = require("./constants");
|
|
44
|
-
|
|
45
25
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(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; }
|
|
46
|
-
|
|
47
26
|
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; }
|
|
48
|
-
|
|
49
27
|
var DSS = _webexCore.WebexPlugin.extend({
|
|
50
28
|
namespace: 'DSS',
|
|
51
|
-
|
|
52
29
|
/**
|
|
53
30
|
* registered value indicating events registration is successful
|
|
54
31
|
* @instance
|
|
@@ -56,7 +33,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
56
33
|
* @memberof DSS
|
|
57
34
|
*/
|
|
58
35
|
registered: false,
|
|
59
|
-
|
|
60
36
|
/**
|
|
61
37
|
* Explicitly sets up the DSS plugin by connecting to mercury, and listening for DSS events.
|
|
62
38
|
* @returns {Promise}
|
|
@@ -65,30 +41,23 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
65
41
|
*/
|
|
66
42
|
register: function register() {
|
|
67
43
|
var _this = this;
|
|
68
|
-
|
|
69
44
|
if (!this.webex.canAuthorize) {
|
|
70
45
|
this.logger.error('DSS->register#ERROR, Unable to register, SDK cannot authorize');
|
|
71
46
|
return _promise.default.reject(new Error('SDK cannot authorize'));
|
|
72
47
|
}
|
|
73
|
-
|
|
74
48
|
if (this.registered) {
|
|
75
49
|
this.logger.info('dss->register#INFO, DSS plugin already registered');
|
|
76
50
|
return _promise.default.resolve();
|
|
77
51
|
}
|
|
78
|
-
|
|
79
52
|
return this.webex.internal.mercury.connect().then(function () {
|
|
80
53
|
_this.listenForEvents();
|
|
81
|
-
|
|
82
54
|
_this.trigger(_constants.DSS_REGISTERED);
|
|
83
|
-
|
|
84
55
|
_this.registered = true;
|
|
85
56
|
}).catch(function (error) {
|
|
86
57
|
_this.logger.error("DSS->register#ERROR, Unable to register, ".concat(error.message));
|
|
87
|
-
|
|
88
58
|
return _promise.default.reject(error);
|
|
89
59
|
});
|
|
90
60
|
},
|
|
91
|
-
|
|
92
61
|
/**
|
|
93
62
|
* Explicitly tears down the DSS plugin by disconnecting from mercury, and stops listening to DSS events
|
|
94
63
|
* @returns {Promise}
|
|
@@ -97,20 +66,16 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
97
66
|
*/
|
|
98
67
|
unregister: function unregister() {
|
|
99
68
|
var _this2 = this;
|
|
100
|
-
|
|
101
69
|
if (!this.registered) {
|
|
102
70
|
this.logger.info('DSS->unregister#INFO, DSS plugin already unregistered');
|
|
103
71
|
return _promise.default.resolve();
|
|
104
72
|
}
|
|
105
|
-
|
|
106
73
|
this.stopListeningForEvents();
|
|
107
74
|
return this.webex.internal.mercury.disconnect().then(function () {
|
|
108
75
|
_this2.trigger(_constants.DSS_UNREGISTERED);
|
|
109
|
-
|
|
110
76
|
_this2.registered = false;
|
|
111
77
|
});
|
|
112
78
|
},
|
|
113
|
-
|
|
114
79
|
/**
|
|
115
80
|
* registers for DSS events through mercury
|
|
116
81
|
* @returns {undefined}
|
|
@@ -118,7 +83,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
118
83
|
*/
|
|
119
84
|
listenForEvents: function listenForEvents() {
|
|
120
85
|
var _this3 = this;
|
|
121
|
-
|
|
122
86
|
this.webex.internal.mercury.on(_constants.DSS_LOOKUP_MERCURY_EVENT, function (envelope) {
|
|
123
87
|
_this3._handleEvent(envelope.data);
|
|
124
88
|
});
|
|
@@ -126,7 +90,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
126
90
|
_this3._handleEvent(envelope.data);
|
|
127
91
|
});
|
|
128
92
|
},
|
|
129
|
-
|
|
130
93
|
/**
|
|
131
94
|
* unregisteres all the DSS events from mercury
|
|
132
95
|
* @returns {undefined}
|
|
@@ -136,7 +99,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
136
99
|
this.webex.internal.mercury.off(_constants.DSS_LOOKUP_MERCURY_EVENT);
|
|
137
100
|
this.webex.internal.mercury.off(_constants.DSS_SEARCH_MERCURY_EVENT);
|
|
138
101
|
},
|
|
139
|
-
|
|
140
102
|
/**
|
|
141
103
|
* @param {UUID} requestId the id of the request
|
|
142
104
|
* @returns {string}
|
|
@@ -144,7 +106,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
144
106
|
_getResultEventName: function _getResultEventName(requestId) {
|
|
145
107
|
return "".concat(_constants.DSS_RESULT).concat(requestId);
|
|
146
108
|
},
|
|
147
|
-
|
|
148
109
|
/**
|
|
149
110
|
* @param {Object} data the event data
|
|
150
111
|
* @returns {undefined}
|
|
@@ -153,54 +114,43 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
153
114
|
this.trigger(this._getResultEventName(data.requestId), data);
|
|
154
115
|
this.trigger(_constants.DSS_LOOKUP_RESULT, data);
|
|
155
116
|
},
|
|
156
|
-
|
|
157
117
|
/**
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
118
|
+
* Makes the request to the directory service
|
|
119
|
+
* @param {Object} options
|
|
120
|
+
* @param {string} options.resource the URL to query
|
|
121
|
+
* @param {string} options.params additional params for the body of the request
|
|
122
|
+
* @param {string} options.dataPath to path to get the data in the result object
|
|
123
|
+
* @returns {Promise} Resolves with an array of entities found
|
|
124
|
+
*/
|
|
165
125
|
_request: function _request(options) {
|
|
166
126
|
var _this4 = this;
|
|
167
|
-
|
|
168
127
|
var resource = options.resource,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
128
|
+
params = options.params,
|
|
129
|
+
dataPath = options.dataPath;
|
|
172
130
|
var requestId = _uuid.default.v4();
|
|
173
|
-
|
|
174
131
|
var eventName = this._getResultEventName(requestId);
|
|
175
|
-
|
|
176
132
|
var result = {};
|
|
177
133
|
var expectedSeqNums;
|
|
178
134
|
return new _promise.default(function (resolve) {
|
|
179
135
|
_this4.listenTo(_this4, eventName, function (data) {
|
|
180
136
|
var resultData = (0, _get2.default)(data, dataPath);
|
|
181
137
|
result[data.sequence] = resultData;
|
|
182
|
-
|
|
183
138
|
if (data.finished) {
|
|
184
139
|
expectedSeqNums = (0, _range2.default)(data.sequence + 1).map(String);
|
|
185
140
|
}
|
|
186
|
-
|
|
187
141
|
var done = (0, _isEqual2.default)(expectedSeqNums, (0, _keys.default)(result));
|
|
188
|
-
|
|
189
142
|
if (done) {
|
|
190
143
|
var resultArray = [];
|
|
191
144
|
expectedSeqNums.forEach(function (index) {
|
|
192
145
|
var seqResult = result[index];
|
|
193
|
-
|
|
194
146
|
if (seqResult) {
|
|
195
147
|
resultArray.push.apply(resultArray, (0, _toConsumableArray2.default)(seqResult));
|
|
196
148
|
}
|
|
197
149
|
});
|
|
198
150
|
resolve(resultArray);
|
|
199
|
-
|
|
200
151
|
_this4.stopListening(_this4, eventName);
|
|
201
152
|
}
|
|
202
153
|
});
|
|
203
|
-
|
|
204
154
|
_this4.webex.request({
|
|
205
155
|
service: _constants.DSS_SERVICE_NAME,
|
|
206
156
|
resource: resource,
|
|
@@ -212,7 +162,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
212
162
|
});
|
|
213
163
|
});
|
|
214
164
|
},
|
|
215
|
-
|
|
216
165
|
/**
|
|
217
166
|
* Retrieves detailed information about an entity
|
|
218
167
|
* @param {Object} options
|
|
@@ -226,7 +175,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
226
175
|
resource: "/lookup/orgid/".concat(this.webex.internal.device.orgId, "/identity/").concat(id, "/detail")
|
|
227
176
|
});
|
|
228
177
|
},
|
|
229
|
-
|
|
230
178
|
/**
|
|
231
179
|
* Retrieves basic information about a list entities within an organization
|
|
232
180
|
* @param {Object} options
|
|
@@ -236,7 +184,7 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
236
184
|
*/
|
|
237
185
|
lookup: function lookup(options) {
|
|
238
186
|
var ids = options.ids,
|
|
239
|
-
|
|
187
|
+
entityProviderType = options.entityProviderType;
|
|
240
188
|
var resource = entityProviderType ? "/lookup/orgid/".concat(this.webex.internal.device.orgId, "/entityprovidertype/").concat(entityProviderType) : "/lookup/orgid/".concat(this.webex.internal.device.orgId, "/identities");
|
|
241
189
|
return this._request({
|
|
242
190
|
dataPath: 'lookupResult.entities',
|
|
@@ -246,7 +194,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
246
194
|
}
|
|
247
195
|
});
|
|
248
196
|
},
|
|
249
|
-
|
|
250
197
|
/**
|
|
251
198
|
* Retrieves basic information about a list entities within an organization
|
|
252
199
|
* @param {Object} options
|
|
@@ -263,7 +210,6 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
263
210
|
}
|
|
264
211
|
});
|
|
265
212
|
},
|
|
266
|
-
|
|
267
213
|
/**
|
|
268
214
|
* Search for information about entities
|
|
269
215
|
* @param {Object} options
|
|
@@ -274,8 +220,8 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
274
220
|
*/
|
|
275
221
|
search: function search(options) {
|
|
276
222
|
var requestedTypes = options.requestedTypes,
|
|
277
|
-
|
|
278
|
-
|
|
223
|
+
resultSize = options.resultSize,
|
|
224
|
+
queryString = options.queryString;
|
|
279
225
|
return this._request({
|
|
280
226
|
dataPath: 'directoryEntities',
|
|
281
227
|
resource: "/search/orgid/".concat(this.webex.internal.device.orgId, "/entities"),
|
|
@@ -286,9 +232,8 @@ var DSS = _webexCore.WebexPlugin.extend({
|
|
|
286
232
|
}
|
|
287
233
|
});
|
|
288
234
|
},
|
|
289
|
-
version: "2.37.
|
|
235
|
+
version: "2.37.2"
|
|
290
236
|
});
|
|
291
|
-
|
|
292
237
|
var _default = DSS;
|
|
293
238
|
exports.default = _default;
|
|
294
239
|
//# sourceMappingURL=dss.js.map
|
package/dist/dss.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DSS","WebexPlugin","extend","namespace","registered","register","webex","canAuthorize","logger","error","reject","Error","info","resolve","internal","mercury","connect","then","listenForEvents","trigger","DSS_REGISTERED","catch","message","unregister","stopListeningForEvents","disconnect","DSS_UNREGISTERED","on","DSS_LOOKUP_MERCURY_EVENT","envelope","_handleEvent","data","DSS_SEARCH_MERCURY_EVENT","off","_getResultEventName","requestId","DSS_RESULT","DSS_LOOKUP_RESULT","_request","options","resource","params","dataPath","uuid","v4","eventName","result","expectedSeqNums","listenTo","resultData","sequence","finished","map","String","done","resultArray","forEach","index","seqResult","push","stopListening","request","service","DSS_SERVICE_NAME","method","contentType","body","lookupDetail","id","device","orgId","lookup","ids","entityProviderType","lookupValues","lookupByEmail","emails","search","requestedTypes","resultSize","queryString"],"sources":["dss.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\nimport uuid from 'uuid';\nimport {WebexPlugin} from '@webex/webex-core';\nimport '@webex/internal-plugin-mercury';\nimport {range, isEqual, get} from 'lodash';\nimport type {SearchOptions, LookupDetailOptions, LookupOptions, LookupByEmailOptions} from './types';\n\nimport {\n DSS_REGISTERED,\n DSS_UNREGISTERED,\n DSS_LOOKUP_MERCURY_EVENT,\n DSS_LOOKUP_RESULT,\n DSS_SERVICE_NAME,\n DSS_SEARCH_MERCURY_EVENT,\n DSS_RESULT,\n} from './constants';\n\nconst DSS = WebexPlugin.extend({\n namespace: 'DSS',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof DSS\n */\n registered: false,\n\n /**\n * Explicitly sets up the DSS plugin by connecting to mercury, and listening for DSS events.\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('DSS->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('dss->register#INFO, DSS plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.mercury.connect()\n .then(() => {\n this.listenForEvents();\n this.trigger(DSS_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`DSS->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the DSS plugin by disconnecting from mercury, and stops listening to DSS events\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('DSS->unregister#INFO, DSS plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury.disconnect()\n .then(() => {\n this.trigger(DSS_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for DSS events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n this.webex.internal.mercury.on(DSS_LOOKUP_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n this.webex.internal.mercury.on(DSS_SEARCH_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n },\n\n /**\n * unregisteres all the DSS events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off(DSS_LOOKUP_MERCURY_EVENT);\n this.webex.internal.mercury.off(DSS_SEARCH_MERCURY_EVENT);\n },\n\n /**\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getResultEventName(requestId) {\n return `${DSS_RESULT}${requestId}`;\n },\n\n /**\n * @param {Object} data the event data\n * @returns {undefined}\n */\n _handleEvent(data) {\n this.trigger(this._getResultEventName(data.requestId), data);\n this.trigger(DSS_LOOKUP_RESULT, data);\n },\n\n /**\n * Makes the request to the directory service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {string} options.params additional params for the body of the request\n * @param {string} options.dataPath to path to get the data in the result object\n * @returns {Promise} Resolves with an array of entities found\n */\n _request(options) {\n const {resource, params, dataPath} = options;\n\n const requestId = uuid.v4();\n const eventName = this._getResultEventName(requestId);\n const result = {};\n let expectedSeqNums;\n\n return new Promise((resolve) => {\n this.listenTo(this, eventName, (data) => {\n const resultData = get(data, dataPath);\n\n result[data.sequence] = resultData;\n\n if (data.finished) {\n expectedSeqNums = range(data.sequence + 1).map(String);\n }\n\n const done = isEqual(expectedSeqNums, Object.keys(result));\n\n if (done) {\n const resultArray = [];\n expectedSeqNums.forEach((index) => {\n const seqResult = result[index];\n if (seqResult) {\n resultArray.push(...seqResult);\n }\n })\n\n resolve(resultArray);\n this.stopListening(this, eventName);\n }\n });\n this.webex.request({\n service: DSS_SERVICE_NAME,\n resource,\n method: 'POST',\n contentType: 'application/json',\n body: {requestId, ...params}\n });\n });\n },\n\n /**\n * Retrieves detailed information about an entity\n * @param {Object} options\n * @param {UUID} options.id the id of the entity to lookup\n * @returns {Promise} Resolves with an array of entities found\n */\n lookupDetail(options: LookupDetailOptions) {\n const {id} = options;\n\n return this._request({\n dataPath: 'lookupResult.entities',\n resource: `/lookup/orgid/${this.webex.internal.device.orgId}/identity/${id}/detail`\n });\n },\n\n /**\n * Retrieves basic information about a list entities within an organization\n * @param {Object} options\n * @param {UUID} options.ids the id of the entity to lookup\n * @param {UUID} options.entityProviderType the provider to query (optional)\n * @returns {Promise} Resolves with an array of entities found\n */\n lookup(options: LookupOptions) {\n const {ids, entityProviderType} = options;\n\n const resource = entityProviderType ? `/lookup/orgid/${this.webex.internal.device.orgId}/entityprovidertype/${entityProviderType}` : `/lookup/orgid/${this.webex.internal.device.orgId}/identities`;\n\n return this._request({\n dataPath: 'lookupResult.entities',\n resource,\n params: {\n lookupValues: ids,\n }\n });\n },\n\n /**\n * Retrieves basic information about a list entities within an organization\n * @param {Object} options\n * @param {UUID} options.emails the emails of the entities to lookup\n * @returns {Promise} Resolves with an array of entities found\n */\n lookupByEmail(options: LookupByEmailOptions) {\n const {emails} = options;\n\n return this._request({\n dataPath: 'lookupResult.entities',\n resource: `/lookup/orgid/${this.webex.internal.device.orgId}/emails`,\n params: {\n lookupValues: emails,\n }\n });\n },\n\n /**\n * Search for information about entities\n * @param {Object} options\n * @param {SearchType[]} options.requestedTypes an array of search types from: PERSON, CALLING_SERVICE, EXTERNAL_CALLING, ROOM, ROBOT\n * @param {string[]} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: username, givenName, familyName, displayName and email\n * @param {number} options.resultSize The maximum number of results returned from each provider\n * @returns {Promise} Resolves with an array of entities found\n */\n search(options: SearchOptions) {\n const {\n requestedTypes, resultSize, queryString\n } = options;\n\n return this._request({\n dataPath: 'directoryEntities',\n resource: `/search/orgid/${this.webex.internal.device.orgId}/entities`,\n params: {\n queryString,\n resultSize,\n requestedTypes\n }\n });\n }\n\n});\n\nexport default DSS;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["DSS","WebexPlugin","extend","namespace","registered","register","webex","canAuthorize","logger","error","reject","Error","info","resolve","internal","mercury","connect","then","listenForEvents","trigger","DSS_REGISTERED","catch","message","unregister","stopListeningForEvents","disconnect","DSS_UNREGISTERED","on","DSS_LOOKUP_MERCURY_EVENT","envelope","_handleEvent","data","DSS_SEARCH_MERCURY_EVENT","off","_getResultEventName","requestId","DSS_RESULT","DSS_LOOKUP_RESULT","_request","options","resource","params","dataPath","uuid","v4","eventName","result","expectedSeqNums","listenTo","resultData","sequence","finished","map","String","done","resultArray","forEach","index","seqResult","push","stopListening","request","service","DSS_SERVICE_NAME","method","contentType","body","lookupDetail","id","device","orgId","lookup","ids","entityProviderType","lookupValues","lookupByEmail","emails","search","requestedTypes","resultSize","queryString"],"sources":["dss.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\nimport uuid from 'uuid';\nimport {WebexPlugin} from '@webex/webex-core';\nimport '@webex/internal-plugin-mercury';\nimport {range, isEqual, get} from 'lodash';\nimport type {\n SearchOptions,\n LookupDetailOptions,\n LookupOptions,\n LookupByEmailOptions,\n} from './types';\n\nimport {\n DSS_REGISTERED,\n DSS_UNREGISTERED,\n DSS_LOOKUP_MERCURY_EVENT,\n DSS_LOOKUP_RESULT,\n DSS_SERVICE_NAME,\n DSS_SEARCH_MERCURY_EVENT,\n DSS_RESULT,\n} from './constants';\n\nconst DSS = WebexPlugin.extend({\n namespace: 'DSS',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof DSS\n */\n registered: false,\n\n /**\n * Explicitly sets up the DSS plugin by connecting to mercury, and listening for DSS events.\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('DSS->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('dss->register#INFO, DSS plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.mercury\n .connect()\n .then(() => {\n this.listenForEvents();\n this.trigger(DSS_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`DSS->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the DSS plugin by disconnecting from mercury, and stops listening to DSS events\n * @returns {Promise}\n * @public\n * @memberof DSS\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('DSS->unregister#INFO, DSS plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury.disconnect().then(() => {\n this.trigger(DSS_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for DSS events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n this.webex.internal.mercury.on(DSS_LOOKUP_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n this.webex.internal.mercury.on(DSS_SEARCH_MERCURY_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n },\n\n /**\n * unregisteres all the DSS events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off(DSS_LOOKUP_MERCURY_EVENT);\n this.webex.internal.mercury.off(DSS_SEARCH_MERCURY_EVENT);\n },\n\n /**\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getResultEventName(requestId) {\n return `${DSS_RESULT}${requestId}`;\n },\n\n /**\n * @param {Object} data the event data\n * @returns {undefined}\n */\n _handleEvent(data) {\n this.trigger(this._getResultEventName(data.requestId), data);\n this.trigger(DSS_LOOKUP_RESULT, data);\n },\n\n /**\n * Makes the request to the directory service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {string} options.params additional params for the body of the request\n * @param {string} options.dataPath to path to get the data in the result object\n * @returns {Promise} Resolves with an array of entities found\n */\n _request(options) {\n const {resource, params, dataPath} = options;\n\n const requestId = uuid.v4();\n const eventName = this._getResultEventName(requestId);\n const result = {};\n let expectedSeqNums;\n\n return new Promise((resolve) => {\n this.listenTo(this, eventName, (data) => {\n const resultData = get(data, dataPath);\n\n result[data.sequence] = resultData;\n\n if (data.finished) {\n expectedSeqNums = range(data.sequence + 1).map(String);\n }\n\n const done = isEqual(expectedSeqNums, Object.keys(result));\n\n if (done) {\n const resultArray = [];\n expectedSeqNums.forEach((index) => {\n const seqResult = result[index];\n if (seqResult) {\n resultArray.push(...seqResult);\n }\n });\n\n resolve(resultArray);\n this.stopListening(this, eventName);\n }\n });\n this.webex.request({\n service: DSS_SERVICE_NAME,\n resource,\n method: 'POST',\n contentType: 'application/json',\n body: {requestId, ...params},\n });\n });\n },\n\n /**\n * Retrieves detailed information about an entity\n * @param {Object} options\n * @param {UUID} options.id the id of the entity to lookup\n * @returns {Promise} Resolves with an array of entities found\n */\n lookupDetail(options: LookupDetailOptions) {\n const {id} = options;\n\n return this._request({\n dataPath: 'lookupResult.entities',\n resource: `/lookup/orgid/${this.webex.internal.device.orgId}/identity/${id}/detail`,\n });\n },\n\n /**\n * Retrieves basic information about a list entities within an organization\n * @param {Object} options\n * @param {UUID} options.ids the id of the entity to lookup\n * @param {UUID} options.entityProviderType the provider to query (optional)\n * @returns {Promise} Resolves with an array of entities found\n */\n lookup(options: LookupOptions) {\n const {ids, entityProviderType} = options;\n\n const resource = entityProviderType\n ? `/lookup/orgid/${this.webex.internal.device.orgId}/entityprovidertype/${entityProviderType}`\n : `/lookup/orgid/${this.webex.internal.device.orgId}/identities`;\n\n return this._request({\n dataPath: 'lookupResult.entities',\n resource,\n params: {\n lookupValues: ids,\n },\n });\n },\n\n /**\n * Retrieves basic information about a list entities within an organization\n * @param {Object} options\n * @param {UUID} options.emails the emails of the entities to lookup\n * @returns {Promise} Resolves with an array of entities found\n */\n lookupByEmail(options: LookupByEmailOptions) {\n const {emails} = options;\n\n return this._request({\n dataPath: 'lookupResult.entities',\n resource: `/lookup/orgid/${this.webex.internal.device.orgId}/emails`,\n params: {\n lookupValues: emails,\n },\n });\n },\n\n /**\n * Search for information about entities\n * @param {Object} options\n * @param {SearchType[]} options.requestedTypes an array of search types from: PERSON, CALLING_SERVICE, EXTERNAL_CALLING, ROOM, ROBOT\n * @param {string[]} options.queryString A query string that will be transformed into a Directory search filter query. It is used to search the following fields: username, givenName, familyName, displayName and email\n * @param {number} options.resultSize The maximum number of results returned from each provider\n * @returns {Promise} Resolves with an array of entities found\n */\n search(options: SearchOptions) {\n const {requestedTypes, resultSize, queryString} = options;\n\n return this._request({\n dataPath: 'directoryEntities',\n resource: `/search/orgid/${this.webex.internal.device.orgId}/entities`,\n params: {\n queryString,\n resultSize,\n requestedTypes,\n },\n });\n },\n});\n\nexport default DSS;\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
_Object$defineProperty(exports, "default", {
|
|
12
9
|
enumerable: true,
|
|
13
10
|
get: function get() {
|
|
14
11
|
return _dss.default;
|
|
15
12
|
}
|
|
16
13
|
});
|
|
17
|
-
|
|
18
14
|
var _webexCore = require("@webex/webex-core");
|
|
19
|
-
|
|
20
15
|
var _dss = _interopRequireDefault(require("./dss"));
|
|
21
|
-
|
|
22
16
|
(0, _webexCore.registerInternalPlugin)('dss', _dss.default);
|
|
23
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerInternalPlugin","DSS"],"sources":["index.ts"],"sourcesContent":["import {registerInternalPlugin} from '@webex/webex-core';\n\nimport DSS from './dss';\n\nregisterInternalPlugin('dss', DSS);\n\nexport {default} from './dss';\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["registerInternalPlugin","DSS"],"sources":["index.ts"],"sourcesContent":["import {registerInternalPlugin} from '@webex/webex-core';\n\nimport DSS from './dss';\n\nregisterInternalPlugin('dss', DSS);\n\nexport {default} from './dss';\n"],"mappings":";;;;;;;;;;;;;AAAA;AAEA;AAEA,IAAAA,iCAAsB,EAAC,KAAK,EAAEC,YAAG,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
|
|
9
7
|
exports.SearchType = exports.EntityProviderType = void 0;
|
|
10
8
|
var EntityProviderType;
|
|
11
9
|
exports.EntityProviderType = EntityProviderType;
|
|
12
|
-
|
|
13
10
|
(function (EntityProviderType) {
|
|
14
11
|
EntityProviderType["CI_USER"] = "CI_USER";
|
|
15
12
|
EntityProviderType["CI_MACHINE"] = "CI_MACHINE";
|
|
16
13
|
EntityProviderType["CONTACTS"] = "CONTACTS";
|
|
17
14
|
EntityProviderType["CSDM"] = "CSDM";
|
|
18
15
|
})(EntityProviderType || (exports.EntityProviderType = EntityProviderType = {}));
|
|
19
|
-
|
|
20
16
|
var SearchType;
|
|
21
17
|
exports.SearchType = SearchType;
|
|
22
|
-
|
|
23
18
|
(function (SearchType) {
|
|
24
19
|
SearchType["PERSON"] = "PERSON";
|
|
25
20
|
SearchType["CALLING_SERVICE"] = "CALLING_SERVICE";
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EntityProviderType","SearchType"],"sources":["types.ts"],"sourcesContent":["export interface LookupDetailOptions {\n id: string;\n}\n\nexport enum EntityProviderType {\n CI_USER = 'CI_USER',\n CI_MACHINE ='CI_MACHINE',\n CONTACTS = 'CONTACTS',\n CSDM = 'CSDM'
|
|
1
|
+
{"version":3,"names":["EntityProviderType","SearchType"],"sources":["types.ts"],"sourcesContent":["export interface LookupDetailOptions {\n id: string;\n}\n\nexport enum EntityProviderType {\n CI_USER = 'CI_USER',\n CI_MACHINE = 'CI_MACHINE',\n CONTACTS = 'CONTACTS',\n CSDM = 'CSDM',\n}\n\nexport interface LookupOptions {\n ids: string[];\n entityProviderType?: EntityProviderType;\n}\n\nexport interface LookupByEmailOptions {\n emails: string[];\n}\n\nexport enum SearchType {\n PERSON = 'PERSON',\n CALLING_SERVICE = 'CALLING_SERVICE',\n EXTERNAL_CALLING = 'EXTERNAL_CALLING',\n ROOM = 'ROOM',\n ROBOT = 'ROBOT',\n}\n\nexport interface SearchOptions {\n requestedTypes: SearchType[];\n resultSize: number;\n queryString: string;\n}\n"],"mappings":";;;;;;;IAIYA,kBAAkB;AAAA;AAAA,WAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;AAAA,GAAlBA,kBAAkB,kCAAlBA,kBAAkB;AAAA,IAgBlBC,UAAU;AAAA;AAAA,WAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;AAAA,GAAVA,UAAU,0BAAVA,UAAU"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-dss",
|
|
3
|
-
"version": "2.37.
|
|
3
|
+
"version": "2.37.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Colin Read <coread@cisco.com>",
|
|
@@ -21,14 +21,14 @@
|
|
|
21
21
|
]
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@webex/internal-plugin-mercury": "2.37.
|
|
25
|
-
"@webex/webex-core": "2.37.
|
|
24
|
+
"@webex/internal-plugin-mercury": "2.37.2",
|
|
25
|
+
"@webex/webex-core": "2.37.2",
|
|
26
26
|
"lodash": "^4.17.21",
|
|
27
27
|
"uuid": "^3.3.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@webex/internal-plugin-dss": "2.37.
|
|
31
|
-
"@webex/test-helper-chai": "2.37.
|
|
32
|
-
"@webex/test-helper-mock-webex": "2.37.
|
|
30
|
+
"@webex/internal-plugin-dss": "2.37.2",
|
|
31
|
+
"@webex/test-helper-chai": "2.37.2",
|
|
32
|
+
"@webex/test-helper-mock-webex": "2.37.2"
|
|
33
33
|
}
|
|
34
34
|
}
|
package/src/dss.ts
CHANGED
|
@@ -6,7 +6,12 @@ import uuid from 'uuid';
|
|
|
6
6
|
import {WebexPlugin} from '@webex/webex-core';
|
|
7
7
|
import '@webex/internal-plugin-mercury';
|
|
8
8
|
import {range, isEqual, get} from 'lodash';
|
|
9
|
-
import type {
|
|
9
|
+
import type {
|
|
10
|
+
SearchOptions,
|
|
11
|
+
LookupDetailOptions,
|
|
12
|
+
LookupOptions,
|
|
13
|
+
LookupByEmailOptions,
|
|
14
|
+
} from './types';
|
|
10
15
|
|
|
11
16
|
import {
|
|
12
17
|
DSS_REGISTERED,
|
|
@@ -48,7 +53,8 @@ const DSS = WebexPlugin.extend({
|
|
|
48
53
|
return Promise.resolve();
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
return this.webex.internal.mercury
|
|
56
|
+
return this.webex.internal.mercury
|
|
57
|
+
.connect()
|
|
52
58
|
.then(() => {
|
|
53
59
|
this.listenForEvents();
|
|
54
60
|
this.trigger(DSS_REGISTERED);
|
|
@@ -76,11 +82,10 @@ const DSS = WebexPlugin.extend({
|
|
|
76
82
|
|
|
77
83
|
this.stopListeningForEvents();
|
|
78
84
|
|
|
79
|
-
return this.webex.internal.mercury.disconnect()
|
|
80
|
-
.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
});
|
|
85
|
+
return this.webex.internal.mercury.disconnect().then(() => {
|
|
86
|
+
this.trigger(DSS_UNREGISTERED);
|
|
87
|
+
this.registered = false;
|
|
88
|
+
});
|
|
84
89
|
},
|
|
85
90
|
|
|
86
91
|
/**
|
|
@@ -125,13 +130,13 @@ const DSS = WebexPlugin.extend({
|
|
|
125
130
|
},
|
|
126
131
|
|
|
127
132
|
/**
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
* Makes the request to the directory service
|
|
134
|
+
* @param {Object} options
|
|
135
|
+
* @param {string} options.resource the URL to query
|
|
136
|
+
* @param {string} options.params additional params for the body of the request
|
|
137
|
+
* @param {string} options.dataPath to path to get the data in the result object
|
|
138
|
+
* @returns {Promise} Resolves with an array of entities found
|
|
139
|
+
*/
|
|
135
140
|
_request(options) {
|
|
136
141
|
const {resource, params, dataPath} = options;
|
|
137
142
|
|
|
@@ -159,7 +164,7 @@ const DSS = WebexPlugin.extend({
|
|
|
159
164
|
if (seqResult) {
|
|
160
165
|
resultArray.push(...seqResult);
|
|
161
166
|
}
|
|
162
|
-
})
|
|
167
|
+
});
|
|
163
168
|
|
|
164
169
|
resolve(resultArray);
|
|
165
170
|
this.stopListening(this, eventName);
|
|
@@ -170,7 +175,7 @@ const DSS = WebexPlugin.extend({
|
|
|
170
175
|
resource,
|
|
171
176
|
method: 'POST',
|
|
172
177
|
contentType: 'application/json',
|
|
173
|
-
body: {requestId, ...params}
|
|
178
|
+
body: {requestId, ...params},
|
|
174
179
|
});
|
|
175
180
|
});
|
|
176
181
|
},
|
|
@@ -186,7 +191,7 @@ const DSS = WebexPlugin.extend({
|
|
|
186
191
|
|
|
187
192
|
return this._request({
|
|
188
193
|
dataPath: 'lookupResult.entities',
|
|
189
|
-
resource: `/lookup/orgid/${this.webex.internal.device.orgId}/identity/${id}/detail
|
|
194
|
+
resource: `/lookup/orgid/${this.webex.internal.device.orgId}/identity/${id}/detail`,
|
|
190
195
|
});
|
|
191
196
|
},
|
|
192
197
|
|
|
@@ -200,14 +205,16 @@ const DSS = WebexPlugin.extend({
|
|
|
200
205
|
lookup(options: LookupOptions) {
|
|
201
206
|
const {ids, entityProviderType} = options;
|
|
202
207
|
|
|
203
|
-
const resource = entityProviderType
|
|
208
|
+
const resource = entityProviderType
|
|
209
|
+
? `/lookup/orgid/${this.webex.internal.device.orgId}/entityprovidertype/${entityProviderType}`
|
|
210
|
+
: `/lookup/orgid/${this.webex.internal.device.orgId}/identities`;
|
|
204
211
|
|
|
205
212
|
return this._request({
|
|
206
213
|
dataPath: 'lookupResult.entities',
|
|
207
214
|
resource,
|
|
208
215
|
params: {
|
|
209
216
|
lookupValues: ids,
|
|
210
|
-
}
|
|
217
|
+
},
|
|
211
218
|
});
|
|
212
219
|
},
|
|
213
220
|
|
|
@@ -225,7 +232,7 @@ const DSS = WebexPlugin.extend({
|
|
|
225
232
|
resource: `/lookup/orgid/${this.webex.internal.device.orgId}/emails`,
|
|
226
233
|
params: {
|
|
227
234
|
lookupValues: emails,
|
|
228
|
-
}
|
|
235
|
+
},
|
|
229
236
|
});
|
|
230
237
|
},
|
|
231
238
|
|
|
@@ -238,9 +245,7 @@ const DSS = WebexPlugin.extend({
|
|
|
238
245
|
* @returns {Promise} Resolves with an array of entities found
|
|
239
246
|
*/
|
|
240
247
|
search(options: SearchOptions) {
|
|
241
|
-
const {
|
|
242
|
-
requestedTypes, resultSize, queryString
|
|
243
|
-
} = options;
|
|
248
|
+
const {requestedTypes, resultSize, queryString} = options;
|
|
244
249
|
|
|
245
250
|
return this._request({
|
|
246
251
|
dataPath: 'directoryEntities',
|
|
@@ -248,11 +253,10 @@ const DSS = WebexPlugin.extend({
|
|
|
248
253
|
params: {
|
|
249
254
|
queryString,
|
|
250
255
|
resultSize,
|
|
251
|
-
requestedTypes
|
|
252
|
-
}
|
|
256
|
+
requestedTypes,
|
|
257
|
+
},
|
|
253
258
|
});
|
|
254
|
-
}
|
|
255
|
-
|
|
259
|
+
},
|
|
256
260
|
});
|
|
257
261
|
|
|
258
262
|
export default DSS;
|
package/src/types.ts
CHANGED
|
@@ -4,9 +4,9 @@ export interface LookupDetailOptions {
|
|
|
4
4
|
|
|
5
5
|
export enum EntityProviderType {
|
|
6
6
|
CI_USER = 'CI_USER',
|
|
7
|
-
CI_MACHINE ='CI_MACHINE',
|
|
7
|
+
CI_MACHINE = 'CI_MACHINE',
|
|
8
8
|
CONTACTS = 'CONTACTS',
|
|
9
|
-
CSDM = 'CSDM'
|
|
9
|
+
CSDM = 'CSDM',
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export interface LookupOptions {
|
|
@@ -19,15 +19,15 @@ export interface LookupByEmailOptions {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export enum SearchType {
|
|
22
|
-
PERSON = 'PERSON',
|
|
22
|
+
PERSON = 'PERSON',
|
|
23
23
|
CALLING_SERVICE = 'CALLING_SERVICE',
|
|
24
24
|
EXTERNAL_CALLING = 'EXTERNAL_CALLING',
|
|
25
25
|
ROOM = 'ROOM',
|
|
26
|
-
ROBOT = 'ROBOT'
|
|
26
|
+
ROBOT = 'ROBOT',
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export interface SearchOptions {
|
|
30
|
-
requestedTypes: SearchType[]
|
|
31
|
-
resultSize: number
|
|
32
|
-
queryString: string
|
|
30
|
+
requestedTypes: SearchType[];
|
|
31
|
+
resultSize: number;
|
|
32
|
+
queryString: string;
|
|
33
33
|
}
|
package/test/unit/spec/dss.ts
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import DSS from
|
|
7
|
-
import MockWebex from
|
|
8
|
-
import sinon from
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import uuid from
|
|
12
|
-
|
|
13
|
-
describe(
|
|
14
|
-
describe(
|
|
5
|
+
import {assert} from '@webex/test-helper-chai';
|
|
6
|
+
import DSS from '@webex/internal-plugin-dss';
|
|
7
|
+
import MockWebex from '@webex/test-helper-mock-webex';
|
|
8
|
+
import sinon from 'sinon';
|
|
9
|
+
import {expect} from 'chai';
|
|
10
|
+
import {set} from 'lodash';
|
|
11
|
+
import uuid from 'uuid';
|
|
12
|
+
|
|
13
|
+
describe('plugin-dss', () => {
|
|
14
|
+
describe('DSS', () => {
|
|
15
15
|
let webex;
|
|
16
16
|
let uuidStub;
|
|
17
17
|
let mercuryCallbacks;
|
|
@@ -24,10 +24,10 @@ describe("plugin-dss", () => {
|
|
|
24
24
|
},
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
-
uuidStub = sinon.stub(uuid,
|
|
27
|
+
uuidStub = sinon.stub(uuid, 'v4').returns('randomid');
|
|
28
28
|
|
|
29
29
|
webex.canAuthorize = true;
|
|
30
|
-
webex.internal.device.orgId =
|
|
30
|
+
webex.internal.device.orgId = 'userOrgId';
|
|
31
31
|
|
|
32
32
|
mercuryCallbacks = {};
|
|
33
33
|
|
|
@@ -45,50 +45,50 @@ describe("plugin-dss", () => {
|
|
|
45
45
|
uuidStub.restore();
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
describe(
|
|
49
|
-
it(
|
|
48
|
+
describe('#register()', () => {
|
|
49
|
+
it('registers correctly', async () => {
|
|
50
50
|
await webex.internal.dss.register();
|
|
51
51
|
|
|
52
52
|
assert.callCount(webex.internal.mercury.on, 2);
|
|
53
53
|
|
|
54
54
|
const firstCallArgs = webex.internal.mercury.on.getCall(0).args;
|
|
55
|
-
expect(firstCallArgs[0]).to.equal(
|
|
56
|
-
expect(firstCallArgs[1]).to.be.a(
|
|
55
|
+
expect(firstCallArgs[0]).to.equal('event:directory.lookup');
|
|
56
|
+
expect(firstCallArgs[1]).to.be.a('function');
|
|
57
57
|
|
|
58
58
|
const secondCallArgs = webex.internal.mercury.on.getCall(1).args;
|
|
59
|
-
expect(secondCallArgs[0]).to.equal(
|
|
60
|
-
expect(secondCallArgs[1]).to.be.a(
|
|
59
|
+
expect(secondCallArgs[0]).to.equal('event:directory.search');
|
|
60
|
+
expect(secondCallArgs[1]).to.be.a('function');
|
|
61
61
|
|
|
62
62
|
assert.equal(webex.internal.dss.registered, true);
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
-
it(
|
|
65
|
+
it('rejects when it cannot authorize', async () => {
|
|
66
66
|
webex.canAuthorize = false;
|
|
67
67
|
await expect(webex.internal.dss.register()).to.be.rejectedWith(
|
|
68
68
|
Error,
|
|
69
|
-
|
|
69
|
+
'SDK cannot authorize'
|
|
70
70
|
);
|
|
71
71
|
assert.equal(webex.internal.dss.registered, false);
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
|
|
75
|
-
describe(
|
|
76
|
-
it(
|
|
75
|
+
describe('#unregister()', () => {
|
|
76
|
+
it('unregisters correctly', async () => {
|
|
77
77
|
webex.internal.dss.registered = true;
|
|
78
78
|
await webex.internal.dss.unregister();
|
|
79
79
|
|
|
80
80
|
assert.callCount(webex.internal.mercury.off, 2);
|
|
81
81
|
|
|
82
82
|
const firstCallArgs = webex.internal.mercury.off.getCall(0).args;
|
|
83
|
-
expect(firstCallArgs[0]).to.equal(
|
|
83
|
+
expect(firstCallArgs[0]).to.equal('event:directory.lookup');
|
|
84
84
|
|
|
85
85
|
const secondCallArgs = webex.internal.mercury.off.getCall(1).args;
|
|
86
|
-
expect(secondCallArgs[0]).to.equal(
|
|
86
|
+
expect(secondCallArgs[0]).to.equal('event:directory.search');
|
|
87
87
|
|
|
88
88
|
assert.equal(webex.internal.dss.registered, false);
|
|
89
89
|
});
|
|
90
90
|
|
|
91
|
-
it(
|
|
91
|
+
it('handles unregister when it is not registered', async () => {
|
|
92
92
|
const result = await webex.internal.dss.unregister();
|
|
93
93
|
await expect(result).equal(undefined);
|
|
94
94
|
assert.equal(webex.internal.dss.registered, false);
|
|
@@ -104,34 +104,27 @@ describe("plugin-dss", () => {
|
|
|
104
104
|
(data as any).finished = finished;
|
|
105
105
|
}
|
|
106
106
|
set(data, dataPath, [`data${sequence}`]);
|
|
107
|
-
return {
|
|
107
|
+
return {data};
|
|
108
108
|
};
|
|
109
109
|
|
|
110
|
-
const testRequest = async ({
|
|
111
|
-
method,
|
|
112
|
-
resource,
|
|
113
|
-
params,
|
|
114
|
-
bodyParams,
|
|
115
|
-
dataPath,
|
|
116
|
-
event,
|
|
117
|
-
}) => {
|
|
110
|
+
const testRequest = async ({method, resource, params, bodyParams, dataPath, event}) => {
|
|
118
111
|
webex.request = sinon.stub();
|
|
119
112
|
|
|
120
113
|
await webex.internal.dss.register();
|
|
121
114
|
|
|
122
115
|
const promise = webex.internal.dss[method](params);
|
|
123
116
|
|
|
124
|
-
const requestId =
|
|
117
|
+
const requestId = 'randomid';
|
|
125
118
|
|
|
126
119
|
expect(webex.request.getCall(0).args).to.deep.equal([
|
|
127
120
|
{
|
|
128
|
-
service:
|
|
121
|
+
service: 'directorySearch',
|
|
129
122
|
body: {
|
|
130
123
|
requestId,
|
|
131
124
|
...bodyParams,
|
|
132
125
|
},
|
|
133
|
-
contentType:
|
|
134
|
-
method:
|
|
126
|
+
contentType: 'application/json',
|
|
127
|
+
method: 'POST',
|
|
135
128
|
resource,
|
|
136
129
|
},
|
|
137
130
|
]);
|
|
@@ -141,241 +134,225 @@ describe("plugin-dss", () => {
|
|
|
141
134
|
mercuryCallbacks[event](createData(requestId, 0, false, dataPath));
|
|
142
135
|
|
|
143
136
|
const result = await promise;
|
|
144
|
-
expect(result).to.deep.equal([
|
|
137
|
+
expect(result).to.deep.equal(['data0', 'data1', 'data2']);
|
|
145
138
|
};
|
|
146
139
|
|
|
147
|
-
describe(
|
|
148
|
-
it(
|
|
149
|
-
webex.internal.device.orgId =
|
|
150
|
-
webex.internal.dss._request = sinon
|
|
151
|
-
.stub()
|
|
152
|
-
.returns(Promise.resolve("some return value"));
|
|
140
|
+
describe('#lookupDetail', () => {
|
|
141
|
+
it('calls _request correctly', async () => {
|
|
142
|
+
webex.internal.device.orgId = 'userOrgId';
|
|
143
|
+
webex.internal.dss._request = sinon.stub().returns(Promise.resolve('some return value'));
|
|
153
144
|
|
|
154
|
-
const result = await webex.internal.dss.lookupDetail({
|
|
145
|
+
const result = await webex.internal.dss.lookupDetail({id: 'test id'});
|
|
155
146
|
expect(webex.internal.dss._request.getCall(0).args).to.deep.equal([
|
|
156
147
|
{
|
|
157
|
-
dataPath:
|
|
148
|
+
dataPath: 'lookupResult.entities',
|
|
158
149
|
resource: '/lookup/orgid/userOrgId/identity/test id/detail',
|
|
159
150
|
},
|
|
160
151
|
]);
|
|
161
|
-
expect(result).to.equal(
|
|
152
|
+
expect(result).to.equal('some return value');
|
|
162
153
|
});
|
|
163
154
|
|
|
164
|
-
it(
|
|
155
|
+
it('works correctly', async () => {
|
|
165
156
|
await testRequest({
|
|
166
|
-
method:
|
|
167
|
-
dataPath:
|
|
168
|
-
event:
|
|
157
|
+
method: 'lookupDetail',
|
|
158
|
+
dataPath: 'lookupResult.entities',
|
|
159
|
+
event: 'event:directory.lookup',
|
|
169
160
|
resource: '/lookup/orgid/userOrgId/identity/test id/detail',
|
|
170
161
|
params: {
|
|
171
|
-
id:
|
|
162
|
+
id: 'test id',
|
|
172
163
|
},
|
|
173
164
|
bodyParams: {},
|
|
174
165
|
});
|
|
175
166
|
});
|
|
176
167
|
});
|
|
177
168
|
|
|
178
|
-
describe(
|
|
179
|
-
it(
|
|
180
|
-
webex.internal.device.orgId =
|
|
181
|
-
webex.internal.dss._request = sinon
|
|
182
|
-
.stub()
|
|
183
|
-
.returns(Promise.resolve("some return value"));
|
|
169
|
+
describe('#lookup', () => {
|
|
170
|
+
it('calls _request correctly', async () => {
|
|
171
|
+
webex.internal.device.orgId = 'userOrgId';
|
|
172
|
+
webex.internal.dss._request = sinon.stub().returns(Promise.resolve('some return value'));
|
|
184
173
|
|
|
185
|
-
const result = await webex.internal.dss.lookup({
|
|
174
|
+
const result = await webex.internal.dss.lookup({ids: ['id1', 'id2']});
|
|
186
175
|
expect(webex.internal.dss._request.getCall(0).args).to.deep.equal([
|
|
187
176
|
{
|
|
188
|
-
dataPath:
|
|
177
|
+
dataPath: 'lookupResult.entities',
|
|
189
178
|
resource: '/lookup/orgid/userOrgId/identities',
|
|
190
179
|
params: {
|
|
191
|
-
lookupValues: [
|
|
180
|
+
lookupValues: ['id1', 'id2'],
|
|
192
181
|
},
|
|
193
182
|
},
|
|
194
183
|
]);
|
|
195
|
-
expect(result).to.equal(
|
|
184
|
+
expect(result).to.equal('some return value');
|
|
196
185
|
});
|
|
197
186
|
|
|
198
|
-
it(
|
|
199
|
-
webex.internal.device.orgId =
|
|
200
|
-
webex.internal.dss._request = sinon
|
|
201
|
-
.stub()
|
|
202
|
-
.returns(Promise.resolve("some return value"));
|
|
187
|
+
it('calls _request correctly with entityProviderType', async () => {
|
|
188
|
+
webex.internal.device.orgId = 'userOrgId';
|
|
189
|
+
webex.internal.dss._request = sinon.stub().returns(Promise.resolve('some return value'));
|
|
203
190
|
|
|
204
|
-
const result = await webex.internal.dss.lookup({
|
|
191
|
+
const result = await webex.internal.dss.lookup({
|
|
192
|
+
ids: ['id1', 'id2'],
|
|
193
|
+
entityProviderType: 'CI_USER',
|
|
194
|
+
});
|
|
205
195
|
expect(webex.internal.dss._request.getCall(0).args).to.deep.equal([
|
|
206
196
|
{
|
|
207
|
-
dataPath:
|
|
197
|
+
dataPath: 'lookupResult.entities',
|
|
208
198
|
resource: '/lookup/orgid/userOrgId/entityprovidertype/CI_USER',
|
|
209
199
|
params: {
|
|
210
|
-
lookupValues: [
|
|
200
|
+
lookupValues: ['id1', 'id2'],
|
|
211
201
|
},
|
|
212
202
|
},
|
|
213
203
|
]);
|
|
214
|
-
expect(result).to.equal(
|
|
204
|
+
expect(result).to.equal('some return value');
|
|
215
205
|
});
|
|
216
206
|
|
|
217
|
-
it(
|
|
207
|
+
it('works correctly', async () => {
|
|
218
208
|
await testRequest({
|
|
219
|
-
method:
|
|
220
|
-
dataPath:
|
|
221
|
-
event:
|
|
209
|
+
method: 'lookup',
|
|
210
|
+
dataPath: 'lookupResult.entities',
|
|
211
|
+
event: 'event:directory.lookup',
|
|
222
212
|
resource: '/lookup/orgid/userOrgId/identities',
|
|
223
213
|
params: {
|
|
224
|
-
ids: [
|
|
214
|
+
ids: ['id1', 'id2'],
|
|
225
215
|
},
|
|
226
216
|
bodyParams: {
|
|
227
|
-
lookupValues: [
|
|
217
|
+
lookupValues: ['id1', 'id2'],
|
|
228
218
|
},
|
|
229
219
|
});
|
|
230
220
|
});
|
|
231
221
|
});
|
|
232
222
|
|
|
233
|
-
describe(
|
|
234
|
-
it(
|
|
235
|
-
webex.internal.device.orgId =
|
|
236
|
-
webex.internal.dss._request = sinon
|
|
237
|
-
.stub()
|
|
238
|
-
.returns(Promise.resolve("some return value"));
|
|
223
|
+
describe('#lookupByEmail', () => {
|
|
224
|
+
it('calls _request correctly', async () => {
|
|
225
|
+
webex.internal.device.orgId = 'userOrgId';
|
|
226
|
+
webex.internal.dss._request = sinon.stub().returns(Promise.resolve('some return value'));
|
|
239
227
|
|
|
240
228
|
const result = await webex.internal.dss.lookupByEmail({
|
|
241
|
-
emails: [
|
|
229
|
+
emails: ['email1', 'email2'],
|
|
242
230
|
});
|
|
243
231
|
expect(webex.internal.dss._request.getCall(0).args).to.deep.equal([
|
|
244
232
|
{
|
|
245
|
-
dataPath:
|
|
233
|
+
dataPath: 'lookupResult.entities',
|
|
246
234
|
resource: '/lookup/orgid/userOrgId/emails',
|
|
247
235
|
params: {
|
|
248
|
-
lookupValues: [
|
|
236
|
+
lookupValues: ['email1', 'email2'],
|
|
249
237
|
},
|
|
250
238
|
},
|
|
251
239
|
]);
|
|
252
|
-
expect(result).to.equal(
|
|
240
|
+
expect(result).to.equal('some return value');
|
|
253
241
|
});
|
|
254
242
|
|
|
255
|
-
it(
|
|
243
|
+
it('works correctly', async () => {
|
|
256
244
|
await testRequest({
|
|
257
|
-
method:
|
|
258
|
-
dataPath:
|
|
259
|
-
event:
|
|
245
|
+
method: 'lookupByEmail',
|
|
246
|
+
dataPath: 'lookupResult.entities',
|
|
247
|
+
event: 'event:directory.lookup',
|
|
260
248
|
resource: '/lookup/orgid/userOrgId/emails',
|
|
261
249
|
params: {
|
|
262
|
-
emails: [
|
|
250
|
+
emails: ['email1', 'email2'],
|
|
263
251
|
},
|
|
264
252
|
bodyParams: {
|
|
265
|
-
lookupValues: [
|
|
253
|
+
lookupValues: ['email1', 'email2'],
|
|
266
254
|
},
|
|
267
255
|
});
|
|
268
256
|
});
|
|
269
257
|
});
|
|
270
258
|
|
|
271
|
-
describe(
|
|
272
|
-
it(
|
|
273
|
-
webex.internal.device.orgId =
|
|
274
|
-
webex.internal.dss._request = sinon
|
|
275
|
-
.stub()
|
|
276
|
-
.returns(Promise.resolve("some return value"));
|
|
259
|
+
describe('#search', () => {
|
|
260
|
+
it('calls _request correctly', async () => {
|
|
261
|
+
webex.internal.device.orgId = 'userOrgId';
|
|
262
|
+
webex.internal.dss._request = sinon.stub().returns(Promise.resolve('some return value'));
|
|
277
263
|
|
|
278
264
|
const result = await webex.internal.dss.search({
|
|
279
|
-
requestedTypes: [
|
|
265
|
+
requestedTypes: ['PERSON', 'ROBOT'],
|
|
280
266
|
resultSize: 100,
|
|
281
|
-
queryString:
|
|
267
|
+
queryString: 'query',
|
|
282
268
|
});
|
|
283
269
|
expect(webex.internal.dss._request.getCall(0).args).to.deep.equal([
|
|
284
270
|
{
|
|
285
|
-
dataPath:
|
|
271
|
+
dataPath: 'directoryEntities',
|
|
286
272
|
resource: '/search/orgid/userOrgId/entities',
|
|
287
273
|
params: {
|
|
288
|
-
queryString:
|
|
274
|
+
queryString: 'query',
|
|
289
275
|
resultSize: 100,
|
|
290
|
-
requestedTypes: [
|
|
276
|
+
requestedTypes: ['PERSON', 'ROBOT'],
|
|
291
277
|
},
|
|
292
278
|
},
|
|
293
279
|
]);
|
|
294
|
-
expect(result).to.equal(
|
|
280
|
+
expect(result).to.equal('some return value');
|
|
295
281
|
});
|
|
296
282
|
|
|
297
|
-
it(
|
|
283
|
+
it('works correctly', async () => {
|
|
298
284
|
await testRequest({
|
|
299
|
-
method:
|
|
300
|
-
event:
|
|
301
|
-
dataPath:
|
|
285
|
+
method: 'search',
|
|
286
|
+
event: 'event:directory.search',
|
|
287
|
+
dataPath: 'directoryEntities',
|
|
302
288
|
resource: '/search/orgid/userOrgId/entities',
|
|
303
289
|
params: {
|
|
304
|
-
requestedTypes: [
|
|
290
|
+
requestedTypes: ['PERSON', 'ROBOT'],
|
|
305
291
|
resultSize: 100,
|
|
306
|
-
queryString:
|
|
292
|
+
queryString: 'query',
|
|
307
293
|
},
|
|
308
294
|
bodyParams: {
|
|
309
|
-
requestedTypes: [
|
|
295
|
+
requestedTypes: ['PERSON', 'ROBOT'],
|
|
310
296
|
resultSize: 100,
|
|
311
|
-
queryString:
|
|
297
|
+
queryString: 'query',
|
|
312
298
|
},
|
|
313
299
|
});
|
|
314
300
|
});
|
|
315
301
|
});
|
|
316
302
|
|
|
317
|
-
describe(
|
|
318
|
-
it(
|
|
303
|
+
describe('#_request', () => {
|
|
304
|
+
it('handles a request correctly', async () => {
|
|
319
305
|
webex.request = sinon.stub();
|
|
320
|
-
uuid.v4.returns(
|
|
306
|
+
uuid.v4.returns('randomid');
|
|
321
307
|
const promise = webex.internal.dss._request({
|
|
322
|
-
resource:
|
|
323
|
-
params: {
|
|
324
|
-
dataPath:
|
|
308
|
+
resource: '/search/orgid/userOrgId/entities',
|
|
309
|
+
params: {some: 'param'},
|
|
310
|
+
dataPath: 'a.b.c',
|
|
325
311
|
});
|
|
326
312
|
|
|
327
313
|
expect(webex.request.getCall(0).args).to.deep.equal([
|
|
328
314
|
{
|
|
329
|
-
service:
|
|
315
|
+
service: 'directorySearch',
|
|
330
316
|
body: {
|
|
331
|
-
requestId:
|
|
332
|
-
some:
|
|
317
|
+
requestId: 'randomid',
|
|
318
|
+
some: 'param',
|
|
333
319
|
},
|
|
334
|
-
contentType:
|
|
335
|
-
method:
|
|
336
|
-
resource:
|
|
320
|
+
contentType: 'application/json',
|
|
321
|
+
method: 'POST',
|
|
322
|
+
resource: '/search/orgid/userOrgId/entities',
|
|
337
323
|
},
|
|
338
324
|
]);
|
|
339
325
|
|
|
340
|
-
webex.internal.dss.trigger(
|
|
341
|
-
|
|
342
|
-
{
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
b: {
|
|
346
|
-
c: ["data1"],
|
|
347
|
-
},
|
|
326
|
+
webex.internal.dss.trigger(webex.internal.dss._getResultEventName('randomid'), {
|
|
327
|
+
sequence: 1,
|
|
328
|
+
a: {
|
|
329
|
+
b: {
|
|
330
|
+
c: ['data1'],
|
|
348
331
|
},
|
|
349
|
-
}
|
|
350
|
-
);
|
|
332
|
+
},
|
|
333
|
+
});
|
|
351
334
|
|
|
352
|
-
webex.internal.dss.trigger(
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
b: {
|
|
359
|
-
c: ["data2"],
|
|
360
|
-
},
|
|
335
|
+
webex.internal.dss.trigger(webex.internal.dss._getResultEventName('randomid'), {
|
|
336
|
+
sequence: 2,
|
|
337
|
+
finished: true,
|
|
338
|
+
a: {
|
|
339
|
+
b: {
|
|
340
|
+
c: ['data2'],
|
|
361
341
|
},
|
|
362
|
-
}
|
|
363
|
-
);
|
|
342
|
+
},
|
|
343
|
+
});
|
|
364
344
|
|
|
365
|
-
webex.internal.dss.trigger(
|
|
366
|
-
|
|
367
|
-
{
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
b: {
|
|
371
|
-
c: ["data0"],
|
|
372
|
-
},
|
|
345
|
+
webex.internal.dss.trigger(webex.internal.dss._getResultEventName('randomid'), {
|
|
346
|
+
sequence: 0,
|
|
347
|
+
a: {
|
|
348
|
+
b: {
|
|
349
|
+
c: ['data0'],
|
|
373
350
|
},
|
|
374
|
-
}
|
|
375
|
-
);
|
|
351
|
+
},
|
|
352
|
+
});
|
|
376
353
|
|
|
377
354
|
const result = await promise;
|
|
378
|
-
expect(result).to.deep.equal([
|
|
355
|
+
expect(result).to.deep.equal(['data0', 'data1', 'data2']);
|
|
379
356
|
});
|
|
380
357
|
});
|
|
381
358
|
});
|