@webex/webex-core 3.0.0-beta.4 → 3.0.0-beta.400
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/constants.js +14 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/credentials/credentials.js +98 -139
- 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 +25 -14
- 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 +42 -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 +15 -35
- 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 +12 -91
- 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 +135 -239
- 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 +84 -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/constants.js +6 -0
- package/src/lib/credentials/credentials.js +173 -141
- package/src/lib/credentials/grant-errors.js +6 -7
- package/src/lib/credentials/index.js +1 -4
- package/src/lib/credentials/scope.js +24 -8
- package/src/lib/credentials/token-collection.js +1 -1
- package/src/lib/credentials/token.js +95 -81
- 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 +7 -6
- package/src/lib/services/metrics.js +1 -1
- package/src/lib/services/service-catalog.js +112 -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 +272 -249
- 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 +198 -117
- 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 +352 -162
- package/test/unit/spec/credentials/scope.js +80 -0
- package/test/unit/spec/credentials/token.js +105 -77
- package/test/unit/spec/interceptors/auth.js +294 -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 +23 -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 +147 -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 +90 -57
- package/test/unit/spec/webex-internal-core.js +56 -31
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {assert} from '@webex/test-helper-chai';
|
|
2
|
+
import {
|
|
3
|
+
sortScope,
|
|
4
|
+
filterScope,
|
|
5
|
+
diffScopes,
|
|
6
|
+
isGuestScope,
|
|
7
|
+
} from '@webex/webex-core/src/lib/credentials/scope';
|
|
8
|
+
|
|
9
|
+
describe('webex-core', () => {
|
|
10
|
+
describe('scope utils', () => {
|
|
11
|
+
describe('sortScope', () => {
|
|
12
|
+
[
|
|
13
|
+
{scope: undefined, expected: ''},
|
|
14
|
+
{scope: '', expected: ''},
|
|
15
|
+
{scope: 'a', expected: 'a'},
|
|
16
|
+
{scope: 'b c a', expected: 'a b c'},
|
|
17
|
+
].forEach(({scope, expected}) =>
|
|
18
|
+
it(`should sort "${scope}" alphabetically`, () => {
|
|
19
|
+
assert.equal(sortScope(scope), expected);
|
|
20
|
+
})
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('filterScope', () => {
|
|
25
|
+
[
|
|
26
|
+
{toFilter: 'a', scope: undefined, expected: ''},
|
|
27
|
+
{toFilter: 'a', scope: '', expected: ''},
|
|
28
|
+
{toFilter: 'a', scope: 'a', expected: ''},
|
|
29
|
+
{toFilter: 'a', scope: 'a b c', expected: 'b c'},
|
|
30
|
+
{toFilter: 'c', scope: 'a c b', expected: 'a b'},
|
|
31
|
+
].forEach(({toFilter, scope, expected}) =>
|
|
32
|
+
it(`should filter out ${toFilter} scope from ${scope} scope and sort the result`, () => {
|
|
33
|
+
assert.equal(filterScope(toFilter, scope), expected);
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
[
|
|
38
|
+
{toFilter: [], scope: 'a', expected: 'a'},
|
|
39
|
+
{toFilter: ['a', 'b'], scope: undefined, expected: ''},
|
|
40
|
+
{toFilter: ['a', 'b'], scope: '', expected: ''},
|
|
41
|
+
{toFilter: ['a', 'b'], scope: 'a', expected: ''},
|
|
42
|
+
{toFilter: ['a', 'b'], scope: 'a b c', expected: 'c'},
|
|
43
|
+
{toFilter: ['a', 'd'], scope: 'a c a b', expected: 'b c'},
|
|
44
|
+
].forEach(({toFilter, scope, expected}) =>
|
|
45
|
+
it(`should filter out ${toFilter} from ${scope} and sort the result`, () => {
|
|
46
|
+
assert.equal(filterScope(toFilter, scope), expected);
|
|
47
|
+
})
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe('diffScopes', () => {
|
|
52
|
+
[
|
|
53
|
+
{scope1: undefined, scope2: undefined, expected: ''},
|
|
54
|
+
{scope1: undefined, scope2: '', expected: ''},
|
|
55
|
+
{scope1: '', scope2: undefined, expected: ''},
|
|
56
|
+
{scope1: '', scope2: '', expected: ''},
|
|
57
|
+
{scope1: 'a', scope2: 'a', expected: ''},
|
|
58
|
+
{scope1: 'a b c', scope2: 'a b c', expected: ''},
|
|
59
|
+
{scope1: undefined, scope2: 'a b c', expected: ''},
|
|
60
|
+
{scope1: 'a b c', scope2: 'a b c d', expected: ''},
|
|
61
|
+
].forEach(({scope1, scope2, expected}) =>
|
|
62
|
+
it(`should return an empty string, when all items in ${scope1} scope are contained in the ${scope2} scope`, () => {
|
|
63
|
+
assert.deepEqual(diffScopes(scope1, scope2), expected);
|
|
64
|
+
})
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
[
|
|
68
|
+
{scope1: 'a', scope2: undefined, expected: 'a'},
|
|
69
|
+
{scope1: 'a', scope2: 'b', expected: 'a'},
|
|
70
|
+
{scope1: 'a b c', scope2: 'a b', expected: 'c'},
|
|
71
|
+
{scope1: 'a b c d', scope2: 'a b c', expected: 'd'},
|
|
72
|
+
{scope1: 'a b c', scope2: undefined, expected: 'a b c'},
|
|
73
|
+
].forEach(({scope1, scope2, expected}) =>
|
|
74
|
+
it(`should return a string containing all items in the ${scope1} scope that are not in the ${scope2} scope`, () => {
|
|
75
|
+
assert.deepEqual(diffScopes(scope1, scope2), expected);
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -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,15 +160,29 @@ 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
|
+
);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
it('rejects downscope when the new scope is not super set of the available scopes', () => {
|
|
170
|
+
const token = makeToken();
|
|
171
|
+
token.config.scope = 'scopeY scopeZ';
|
|
172
|
+
|
|
173
|
+
return assert.isRejected(
|
|
174
|
+
token.downscope('scopeX'),
|
|
175
|
+
/new scope \(scopeX\) is not subset of the available scopes \(scopeY scopeZ\)/
|
|
176
|
+
);
|
|
158
177
|
});
|
|
159
178
|
|
|
160
179
|
it('alphabetizes the requested scope', () => {
|
|
161
180
|
const token = makeToken();
|
|
162
181
|
|
|
163
182
|
webex.request.returns(Promise.resolve({body: {access_token: 'AT2'}}));
|
|
164
|
-
|
|
165
|
-
return token
|
|
183
|
+
token.config.scope = 'a b c';
|
|
184
|
+
return token
|
|
185
|
+
.downscope('b a')
|
|
166
186
|
.then(() => assert.equal(webex.request.args[0][0].form.scope, 'a b'));
|
|
167
187
|
});
|
|
168
188
|
});
|
|
@@ -189,7 +209,7 @@ describe('webex-core', () => {
|
|
|
189
209
|
|
|
190
210
|
it('infers token_type from an access token string', () => {
|
|
191
211
|
const t = new Token({
|
|
192
|
-
access_token: 'Fake AT'
|
|
212
|
+
access_token: 'Fake AT',
|
|
193
213
|
});
|
|
194
214
|
|
|
195
215
|
assert.equal(t.access_token, 'AT');
|
|
@@ -203,17 +223,17 @@ describe('webex-core', () => {
|
|
|
203
223
|
expires_in: 6000,
|
|
204
224
|
refresh_token_expires_in: 12000,
|
|
205
225
|
expires: null,
|
|
206
|
-
refresh_token_expires: null
|
|
226
|
+
refresh_token_expires: null,
|
|
207
227
|
});
|
|
208
228
|
|
|
209
229
|
assert.approximately(t.expires, 6000000 + now, 5);
|
|
210
230
|
assert.approximately(t.refresh_token_expires, 12000000 + now, 5);
|
|
211
231
|
});
|
|
212
232
|
|
|
213
|
-
it(
|
|
233
|
+
it("alphabetizes the token's scopes", () => {
|
|
214
234
|
const t = new Token({
|
|
215
235
|
access_token: 'AT',
|
|
216
|
-
scope: 'b a'
|
|
236
|
+
scope: 'b a',
|
|
217
237
|
});
|
|
218
238
|
|
|
219
239
|
assert.equal(t.scope, 'a b');
|
|
@@ -222,7 +242,7 @@ describe('webex-core', () => {
|
|
|
222
242
|
it('it sets a timer to set Token#_isExpired (and therefore Token#isExpired)', () => {
|
|
223
243
|
const t = makeToken({
|
|
224
244
|
// Reminder: expires_in is in seconds, ticks are in miliseconds
|
|
225
|
-
expires_in: 1
|
|
245
|
+
expires_in: 1,
|
|
226
246
|
});
|
|
227
247
|
|
|
228
248
|
assert.isFalse(t.isExpired);
|
|
@@ -251,37 +271,39 @@ describe('webex-core', () => {
|
|
|
251
271
|
browserOnly(it)('refreshes the access_token', () => {
|
|
252
272
|
const token = makeToken();
|
|
253
273
|
|
|
254
|
-
webex.config.credentials.refreshCallback = sinon.stub().returns(
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
274
|
+
webex.config.credentials.refreshCallback = sinon.stub().returns(
|
|
275
|
+
Promise.resolve({
|
|
276
|
+
access_token: 'AT2',
|
|
277
|
+
expires_in: 10000,
|
|
278
|
+
token_type: 'Fake',
|
|
279
|
+
})
|
|
280
|
+
);
|
|
259
281
|
|
|
260
282
|
// FIXME this next line should be necessary. we need a better way to
|
|
261
283
|
// do config
|
|
262
284
|
token.trigger('change:config');
|
|
263
285
|
|
|
264
|
-
return token.refresh()
|
|
265
|
-
.
|
|
266
|
-
|
|
267
|
-
});
|
|
286
|
+
return token.refresh().then((token2) => {
|
|
287
|
+
assert.equal(token2.access_token, 'AT2');
|
|
288
|
+
});
|
|
268
289
|
});
|
|
269
290
|
|
|
270
291
|
nodeOnly(it)('refreshes the access_token', () => {
|
|
271
292
|
const token = makeToken();
|
|
272
293
|
|
|
273
|
-
webex.request.onCall(0).returns(
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
294
|
+
webex.request.onCall(0).returns(
|
|
295
|
+
Promise.resolve({
|
|
296
|
+
body: {
|
|
297
|
+
access_token: 'AT2',
|
|
298
|
+
expires_in: 10000,
|
|
299
|
+
token_type: 'Fake',
|
|
300
|
+
},
|
|
301
|
+
})
|
|
302
|
+
);
|
|
280
303
|
|
|
281
|
-
return token.refresh()
|
|
282
|
-
.
|
|
283
|
-
|
|
284
|
-
});
|
|
304
|
+
return token.refresh().then((token2) => {
|
|
305
|
+
assert.equal(token2.access_token, 'AT2');
|
|
306
|
+
});
|
|
285
307
|
});
|
|
286
308
|
|
|
287
309
|
browserOnly(it)('revokes the previous token when set', () => {
|
|
@@ -290,23 +312,28 @@ describe('webex-core', () => {
|
|
|
290
312
|
sinon.spy(token, 'revoke');
|
|
291
313
|
webex.config.credentials.refreshCallback = sinon.stub();
|
|
292
314
|
|
|
293
|
-
webex.config.credentials.refreshCallback.onCall(0).returns(
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
315
|
+
webex.config.credentials.refreshCallback.onCall(0).returns(
|
|
316
|
+
Promise.resolve({
|
|
317
|
+
access_token: 'AT2',
|
|
318
|
+
expires_in: 10000,
|
|
319
|
+
token_type: 'Fake',
|
|
320
|
+
})
|
|
321
|
+
);
|
|
298
322
|
|
|
299
|
-
webex.config.credentials.refreshCallback.onCall(1).returns(
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
323
|
+
webex.config.credentials.refreshCallback.onCall(1).returns(
|
|
324
|
+
Promise.resolve({
|
|
325
|
+
access_token: 'AT3',
|
|
326
|
+
expires_in: 10000,
|
|
327
|
+
token_type: 'Fake',
|
|
328
|
+
})
|
|
329
|
+
);
|
|
304
330
|
|
|
305
331
|
// FIXME this next line should be necessary. we need a better way to
|
|
306
332
|
// do config
|
|
307
333
|
token.trigger('change:config');
|
|
308
334
|
|
|
309
|
-
return token
|
|
335
|
+
return token
|
|
336
|
+
.refresh()
|
|
310
337
|
.then((token2) => {
|
|
311
338
|
assert.isTrue(token.canRefresh);
|
|
312
339
|
assert.notCalled(token.revoke);
|
|
@@ -324,23 +351,28 @@ describe('webex-core', () => {
|
|
|
324
351
|
|
|
325
352
|
sinon.spy(token, 'revoke');
|
|
326
353
|
|
|
327
|
-
webex.request.onCall(0).returns(
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
354
|
+
webex.request.onCall(0).returns(
|
|
355
|
+
Promise.resolve({
|
|
356
|
+
body: {
|
|
357
|
+
access_token: 'AT2',
|
|
358
|
+
expires_in: 10000,
|
|
359
|
+
token_type: 'Fake',
|
|
360
|
+
},
|
|
361
|
+
})
|
|
362
|
+
);
|
|
363
|
+
|
|
364
|
+
webex.request.onCall(1).returns(
|
|
365
|
+
Promise.resolve({
|
|
366
|
+
body: {
|
|
367
|
+
access_token: 'AT3',
|
|
368
|
+
expires_in: 10000,
|
|
369
|
+
token_type: 'Fake',
|
|
370
|
+
},
|
|
371
|
+
})
|
|
372
|
+
);
|
|
342
373
|
|
|
343
|
-
return token
|
|
374
|
+
return token
|
|
375
|
+
.refresh()
|
|
344
376
|
.then((token2) => {
|
|
345
377
|
assert.isTrue(token.canRefresh);
|
|
346
378
|
assert.notCalled(token.revoke);
|
|
@@ -359,8 +391,7 @@ describe('webex-core', () => {
|
|
|
359
391
|
it('is a noop', () => {
|
|
360
392
|
const token = makeToken({expires: Date.now() - 10000});
|
|
361
393
|
|
|
362
|
-
return token.revoke()
|
|
363
|
-
.then(() => assert.notCalled(webex.request));
|
|
394
|
+
return token.revoke().then(() => assert.notCalled(webex.request));
|
|
364
395
|
});
|
|
365
396
|
});
|
|
366
397
|
|
|
@@ -370,8 +401,7 @@ describe('webex-core', () => {
|
|
|
370
401
|
|
|
371
402
|
token.unset('access_token');
|
|
372
403
|
|
|
373
|
-
return token.revoke()
|
|
374
|
-
.then(() => assert.notCalled(webex.request));
|
|
404
|
+
return token.revoke().then(() => assert.notCalled(webex.request));
|
|
375
405
|
});
|
|
376
406
|
});
|
|
377
407
|
|
|
@@ -385,23 +415,21 @@ describe('webex-core', () => {
|
|
|
385
415
|
|
|
386
416
|
token.unset('access_token');
|
|
387
417
|
|
|
388
|
-
return token.revoke()
|
|
389
|
-
.then(() => assert.notCalled(webex.request));
|
|
418
|
+
return token.revoke().then(() => assert.notCalled(webex.request));
|
|
390
419
|
});
|
|
391
420
|
});
|
|
392
421
|
|
|
393
422
|
it('unsets the access_token and related values', () => {
|
|
394
423
|
const token = makeToken();
|
|
395
424
|
|
|
396
|
-
return token.revoke()
|
|
397
|
-
.
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
});
|
|
425
|
+
return token.revoke().then(() => {
|
|
426
|
+
assert.isUndefined(token.access_token);
|
|
427
|
+
assert.isUndefined(token.expires);
|
|
428
|
+
assert.isUndefined(token.expires_in);
|
|
429
|
+
assert.isDefined(token.refresh_token);
|
|
430
|
+
assert.isDefined(token.refresh_token_expires);
|
|
431
|
+
assert.isDefined(token.refresh_token_expires_in);
|
|
432
|
+
});
|
|
405
433
|
});
|
|
406
434
|
});
|
|
407
435
|
|