@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
|
@@ -24,13 +24,19 @@ describe('webex-core', () => {
|
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
function makeToken(options = {}) {
|
|
27
|
-
return new Token(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
return new Token(
|
|
28
|
+
Object.assign(
|
|
29
|
+
{
|
|
30
|
+
access_token: 'AT',
|
|
31
|
+
expires_in: 10000,
|
|
32
|
+
token_type: 'Fake',
|
|
33
|
+
refresh_token: 'RT',
|
|
34
|
+
refresh_token_expires_in: 20000,
|
|
35
|
+
},
|
|
36
|
+
options
|
|
37
|
+
),
|
|
38
|
+
{parent: webex}
|
|
39
|
+
);
|
|
34
40
|
}
|
|
35
41
|
|
|
36
42
|
describe('#canAuthorize', () => {
|
|
@@ -154,7 +160,10 @@ describe('webex-core', () => {
|
|
|
154
160
|
it('requires an unexpired access token', () => {
|
|
155
161
|
const token = makeToken({expires: Date.now() - 10000});
|
|
156
162
|
|
|
157
|
-
return assert.isRejected(
|
|
163
|
+
return assert.isRejected(
|
|
164
|
+
token.downscope('spark:kms'),
|
|
165
|
+
/cannot downscope expired access token/
|
|
166
|
+
);
|
|
158
167
|
});
|
|
159
168
|
|
|
160
169
|
it('alphabetizes the requested scope', () => {
|
|
@@ -162,7 +171,8 @@ describe('webex-core', () => {
|
|
|
162
171
|
|
|
163
172
|
webex.request.returns(Promise.resolve({body: {access_token: 'AT2'}}));
|
|
164
173
|
|
|
165
|
-
return token
|
|
174
|
+
return token
|
|
175
|
+
.downscope('b a')
|
|
166
176
|
.then(() => assert.equal(webex.request.args[0][0].form.scope, 'a b'));
|
|
167
177
|
});
|
|
168
178
|
});
|
|
@@ -189,7 +199,7 @@ describe('webex-core', () => {
|
|
|
189
199
|
|
|
190
200
|
it('infers token_type from an access token string', () => {
|
|
191
201
|
const t = new Token({
|
|
192
|
-
access_token: 'Fake AT'
|
|
202
|
+
access_token: 'Fake AT',
|
|
193
203
|
});
|
|
194
204
|
|
|
195
205
|
assert.equal(t.access_token, 'AT');
|
|
@@ -203,17 +213,17 @@ describe('webex-core', () => {
|
|
|
203
213
|
expires_in: 6000,
|
|
204
214
|
refresh_token_expires_in: 12000,
|
|
205
215
|
expires: null,
|
|
206
|
-
refresh_token_expires: null
|
|
216
|
+
refresh_token_expires: null,
|
|
207
217
|
});
|
|
208
218
|
|
|
209
219
|
assert.approximately(t.expires, 6000000 + now, 5);
|
|
210
220
|
assert.approximately(t.refresh_token_expires, 12000000 + now, 5);
|
|
211
221
|
});
|
|
212
222
|
|
|
213
|
-
it(
|
|
223
|
+
it("alphabetizes the token's scopes", () => {
|
|
214
224
|
const t = new Token({
|
|
215
225
|
access_token: 'AT',
|
|
216
|
-
scope: 'b a'
|
|
226
|
+
scope: 'b a',
|
|
217
227
|
});
|
|
218
228
|
|
|
219
229
|
assert.equal(t.scope, 'a b');
|
|
@@ -222,7 +232,7 @@ describe('webex-core', () => {
|
|
|
222
232
|
it('it sets a timer to set Token#_isExpired (and therefore Token#isExpired)', () => {
|
|
223
233
|
const t = makeToken({
|
|
224
234
|
// Reminder: expires_in is in seconds, ticks are in miliseconds
|
|
225
|
-
expires_in: 1
|
|
235
|
+
expires_in: 1,
|
|
226
236
|
});
|
|
227
237
|
|
|
228
238
|
assert.isFalse(t.isExpired);
|
|
@@ -251,37 +261,39 @@ describe('webex-core', () => {
|
|
|
251
261
|
browserOnly(it)('refreshes the access_token', () => {
|
|
252
262
|
const token = makeToken();
|
|
253
263
|
|
|
254
|
-
webex.config.credentials.refreshCallback = sinon.stub().returns(
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
264
|
+
webex.config.credentials.refreshCallback = sinon.stub().returns(
|
|
265
|
+
Promise.resolve({
|
|
266
|
+
access_token: 'AT2',
|
|
267
|
+
expires_in: 10000,
|
|
268
|
+
token_type: 'Fake',
|
|
269
|
+
})
|
|
270
|
+
);
|
|
259
271
|
|
|
260
272
|
// FIXME this next line should be necessary. we need a better way to
|
|
261
273
|
// do config
|
|
262
274
|
token.trigger('change:config');
|
|
263
275
|
|
|
264
|
-
return token.refresh()
|
|
265
|
-
.
|
|
266
|
-
|
|
267
|
-
});
|
|
276
|
+
return token.refresh().then((token2) => {
|
|
277
|
+
assert.equal(token2.access_token, 'AT2');
|
|
278
|
+
});
|
|
268
279
|
});
|
|
269
280
|
|
|
270
281
|
nodeOnly(it)('refreshes the access_token', () => {
|
|
271
282
|
const token = makeToken();
|
|
272
283
|
|
|
273
|
-
webex.request.onCall(0).returns(
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
284
|
+
webex.request.onCall(0).returns(
|
|
285
|
+
Promise.resolve({
|
|
286
|
+
body: {
|
|
287
|
+
access_token: 'AT2',
|
|
288
|
+
expires_in: 10000,
|
|
289
|
+
token_type: 'Fake',
|
|
290
|
+
},
|
|
291
|
+
})
|
|
292
|
+
);
|
|
280
293
|
|
|
281
|
-
return token.refresh()
|
|
282
|
-
.
|
|
283
|
-
|
|
284
|
-
});
|
|
294
|
+
return token.refresh().then((token2) => {
|
|
295
|
+
assert.equal(token2.access_token, 'AT2');
|
|
296
|
+
});
|
|
285
297
|
});
|
|
286
298
|
|
|
287
299
|
browserOnly(it)('revokes the previous token when set', () => {
|
|
@@ -290,23 +302,28 @@ describe('webex-core', () => {
|
|
|
290
302
|
sinon.spy(token, 'revoke');
|
|
291
303
|
webex.config.credentials.refreshCallback = sinon.stub();
|
|
292
304
|
|
|
293
|
-
webex.config.credentials.refreshCallback.onCall(0).returns(
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
305
|
+
webex.config.credentials.refreshCallback.onCall(0).returns(
|
|
306
|
+
Promise.resolve({
|
|
307
|
+
access_token: 'AT2',
|
|
308
|
+
expires_in: 10000,
|
|
309
|
+
token_type: 'Fake',
|
|
310
|
+
})
|
|
311
|
+
);
|
|
298
312
|
|
|
299
|
-
webex.config.credentials.refreshCallback.onCall(1).returns(
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
313
|
+
webex.config.credentials.refreshCallback.onCall(1).returns(
|
|
314
|
+
Promise.resolve({
|
|
315
|
+
access_token: 'AT3',
|
|
316
|
+
expires_in: 10000,
|
|
317
|
+
token_type: 'Fake',
|
|
318
|
+
})
|
|
319
|
+
);
|
|
304
320
|
|
|
305
321
|
// FIXME this next line should be necessary. we need a better way to
|
|
306
322
|
// do config
|
|
307
323
|
token.trigger('change:config');
|
|
308
324
|
|
|
309
|
-
return token
|
|
325
|
+
return token
|
|
326
|
+
.refresh()
|
|
310
327
|
.then((token2) => {
|
|
311
328
|
assert.isTrue(token.canRefresh);
|
|
312
329
|
assert.notCalled(token.revoke);
|
|
@@ -324,23 +341,28 @@ describe('webex-core', () => {
|
|
|
324
341
|
|
|
325
342
|
sinon.spy(token, 'revoke');
|
|
326
343
|
|
|
327
|
-
webex.request.onCall(0).returns(
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
344
|
+
webex.request.onCall(0).returns(
|
|
345
|
+
Promise.resolve({
|
|
346
|
+
body: {
|
|
347
|
+
access_token: 'AT2',
|
|
348
|
+
expires_in: 10000,
|
|
349
|
+
token_type: 'Fake',
|
|
350
|
+
},
|
|
351
|
+
})
|
|
352
|
+
);
|
|
353
|
+
|
|
354
|
+
webex.request.onCall(1).returns(
|
|
355
|
+
Promise.resolve({
|
|
356
|
+
body: {
|
|
357
|
+
access_token: 'AT3',
|
|
358
|
+
expires_in: 10000,
|
|
359
|
+
token_type: 'Fake',
|
|
360
|
+
},
|
|
361
|
+
})
|
|
362
|
+
);
|
|
342
363
|
|
|
343
|
-
return token
|
|
364
|
+
return token
|
|
365
|
+
.refresh()
|
|
344
366
|
.then((token2) => {
|
|
345
367
|
assert.isTrue(token.canRefresh);
|
|
346
368
|
assert.notCalled(token.revoke);
|
|
@@ -359,8 +381,7 @@ describe('webex-core', () => {
|
|
|
359
381
|
it('is a noop', () => {
|
|
360
382
|
const token = makeToken({expires: Date.now() - 10000});
|
|
361
383
|
|
|
362
|
-
return token.revoke()
|
|
363
|
-
.then(() => assert.notCalled(webex.request));
|
|
384
|
+
return token.revoke().then(() => assert.notCalled(webex.request));
|
|
364
385
|
});
|
|
365
386
|
});
|
|
366
387
|
|
|
@@ -370,8 +391,7 @@ describe('webex-core', () => {
|
|
|
370
391
|
|
|
371
392
|
token.unset('access_token');
|
|
372
393
|
|
|
373
|
-
return token.revoke()
|
|
374
|
-
.then(() => assert.notCalled(webex.request));
|
|
394
|
+
return token.revoke().then(() => assert.notCalled(webex.request));
|
|
375
395
|
});
|
|
376
396
|
});
|
|
377
397
|
|
|
@@ -385,23 +405,21 @@ describe('webex-core', () => {
|
|
|
385
405
|
|
|
386
406
|
token.unset('access_token');
|
|
387
407
|
|
|
388
|
-
return token.revoke()
|
|
389
|
-
.then(() => assert.notCalled(webex.request));
|
|
408
|
+
return token.revoke().then(() => assert.notCalled(webex.request));
|
|
390
409
|
});
|
|
391
410
|
});
|
|
392
411
|
|
|
393
412
|
it('unsets the access_token and related values', () => {
|
|
394
413
|
const token = makeToken();
|
|
395
414
|
|
|
396
|
-
return token.revoke()
|
|
397
|
-
.
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
});
|
|
415
|
+
return token.revoke().then(() => {
|
|
416
|
+
assert.isUndefined(token.access_token);
|
|
417
|
+
assert.isUndefined(token.expires);
|
|
418
|
+
assert.isUndefined(token.expires_in);
|
|
419
|
+
assert.isDefined(token.refresh_token);
|
|
420
|
+
assert.isDefined(token.refresh_token_expires);
|
|
421
|
+
assert.isDefined(token.refresh_token_expires_in);
|
|
422
|
+
});
|
|
405
423
|
});
|
|
406
424
|
});
|
|
407
425
|
|