@webex/webex-core 3.0.0-beta.2 → 3.0.0-beta.21
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/config.js +1 -11
- package/dist/config.js.map +1 -1
- package/dist/credentials-config.js +44 -64
- package/dist/credentials-config.js.map +1 -1
- package/dist/index.js +0 -76
- package/dist/index.js.map +1 -1
- package/dist/interceptors/auth.js +22 -55
- package/dist/interceptors/auth.js.map +1 -1
- package/dist/interceptors/default-options.js +0 -20
- package/dist/interceptors/default-options.js.map +1 -1
- package/dist/interceptors/embargo.js +0 -21
- package/dist/interceptors/embargo.js.map +1 -1
- package/dist/interceptors/network-timing.js +2 -21
- package/dist/interceptors/network-timing.js.map +1 -1
- package/dist/interceptors/payload-transformer.js +2 -22
- package/dist/interceptors/payload-transformer.js.map +1 -1
- package/dist/interceptors/rate-limit.js +25 -57
- package/dist/interceptors/rate-limit.js.map +1 -1
- package/dist/interceptors/redirect.js +4 -33
- package/dist/interceptors/redirect.js.map +1 -1
- package/dist/interceptors/request-event.js +3 -30
- package/dist/interceptors/request-event.js.map +1 -1
- package/dist/interceptors/request-logger.js +1 -30
- package/dist/interceptors/request-logger.js.map +1 -1
- package/dist/interceptors/request-timing.js +3 -22
- package/dist/interceptors/request-timing.js.map +1 -1
- package/dist/interceptors/response-logger.js +2 -31
- package/dist/interceptors/response-logger.js.map +1 -1
- package/dist/interceptors/user-agent.js +2 -29
- package/dist/interceptors/user-agent.js.map +1 -1
- package/dist/interceptors/webex-tracking-id.js +5 -28
- package/dist/interceptors/webex-tracking-id.js.map +1 -1
- package/dist/interceptors/webex-user-agent.js +5 -38
- package/dist/interceptors/webex-user-agent.js.map +1 -1
- package/dist/lib/batcher.js +3 -51
- package/dist/lib/batcher.js.map +1 -1
- package/dist/lib/credentials/credentials.js +39 -119
- package/dist/lib/credentials/credentials.js.map +1 -1
- package/dist/lib/credentials/grant-errors.js +0 -49
- package/dist/lib/credentials/grant-errors.js.map +1 -1
- package/dist/lib/credentials/index.js +1 -13
- package/dist/lib/credentials/index.js.map +1 -1
- package/dist/lib/credentials/scope.js +1 -7
- package/dist/lib/credentials/scope.js.map +1 -1
- package/dist/lib/credentials/token-collection.js +1 -7
- package/dist/lib/credentials/token-collection.js.map +1 -1
- package/dist/lib/credentials/token.js +39 -118
- package/dist/lib/credentials/token.js.map +1 -1
- package/dist/lib/page.js +13 -26
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/services/constants.js +0 -2
- package/dist/lib/services/constants.js.map +1 -1
- package/dist/lib/services/index.js +1 -28
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/interceptors/server-error.js +2 -23
- package/dist/lib/services/interceptors/server-error.js.map +1 -1
- package/dist/lib/services/interceptors/service.js +12 -34
- package/dist/lib/services/interceptors/service.js.map +1 -1
- package/dist/lib/services/metrics.js +0 -2
- package/dist/lib/services/metrics.js.map +1 -1
- package/dist/lib/services/service-catalog.js +10 -90
- package/dist/lib/services/service-catalog.js.map +1 -1
- package/dist/lib/services/service-fed-ramp.js +0 -2
- package/dist/lib/services/service-fed-ramp.js.map +1 -1
- package/dist/lib/services/service-host.js +47 -62
- package/dist/lib/services/service-host.js.map +1 -1
- package/dist/lib/services/service-registry.js +78 -90
- package/dist/lib/services/service-registry.js.map +1 -1
- package/dist/lib/services/service-state.js +3 -15
- package/dist/lib/services/service-state.js.map +1 -1
- package/dist/lib/services/service-url.js +4 -25
- package/dist/lib/services/service-url.js.map +1 -1
- package/dist/lib/services/services.js +122 -238
- package/dist/lib/services/services.js.map +1 -1
- package/dist/lib/stateless-webex-plugin.js +5 -28
- package/dist/lib/stateless-webex-plugin.js.map +1 -1
- package/dist/lib/storage/decorators.js +19 -62
- package/dist/lib/storage/decorators.js.map +1 -1
- package/dist/lib/storage/errors.js +0 -23
- package/dist/lib/storage/errors.js.map +1 -1
- package/dist/lib/storage/index.js +2 -16
- package/dist/lib/storage/index.js.map +1 -1
- package/dist/lib/storage/make-webex-plugin-store.js +11 -41
- package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
- package/dist/lib/storage/make-webex-store.js +8 -30
- package/dist/lib/storage/make-webex-store.js.map +1 -1
- package/dist/lib/storage/memory-store-adapter.js +1 -19
- package/dist/lib/storage/memory-store-adapter.js.map +1 -1
- package/dist/lib/webex-core-plugin-mixin.js +9 -29
- package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-http-error.js +1 -31
- package/dist/lib/webex-http-error.js.map +1 -1
- package/dist/lib/webex-internal-core-plugin-mixin.js +9 -29
- package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-plugin.js +6 -40
- package/dist/lib/webex-plugin.js.map +1 -1
- package/dist/plugins/logger.js +3 -17
- package/dist/plugins/logger.js.map +1 -1
- package/dist/webex-core.js +79 -203
- package/dist/webex-core.js.map +1 -1
- package/dist/webex-internal-core.js +0 -10
- package/dist/webex-internal-core.js.map +1 -1
- package/package.json +14 -14
- package/src/config.js +9 -11
- package/src/credentials-config.js +110 -72
- package/src/index.js +4 -14
- package/src/interceptors/auth.js +36 -37
- package/src/interceptors/default-options.js +0 -1
- package/src/interceptors/embargo.js +1 -1
- package/src/interceptors/payload-transformer.js +1 -2
- package/src/interceptors/rate-limit.js +8 -5
- package/src/interceptors/redirect.js +14 -8
- package/src/interceptors/request-event.js +4 -8
- package/src/interceptors/request-logger.js +8 -5
- package/src/interceptors/response-logger.js +11 -8
- package/src/interceptors/user-agent.js +1 -2
- package/src/interceptors/webex-user-agent.js +3 -9
- package/src/lib/batcher.js +70 -69
- package/src/lib/credentials/credentials.js +112 -122
- package/src/lib/credentials/grant-errors.js +6 -7
- package/src/lib/credentials/index.js +1 -4
- package/src/lib/credentials/scope.js +1 -4
- package/src/lib/credentials/token-collection.js +1 -1
- package/src/lib/credentials/token.js +86 -80
- package/src/lib/page.js +10 -11
- package/src/lib/services/constants.js +3 -13
- package/src/lib/services/index.js +2 -2
- package/src/lib/services/interceptors/server-error.js +12 -7
- package/src/lib/services/interceptors/service.js +6 -5
- package/src/lib/services/metrics.js +1 -1
- package/src/lib/services/service-catalog.js +110 -100
- package/src/lib/services/service-fed-ramp.js +1 -2
- package/src/lib/services/service-host.js +10 -17
- package/src/lib/services/service-registry.js +69 -96
- package/src/lib/services/service-state.js +4 -6
- package/src/lib/services/service-url.js +24 -23
- package/src/lib/services/services.js +260 -251
- package/src/lib/stateless-webex-plugin.js +4 -2
- package/src/lib/storage/decorators.js +68 -66
- package/src/lib/storage/index.js +4 -6
- package/src/lib/storage/make-webex-plugin-store.js +34 -21
- package/src/lib/storage/make-webex-store.js +6 -7
- package/src/lib/storage/memory-store-adapter.js +3 -3
- package/src/lib/webex-core-plugin-mixin.js +10 -7
- package/src/lib/webex-http-error.js +7 -8
- package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
- package/src/lib/webex-plugin.js +41 -34
- package/src/plugins/logger.js +8 -3
- package/src/webex-core.js +185 -116
- package/src/webex-internal-core.js +15 -9
- package/test/integration/spec/credentials/credentials.js +26 -30
- package/test/integration/spec/credentials/token.js +36 -33
- package/test/integration/spec/services/service-catalog.js +177 -156
- package/test/integration/spec/services/services.js +313 -304
- package/test/integration/spec/webex-core.js +98 -86
- package/test/unit/spec/_setup.js +26 -18
- package/test/unit/spec/credentials/credentials.js +189 -154
- package/test/unit/spec/credentials/token.js +94 -76
- package/test/unit/spec/interceptors/auth.js +291 -243
- package/test/unit/spec/interceptors/default-options.js +36 -24
- package/test/unit/spec/interceptors/embargo.js +32 -27
- package/test/unit/spec/interceptors/network-timing.js +2 -2
- package/test/unit/spec/interceptors/payload-transformer.js +61 -52
- package/test/unit/spec/interceptors/rate-limit.js +104 -75
- package/test/unit/spec/interceptors/redirect.js +22 -20
- package/test/unit/spec/interceptors/request-timing.js +18 -22
- package/test/unit/spec/interceptors/user-agent.js +28 -16
- package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
- package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
- package/test/unit/spec/lib/batcher.js +36 -32
- package/test/unit/spec/lib/page.js +36 -32
- package/test/unit/spec/lib/webex-plugin.js +1 -1
- package/test/unit/spec/services/interceptors/server-error.js +67 -90
- package/test/unit/spec/services/interceptors/service.js +17 -28
- package/test/unit/spec/services/service-catalog.js +19 -27
- package/test/unit/spec/services/service-host.js +29 -26
- package/test/unit/spec/services/service-registry.js +128 -170
- package/test/unit/spec/services/service-state.js +13 -22
- package/test/unit/spec/services/service-url.js +24 -43
- package/test/unit/spec/services/services.js +85 -41
- package/test/unit/spec/storage/persist.js +6 -9
- package/test/unit/spec/storage/wait-for-value.js +22 -21
- package/test/unit/spec/webex-core.js +78 -57
- package/test/unit/spec/webex-internal-core.js +56 -31
|
@@ -11,57 +11,48 @@ describe('webex-core', () => {
|
|
|
11
11
|
|
|
12
12
|
describe('#constructor()', () => {
|
|
13
13
|
it('should create a collection of catalog states', () => {
|
|
14
|
-
assert.isTrue(
|
|
15
|
-
(catalog) => !!
|
|
16
|
-
)
|
|
14
|
+
assert.isTrue(
|
|
15
|
+
serviceConstants.SERVICE_CATALOGS.every((catalog) => !!serviceState[catalog])
|
|
16
|
+
);
|
|
17
17
|
});
|
|
18
18
|
|
|
19
19
|
it('should initialize states with false collecting values', () => {
|
|
20
|
-
assert.isTrue(
|
|
21
|
-
(
|
|
22
|
-
|
|
20
|
+
assert.isTrue(
|
|
21
|
+
serviceConstants.SERVICE_CATALOGS.every(
|
|
22
|
+
(catalog) => serviceState[catalog].collecting === false
|
|
23
|
+
)
|
|
24
|
+
);
|
|
23
25
|
});
|
|
24
26
|
});
|
|
25
27
|
|
|
26
28
|
describe('#setCollecting()', () => {
|
|
27
29
|
it('should set the collecting value of a catalog state to true', () => {
|
|
28
30
|
serviceState.setCollecting(serviceConstants.SERVICE_CATALOGS[0], true);
|
|
29
|
-
assert.isTrue(
|
|
30
|
-
serviceState[serviceConstants.SERVICE_CATALOGS[0]].collecting
|
|
31
|
-
);
|
|
31
|
+
assert.isTrue(serviceState[serviceConstants.SERVICE_CATALOGS[0]].collecting);
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
it('should set the collecting value of a catalog state to false', () => {
|
|
35
35
|
serviceState.setCollecting(serviceConstants.SERVICE_CATALOGS[0], false);
|
|
36
|
-
assert.isFalse(
|
|
37
|
-
serviceState[serviceConstants.SERVICE_CATALOGS[0]].collecting
|
|
38
|
-
);
|
|
36
|
+
assert.isFalse(serviceState[serviceConstants.SERVICE_CATALOGS[0]].collecting);
|
|
39
37
|
});
|
|
40
38
|
});
|
|
41
39
|
|
|
42
40
|
describe('#setReady()', () => {
|
|
43
41
|
it('should set the collecting value of a catalog state to true', () => {
|
|
44
42
|
serviceState.setReady(serviceConstants.SERVICE_CATALOGS[0], true);
|
|
45
|
-
assert.isTrue(
|
|
46
|
-
serviceState[serviceConstants.SERVICE_CATALOGS[0]].ready
|
|
47
|
-
);
|
|
43
|
+
assert.isTrue(serviceState[serviceConstants.SERVICE_CATALOGS[0]].ready);
|
|
48
44
|
});
|
|
49
45
|
|
|
50
46
|
it('should set the collecting value of a catalog state to false', () => {
|
|
51
47
|
serviceState.setReady(serviceConstants.SERVICE_CATALOGS[0], false);
|
|
52
|
-
assert.isFalse(
|
|
53
|
-
serviceState[serviceConstants.SERVICE_CATALOGS[0]].ready
|
|
54
|
-
);
|
|
48
|
+
assert.isFalse(serviceState[serviceConstants.SERVICE_CATALOGS[0]].ready);
|
|
55
49
|
});
|
|
56
50
|
});
|
|
57
51
|
|
|
58
52
|
describe('static methods', () => {
|
|
59
53
|
describe('#generateCatalogState()', () => {
|
|
60
54
|
it('returns an object with the correct keys', () => {
|
|
61
|
-
assert.containsAllKeys(
|
|
62
|
-
ServiceState.generateCatalogState(),
|
|
63
|
-
['collecting', 'ready']
|
|
64
|
-
);
|
|
55
|
+
assert.containsAllKeys(ServiceState.generateCatalogState(), ['collecting', 'ready']);
|
|
65
56
|
});
|
|
66
57
|
});
|
|
67
58
|
});
|
|
@@ -26,38 +26,38 @@ describe('webex-core', () => {
|
|
|
26
26
|
priority: 1,
|
|
27
27
|
ttl: -1,
|
|
28
28
|
id: '1',
|
|
29
|
-
homeCluster: false
|
|
29
|
+
homeCluster: false,
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
host: 'example-host-p2.com',
|
|
33
33
|
priority: 2,
|
|
34
34
|
ttl: -1,
|
|
35
35
|
id: '2',
|
|
36
|
-
homeCluster: false
|
|
36
|
+
homeCluster: false,
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
host: 'example-host-p3.com',
|
|
40
40
|
priority: 3,
|
|
41
41
|
ttl: -1,
|
|
42
42
|
id: '3',
|
|
43
|
-
homeCluster: true
|
|
43
|
+
homeCluster: true,
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
host: 'example-host-p4.com',
|
|
47
47
|
priority: 4,
|
|
48
48
|
ttl: -1,
|
|
49
49
|
id: '4',
|
|
50
|
-
homeCluster: true
|
|
50
|
+
homeCluster: true,
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
host: 'example-host-p5.com',
|
|
54
54
|
priority: 5,
|
|
55
55
|
ttl: -1,
|
|
56
56
|
id: '5',
|
|
57
|
-
homeCluster: true
|
|
58
|
-
}
|
|
57
|
+
homeCluster: true,
|
|
58
|
+
},
|
|
59
59
|
],
|
|
60
|
-
name: 'example'
|
|
60
|
+
name: 'example',
|
|
61
61
|
};
|
|
62
62
|
serviceUrl = new ServiceUrl({...template});
|
|
63
63
|
});
|
|
@@ -103,8 +103,7 @@ describe('webex-core', () => {
|
|
|
103
103
|
|
|
104
104
|
it('replaces the host of a pass in url', () => {
|
|
105
105
|
serviceUrl.hosts.forEach(({host}) => {
|
|
106
|
-
assert.include(serviceUrl._generateHostUrl(host),
|
|
107
|
-
`https://${host}/api/v1`);
|
|
106
|
+
assert.include(serviceUrl._generateHostUrl(host), `https://${host}/api/v1`);
|
|
108
107
|
});
|
|
109
108
|
});
|
|
110
109
|
});
|
|
@@ -120,8 +119,7 @@ describe('webex-core', () => {
|
|
|
120
119
|
const hostUrls = serviceUrl._getHostUrls();
|
|
121
120
|
|
|
122
121
|
hostUrls.forEach((hu, i) => {
|
|
123
|
-
assert.equal(hu.url,
|
|
124
|
-
serviceUrl._generateHostUrl(serviceUrl.hosts[i].host));
|
|
122
|
+
assert.equal(hu.url, serviceUrl._generateHostUrl(serviceUrl.hosts[i].host));
|
|
125
123
|
assert.equal(hu.priority, serviceUrl.hosts[i].priority);
|
|
126
124
|
});
|
|
127
125
|
});
|
|
@@ -132,9 +130,8 @@ describe('webex-core', () => {
|
|
|
132
130
|
|
|
133
131
|
beforeEach('get a high priority host manually', () => {
|
|
134
132
|
highPriorityHost = serviceUrl._generateHostUrl(
|
|
135
|
-
serviceUrl.hosts.reduce((o, c) => (
|
|
136
|
-
|
|
137
|
-
)).host
|
|
133
|
+
serviceUrl.hosts.reduce((o, c) => (o.priority > c.priority || !o.homeCluster ? c : o))
|
|
134
|
+
.host
|
|
138
135
|
);
|
|
139
136
|
});
|
|
140
137
|
|
|
@@ -143,22 +140,16 @@ describe('webex-core', () => {
|
|
|
143
140
|
});
|
|
144
141
|
|
|
145
142
|
it('should reset the hosts when all have failed', () => {
|
|
146
|
-
serviceUrl.hosts.forEach(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
);
|
|
143
|
+
serviceUrl.hosts.forEach((host) => {
|
|
144
|
+
/* eslint-disable-next-line no-param-reassign */
|
|
145
|
+
host.failed = true;
|
|
146
|
+
});
|
|
152
147
|
|
|
153
148
|
serviceUrl._getPriorityHostUrl();
|
|
154
149
|
|
|
155
|
-
const homeClusterUrls = serviceUrl.hosts.filter(
|
|
156
|
-
(host) => host.homeCluster
|
|
157
|
-
);
|
|
150
|
+
const homeClusterUrls = serviceUrl.hosts.filter((host) => host.homeCluster);
|
|
158
151
|
|
|
159
|
-
assert.isTrue(homeClusterUrls.every(
|
|
160
|
-
(host) => !host.failed
|
|
161
|
-
));
|
|
152
|
+
assert.isTrue(homeClusterUrls.every((host) => !host.failed));
|
|
162
153
|
});
|
|
163
154
|
});
|
|
164
155
|
|
|
@@ -175,9 +166,7 @@ describe('webex-core', () => {
|
|
|
175
166
|
it('marks a host as failed', () => {
|
|
176
167
|
serviceUrl.failHost(hostUrl);
|
|
177
168
|
|
|
178
|
-
const removedHost = serviceUrl.hosts.find(
|
|
179
|
-
(currentHost) => currentHost.host === host
|
|
180
|
-
);
|
|
169
|
+
const removedHost = serviceUrl.hosts.find((currentHost) => currentHost.host === host);
|
|
181
170
|
|
|
182
171
|
assert.isTrue(removedHost.failed);
|
|
183
172
|
});
|
|
@@ -202,9 +191,7 @@ describe('webex-core', () => {
|
|
|
202
191
|
});
|
|
203
192
|
|
|
204
193
|
it('returns false if hostUrl was not found', () => {
|
|
205
|
-
const removedHostResult = serviceUrl.failHost(
|
|
206
|
-
'https://someurl.com/api/vq'
|
|
207
|
-
);
|
|
194
|
+
const removedHostResult = serviceUrl.failHost('https://someurl.com/api/vq');
|
|
208
195
|
|
|
209
196
|
assert.isFalse(removedHostResult);
|
|
210
197
|
});
|
|
@@ -225,9 +212,7 @@ describe('webex-core', () => {
|
|
|
225
212
|
const hpUrl = serviceUrl.get(true);
|
|
226
213
|
|
|
227
214
|
assert.equal(hpUrl, serviceUrl._getPriorityHostUrl());
|
|
228
|
-
assert.isDefined(serviceUrl.hosts.find(
|
|
229
|
-
(hostObj) => hpUrl.includes(hostObj.host)
|
|
230
|
-
));
|
|
215
|
+
assert.isDefined(serviceUrl.hosts.find((hostObj) => hpUrl.includes(hostObj.host)));
|
|
231
216
|
});
|
|
232
217
|
|
|
233
218
|
describe('when a clusterId is provided', () => {
|
|
@@ -239,10 +224,8 @@ describe('webex-core', () => {
|
|
|
239
224
|
beforeEach(() => {
|
|
240
225
|
hosts = serviceUrl.hosts.filter((host) => host.homeCluster);
|
|
241
226
|
|
|
242
|
-
highPriorityHost = hosts.reduce(
|
|
243
|
-
|
|
244
|
-
current :
|
|
245
|
-
next)
|
|
227
|
+
highPriorityHost = hosts.reduce((current, next) =>
|
|
228
|
+
current.priority <= next.priority ? current : next
|
|
246
229
|
).host;
|
|
247
230
|
|
|
248
231
|
url = serviceUrl.get(true, hosts[0].id);
|
|
@@ -257,10 +240,8 @@ describe('webex-core', () => {
|
|
|
257
240
|
beforeEach(() => {
|
|
258
241
|
hosts = serviceUrl.hosts.filter((host) => !host.homeCluster);
|
|
259
242
|
|
|
260
|
-
highPriorityHost = hosts.reduce(
|
|
261
|
-
|
|
262
|
-
current :
|
|
263
|
-
next)
|
|
243
|
+
highPriorityHost = hosts.reduce((current, next) =>
|
|
244
|
+
current.priority <= next.priority ? current : next
|
|
264
245
|
).host;
|
|
265
246
|
|
|
266
247
|
url = serviceUrl.get(true, hosts[0].id);
|
|
@@ -17,8 +17,8 @@ describe('webex-core', () => {
|
|
|
17
17
|
before('initialize webex', () => {
|
|
18
18
|
webex = new MockWebex({
|
|
19
19
|
children: {
|
|
20
|
-
services: Services
|
|
21
|
-
}
|
|
20
|
+
services: Services,
|
|
21
|
+
},
|
|
22
22
|
});
|
|
23
23
|
services = webex.internal.services;
|
|
24
24
|
catalog = services._getCatalog();
|
|
@@ -93,10 +93,9 @@ describe('webex-core', () => {
|
|
|
93
93
|
it('successfully resolves with undefined if fetch request failed', () => {
|
|
94
94
|
webex.request = sinon.stub().returns(Promise.reject());
|
|
95
95
|
|
|
96
|
-
return assert.isFulfilled(services.fetchClientRegionInfo())
|
|
97
|
-
.
|
|
98
|
-
|
|
99
|
-
});
|
|
96
|
+
return assert.isFulfilled(services.fetchClientRegionInfo()).then((r) => {
|
|
97
|
+
assert.isUndefined(r);
|
|
98
|
+
});
|
|
100
99
|
});
|
|
101
100
|
});
|
|
102
101
|
|
|
@@ -111,7 +110,7 @@ describe('webex-core', () => {
|
|
|
111
110
|
assert.calledWith(webex.request, {
|
|
112
111
|
method: 'GET',
|
|
113
112
|
service: 'hydra',
|
|
114
|
-
resource: 'meetingPreferences'
|
|
113
|
+
resource: 'meetingPreferences',
|
|
115
114
|
});
|
|
116
115
|
assert.isDefined(res);
|
|
117
116
|
assert.equal(res, userPreferences);
|
|
@@ -125,7 +124,7 @@ describe('webex-core', () => {
|
|
|
125
124
|
assert.calledWith(webex.request, {
|
|
126
125
|
method: 'GET',
|
|
127
126
|
service: 'hydra',
|
|
128
|
-
resource: 'meetingPreferences'
|
|
127
|
+
resource: 'meetingPreferences',
|
|
129
128
|
});
|
|
130
129
|
assert.isUndefined(res);
|
|
131
130
|
});
|
|
@@ -141,78 +140,117 @@ describe('webex-core', () => {
|
|
|
141
140
|
'example-a': 'https://example-a.com/api/v1',
|
|
142
141
|
'example-b': 'https://example-b.com/api/v1',
|
|
143
142
|
'example-c': 'https://example-c.com/api/v1',
|
|
144
|
-
'example-d': 'https://example-d.com/api/v1'
|
|
143
|
+
'example-d': 'https://example-d.com/api/v1',
|
|
145
144
|
},
|
|
146
145
|
hostCatalog: {
|
|
147
146
|
'example-a.com': [
|
|
148
147
|
{
|
|
149
|
-
host: 'example-a-1.com',
|
|
148
|
+
host: 'example-a-1.com',
|
|
149
|
+
ttl: -1,
|
|
150
|
+
priority: 5,
|
|
151
|
+
id: '0:0:0:example-a',
|
|
150
152
|
},
|
|
151
153
|
{
|
|
152
|
-
host: 'example-a-2.com',
|
|
154
|
+
host: 'example-a-2.com',
|
|
155
|
+
ttl: -1,
|
|
156
|
+
priority: 3,
|
|
157
|
+
id: '0:0:0:example-a',
|
|
153
158
|
},
|
|
154
159
|
{
|
|
155
|
-
host: 'example-a-3.com',
|
|
156
|
-
|
|
160
|
+
host: 'example-a-3.com',
|
|
161
|
+
ttl: -1,
|
|
162
|
+
priority: 1,
|
|
163
|
+
id: '0:0:0:example-a-x',
|
|
164
|
+
},
|
|
157
165
|
],
|
|
158
166
|
'example-b.com': [
|
|
159
167
|
{
|
|
160
|
-
host: 'example-b-1.com',
|
|
168
|
+
host: 'example-b-1.com',
|
|
169
|
+
ttl: -1,
|
|
170
|
+
priority: 5,
|
|
171
|
+
id: '0:0:0:example-b',
|
|
161
172
|
},
|
|
162
173
|
{
|
|
163
|
-
host: 'example-b-2.com',
|
|
174
|
+
host: 'example-b-2.com',
|
|
175
|
+
ttl: -1,
|
|
176
|
+
priority: 3,
|
|
177
|
+
id: '0:0:0:example-b',
|
|
164
178
|
},
|
|
165
179
|
{
|
|
166
|
-
host: 'example-b-3.com',
|
|
167
|
-
|
|
180
|
+
host: 'example-b-3.com',
|
|
181
|
+
ttl: -1,
|
|
182
|
+
priority: 1,
|
|
183
|
+
id: '0:0:0:example-b-x',
|
|
184
|
+
},
|
|
168
185
|
],
|
|
169
186
|
'example-c.com': [
|
|
170
187
|
{
|
|
171
|
-
host: 'example-c-1.com',
|
|
188
|
+
host: 'example-c-1.com',
|
|
189
|
+
ttl: -1,
|
|
190
|
+
priority: 5,
|
|
191
|
+
id: '0:0:0:example-c',
|
|
172
192
|
},
|
|
173
193
|
{
|
|
174
|
-
host: 'example-c-2.com',
|
|
194
|
+
host: 'example-c-2.com',
|
|
195
|
+
ttl: -1,
|
|
196
|
+
priority: 3,
|
|
197
|
+
id: '0:0:0:example-c',
|
|
175
198
|
},
|
|
176
199
|
{
|
|
177
|
-
host: 'example-c-3.com',
|
|
178
|
-
|
|
200
|
+
host: 'example-c-3.com',
|
|
201
|
+
ttl: -1,
|
|
202
|
+
priority: 1,
|
|
203
|
+
id: '0:0:0:example-c-x',
|
|
204
|
+
},
|
|
179
205
|
],
|
|
180
206
|
'example-d.com': [
|
|
181
207
|
{
|
|
182
|
-
host: 'example-c-1.com',
|
|
208
|
+
host: 'example-c-1.com',
|
|
209
|
+
ttl: -1,
|
|
210
|
+
priority: 5,
|
|
211
|
+
id: '0:0:0:example-d',
|
|
183
212
|
},
|
|
184
213
|
{
|
|
185
|
-
host: 'example-c-2.com',
|
|
214
|
+
host: 'example-c-2.com',
|
|
215
|
+
ttl: -1,
|
|
216
|
+
priority: 3,
|
|
217
|
+
id: '0:0:0:example-d',
|
|
186
218
|
},
|
|
187
219
|
{
|
|
188
|
-
host: 'example-c-3.com',
|
|
189
|
-
|
|
190
|
-
|
|
220
|
+
host: 'example-c-3.com',
|
|
221
|
+
ttl: -1,
|
|
222
|
+
priority: 1,
|
|
223
|
+
id: '0:0:0:example-d-x',
|
|
224
|
+
},
|
|
225
|
+
],
|
|
191
226
|
},
|
|
192
|
-
format: 'hostmap'
|
|
227
|
+
format: 'hostmap',
|
|
193
228
|
};
|
|
194
229
|
});
|
|
195
230
|
|
|
196
231
|
it('creates a formmatted host map that contains the same amount of entries as the original received hostmap', () => {
|
|
197
232
|
formattedHM = services._formatReceivedHostmap(serviceHostmap);
|
|
198
233
|
|
|
199
|
-
assert(
|
|
200
|
-
formattedHM.length,
|
|
234
|
+
assert(
|
|
235
|
+
Object.keys(serviceHostmap.serviceLinks).length >= formattedHM.length,
|
|
236
|
+
'length is not equal or less than'
|
|
237
|
+
);
|
|
201
238
|
});
|
|
202
239
|
|
|
203
240
|
it.skip('creates an array of equal or less length of hostMap', () => {
|
|
204
241
|
formattedHM = services._formatReceivedHostmap(serviceHostmap);
|
|
205
242
|
|
|
206
|
-
assert(
|
|
207
|
-
formattedHM.length,
|
|
243
|
+
assert(
|
|
244
|
+
Object.keys(serviceHostmap.hostCatalog).length >= formattedHM.length,
|
|
245
|
+
'length is not equal or less than'
|
|
246
|
+
);
|
|
208
247
|
});
|
|
209
248
|
|
|
210
249
|
it('creates an array with matching url data', () => {
|
|
211
250
|
formattedHM = services._formatReceivedHostmap(serviceHostmap);
|
|
212
251
|
|
|
213
252
|
formattedHM.forEach((entry) => {
|
|
214
|
-
assert.equal(serviceHostmap.serviceLinks[entry.name],
|
|
215
|
-
entry.defaultUrl);
|
|
253
|
+
assert.equal(serviceHostmap.serviceLinks[entry.name], entry.defaultUrl);
|
|
216
254
|
});
|
|
217
255
|
});
|
|
218
256
|
|
|
@@ -221,8 +259,11 @@ describe('webex-core', () => {
|
|
|
221
259
|
|
|
222
260
|
formattedHM.forEach((service) => {
|
|
223
261
|
service.hosts.forEach((host) => {
|
|
224
|
-
assert.hasAllKeys(
|
|
225
|
-
|
|
262
|
+
assert.hasAllKeys(
|
|
263
|
+
host,
|
|
264
|
+
['homeCluster', 'host', 'id', 'priority', 'ttl'],
|
|
265
|
+
`${service.name} has an invalid host shape`
|
|
266
|
+
);
|
|
226
267
|
});
|
|
227
268
|
});
|
|
228
269
|
});
|
|
@@ -231,8 +272,9 @@ describe('webex-core', () => {
|
|
|
231
272
|
formattedHM = services._formatReceivedHostmap(serviceHostmap);
|
|
232
273
|
|
|
233
274
|
formattedHM.forEach((service) => {
|
|
234
|
-
const foundServiceKey = Object.keys(serviceHostmap.serviceLinks)
|
|
235
|
-
|
|
275
|
+
const foundServiceKey = Object.keys(serviceHostmap.serviceLinks).find(
|
|
276
|
+
(key) => service.name === key
|
|
277
|
+
);
|
|
236
278
|
|
|
237
279
|
assert.isDefined(foundServiceKey);
|
|
238
280
|
});
|
|
@@ -251,8 +293,10 @@ describe('webex-core', () => {
|
|
|
251
293
|
it('creates an array with matching names', () => {
|
|
252
294
|
formattedHM = services._formatReceivedHostmap(serviceHostmap);
|
|
253
295
|
|
|
254
|
-
assert.hasAllKeys(
|
|
255
|
-
|
|
296
|
+
assert.hasAllKeys(
|
|
297
|
+
serviceHostmap.serviceLinks,
|
|
298
|
+
formattedHM.map((item) => item.name)
|
|
299
|
+
);
|
|
256
300
|
});
|
|
257
301
|
});
|
|
258
302
|
|
|
@@ -260,13 +304,13 @@ describe('webex-core', () => {
|
|
|
260
304
|
// updateCredentialsConfig must remove `/` if exist. so expected serviceList must be.
|
|
261
305
|
const expectedServiceList = {
|
|
262
306
|
idbroker: 'https://idbroker.webex.com',
|
|
263
|
-
identity: 'https://identity.webex.com'
|
|
307
|
+
identity: 'https://identity.webex.com',
|
|
264
308
|
};
|
|
265
309
|
|
|
266
310
|
beforeEach('get services list', async () => {
|
|
267
311
|
const servicesList = {
|
|
268
312
|
idbroker: 'https://idbroker.webex.com',
|
|
269
|
-
identity: 'https://identity.webex.com/'
|
|
313
|
+
identity: 'https://identity.webex.com/',
|
|
270
314
|
};
|
|
271
315
|
|
|
272
316
|
catalog.list = sinon.stub().returns(servicesList);
|
|
@@ -6,10 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import {assert} from '@webex/test-helper-chai';
|
|
8
8
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
9
|
-
import {
|
|
10
|
-
persist,
|
|
11
|
-
WebexPlugin
|
|
12
|
-
} from '@webex/webex-core';
|
|
9
|
+
import {persist, WebexPlugin} from '@webex/webex-core';
|
|
13
10
|
|
|
14
11
|
describe('webex-core', () => {
|
|
15
12
|
describe('@persist', () => {
|
|
@@ -18,8 +15,8 @@ describe('webex-core', () => {
|
|
|
18
15
|
props: {
|
|
19
16
|
test: {
|
|
20
17
|
default: false,
|
|
21
|
-
type: 'boolean'
|
|
22
|
-
}
|
|
18
|
+
type: 'boolean',
|
|
19
|
+
},
|
|
23
20
|
},
|
|
24
21
|
|
|
25
22
|
namespace: 'MockChild',
|
|
@@ -27,13 +24,13 @@ describe('webex-core', () => {
|
|
|
27
24
|
@persist('@')
|
|
28
25
|
initialize(...args) {
|
|
29
26
|
return Reflect.apply(WebexPlugin.prototype.initialize, this, args);
|
|
30
|
-
}
|
|
27
|
+
},
|
|
31
28
|
});
|
|
32
29
|
|
|
33
30
|
const webex = new MockWebex({
|
|
34
31
|
children: {
|
|
35
|
-
mockChild: MockChild
|
|
36
|
-
}
|
|
32
|
+
mockChild: MockChild,
|
|
33
|
+
},
|
|
37
34
|
});
|
|
38
35
|
|
|
39
36
|
webex.internal.mockChild.test = true;
|
|
@@ -7,11 +7,7 @@
|
|
|
7
7
|
import {assert} from '@webex/test-helper-chai';
|
|
8
8
|
import sinon from 'sinon';
|
|
9
9
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
10
|
-
import {
|
|
11
|
-
persist,
|
|
12
|
-
WebexPlugin,
|
|
13
|
-
waitForValue
|
|
14
|
-
} from '@webex/webex-core';
|
|
10
|
+
import {persist, WebexPlugin, waitForValue} from '@webex/webex-core';
|
|
15
11
|
|
|
16
12
|
describe('webex-core', () => {
|
|
17
13
|
describe('@waitForValue', () => {
|
|
@@ -20,8 +16,8 @@ describe('webex-core', () => {
|
|
|
20
16
|
props: {
|
|
21
17
|
test: {
|
|
22
18
|
default: false,
|
|
23
|
-
type: 'boolean'
|
|
24
|
-
}
|
|
19
|
+
type: 'boolean',
|
|
20
|
+
},
|
|
25
21
|
},
|
|
26
22
|
|
|
27
23
|
namespace: 'MockChild',
|
|
@@ -33,29 +29,34 @@ describe('webex-core', () => {
|
|
|
33
29
|
|
|
34
30
|
@waitForValue('@')
|
|
35
31
|
testMethod() {
|
|
36
|
-
return this.webex.request()
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
32
|
+
return this.webex.request().then(() => {
|
|
33
|
+
this.test = true;
|
|
34
|
+
});
|
|
35
|
+
},
|
|
41
36
|
});
|
|
42
37
|
|
|
43
38
|
const webex = new MockWebex({
|
|
44
39
|
children: {
|
|
45
|
-
mockChild: MockChild
|
|
46
|
-
}
|
|
40
|
+
mockChild: MockChild,
|
|
41
|
+
},
|
|
47
42
|
});
|
|
48
43
|
|
|
49
44
|
let resolve;
|
|
50
45
|
|
|
51
|
-
sinon.stub(webex.boundedStorage, 'get').returns(
|
|
46
|
+
sinon.stub(webex.boundedStorage, 'get').returns(
|
|
47
|
+
new Promise((r) => {
|
|
48
|
+
resolve = r;
|
|
49
|
+
})
|
|
50
|
+
);
|
|
52
51
|
|
|
53
|
-
webex.request.returns(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
webex.request.returns(
|
|
53
|
+
Promise.resolve({
|
|
54
|
+
body: {
|
|
55
|
+
access_token: 'fake token @waitForValue',
|
|
56
|
+
token_type: 'Bearer',
|
|
57
|
+
},
|
|
58
|
+
})
|
|
59
|
+
);
|
|
59
60
|
|
|
60
61
|
const promise = webex.internal.mockChild.testMethod();
|
|
61
62
|
|