@webex/test-helper-mock-webex 3.0.0-beta.3 → 3.0.0-beta.300
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/index.js +46 -40
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.js +153 -119
package/dist/index.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
6
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
7
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
8
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
3
9
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
4
|
-
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
5
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
6
|
-
|
|
7
12
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
8
|
-
|
|
9
|
-
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
|
|
10
|
-
|
|
11
13
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
12
|
-
|
|
14
|
+
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; }
|
|
15
|
+
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; }
|
|
13
16
|
/*!
|
|
14
17
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
15
18
|
*/
|
|
@@ -19,28 +22,22 @@ if (typeof _promise.default === 'undefined') {
|
|
|
19
22
|
// eslint-disable-next-line global-require
|
|
20
23
|
require('es6-promise').polyfill();
|
|
21
24
|
}
|
|
22
|
-
|
|
23
25
|
var _ = require('lodash');
|
|
24
|
-
|
|
25
26
|
var sinon = require('sinon');
|
|
26
|
-
|
|
27
27
|
var State = require('ampersand-state');
|
|
28
|
-
|
|
29
28
|
var nonInternalPlugins = ['authorization', 'credentials', 'memberships', 'messages', 'logger', 'people', 'phone', 'meetings', 'rooms', 'teams', 'teamMemberships', 'webhooks'];
|
|
29
|
+
|
|
30
30
|
/**
|
|
31
31
|
* Mock Webex constructor
|
|
32
32
|
* @param {Object} options
|
|
33
33
|
* @returns {MockWebex}
|
|
34
34
|
*/
|
|
35
|
-
|
|
36
35
|
function makeWebex(options) {
|
|
37
36
|
var requestPromise = _promise.default.resolve({
|
|
38
37
|
statusCode: 200,
|
|
39
38
|
body: {}
|
|
40
39
|
});
|
|
41
|
-
|
|
42
40
|
var uploadPromise = _promise.default.resolve({});
|
|
43
|
-
|
|
44
41
|
options = options || {};
|
|
45
42
|
options.children = options.children || {};
|
|
46
43
|
var internalOptions = {};
|
|
@@ -54,23 +51,22 @@ function makeWebex(options) {
|
|
|
54
51
|
}
|
|
55
52
|
});
|
|
56
53
|
internalOptions.children = internalChildren;
|
|
57
|
-
options.children = externalChildren;
|
|
58
|
-
// Because it turns out we're relying on ordering
|
|
54
|
+
options.children = externalChildren;
|
|
59
55
|
|
|
60
|
-
|
|
56
|
+
// This weird assignment is to make sure "internal" is the first property.
|
|
57
|
+
// Because it turns out we're relying on ordering
|
|
58
|
+
options.children = _objectSpread({
|
|
61
59
|
internal: State.extend(internalOptions)
|
|
62
60
|
}, options.children);
|
|
63
|
-
|
|
64
61
|
requestPromise.on = uploadPromise.on = function on() {
|
|
65
62
|
return requestPromise;
|
|
66
63
|
};
|
|
64
|
+
|
|
67
65
|
/**
|
|
68
66
|
* produces a mock storage object
|
|
69
67
|
* @param {Object} data
|
|
70
68
|
* @returns {Storage}
|
|
71
69
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
70
|
function makeMockStorage(data) {
|
|
75
71
|
data = data || {};
|
|
76
72
|
return {
|
|
@@ -85,38 +81,34 @@ function makeWebex(options) {
|
|
|
85
81
|
},
|
|
86
82
|
del: function del(namespace, key) {
|
|
87
83
|
this.data = this.data || data;
|
|
88
|
-
this.data[namespace] = this.data[namespace] || {};
|
|
89
|
-
|
|
84
|
+
this.data[namespace] = this.data[namespace] || {};
|
|
85
|
+
// eslint-disable-next-line prefer-reflect
|
|
90
86
|
delete this.data[namespace][key];
|
|
91
87
|
},
|
|
92
88
|
get: function get(namespace, key) {
|
|
93
89
|
this.data = this.data || data;
|
|
94
90
|
this.data[namespace] = this.data[namespace] || {};
|
|
95
91
|
var ret = this.data[namespace][key];
|
|
96
|
-
|
|
97
92
|
if (ret) {
|
|
98
93
|
return _promise.default.resolve(ret);
|
|
99
94
|
}
|
|
100
|
-
|
|
101
95
|
return _promise.default.reject(new Error('MockNotFoundError'));
|
|
102
96
|
},
|
|
103
97
|
put: function put(namespace, key, value) {
|
|
104
98
|
this.data = this.data || data;
|
|
105
|
-
|
|
106
99
|
try {
|
|
107
100
|
// this is the simplest way to to turn ampstate objects into bare
|
|
108
101
|
// objects without actually checking if they're ampstate objects
|
|
109
102
|
value = JSON.parse((0, _stringify.default)(value));
|
|
110
|
-
} catch (err) {
|
|
103
|
+
} catch (err) {
|
|
104
|
+
// ignore
|
|
111
105
|
}
|
|
112
|
-
|
|
113
106
|
this.data[namespace] = this.data[namespace] || {};
|
|
114
107
|
this.data[namespace][key] = value;
|
|
115
108
|
return _promise.default.resolve();
|
|
116
109
|
}
|
|
117
110
|
};
|
|
118
111
|
}
|
|
119
|
-
|
|
120
112
|
var request = sinon.stub().returns(requestPromise);
|
|
121
113
|
var upload = sinon.stub().returns(uploadPromise);
|
|
122
114
|
var MockWebex = State.extend(_.defaults(options, {
|
|
@@ -172,13 +164,7 @@ function makeWebex(options) {
|
|
|
172
164
|
voicea: {},
|
|
173
165
|
meetings: {
|
|
174
166
|
mediaSettings: {
|
|
175
|
-
|
|
176
|
-
sendVideo: true,
|
|
177
|
-
receiveAudio: true,
|
|
178
|
-
receiveVideo: true,
|
|
179
|
-
pstn: false,
|
|
180
|
-
sendShare: false,
|
|
181
|
-
receiveShare: false
|
|
167
|
+
pstn: false
|
|
182
168
|
},
|
|
183
169
|
reconnection: {
|
|
184
170
|
enabled: true,
|
|
@@ -210,7 +196,6 @@ function makeWebex(options) {
|
|
|
210
196
|
}));
|
|
211
197
|
var webex = new MockWebex(options && options.attrs);
|
|
212
198
|
sinon.spy(webex, 'refresh');
|
|
213
|
-
|
|
214
199
|
_.defaults(webex, {
|
|
215
200
|
credentials: {
|
|
216
201
|
authorization: 'Basic NOTATOKEN',
|
|
@@ -234,7 +219,6 @@ function makeWebex(options) {
|
|
|
234
219
|
debug: sinon.spy()
|
|
235
220
|
}
|
|
236
221
|
});
|
|
237
|
-
|
|
238
222
|
_.defaults(webex.internal, {
|
|
239
223
|
avatar: {},
|
|
240
224
|
conversation: {},
|
|
@@ -253,7 +237,15 @@ function makeWebex(options) {
|
|
|
253
237
|
}
|
|
254
238
|
},
|
|
255
239
|
registered: true,
|
|
256
|
-
register: sinon.stub().returns(_promise.default.resolve())
|
|
240
|
+
register: sinon.stub().returns(_promise.default.resolve()),
|
|
241
|
+
ipNetworkDetector: {
|
|
242
|
+
get supportsIpV4() {
|
|
243
|
+
return true;
|
|
244
|
+
},
|
|
245
|
+
get supportsIpV6() {
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
257
249
|
},
|
|
258
250
|
feature: {
|
|
259
251
|
setFeature: sinon.stub().returns(_promise.default.resolve(false)),
|
|
@@ -267,11 +259,25 @@ function makeWebex(options) {
|
|
|
267
259
|
user: {},
|
|
268
260
|
mercury: {},
|
|
269
261
|
llm: {},
|
|
270
|
-
voicea: {}
|
|
262
|
+
voicea: {},
|
|
263
|
+
newMetrics: {
|
|
264
|
+
submitInternalEvent: sinon.stub(),
|
|
265
|
+
submitMQE: sinon.stub(),
|
|
266
|
+
submitClientEvent: sinon.stub(),
|
|
267
|
+
callDiagnosticLatencies: {
|
|
268
|
+
saveTimestamp: sinon.stub()
|
|
269
|
+
},
|
|
270
|
+
callDiagnosticMetrics: {
|
|
271
|
+
submitClientEvent: sinon.stub(),
|
|
272
|
+
submitMQE: sinon.stub(),
|
|
273
|
+
callDiagnosticEventsBatcher: {
|
|
274
|
+
queue: sinon.stub()
|
|
275
|
+
},
|
|
276
|
+
submitToCallDiagnostics: sinon.stub()
|
|
277
|
+
}
|
|
278
|
+
}
|
|
271
279
|
});
|
|
272
|
-
|
|
273
280
|
return webex;
|
|
274
281
|
}
|
|
275
|
-
|
|
276
282
|
module.exports = makeWebex;
|
|
277
283
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","polyfill","_","sinon","State","nonInternalPlugins","makeWebex","options","requestPromise","resolve","statusCode","body","uploadPromise","children","internalOptions","internalChildren","externalChildren","forEach","key","indexOf","internal","extend","on","makeMockStorage","data","spy","once","listenTo","listenToAndRun","clear","namespace","del","get","ret","reject","Error","put","value","JSON","parse","err","request","stub","returns","upload","MockWebex","defaults","extraProperies","refresh","setConfig","config","credentials","idbroker","url","process","env","IDBROKER_BASE_URL","identity","IDENTITY_BASE_URL","defaultUrl","activationUrl","authorizeUrl","setPasswordUrl","logoutUrl","client_id","client_secret","redirect_uri","scope","service","conversation","allowedTags","avatar","device","encryption","logger","mercury","metrics","support","user","llm","voicea","meetings","mediaSettings","sendAudio","sendVideo","receiveAudio","receiveVideo","pstn","sendShare","receiveShare","reconnection","enabled","detection","retry","times","backOff","start","rate","stats","interval","historyMax","clientType","clientName","mqaMetricsInterval","autoSendMQA","initialize","attrs","boundedStorage","initialBoundedStorage","unboundedStorage","initialUnboundedStorage","webex","authorization","getUserToken","toString","getClientToken","sessionId","MOCK_LOGGER","console","error","warn","log","info","debug","webSocketUrl","getWebSocketUrl","features","developer","entitlement","registered","register","feature","setFeature","getFeature","sendUnstructured","module","exports"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n\n/* istanbul ignore next */\nif (typeof Promise === 'undefined') {\n // eslint-disable-next-line global-require\n require('es6-promise').polyfill();\n}\n\nconst _ = require('lodash');\nconst sinon = require('sinon');\nconst State = require('ampersand-state');\n\nconst nonInternalPlugins = [\n 'authorization',\n 'credentials',\n 'memberships',\n 'messages',\n 'logger',\n 'people',\n 'phone',\n 'meetings',\n 'rooms',\n 'teams',\n 'teamMemberships',\n 'webhooks'\n];\n\n/**\n * Mock Webex constructor\n * @param {Object} options\n * @returns {MockWebex}\n */\nfunction makeWebex(options) {\n const requestPromise = Promise.resolve({statusCode: 200, body: {}});\n const uploadPromise = Promise.resolve({});\n\n options = options || {};\n options.children = options.children || {};\n\n const internalOptions = {};\n\n const internalChildren = {};\n const externalChildren = {};\n\n Object.keys(options.children).forEach((key) => {\n if (nonInternalPlugins.indexOf(key) === -1) {\n internalChildren[key] = options.children[key];\n }\n else {\n externalChildren[key] = options.children[key];\n }\n });\n\n internalOptions.children = internalChildren;\n options.children = externalChildren;\n\n // This weird assignment is to make sure \"internal\" is the first property.\n // Because it turns out we're relying on ordering\n options.children = Object.assign({\n internal: State.extend(internalOptions)\n }, options.children);\n\n requestPromise.on = uploadPromise.on = function on() {\n return requestPromise;\n };\n\n /**\n * produces a mock storage object\n * @param {Object} data\n * @returns {Storage}\n */\n function makeMockStorage(data) {\n data = data || {};\n\n return {\n data,\n on: sinon.spy(),\n once: sinon.spy(),\n listenTo: sinon.spy(),\n listenToAndRun: sinon.spy(),\n clear: function clear(namespace) {\n this.data = this.data || data;\n this.data[namespace] = {};\n },\n del: function del(namespace, key) {\n this.data = this.data || data;\n this.data[namespace] = this.data[namespace] || {};\n // eslint-disable-next-line prefer-reflect\n delete this.data[namespace][key];\n },\n get: function get(namespace, key) {\n this.data = this.data || data;\n this.data[namespace] = this.data[namespace] || {};\n const ret = this.data[namespace][key];\n\n if (ret) {\n return Promise.resolve(ret);\n }\n\n return Promise.reject(new Error('MockNotFoundError'));\n },\n put: function put(namespace, key, value) {\n this.data = this.data || data;\n try {\n // this is the simplest way to to turn ampstate objects into bare\n // objects without actually checking if they're ampstate objects\n value = JSON.parse(JSON.stringify(value));\n }\n catch (err) {\n // ignore\n }\n this.data[namespace] = this.data[namespace] || {};\n this.data[namespace][key] = value;\n\n return Promise.resolve();\n }\n };\n }\n\n const request = sinon.stub().returns(requestPromise);\n const upload = sinon.stub().returns(uploadPromise);\n const MockWebex = State.extend(_.defaults(options, {\n extraProperies: 'allow',\n request,\n upload,\n refresh: function refresh() {\n return Promise.resolve();\n },\n setConfig: function setConfig(config) {\n this.config.credentials.idbroker.url = config.credentials.idbroker.url || process.env.IDBROKER_BASE_URL;\n this.config.credentials.identity.url = config.credentials.identity.url || process.env.IDENTITY_BASE_URL;\n\n return Promise.resolve();\n },\n config: {\n credentials: {\n idbroker: {\n url: process.env.IDBROKER_BASE_URL,\n defaultUrl: process.env.IDBROKER_BASE_URL\n },\n identity: {\n url: process.env.IDENTITY_BASE_URL,\n defaultUrl: process.env.IDENTITY_BASE_URL\n },\n activationUrl: `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserActivation/invoke`,\n authorizeUrl: `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/authorize`,\n setPasswordUrl: `${process.env.IDBROKER_BASE_URL || 'https://identity.webex.com'}/identity/scim/v1/Users`,\n logoutUrl: `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/logout`,\n // eslint-disable-next-line camelcase\n client_id: 'fake',\n // eslint-disable-next-line camelcase\n client_secret: 'fake',\n // eslint-disable-next-line camelcase\n redirect_uri: 'http://example.com',\n // eslint-disable-next-line camelcase\n scope: 'scope:one',\n service: 'webex'\n },\n conversation: {\n allowedTags: {\n 'webex-mention': ['data-object-type', 'data-object-id', 'data-object-url']\n }\n },\n avatar: {},\n device: {},\n encryption: {},\n logger: {},\n mercury: {},\n metrics: {},\n support: {},\n user: {},\n llm: {},\n voicea: {},\n meetings: {\n mediaSettings: {\n sendAudio: true,\n sendVideo: true,\n receiveAudio: true,\n receiveVideo: true,\n pstn: false,\n sendShare: false,\n receiveShare: false\n },\n reconnection: {\n enabled: true,\n detection: true,\n retry: {\n times: 2,\n backOff: {\n start: 1000,\n rate: 2\n }\n }\n },\n stats: {\n interval: 1000,\n historyMax: 120\n },\n metrics: {\n clientType: 'TEAMS_CLIENT',\n clientName: 'WEBEX_JS_SDK',\n mqaMetricsInterval: 60000,\n autoSendMQA: true\n }\n }\n },\n initialize: function initialize(attrs) {\n this.boundedStorage = makeMockStorage(attrs && attrs.initialBoundedStorage);\n this.unboundedStorage = makeMockStorage(attrs && attrs.initialUnboundedStorage);\n }\n }));\n\n const webex = new MockWebex(options && options.attrs);\n\n sinon.spy(webex, 'refresh');\n _.defaults(webex, {\n credentials: {\n authorization: 'Basic NOTATOKEN',\n getUserToken: sinon.stub().returns(Promise.resolve({\n toString: function toString() {\n return 'Basic NOTATOKEN';\n }\n })),\n getClientToken: sinon.stub().returns(Promise.resolve({\n toString: function toString() {\n return 'Basic NOTATOKEN';\n }\n }))\n },\n sessionId: 'mock-webex_88888888-4444-4444-4444-aaaaaaaaaaaa',\n logger: process.env.MOCK_LOGGER ? console : {\n error: sinon.spy(),\n warn: sinon.spy(),\n log: sinon.spy(),\n info: sinon.spy(),\n debug: sinon.spy()\n }\n });\n\n _.defaults(webex.internal, {\n avatar: {},\n conversation: {},\n device: {\n webSocketUrl: 'ws://example.com',\n getWebSocketUrl: sinon.stub().returns(Promise.resolve('ws://example-2.com')),\n features: {\n developer: {\n get: sinon.stub()\n },\n entitlement: {\n get: sinon.stub()\n },\n user: {\n get: sinon.stub()\n }\n },\n registered: true,\n register: sinon.stub().returns(Promise.resolve())\n },\n feature: {\n setFeature: sinon.stub().returns(Promise.resolve(false)),\n getFeature: sinon.stub().returns(Promise.resolve(false))\n },\n encryption: {},\n metrics: {\n sendUnstructured: sinon.spy()\n },\n support: {},\n user: {},\n mercury: {},\n llm: {},\n voicea: {},\n });\n\n return webex;\n}\n\nmodule.exports = makeWebex;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["require","polyfill","_","sinon","State","nonInternalPlugins","makeWebex","options","requestPromise","resolve","statusCode","body","uploadPromise","children","internalOptions","internalChildren","externalChildren","forEach","key","indexOf","internal","extend","on","makeMockStorage","data","spy","once","listenTo","listenToAndRun","clear","namespace","del","get","ret","reject","Error","put","value","JSON","parse","err","request","stub","returns","upload","MockWebex","defaults","extraProperies","refresh","setConfig","config","credentials","idbroker","url","process","env","IDBROKER_BASE_URL","identity","IDENTITY_BASE_URL","defaultUrl","activationUrl","authorizeUrl","setPasswordUrl","logoutUrl","client_id","client_secret","redirect_uri","scope","service","conversation","allowedTags","avatar","device","encryption","logger","mercury","metrics","support","user","llm","voicea","meetings","mediaSettings","pstn","reconnection","enabled","detection","retry","times","backOff","start","rate","stats","interval","historyMax","clientType","clientName","mqaMetricsInterval","autoSendMQA","initialize","attrs","boundedStorage","initialBoundedStorage","unboundedStorage","initialUnboundedStorage","webex","authorization","getUserToken","toString","getClientToken","sessionId","MOCK_LOGGER","console","error","warn","log","info","debug","webSocketUrl","getWebSocketUrl","features","developer","entitlement","registered","register","ipNetworkDetector","supportsIpV4","supportsIpV6","feature","setFeature","getFeature","sendUnstructured","newMetrics","submitInternalEvent","submitMQE","submitClientEvent","callDiagnosticLatencies","saveTimestamp","callDiagnosticMetrics","callDiagnosticEventsBatcher","queue","submitToCallDiagnostics","module","exports"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* istanbul ignore next */\nif (typeof Promise === 'undefined') {\n // eslint-disable-next-line global-require\n require('es6-promise').polyfill();\n}\n\nconst _ = require('lodash');\nconst sinon = require('sinon');\nconst State = require('ampersand-state');\n\nconst nonInternalPlugins = [\n 'authorization',\n 'credentials',\n 'memberships',\n 'messages',\n 'logger',\n 'people',\n 'phone',\n 'meetings',\n 'rooms',\n 'teams',\n 'teamMemberships',\n 'webhooks',\n];\n\n/**\n * Mock Webex constructor\n * @param {Object} options\n * @returns {MockWebex}\n */\nfunction makeWebex(options) {\n const requestPromise = Promise.resolve({statusCode: 200, body: {}});\n const uploadPromise = Promise.resolve({});\n\n options = options || {};\n options.children = options.children || {};\n\n const internalOptions = {};\n\n const internalChildren = {};\n const externalChildren = {};\n\n Object.keys(options.children).forEach((key) => {\n if (nonInternalPlugins.indexOf(key) === -1) {\n internalChildren[key] = options.children[key];\n } else {\n externalChildren[key] = options.children[key];\n }\n });\n\n internalOptions.children = internalChildren;\n options.children = externalChildren;\n\n // This weird assignment is to make sure \"internal\" is the first property.\n // Because it turns out we're relying on ordering\n options.children = {\n internal: State.extend(internalOptions),\n ...options.children,\n };\n\n requestPromise.on = uploadPromise.on = function on() {\n return requestPromise;\n };\n\n /**\n * produces a mock storage object\n * @param {Object} data\n * @returns {Storage}\n */\n function makeMockStorage(data) {\n data = data || {};\n\n return {\n data,\n on: sinon.spy(),\n once: sinon.spy(),\n listenTo: sinon.spy(),\n listenToAndRun: sinon.spy(),\n clear: function clear(namespace) {\n this.data = this.data || data;\n this.data[namespace] = {};\n },\n del: function del(namespace, key) {\n this.data = this.data || data;\n this.data[namespace] = this.data[namespace] || {};\n // eslint-disable-next-line prefer-reflect\n delete this.data[namespace][key];\n },\n get: function get(namespace, key) {\n this.data = this.data || data;\n this.data[namespace] = this.data[namespace] || {};\n const ret = this.data[namespace][key];\n\n if (ret) {\n return Promise.resolve(ret);\n }\n\n return Promise.reject(new Error('MockNotFoundError'));\n },\n put: function put(namespace, key, value) {\n this.data = this.data || data;\n try {\n // this is the simplest way to to turn ampstate objects into bare\n // objects without actually checking if they're ampstate objects\n value = JSON.parse(JSON.stringify(value));\n } catch (err) {\n // ignore\n }\n this.data[namespace] = this.data[namespace] || {};\n this.data[namespace][key] = value;\n\n return Promise.resolve();\n },\n };\n }\n\n const request = sinon.stub().returns(requestPromise);\n const upload = sinon.stub().returns(uploadPromise);\n const MockWebex = State.extend(\n _.defaults(options, {\n extraProperies: 'allow',\n request,\n upload,\n refresh: function refresh() {\n return Promise.resolve();\n },\n setConfig: function setConfig(config) {\n this.config.credentials.idbroker.url =\n config.credentials.idbroker.url || process.env.IDBROKER_BASE_URL;\n this.config.credentials.identity.url =\n config.credentials.identity.url || process.env.IDENTITY_BASE_URL;\n\n return Promise.resolve();\n },\n config: {\n credentials: {\n idbroker: {\n url: process.env.IDBROKER_BASE_URL,\n defaultUrl: process.env.IDBROKER_BASE_URL,\n },\n identity: {\n url: process.env.IDENTITY_BASE_URL,\n defaultUrl: process.env.IDENTITY_BASE_URL,\n },\n activationUrl: `${\n process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'\n }/idb/token/v1/actions/UserActivation/invoke`,\n authorizeUrl: `${\n process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'\n }/idb/oauth2/v1/authorize`,\n setPasswordUrl: `${\n process.env.IDBROKER_BASE_URL || 'https://identity.webex.com'\n }/identity/scim/v1/Users`,\n logoutUrl: `${\n process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'\n }/idb/oauth2/v1/logout`,\n // eslint-disable-next-line camelcase\n client_id: 'fake',\n // eslint-disable-next-line camelcase\n client_secret: 'fake',\n // eslint-disable-next-line camelcase\n redirect_uri: 'http://example.com',\n // eslint-disable-next-line camelcase\n scope: 'scope:one',\n service: 'webex',\n },\n conversation: {\n allowedTags: {\n 'webex-mention': ['data-object-type', 'data-object-id', 'data-object-url'],\n },\n },\n avatar: {},\n device: {},\n encryption: {},\n logger: {},\n mercury: {},\n metrics: {},\n support: {},\n user: {},\n llm: {},\n voicea: {},\n meetings: {\n mediaSettings: {\n pstn: false,\n },\n reconnection: {\n enabled: true,\n detection: true,\n retry: {\n times: 2,\n backOff: {\n start: 1000,\n rate: 2,\n },\n },\n },\n stats: {\n interval: 1000,\n historyMax: 120,\n },\n metrics: {\n clientType: 'TEAMS_CLIENT',\n clientName: 'WEBEX_JS_SDK',\n mqaMetricsInterval: 60000,\n autoSendMQA: true,\n },\n },\n },\n initialize: function initialize(attrs) {\n this.boundedStorage = makeMockStorage(attrs && attrs.initialBoundedStorage);\n this.unboundedStorage = makeMockStorage(attrs && attrs.initialUnboundedStorage);\n },\n })\n );\n\n const webex = new MockWebex(options && options.attrs);\n\n sinon.spy(webex, 'refresh');\n _.defaults(webex, {\n credentials: {\n authorization: 'Basic NOTATOKEN',\n getUserToken: sinon.stub().returns(\n Promise.resolve({\n toString: function toString() {\n return 'Basic NOTATOKEN';\n },\n })\n ),\n getClientToken: sinon.stub().returns(\n Promise.resolve({\n toString: function toString() {\n return 'Basic NOTATOKEN';\n },\n })\n ),\n },\n sessionId: 'mock-webex_88888888-4444-4444-4444-aaaaaaaaaaaa',\n logger: process.env.MOCK_LOGGER\n ? console\n : {\n error: sinon.spy(),\n warn: sinon.spy(),\n log: sinon.spy(),\n info: sinon.spy(),\n debug: sinon.spy(),\n },\n });\n\n _.defaults(webex.internal, {\n avatar: {},\n conversation: {},\n device: {\n webSocketUrl: 'ws://example.com',\n getWebSocketUrl: sinon.stub().returns(Promise.resolve('ws://example-2.com')),\n features: {\n developer: {\n get: sinon.stub(),\n },\n entitlement: {\n get: sinon.stub(),\n },\n user: {\n get: sinon.stub(),\n },\n },\n registered: true,\n register: sinon.stub().returns(Promise.resolve()),\n ipNetworkDetector: {\n get supportsIpV4() {\n return true;\n },\n get supportsIpV6() {\n return true;\n },\n },\n },\n feature: {\n setFeature: sinon.stub().returns(Promise.resolve(false)),\n getFeature: sinon.stub().returns(Promise.resolve(false)),\n },\n encryption: {},\n metrics: {\n sendUnstructured: sinon.spy(),\n },\n support: {},\n user: {},\n mercury: {},\n llm: {},\n voicea: {},\n newMetrics: {\n submitInternalEvent: sinon.stub(),\n submitMQE: sinon.stub(),\n submitClientEvent: sinon.stub(),\n callDiagnosticLatencies: {\n saveTimestamp: sinon.stub(),\n },\n callDiagnosticMetrics: {\n submitClientEvent: sinon.stub(),\n submitMQE: sinon.stub(),\n callDiagnosticEventsBatcher: {\n queue: sinon.stub(),\n },\n submitToCallDiagnostics: sinon.stub(),\n },\n },\n });\n\n return webex;\n}\n\nmodule.exports = makeWebex;\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
/* istanbul ignore next */
|
|
7
6
|
if (typeof Promise === 'undefined') {
|
|
8
7
|
// eslint-disable-next-line global-require
|
|
@@ -25,7 +24,7 @@ const nonInternalPlugins = [
|
|
|
25
24
|
'rooms',
|
|
26
25
|
'teams',
|
|
27
26
|
'teamMemberships',
|
|
28
|
-
'webhooks'
|
|
27
|
+
'webhooks',
|
|
29
28
|
];
|
|
30
29
|
|
|
31
30
|
/**
|
|
@@ -48,8 +47,7 @@ function makeWebex(options) {
|
|
|
48
47
|
Object.keys(options.children).forEach((key) => {
|
|
49
48
|
if (nonInternalPlugins.indexOf(key) === -1) {
|
|
50
49
|
internalChildren[key] = options.children[key];
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
50
|
+
} else {
|
|
53
51
|
externalChildren[key] = options.children[key];
|
|
54
52
|
}
|
|
55
53
|
});
|
|
@@ -59,9 +57,10 @@ function makeWebex(options) {
|
|
|
59
57
|
|
|
60
58
|
// This weird assignment is to make sure "internal" is the first property.
|
|
61
59
|
// Because it turns out we're relying on ordering
|
|
62
|
-
options.children =
|
|
63
|
-
internal: State.extend(internalOptions)
|
|
64
|
-
|
|
60
|
+
options.children = {
|
|
61
|
+
internal: State.extend(internalOptions),
|
|
62
|
+
...options.children,
|
|
63
|
+
};
|
|
65
64
|
|
|
66
65
|
requestPromise.on = uploadPromise.on = function on() {
|
|
67
66
|
return requestPromise;
|
|
@@ -108,110 +107,115 @@ function makeWebex(options) {
|
|
|
108
107
|
// this is the simplest way to to turn ampstate objects into bare
|
|
109
108
|
// objects without actually checking if they're ampstate objects
|
|
110
109
|
value = JSON.parse(JSON.stringify(value));
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
110
|
+
} catch (err) {
|
|
113
111
|
// ignore
|
|
114
112
|
}
|
|
115
113
|
this.data[namespace] = this.data[namespace] || {};
|
|
116
114
|
this.data[namespace][key] = value;
|
|
117
115
|
|
|
118
116
|
return Promise.resolve();
|
|
119
|
-
}
|
|
117
|
+
},
|
|
120
118
|
};
|
|
121
119
|
}
|
|
122
120
|
|
|
123
121
|
const request = sinon.stub().returns(requestPromise);
|
|
124
122
|
const upload = sinon.stub().returns(uploadPromise);
|
|
125
|
-
const MockWebex = State.extend(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
setConfig: function setConfig(config) {
|
|
133
|
-
this.config.credentials.idbroker.url = config.credentials.idbroker.url || process.env.IDBROKER_BASE_URL;
|
|
134
|
-
this.config.credentials.identity.url = config.credentials.identity.url || process.env.IDENTITY_BASE_URL;
|
|
135
|
-
|
|
136
|
-
return Promise.resolve();
|
|
137
|
-
},
|
|
138
|
-
config: {
|
|
139
|
-
credentials: {
|
|
140
|
-
idbroker: {
|
|
141
|
-
url: process.env.IDBROKER_BASE_URL,
|
|
142
|
-
defaultUrl: process.env.IDBROKER_BASE_URL
|
|
143
|
-
},
|
|
144
|
-
identity: {
|
|
145
|
-
url: process.env.IDENTITY_BASE_URL,
|
|
146
|
-
defaultUrl: process.env.IDENTITY_BASE_URL
|
|
147
|
-
},
|
|
148
|
-
activationUrl: `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/token/v1/actions/UserActivation/invoke`,
|
|
149
|
-
authorizeUrl: `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/authorize`,
|
|
150
|
-
setPasswordUrl: `${process.env.IDBROKER_BASE_URL || 'https://identity.webex.com'}/identity/scim/v1/Users`,
|
|
151
|
-
logoutUrl: `${process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'}/idb/oauth2/v1/logout`,
|
|
152
|
-
// eslint-disable-next-line camelcase
|
|
153
|
-
client_id: 'fake',
|
|
154
|
-
// eslint-disable-next-line camelcase
|
|
155
|
-
client_secret: 'fake',
|
|
156
|
-
// eslint-disable-next-line camelcase
|
|
157
|
-
redirect_uri: 'http://example.com',
|
|
158
|
-
// eslint-disable-next-line camelcase
|
|
159
|
-
scope: 'scope:one',
|
|
160
|
-
service: 'webex'
|
|
123
|
+
const MockWebex = State.extend(
|
|
124
|
+
_.defaults(options, {
|
|
125
|
+
extraProperies: 'allow',
|
|
126
|
+
request,
|
|
127
|
+
upload,
|
|
128
|
+
refresh: function refresh() {
|
|
129
|
+
return Promise.resolve();
|
|
161
130
|
},
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
131
|
+
setConfig: function setConfig(config) {
|
|
132
|
+
this.config.credentials.idbroker.url =
|
|
133
|
+
config.credentials.idbroker.url || process.env.IDBROKER_BASE_URL;
|
|
134
|
+
this.config.credentials.identity.url =
|
|
135
|
+
config.credentials.identity.url || process.env.IDENTITY_BASE_URL;
|
|
136
|
+
|
|
137
|
+
return Promise.resolve();
|
|
166
138
|
},
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
139
|
+
config: {
|
|
140
|
+
credentials: {
|
|
141
|
+
idbroker: {
|
|
142
|
+
url: process.env.IDBROKER_BASE_URL,
|
|
143
|
+
defaultUrl: process.env.IDBROKER_BASE_URL,
|
|
144
|
+
},
|
|
145
|
+
identity: {
|
|
146
|
+
url: process.env.IDENTITY_BASE_URL,
|
|
147
|
+
defaultUrl: process.env.IDENTITY_BASE_URL,
|
|
148
|
+
},
|
|
149
|
+
activationUrl: `${
|
|
150
|
+
process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'
|
|
151
|
+
}/idb/token/v1/actions/UserActivation/invoke`,
|
|
152
|
+
authorizeUrl: `${
|
|
153
|
+
process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'
|
|
154
|
+
}/idb/oauth2/v1/authorize`,
|
|
155
|
+
setPasswordUrl: `${
|
|
156
|
+
process.env.IDBROKER_BASE_URL || 'https://identity.webex.com'
|
|
157
|
+
}/identity/scim/v1/Users`,
|
|
158
|
+
logoutUrl: `${
|
|
159
|
+
process.env.IDBROKER_BASE_URL || 'https://idbroker.webex.com'
|
|
160
|
+
}/idb/oauth2/v1/logout`,
|
|
161
|
+
// eslint-disable-next-line camelcase
|
|
162
|
+
client_id: 'fake',
|
|
163
|
+
// eslint-disable-next-line camelcase
|
|
164
|
+
client_secret: 'fake',
|
|
165
|
+
// eslint-disable-next-line camelcase
|
|
166
|
+
redirect_uri: 'http://example.com',
|
|
167
|
+
// eslint-disable-next-line camelcase
|
|
168
|
+
scope: 'scope:one',
|
|
169
|
+
service: 'webex',
|
|
186
170
|
},
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
times: 2,
|
|
192
|
-
backOff: {
|
|
193
|
-
start: 1000,
|
|
194
|
-
rate: 2
|
|
195
|
-
}
|
|
196
|
-
}
|
|
171
|
+
conversation: {
|
|
172
|
+
allowedTags: {
|
|
173
|
+
'webex-mention': ['data-object-type', 'data-object-id', 'data-object-url'],
|
|
174
|
+
},
|
|
197
175
|
},
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
176
|
+
avatar: {},
|
|
177
|
+
device: {},
|
|
178
|
+
encryption: {},
|
|
179
|
+
logger: {},
|
|
180
|
+
mercury: {},
|
|
181
|
+
metrics: {},
|
|
182
|
+
support: {},
|
|
183
|
+
user: {},
|
|
184
|
+
llm: {},
|
|
185
|
+
voicea: {},
|
|
186
|
+
meetings: {
|
|
187
|
+
mediaSettings: {
|
|
188
|
+
pstn: false,
|
|
189
|
+
},
|
|
190
|
+
reconnection: {
|
|
191
|
+
enabled: true,
|
|
192
|
+
detection: true,
|
|
193
|
+
retry: {
|
|
194
|
+
times: 2,
|
|
195
|
+
backOff: {
|
|
196
|
+
start: 1000,
|
|
197
|
+
rate: 2,
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
stats: {
|
|
202
|
+
interval: 1000,
|
|
203
|
+
historyMax: 120,
|
|
204
|
+
},
|
|
205
|
+
metrics: {
|
|
206
|
+
clientType: 'TEAMS_CLIENT',
|
|
207
|
+
clientName: 'WEBEX_JS_SDK',
|
|
208
|
+
mqaMetricsInterval: 60000,
|
|
209
|
+
autoSendMQA: true,
|
|
210
|
+
},
|
|
201
211
|
},
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
},
|
|
210
|
-
initialize: function initialize(attrs) {
|
|
211
|
-
this.boundedStorage = makeMockStorage(attrs && attrs.initialBoundedStorage);
|
|
212
|
-
this.unboundedStorage = makeMockStorage(attrs && attrs.initialUnboundedStorage);
|
|
213
|
-
}
|
|
214
|
-
}));
|
|
212
|
+
},
|
|
213
|
+
initialize: function initialize(attrs) {
|
|
214
|
+
this.boundedStorage = makeMockStorage(attrs && attrs.initialBoundedStorage);
|
|
215
|
+
this.unboundedStorage = makeMockStorage(attrs && attrs.initialUnboundedStorage);
|
|
216
|
+
},
|
|
217
|
+
})
|
|
218
|
+
);
|
|
215
219
|
|
|
216
220
|
const webex = new MockWebex(options && options.attrs);
|
|
217
221
|
|
|
@@ -219,25 +223,31 @@ function makeWebex(options) {
|
|
|
219
223
|
_.defaults(webex, {
|
|
220
224
|
credentials: {
|
|
221
225
|
authorization: 'Basic NOTATOKEN',
|
|
222
|
-
getUserToken: sinon.stub().returns(
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
226
|
+
getUserToken: sinon.stub().returns(
|
|
227
|
+
Promise.resolve({
|
|
228
|
+
toString: function toString() {
|
|
229
|
+
return 'Basic NOTATOKEN';
|
|
230
|
+
},
|
|
231
|
+
})
|
|
232
|
+
),
|
|
233
|
+
getClientToken: sinon.stub().returns(
|
|
234
|
+
Promise.resolve({
|
|
235
|
+
toString: function toString() {
|
|
236
|
+
return 'Basic NOTATOKEN';
|
|
237
|
+
},
|
|
238
|
+
})
|
|
239
|
+
),
|
|
232
240
|
},
|
|
233
241
|
sessionId: 'mock-webex_88888888-4444-4444-4444-aaaaaaaaaaaa',
|
|
234
|
-
logger: process.env.MOCK_LOGGER
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
242
|
+
logger: process.env.MOCK_LOGGER
|
|
243
|
+
? console
|
|
244
|
+
: {
|
|
245
|
+
error: sinon.spy(),
|
|
246
|
+
warn: sinon.spy(),
|
|
247
|
+
log: sinon.spy(),
|
|
248
|
+
info: sinon.spy(),
|
|
249
|
+
debug: sinon.spy(),
|
|
250
|
+
},
|
|
241
251
|
});
|
|
242
252
|
|
|
243
253
|
_.defaults(webex.internal, {
|
|
@@ -248,31 +258,55 @@ function makeWebex(options) {
|
|
|
248
258
|
getWebSocketUrl: sinon.stub().returns(Promise.resolve('ws://example-2.com')),
|
|
249
259
|
features: {
|
|
250
260
|
developer: {
|
|
251
|
-
get: sinon.stub()
|
|
261
|
+
get: sinon.stub(),
|
|
252
262
|
},
|
|
253
263
|
entitlement: {
|
|
254
|
-
get: sinon.stub()
|
|
264
|
+
get: sinon.stub(),
|
|
255
265
|
},
|
|
256
266
|
user: {
|
|
257
|
-
get: sinon.stub()
|
|
258
|
-
}
|
|
267
|
+
get: sinon.stub(),
|
|
268
|
+
},
|
|
259
269
|
},
|
|
260
270
|
registered: true,
|
|
261
|
-
register: sinon.stub().returns(Promise.resolve())
|
|
271
|
+
register: sinon.stub().returns(Promise.resolve()),
|
|
272
|
+
ipNetworkDetector: {
|
|
273
|
+
get supportsIpV4() {
|
|
274
|
+
return true;
|
|
275
|
+
},
|
|
276
|
+
get supportsIpV6() {
|
|
277
|
+
return true;
|
|
278
|
+
},
|
|
279
|
+
},
|
|
262
280
|
},
|
|
263
281
|
feature: {
|
|
264
282
|
setFeature: sinon.stub().returns(Promise.resolve(false)),
|
|
265
|
-
getFeature: sinon.stub().returns(Promise.resolve(false))
|
|
283
|
+
getFeature: sinon.stub().returns(Promise.resolve(false)),
|
|
266
284
|
},
|
|
267
285
|
encryption: {},
|
|
268
286
|
metrics: {
|
|
269
|
-
sendUnstructured: sinon.spy()
|
|
287
|
+
sendUnstructured: sinon.spy(),
|
|
270
288
|
},
|
|
271
289
|
support: {},
|
|
272
290
|
user: {},
|
|
273
291
|
mercury: {},
|
|
274
292
|
llm: {},
|
|
275
293
|
voicea: {},
|
|
294
|
+
newMetrics: {
|
|
295
|
+
submitInternalEvent: sinon.stub(),
|
|
296
|
+
submitMQE: sinon.stub(),
|
|
297
|
+
submitClientEvent: sinon.stub(),
|
|
298
|
+
callDiagnosticLatencies: {
|
|
299
|
+
saveTimestamp: sinon.stub(),
|
|
300
|
+
},
|
|
301
|
+
callDiagnosticMetrics: {
|
|
302
|
+
submitClientEvent: sinon.stub(),
|
|
303
|
+
submitMQE: sinon.stub(),
|
|
304
|
+
callDiagnosticEventsBatcher: {
|
|
305
|
+
queue: sinon.stub(),
|
|
306
|
+
},
|
|
307
|
+
submitToCallDiagnostics: sinon.stub(),
|
|
308
|
+
},
|
|
309
|
+
},
|
|
276
310
|
});
|
|
277
311
|
|
|
278
312
|
return webex;
|