@webex/test-helper-mock-webex 3.0.0-beta.15 → 3.0.0-beta.17
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 +9 -37
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,31 +1,18 @@
|
|
|
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
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
18
|
-
|
|
19
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
20
|
-
|
|
21
12
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
22
|
-
|
|
23
13
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
24
|
-
|
|
25
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; }
|
|
26
|
-
|
|
27
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; }
|
|
28
|
-
|
|
29
16
|
/*!
|
|
30
17
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
31
18
|
*/
|
|
@@ -35,28 +22,22 @@ if (typeof _promise.default === 'undefined') {
|
|
|
35
22
|
// eslint-disable-next-line global-require
|
|
36
23
|
require('es6-promise').polyfill();
|
|
37
24
|
}
|
|
38
|
-
|
|
39
25
|
var _ = require('lodash');
|
|
40
|
-
|
|
41
26
|
var sinon = require('sinon');
|
|
42
|
-
|
|
43
27
|
var State = require('ampersand-state');
|
|
44
|
-
|
|
45
28
|
var nonInternalPlugins = ['authorization', 'credentials', 'memberships', 'messages', 'logger', 'people', 'phone', 'meetings', 'rooms', 'teams', 'teamMemberships', 'webhooks'];
|
|
29
|
+
|
|
46
30
|
/**
|
|
47
31
|
* Mock Webex constructor
|
|
48
32
|
* @param {Object} options
|
|
49
33
|
* @returns {MockWebex}
|
|
50
34
|
*/
|
|
51
|
-
|
|
52
35
|
function makeWebex(options) {
|
|
53
36
|
var requestPromise = _promise.default.resolve({
|
|
54
37
|
statusCode: 200,
|
|
55
38
|
body: {}
|
|
56
39
|
});
|
|
57
|
-
|
|
58
40
|
var uploadPromise = _promise.default.resolve({});
|
|
59
|
-
|
|
60
41
|
options = options || {};
|
|
61
42
|
options.children = options.children || {};
|
|
62
43
|
var internalOptions = {};
|
|
@@ -70,23 +51,22 @@ function makeWebex(options) {
|
|
|
70
51
|
}
|
|
71
52
|
});
|
|
72
53
|
internalOptions.children = internalChildren;
|
|
73
|
-
options.children = externalChildren;
|
|
74
|
-
// Because it turns out we're relying on ordering
|
|
54
|
+
options.children = externalChildren;
|
|
75
55
|
|
|
56
|
+
// This weird assignment is to make sure "internal" is the first property.
|
|
57
|
+
// Because it turns out we're relying on ordering
|
|
76
58
|
options.children = _objectSpread({
|
|
77
59
|
internal: State.extend(internalOptions)
|
|
78
60
|
}, options.children);
|
|
79
|
-
|
|
80
61
|
requestPromise.on = uploadPromise.on = function on() {
|
|
81
62
|
return requestPromise;
|
|
82
63
|
};
|
|
64
|
+
|
|
83
65
|
/**
|
|
84
66
|
* produces a mock storage object
|
|
85
67
|
* @param {Object} data
|
|
86
68
|
* @returns {Storage}
|
|
87
69
|
*/
|
|
88
|
-
|
|
89
|
-
|
|
90
70
|
function makeMockStorage(data) {
|
|
91
71
|
data = data || {};
|
|
92
72
|
return {
|
|
@@ -101,38 +81,34 @@ function makeWebex(options) {
|
|
|
101
81
|
},
|
|
102
82
|
del: function del(namespace, key) {
|
|
103
83
|
this.data = this.data || data;
|
|
104
|
-
this.data[namespace] = this.data[namespace] || {};
|
|
105
|
-
|
|
84
|
+
this.data[namespace] = this.data[namespace] || {};
|
|
85
|
+
// eslint-disable-next-line prefer-reflect
|
|
106
86
|
delete this.data[namespace][key];
|
|
107
87
|
},
|
|
108
88
|
get: function get(namespace, key) {
|
|
109
89
|
this.data = this.data || data;
|
|
110
90
|
this.data[namespace] = this.data[namespace] || {};
|
|
111
91
|
var ret = this.data[namespace][key];
|
|
112
|
-
|
|
113
92
|
if (ret) {
|
|
114
93
|
return _promise.default.resolve(ret);
|
|
115
94
|
}
|
|
116
|
-
|
|
117
95
|
return _promise.default.reject(new Error('MockNotFoundError'));
|
|
118
96
|
},
|
|
119
97
|
put: function put(namespace, key, value) {
|
|
120
98
|
this.data = this.data || data;
|
|
121
|
-
|
|
122
99
|
try {
|
|
123
100
|
// this is the simplest way to to turn ampstate objects into bare
|
|
124
101
|
// objects without actually checking if they're ampstate objects
|
|
125
102
|
value = JSON.parse((0, _stringify.default)(value));
|
|
126
|
-
} catch (err) {
|
|
103
|
+
} catch (err) {
|
|
104
|
+
// ignore
|
|
127
105
|
}
|
|
128
|
-
|
|
129
106
|
this.data[namespace] = this.data[namespace] || {};
|
|
130
107
|
this.data[namespace][key] = value;
|
|
131
108
|
return _promise.default.resolve();
|
|
132
109
|
}
|
|
133
110
|
};
|
|
134
111
|
}
|
|
135
|
-
|
|
136
112
|
var request = sinon.stub().returns(requestPromise);
|
|
137
113
|
var upload = sinon.stub().returns(uploadPromise);
|
|
138
114
|
var MockWebex = State.extend(_.defaults(options, {
|
|
@@ -226,7 +202,6 @@ function makeWebex(options) {
|
|
|
226
202
|
}));
|
|
227
203
|
var webex = new MockWebex(options && options.attrs);
|
|
228
204
|
sinon.spy(webex, 'refresh');
|
|
229
|
-
|
|
230
205
|
_.defaults(webex, {
|
|
231
206
|
credentials: {
|
|
232
207
|
authorization: 'Basic NOTATOKEN',
|
|
@@ -250,7 +225,6 @@ function makeWebex(options) {
|
|
|
250
225
|
debug: sinon.spy()
|
|
251
226
|
}
|
|
252
227
|
});
|
|
253
|
-
|
|
254
228
|
_.defaults(webex.internal, {
|
|
255
229
|
avatar: {},
|
|
256
230
|
conversation: {},
|
|
@@ -285,9 +259,7 @@ function makeWebex(options) {
|
|
|
285
259
|
llm: {},
|
|
286
260
|
voicea: {}
|
|
287
261
|
});
|
|
288
|
-
|
|
289
262
|
return webex;
|
|
290
263
|
}
|
|
291
|
-
|
|
292
264
|
module.exports = makeWebex;
|
|
293
265
|
//# 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/* 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 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\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 },\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","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/* 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 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\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 },\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":";;;;;;;;;;;;;;;AAAA;AACA;AACA;;AAEA;AACA,IAAI,uBAAc,KAAK,WAAW,EAAE;EAClC;EACAA,OAAO,CAAC,aAAa,CAAC,CAACC,QAAQ,EAAE;AACnC;AAEA,IAAMC,CAAC,GAAGF,OAAO,CAAC,QAAQ,CAAC;AAC3B,IAAMG,KAAK,GAAGH,OAAO,CAAC,OAAO,CAAC;AAC9B,IAAMI,KAAK,GAAGJ,OAAO,CAAC,iBAAiB,CAAC;AAExC,IAAMK,kBAAkB,GAAG,CACzB,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,UAAU,CACX;;AAED;AACA;AACA;AACA;AACA;AACA,SAASC,SAAS,CAACC,OAAO,EAAE;EAC1B,IAAMC,cAAc,GAAG,iBAAQC,OAAO,CAAC;IAACC,UAAU,EAAE,GAAG;IAAEC,IAAI,EAAE,CAAC;EAAC,CAAC,CAAC;EACnE,IAAMC,aAAa,GAAG,iBAAQH,OAAO,CAAC,CAAC,CAAC,CAAC;EAEzCF,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EACvBA,OAAO,CAACM,QAAQ,GAAGN,OAAO,CAACM,QAAQ,IAAI,CAAC,CAAC;EAEzC,IAAMC,eAAe,GAAG,CAAC,CAAC;EAE1B,IAAMC,gBAAgB,GAAG,CAAC,CAAC;EAC3B,IAAMC,gBAAgB,GAAG,CAAC,CAAC;EAE3B,mBAAYT,OAAO,CAACM,QAAQ,CAAC,CAACI,OAAO,CAAC,UAACC,GAAG,EAAK;IAC7C,IAAIb,kBAAkB,CAACc,OAAO,CAACD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;MAC1CH,gBAAgB,CAACG,GAAG,CAAC,GAAGX,OAAO,CAACM,QAAQ,CAACK,GAAG,CAAC;IAC/C,CAAC,MAAM;MACLF,gBAAgB,CAACE,GAAG,CAAC,GAAGX,OAAO,CAACM,QAAQ,CAACK,GAAG,CAAC;IAC/C;EACF,CAAC,CAAC;EAEFJ,eAAe,CAACD,QAAQ,GAAGE,gBAAgB;EAC3CR,OAAO,CAACM,QAAQ,GAAGG,gBAAgB;;EAEnC;EACA;EACAT,OAAO,CAACM,QAAQ;IACdO,QAAQ,EAAEhB,KAAK,CAACiB,MAAM,CAACP,eAAe;EAAC,GACpCP,OAAO,CAACM,QAAQ,CACpB;EAEDL,cAAc,CAACc,EAAE,GAAGV,aAAa,CAACU,EAAE,GAAG,SAASA,EAAE,GAAG;IACnD,OAAOd,cAAc;EACvB,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,SAASe,eAAe,CAACC,IAAI,EAAE;IAC7BA,IAAI,GAAGA,IAAI,IAAI,CAAC,CAAC;IAEjB,OAAO;MACLA,IAAI,EAAJA,IAAI;MACJF,EAAE,EAAEnB,KAAK,CAACsB,GAAG,EAAE;MACfC,IAAI,EAAEvB,KAAK,CAACsB,GAAG,EAAE;MACjBE,QAAQ,EAAExB,KAAK,CAACsB,GAAG,EAAE;MACrBG,cAAc,EAAEzB,KAAK,CAACsB,GAAG,EAAE;MAC3BI,KAAK,EAAE,SAASA,KAAK,CAACC,SAAS,EAAE;QAC/B,IAAI,CAACN,IAAI,GAAG,IAAI,CAACA,IAAI,IAAIA,IAAI;QAC7B,IAAI,CAACA,IAAI,CAACM,SAAS,CAAC,GAAG,CAAC,CAAC;MAC3B,CAAC;MACDC,GAAG,EAAE,SAASA,GAAG,CAACD,SAAS,EAAEZ,GAAG,EAAE;QAChC,IAAI,CAACM,IAAI,GAAG,IAAI,CAACA,IAAI,IAAIA,IAAI;QAC7B,IAAI,CAACA,IAAI,CAACM,SAAS,CAAC,GAAG,IAAI,CAACN,IAAI,CAACM,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD;QACA,OAAO,IAAI,CAACN,IAAI,CAACM,SAAS,CAAC,CAACZ,GAAG,CAAC;MAClC,CAAC;MACDc,GAAG,EAAE,SAASA,GAAG,CAACF,SAAS,EAAEZ,GAAG,EAAE;QAChC,IAAI,CAACM,IAAI,GAAG,IAAI,CAACA,IAAI,IAAIA,IAAI;QAC7B,IAAI,CAACA,IAAI,CAACM,SAAS,CAAC,GAAG,IAAI,CAACN,IAAI,CAACM,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,IAAMG,GAAG,GAAG,IAAI,CAACT,IAAI,CAACM,SAAS,CAAC,CAACZ,GAAG,CAAC;QAErC,IAAIe,GAAG,EAAE;UACP,OAAO,iBAAQxB,OAAO,CAACwB,GAAG,CAAC;QAC7B;QAEA,OAAO,iBAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,mBAAmB,CAAC,CAAC;MACvD,CAAC;MACDC,GAAG,EAAE,SAASA,GAAG,CAACN,SAAS,EAAEZ,GAAG,EAAEmB,KAAK,EAAE;QACvC,IAAI,CAACb,IAAI,GAAG,IAAI,CAACA,IAAI,IAAIA,IAAI;QAC7B,IAAI;UACF;UACA;UACAa,KAAK,GAAGC,IAAI,CAACC,KAAK,CAAC,wBAAeF,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,OAAOG,GAAG,EAAE;UACZ;QAAA;QAEF,IAAI,CAAChB,IAAI,CAACM,SAAS,CAAC,GAAG,IAAI,CAACN,IAAI,CAACM,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAACN,IAAI,CAACM,SAAS,CAAC,CAACZ,GAAG,CAAC,GAAGmB,KAAK;QAEjC,OAAO,iBAAQ5B,OAAO,EAAE;MAC1B;IACF,CAAC;EACH;EAEA,IAAMgC,OAAO,GAAGtC,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAACnC,cAAc,CAAC;EACpD,IAAMoC,MAAM,GAAGzC,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAAC/B,aAAa,CAAC;EAClD,IAAMiC,SAAS,GAAGzC,KAAK,CAACiB,MAAM,CAC5BnB,CAAC,CAAC4C,QAAQ,CAACvC,OAAO,EAAE;IAClBwC,cAAc,EAAE,OAAO;IACvBN,OAAO,EAAPA,OAAO;IACPG,MAAM,EAANA,MAAM;IACNI,OAAO,EAAE,SAASA,OAAO,GAAG;MAC1B,OAAO,iBAAQvC,OAAO,EAAE;IAC1B,CAAC;IACDwC,SAAS,EAAE,SAASA,SAAS,CAACC,MAAM,EAAE;MACpC,IAAI,CAACA,MAAM,CAACC,WAAW,CAACC,QAAQ,CAACC,GAAG,GAClCH,MAAM,CAACC,WAAW,CAACC,QAAQ,CAACC,GAAG,IAAIC,OAAO,CAACC,GAAG,CAACC,iBAAiB;MAClE,IAAI,CAACN,MAAM,CAACC,WAAW,CAACM,QAAQ,CAACJ,GAAG,GAClCH,MAAM,CAACC,WAAW,CAACM,QAAQ,CAACJ,GAAG,IAAIC,OAAO,CAACC,GAAG,CAACG,iBAAiB;MAElE,OAAO,iBAAQjD,OAAO,EAAE;IAC1B,CAAC;IACDyC,MAAM,EAAE;MACNC,WAAW,EAAE;QACXC,QAAQ,EAAE;UACRC,GAAG,EAAEC,OAAO,CAACC,GAAG,CAACC,iBAAiB;UAClCG,UAAU,EAAEL,OAAO,CAACC,GAAG,CAACC;QAC1B,CAAC;QACDC,QAAQ,EAAE;UACRJ,GAAG,EAAEC,OAAO,CAACC,GAAG,CAACG,iBAAiB;UAClCC,UAAU,EAAEL,OAAO,CAACC,GAAG,CAACG;QAC1B,CAAC;QACDE,aAAa,YACXN,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,4BAA4B,gDAClB;QAC7CK,YAAY,YACVP,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,4BAA4B,6BACrC;QAC1BM,cAAc,YACZR,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,4BAA4B,4BACtC;QACzBO,SAAS,YACPT,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAI,4BAA4B,0BACxC;QACvB;QACAQ,SAAS,EAAE,MAAM;QACjB;QACAC,aAAa,EAAE,MAAM;QACrB;QACAC,YAAY,EAAE,oBAAoB;QAClC;QACAC,KAAK,EAAE,WAAW;QAClBC,OAAO,EAAE;MACX,CAAC;MACDC,YAAY,EAAE;QACZC,WAAW,EAAE;UACX,eAAe,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB;QAC3E;MACF,CAAC;MACDC,MAAM,EAAE,CAAC,CAAC;MACVC,MAAM,EAAE,CAAC,CAAC;MACVC,UAAU,EAAE,CAAC,CAAC;MACdC,MAAM,EAAE,CAAC,CAAC;MACVC,OAAO,EAAE,CAAC,CAAC;MACXC,OAAO,EAAE,CAAC,CAAC;MACXC,OAAO,EAAE,CAAC,CAAC;MACXC,IAAI,EAAE,CAAC,CAAC;MACRC,GAAG,EAAE,CAAC,CAAC;MACPC,MAAM,EAAE,CAAC,CAAC;MACVC,QAAQ,EAAE;QACRC,aAAa,EAAE;UACbC,SAAS,EAAE,IAAI;UACfC,SAAS,EAAE,IAAI;UACfC,YAAY,EAAE,IAAI;UAClBC,YAAY,EAAE,IAAI;UAClBC,IAAI,EAAE,KAAK;UACXC,SAAS,EAAE,KAAK;UAChBC,YAAY,EAAE;QAChB,CAAC;QACDC,YAAY,EAAE;UACZC,OAAO,EAAE,IAAI;UACbC,SAAS,EAAE,IAAI;UACfC,KAAK,EAAE;YACLC,KAAK,EAAE,CAAC;YACRC,OAAO,EAAE;cACPC,KAAK,EAAE,IAAI;cACXC,IAAI,EAAE;YACR;UACF;QACF,CAAC;QACDC,KAAK,EAAE;UACLC,QAAQ,EAAE,IAAI;UACdC,UAAU,EAAE;QACd,CAAC;QACDxB,OAAO,EAAE;UACPyB,UAAU,EAAE,cAAc;UAC1BC,UAAU,EAAE,cAAc;UAC1BC,kBAAkB,EAAE,KAAK;UACzBC,WAAW,EAAE;QACf;MACF;IACF,CAAC;IACDC,UAAU,EAAE,SAASA,UAAU,CAACC,KAAK,EAAE;MACrC,IAAI,CAACC,cAAc,GAAGpF,eAAe,CAACmF,KAAK,IAAIA,KAAK,CAACE,qBAAqB,CAAC;MAC3E,IAAI,CAACC,gBAAgB,GAAGtF,eAAe,CAACmF,KAAK,IAAIA,KAAK,CAACI,uBAAuB,CAAC;IACjF;EACF,CAAC,CAAC,CACH;EAED,IAAMC,KAAK,GAAG,IAAIlE,SAAS,CAACtC,OAAO,IAAIA,OAAO,CAACmG,KAAK,CAAC;EAErDvG,KAAK,CAACsB,GAAG,CAACsF,KAAK,EAAE,SAAS,CAAC;EAC3B7G,CAAC,CAAC4C,QAAQ,CAACiE,KAAK,EAAE;IAChB5D,WAAW,EAAE;MACX6D,aAAa,EAAE,iBAAiB;MAChCC,YAAY,EAAE9G,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAChC,iBAAQlC,OAAO,CAAC;QACdyG,QAAQ,EAAE,SAASA,QAAQ,GAAG;UAC5B,OAAO,iBAAiB;QAC1B;MACF,CAAC,CAAC,CACH;MACDC,cAAc,EAAEhH,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAClC,iBAAQlC,OAAO,CAAC;QACdyG,QAAQ,EAAE,SAASA,QAAQ,GAAG;UAC5B,OAAO,iBAAiB;QAC1B;MACF,CAAC,CAAC;IAEN,CAAC;IACDE,SAAS,EAAE,iDAAiD;IAC5D1C,MAAM,EAAEpB,OAAO,CAACC,GAAG,CAAC8D,WAAW,GAC3BC,OAAO,GACP;MACEC,KAAK,EAAEpH,KAAK,CAACsB,GAAG,EAAE;MAClB+F,IAAI,EAAErH,KAAK,CAACsB,GAAG,EAAE;MACjBgG,GAAG,EAAEtH,KAAK,CAACsB,GAAG,EAAE;MAChBiG,IAAI,EAAEvH,KAAK,CAACsB,GAAG,EAAE;MACjBkG,KAAK,EAAExH,KAAK,CAACsB,GAAG;IAClB;EACN,CAAC,CAAC;EAEFvB,CAAC,CAAC4C,QAAQ,CAACiE,KAAK,CAAC3F,QAAQ,EAAE;IACzBmD,MAAM,EAAE,CAAC,CAAC;IACVF,YAAY,EAAE,CAAC,CAAC;IAChBG,MAAM,EAAE;MACNoD,YAAY,EAAE,kBAAkB;MAChCC,eAAe,EAAE1H,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAAC,iBAAQlC,OAAO,CAAC,oBAAoB,CAAC,CAAC;MAC5EqH,QAAQ,EAAE;QACRC,SAAS,EAAE;UACT/F,GAAG,EAAE7B,KAAK,CAACuC,IAAI;QACjB,CAAC;QACDsF,WAAW,EAAE;UACXhG,GAAG,EAAE7B,KAAK,CAACuC,IAAI;QACjB,CAAC;QACDoC,IAAI,EAAE;UACJ9C,GAAG,EAAE7B,KAAK,CAACuC,IAAI;QACjB;MACF,CAAC;MACDuF,UAAU,EAAE,IAAI;MAChBC,QAAQ,EAAE/H,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAAC,iBAAQlC,OAAO,EAAE;IAClD,CAAC;IACD0H,OAAO,EAAE;MACPC,UAAU,EAAEjI,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAAC,iBAAQlC,OAAO,CAAC,KAAK,CAAC,CAAC;MACxD4H,UAAU,EAAElI,KAAK,CAACuC,IAAI,EAAE,CAACC,OAAO,CAAC,iBAAQlC,OAAO,CAAC,KAAK,CAAC;IACzD,CAAC;IACDgE,UAAU,EAAE,CAAC,CAAC;IACdG,OAAO,EAAE;MACP0D,gBAAgB,EAAEnI,KAAK,CAACsB,GAAG;IAC7B,CAAC;IACDoD,OAAO,EAAE,CAAC,CAAC;IACXC,IAAI,EAAE,CAAC,CAAC;IACRH,OAAO,EAAE,CAAC,CAAC;IACXI,GAAG,EAAE,CAAC,CAAC;IACPC,MAAM,EAAE,CAAC;EACX,CAAC,CAAC;EAEF,OAAO+B,KAAK;AACd;AAEAwB,MAAM,CAACC,OAAO,GAAGlI,SAAS"}
|