@webex/webex-core 2.59.2 → 2.59.3-next.1
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/.eslintrc.js +6 -6
- package/README.md +79 -79
- package/babel.config.js +3 -3
- package/dist/config.js +24 -24
- package/dist/config.js.map +1 -1
- package/dist/credentials-config.js +56 -56
- package/dist/credentials-config.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/auth.js +28 -28
- package/dist/interceptors/auth.js.map +1 -1
- package/dist/interceptors/default-options.js +24 -24
- package/dist/interceptors/default-options.js.map +1 -1
- package/dist/interceptors/embargo.js +9 -9
- package/dist/interceptors/embargo.js.map +1 -1
- package/dist/interceptors/network-timing.js +19 -19
- package/dist/interceptors/network-timing.js.map +1 -1
- package/dist/interceptors/payload-transformer.js +19 -19
- package/dist/interceptors/payload-transformer.js.map +1 -1
- package/dist/interceptors/rate-limit.js +40 -40
- package/dist/interceptors/rate-limit.js.map +1 -1
- package/dist/interceptors/redirect.js +13 -13
- package/dist/interceptors/redirect.js.map +1 -1
- package/dist/interceptors/request-event.js +23 -23
- package/dist/interceptors/request-event.js.map +1 -1
- package/dist/interceptors/request-logger.js +13 -13
- package/dist/interceptors/request-logger.js.map +1 -1
- package/dist/interceptors/request-timing.js +23 -23
- package/dist/interceptors/request-timing.js.map +1 -1
- package/dist/interceptors/response-logger.js +19 -19
- package/dist/interceptors/response-logger.js.map +1 -1
- package/dist/interceptors/user-agent.js +29 -29
- package/dist/interceptors/user-agent.js.map +1 -1
- package/dist/interceptors/webex-tracking-id.js +15 -15
- package/dist/interceptors/webex-tracking-id.js.map +1 -1
- package/dist/interceptors/webex-user-agent.js +13 -13
- package/dist/interceptors/webex-user-agent.js.map +1 -1
- package/dist/lib/batcher.js +83 -83
- package/dist/lib/batcher.js.map +1 -1
- package/dist/lib/credentials/credentials.js +103 -103
- package/dist/lib/credentials/credentials.js.map +1 -1
- package/dist/lib/credentials/grant-errors.js +17 -17
- package/dist/lib/credentials/grant-errors.js.map +1 -1
- package/dist/lib/credentials/index.js +2 -2
- package/dist/lib/credentials/index.js.map +1 -1
- package/dist/lib/credentials/scope.js +11 -11
- package/dist/lib/credentials/scope.js.map +1 -1
- package/dist/lib/credentials/token-collection.js +2 -2
- package/dist/lib/credentials/token-collection.js.map +1 -1
- package/dist/lib/credentials/token.js +145 -145
- package/dist/lib/credentials/token.js.map +1 -1
- package/dist/lib/page.js +49 -49
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/services/constants.js.map +1 -1
- package/dist/lib/services/index.js +2 -2
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/interceptors/server-error.js +9 -9
- package/dist/lib/services/interceptors/server-error.js.map +1 -1
- package/dist/lib/services/interceptors/service.js +24 -24
- package/dist/lib/services/interceptors/service.js.map +1 -1
- package/dist/lib/services/metrics.js.map +1 -1
- package/dist/lib/services/service-catalog.js +104 -104
- package/dist/lib/services/service-catalog.js.map +1 -1
- package/dist/lib/services/service-fed-ramp.js.map +1 -1
- package/dist/lib/services/service-host.js +134 -134
- package/dist/lib/services/service-host.js.map +1 -1
- package/dist/lib/services/service-registry.js +175 -175
- package/dist/lib/services/service-registry.js.map +1 -1
- package/dist/lib/services/service-state.js +38 -38
- package/dist/lib/services/service-state.js.map +1 -1
- package/dist/lib/services/service-url.js +31 -31
- package/dist/lib/services/service-url.js.map +1 -1
- package/dist/lib/services/services.js +245 -245
- package/dist/lib/services/services.js.map +1 -1
- package/dist/lib/stateless-webex-plugin.js +28 -28
- package/dist/lib/stateless-webex-plugin.js.map +1 -1
- package/dist/lib/storage/decorators.js +27 -27
- package/dist/lib/storage/decorators.js.map +1 -1
- package/dist/lib/storage/errors.js +4 -4
- package/dist/lib/storage/errors.js.map +1 -1
- package/dist/lib/storage/index.js.map +1 -1
- package/dist/lib/storage/make-webex-plugin-store.js +44 -44
- package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
- package/dist/lib/storage/make-webex-store.js +40 -40
- package/dist/lib/storage/make-webex-store.js.map +1 -1
- package/dist/lib/storage/memory-store-adapter.js +9 -9
- package/dist/lib/storage/memory-store-adapter.js.map +1 -1
- package/dist/lib/webex-core-plugin-mixin.js +13 -13
- package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-http-error.js +9 -9
- package/dist/lib/webex-http-error.js.map +1 -1
- package/dist/lib/webex-internal-core-plugin-mixin.js +13 -13
- package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-plugin.js +36 -36
- package/dist/lib/webex-plugin.js.map +1 -1
- package/dist/plugins/logger.js +9 -9
- package/dist/plugins/logger.js.map +1 -1
- package/dist/webex-core.js +104 -104
- package/dist/webex-core.js.map +1 -1
- package/dist/webex-internal-core.js +12 -12
- package/dist/webex-internal-core.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +20 -19
- package/process +1 -1
- package/src/config.js +90 -90
- package/src/credentials-config.js +212 -212
- package/src/index.js +62 -62
- package/src/interceptors/auth.js +186 -186
- package/src/interceptors/default-options.js +55 -55
- package/src/interceptors/embargo.js +43 -43
- package/src/interceptors/network-timing.js +54 -54
- package/src/interceptors/payload-transformer.js +55 -55
- package/src/interceptors/rate-limit.js +169 -169
- package/src/interceptors/redirect.js +106 -106
- package/src/interceptors/request-event.js +93 -93
- package/src/interceptors/request-logger.js +78 -78
- package/src/interceptors/request-timing.js +65 -65
- package/src/interceptors/response-logger.js +98 -98
- package/src/interceptors/user-agent.js +77 -77
- package/src/interceptors/webex-tracking-id.js +73 -73
- package/src/interceptors/webex-user-agent.js +79 -79
- package/src/lib/batcher.js +307 -307
- package/src/lib/credentials/credentials.js +552 -552
- package/src/lib/credentials/grant-errors.js +92 -92
- package/src/lib/credentials/index.js +16 -16
- package/src/lib/credentials/scope.js +34 -34
- package/src/lib/credentials/token-collection.js +17 -17
- package/src/lib/credentials/token.js +559 -559
- package/src/lib/page.js +159 -159
- package/src/lib/services/constants.js +9 -9
- package/src/lib/services/index.js +26 -26
- package/src/lib/services/interceptors/server-error.js +48 -48
- package/src/lib/services/interceptors/service.js +101 -101
- package/src/lib/services/metrics.js +4 -4
- package/src/lib/services/service-catalog.js +435 -435
- package/src/lib/services/service-fed-ramp.js +4 -4
- package/src/lib/services/service-host.js +267 -267
- package/src/lib/services/service-registry.js +465 -465
- package/src/lib/services/service-state.js +78 -78
- package/src/lib/services/service-url.js +124 -124
- package/src/lib/services/services.js +1018 -1018
- package/src/lib/stateless-webex-plugin.js +98 -98
- package/src/lib/storage/decorators.js +220 -220
- package/src/lib/storage/errors.js +15 -15
- package/src/lib/storage/index.js +10 -10
- package/src/lib/storage/make-webex-plugin-store.js +211 -211
- package/src/lib/storage/make-webex-store.js +140 -140
- package/src/lib/storage/memory-store-adapter.js +79 -79
- package/src/lib/webex-core-plugin-mixin.js +114 -114
- package/src/lib/webex-http-error.js +61 -61
- package/src/lib/webex-internal-core-plugin-mixin.js +107 -107
- package/src/lib/webex-plugin.js +222 -222
- package/src/plugins/logger.js +60 -60
- package/src/webex-core.js +745 -745
- package/src/webex-internal-core.js +46 -46
- package/test/integration/spec/credentials/credentials.js +139 -139
- package/test/integration/spec/credentials/token.js +102 -102
- package/test/integration/spec/services/service-catalog.js +838 -838
- package/test/integration/spec/services/services.js +1221 -1221
- package/test/integration/spec/webex-core.js +178 -178
- package/test/unit/spec/_setup.js +44 -44
- package/test/unit/spec/credentials/credentials.js +1017 -1017
- package/test/unit/spec/credentials/token.js +441 -441
- package/test/unit/spec/interceptors/auth.js +521 -521
- package/test/unit/spec/interceptors/default-options.js +84 -84
- package/test/unit/spec/interceptors/embargo.js +144 -144
- package/test/unit/spec/interceptors/network-timing.js +49 -49
- package/test/unit/spec/interceptors/payload-transformer.js +155 -155
- package/test/unit/spec/interceptors/rate-limit.js +302 -302
- package/test/unit/spec/interceptors/redirect.js +102 -102
- package/test/unit/spec/interceptors/request-timing.js +92 -92
- package/test/unit/spec/interceptors/user-agent.js +76 -76
- package/test/unit/spec/interceptors/webex-tracking-id.js +76 -76
- package/test/unit/spec/interceptors/webex-user-agent.js +159 -159
- package/test/unit/spec/lib/batcher.js +330 -330
- package/test/unit/spec/lib/page.js +148 -148
- package/test/unit/spec/lib/webex-plugin.js +48 -48
- package/test/unit/spec/services/interceptors/server-error.js +204 -204
- package/test/unit/spec/services/interceptors/service.js +188 -188
- package/test/unit/spec/services/service-catalog.js +194 -194
- package/test/unit/spec/services/service-host.js +260 -260
- package/test/unit/spec/services/service-registry.js +747 -747
- package/test/unit/spec/services/service-state.js +60 -60
- package/test/unit/spec/services/service-url.js +258 -258
- package/test/unit/spec/services/services.js +348 -348
- package/test/unit/spec/storage/persist.js +50 -50
- package/test/unit/spec/storage/storage-adapter.js +12 -12
- package/test/unit/spec/storage/wait-for-value.js +81 -81
- package/test/unit/spec/webex-core.js +253 -253
- package/test/unit/spec/webex-internal-core.js +91 -91
|
@@ -1,188 +1,188 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
import chai from 'chai';
|
|
5
|
-
import chaiAsPromised from 'chai-as-promised';
|
|
6
|
-
import sinon from 'sinon';
|
|
7
|
-
import {ServiceInterceptor} from '@webex/webex-core';
|
|
8
|
-
|
|
9
|
-
const {assert} = chai;
|
|
10
|
-
|
|
11
|
-
chai.use(chaiAsPromised);
|
|
12
|
-
sinon.assert.expose(chai.assert, {prefix: ''});
|
|
13
|
-
|
|
14
|
-
describe('webex-core', () => {
|
|
15
|
-
describe('ServiceInterceptor', () => {
|
|
16
|
-
let fixture;
|
|
17
|
-
let interceptor;
|
|
18
|
-
let options;
|
|
19
|
-
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
interceptor = new ServiceInterceptor();
|
|
22
|
-
|
|
23
|
-
fixture = {
|
|
24
|
-
api: 'example-api',
|
|
25
|
-
resource: '/example/resource/',
|
|
26
|
-
service: 'example',
|
|
27
|
-
serviceUrl: 'https://www.example-service.com/',
|
|
28
|
-
uri: 'https://www.example-uri.com/',
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
options = {};
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe('#generateUri()', () => {
|
|
35
|
-
let uri;
|
|
36
|
-
|
|
37
|
-
beforeEach(() => {
|
|
38
|
-
uri = interceptor.generateUri(
|
|
39
|
-
fixture.serviceUrl,
|
|
40
|
-
fixture.resource
|
|
41
|
-
);
|
|
42
|
-
});
|
|
43
|
-
it('should remove all trailing slashes', () => assert.equal(uri.split('//').length, 2));
|
|
44
|
-
|
|
45
|
-
it('should combine the service url and the resource', () => {
|
|
46
|
-
assert.isTrue(uri.includes(fixture.serviceUrl));
|
|
47
|
-
assert.isTrue(uri.includes(fixture.resource));
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
describe('#normalizeOptions()', () => {
|
|
52
|
-
describe('when the api parameter is defined', () => {
|
|
53
|
-
beforeEach(() => {
|
|
54
|
-
options.api = fixture.api;
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('should assign the service parameter the api value', () => {
|
|
58
|
-
interceptor.normalizeOptions(options);
|
|
59
|
-
|
|
60
|
-
assert.equal(options.service, fixture.api);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
describe('when the service parameter is defined', () => {
|
|
64
|
-
beforeEach(() => {
|
|
65
|
-
options.service = fixture.service;
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('should maintain the service parameter', () => {
|
|
69
|
-
interceptor.normalizeOptions(options);
|
|
70
|
-
|
|
71
|
-
assert.equal(options.service, fixture.service);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
describe('#onRequest()', () => {
|
|
78
|
-
describe('when the uri parameter is defined', () => {
|
|
79
|
-
beforeEach(() => {
|
|
80
|
-
options.uri = fixture.uri;
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('should return the options', () => {
|
|
84
|
-
const initialOptions = {...options};
|
|
85
|
-
|
|
86
|
-
interceptor.onRequest(options);
|
|
87
|
-
|
|
88
|
-
assert.deepEqual(options, initialOptions);
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
describe('when the uri parameter is not defined', () => {
|
|
93
|
-
let waitForService;
|
|
94
|
-
|
|
95
|
-
beforeEach(() => {
|
|
96
|
-
interceptor.normalizeOptions = sinon.stub();
|
|
97
|
-
interceptor.validateOptions = sinon.stub();
|
|
98
|
-
interceptor.generateUri = sinon.stub();
|
|
99
|
-
|
|
100
|
-
interceptor.webex = {
|
|
101
|
-
internal: {
|
|
102
|
-
services: {
|
|
103
|
-
waitForService: sinon.stub(),
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
waitForService = interceptor.webex.internal.services.waitForService;
|
|
109
|
-
waitForService.resolves(fixture.serviceUrl);
|
|
110
|
-
|
|
111
|
-
options.service = fixture.service;
|
|
112
|
-
options.resource = fixture.resource;
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it('should normalize the options', () =>
|
|
116
|
-
interceptor.onRequest(options).then(() => assert.called(interceptor.normalizeOptions)));
|
|
117
|
-
|
|
118
|
-
it('should validate the options', () =>
|
|
119
|
-
interceptor.onRequest(options).then(() => assert.called(interceptor.validateOptions)));
|
|
120
|
-
|
|
121
|
-
it('should attempt to collect the service url', () =>
|
|
122
|
-
interceptor
|
|
123
|
-
.onRequest(options)
|
|
124
|
-
.then(() => assert.calledWith(waitForService, {name: options.service})));
|
|
125
|
-
|
|
126
|
-
describe('when the service url was collected successfully', () => {
|
|
127
|
-
it('should attempt to generate the full uri', () =>
|
|
128
|
-
interceptor
|
|
129
|
-
.onRequest(options)
|
|
130
|
-
.then(() =>
|
|
131
|
-
assert.calledWith(interceptor.generateUri, fixture.serviceUrl, fixture.resource)
|
|
132
|
-
));
|
|
133
|
-
|
|
134
|
-
it('should return a resolved promise', () => {
|
|
135
|
-
const promise = interceptor.onRequest(options);
|
|
136
|
-
|
|
137
|
-
assert.isFulfilled(promise);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
describe('when the service url was not collected successfully', () => {
|
|
142
|
-
beforeEach(() => {
|
|
143
|
-
waitForService.rejects();
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
it('should return a rejected promise', () => {
|
|
147
|
-
const promise = interceptor.onRequest(options);
|
|
148
|
-
|
|
149
|
-
assert.isRejected(promise);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
describe('#validateOptions()', () => {
|
|
156
|
-
describe('when the resource parameter is not defined', () => {
|
|
157
|
-
beforeEach(() => {
|
|
158
|
-
options.service = fixture.service;
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
it('should throw an error', () => {
|
|
162
|
-
assert.throws(() => interceptor.validateOptions(options));
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
describe('when the service parameter is not defined', () => {
|
|
167
|
-
beforeEach(() => {
|
|
168
|
-
options.resource = fixture.resource;
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
it('should throw an error', () => {
|
|
172
|
-
assert.throws(() => interceptor.validateOptions(options));
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
describe('when the service and resource parameters are defined', () => {
|
|
177
|
-
beforeEach(() => {
|
|
178
|
-
options.service = fixture.service;
|
|
179
|
-
options.resource = fixture.resource;
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
it('should not throw an error', () => {
|
|
183
|
-
assert.doesNotThrow(() => interceptor.validateOptions(options));
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
});
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
import chai from 'chai';
|
|
5
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
6
|
+
import sinon from 'sinon';
|
|
7
|
+
import {ServiceInterceptor} from '@webex/webex-core';
|
|
8
|
+
|
|
9
|
+
const {assert} = chai;
|
|
10
|
+
|
|
11
|
+
chai.use(chaiAsPromised);
|
|
12
|
+
sinon.assert.expose(chai.assert, {prefix: ''});
|
|
13
|
+
|
|
14
|
+
describe('webex-core', () => {
|
|
15
|
+
describe('ServiceInterceptor', () => {
|
|
16
|
+
let fixture;
|
|
17
|
+
let interceptor;
|
|
18
|
+
let options;
|
|
19
|
+
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
interceptor = new ServiceInterceptor();
|
|
22
|
+
|
|
23
|
+
fixture = {
|
|
24
|
+
api: 'example-api',
|
|
25
|
+
resource: '/example/resource/',
|
|
26
|
+
service: 'example',
|
|
27
|
+
serviceUrl: 'https://www.example-service.com/',
|
|
28
|
+
uri: 'https://www.example-uri.com/',
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
options = {};
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
describe('#generateUri()', () => {
|
|
35
|
+
let uri;
|
|
36
|
+
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
uri = interceptor.generateUri(
|
|
39
|
+
fixture.serviceUrl,
|
|
40
|
+
fixture.resource
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
it('should remove all trailing slashes', () => assert.equal(uri.split('//').length, 2));
|
|
44
|
+
|
|
45
|
+
it('should combine the service url and the resource', () => {
|
|
46
|
+
assert.isTrue(uri.includes(fixture.serviceUrl));
|
|
47
|
+
assert.isTrue(uri.includes(fixture.resource));
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe('#normalizeOptions()', () => {
|
|
52
|
+
describe('when the api parameter is defined', () => {
|
|
53
|
+
beforeEach(() => {
|
|
54
|
+
options.api = fixture.api;
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('should assign the service parameter the api value', () => {
|
|
58
|
+
interceptor.normalizeOptions(options);
|
|
59
|
+
|
|
60
|
+
assert.equal(options.service, fixture.api);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
describe('when the service parameter is defined', () => {
|
|
64
|
+
beforeEach(() => {
|
|
65
|
+
options.service = fixture.service;
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('should maintain the service parameter', () => {
|
|
69
|
+
interceptor.normalizeOptions(options);
|
|
70
|
+
|
|
71
|
+
assert.equal(options.service, fixture.service);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
describe('#onRequest()', () => {
|
|
78
|
+
describe('when the uri parameter is defined', () => {
|
|
79
|
+
beforeEach(() => {
|
|
80
|
+
options.uri = fixture.uri;
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it('should return the options', () => {
|
|
84
|
+
const initialOptions = {...options};
|
|
85
|
+
|
|
86
|
+
interceptor.onRequest(options);
|
|
87
|
+
|
|
88
|
+
assert.deepEqual(options, initialOptions);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
describe('when the uri parameter is not defined', () => {
|
|
93
|
+
let waitForService;
|
|
94
|
+
|
|
95
|
+
beforeEach(() => {
|
|
96
|
+
interceptor.normalizeOptions = sinon.stub();
|
|
97
|
+
interceptor.validateOptions = sinon.stub();
|
|
98
|
+
interceptor.generateUri = sinon.stub();
|
|
99
|
+
|
|
100
|
+
interceptor.webex = {
|
|
101
|
+
internal: {
|
|
102
|
+
services: {
|
|
103
|
+
waitForService: sinon.stub(),
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
waitForService = interceptor.webex.internal.services.waitForService;
|
|
109
|
+
waitForService.resolves(fixture.serviceUrl);
|
|
110
|
+
|
|
111
|
+
options.service = fixture.service;
|
|
112
|
+
options.resource = fixture.resource;
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('should normalize the options', () =>
|
|
116
|
+
interceptor.onRequest(options).then(() => assert.called(interceptor.normalizeOptions)));
|
|
117
|
+
|
|
118
|
+
it('should validate the options', () =>
|
|
119
|
+
interceptor.onRequest(options).then(() => assert.called(interceptor.validateOptions)));
|
|
120
|
+
|
|
121
|
+
it('should attempt to collect the service url', () =>
|
|
122
|
+
interceptor
|
|
123
|
+
.onRequest(options)
|
|
124
|
+
.then(() => assert.calledWith(waitForService, {name: options.service})));
|
|
125
|
+
|
|
126
|
+
describe('when the service url was collected successfully', () => {
|
|
127
|
+
it('should attempt to generate the full uri', () =>
|
|
128
|
+
interceptor
|
|
129
|
+
.onRequest(options)
|
|
130
|
+
.then(() =>
|
|
131
|
+
assert.calledWith(interceptor.generateUri, fixture.serviceUrl, fixture.resource)
|
|
132
|
+
));
|
|
133
|
+
|
|
134
|
+
it('should return a resolved promise', () => {
|
|
135
|
+
const promise = interceptor.onRequest(options);
|
|
136
|
+
|
|
137
|
+
assert.isFulfilled(promise);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
describe('when the service url was not collected successfully', () => {
|
|
142
|
+
beforeEach(() => {
|
|
143
|
+
waitForService.rejects();
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
it('should return a rejected promise', () => {
|
|
147
|
+
const promise = interceptor.onRequest(options);
|
|
148
|
+
|
|
149
|
+
assert.isRejected(promise);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
describe('#validateOptions()', () => {
|
|
156
|
+
describe('when the resource parameter is not defined', () => {
|
|
157
|
+
beforeEach(() => {
|
|
158
|
+
options.service = fixture.service;
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
it('should throw an error', () => {
|
|
162
|
+
assert.throws(() => interceptor.validateOptions(options));
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
describe('when the service parameter is not defined', () => {
|
|
167
|
+
beforeEach(() => {
|
|
168
|
+
options.resource = fixture.resource;
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it('should throw an error', () => {
|
|
172
|
+
assert.throws(() => interceptor.validateOptions(options));
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
describe('when the service and resource parameters are defined', () => {
|
|
177
|
+
beforeEach(() => {
|
|
178
|
+
options.service = fixture.service;
|
|
179
|
+
options.resource = fixture.resource;
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
it('should not throw an error', () => {
|
|
183
|
+
assert.doesNotThrow(() => interceptor.validateOptions(options));
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
});
|