@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,260 +1,260 @@
|
|
|
1
|
-
import {assert} from '@webex/test-helper-chai';
|
|
2
|
-
import sinon from 'sinon';
|
|
3
|
-
import {ServiceHost} from '@webex/webex-core';
|
|
4
|
-
|
|
5
|
-
describe('webex-core', () => {
|
|
6
|
-
describe('ServiceHost', () => {
|
|
7
|
-
let defaultHostGroup;
|
|
8
|
-
let fixture;
|
|
9
|
-
let serviceHost;
|
|
10
|
-
|
|
11
|
-
beforeAll(() => {
|
|
12
|
-
fixture = {
|
|
13
|
-
catalog: 'discovery',
|
|
14
|
-
defaultUri: 'https://example-default.com/',
|
|
15
|
-
hostGroup: 'example-host-group.com',
|
|
16
|
-
id: 'example-head:example-group:example-cluster:example-name',
|
|
17
|
-
priority: 1,
|
|
18
|
-
uri: 'example-uri.com',
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
defaultHostGroup = 'example-default.com';
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
describe('#constructor()', () => {
|
|
25
|
-
it('should attempt to validate services', () => {
|
|
26
|
-
sinon.spy(ServiceHost, 'validate');
|
|
27
|
-
|
|
28
|
-
serviceHost = new ServiceHost(fixture);
|
|
29
|
-
|
|
30
|
-
assert.called(ServiceHost.validate);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe('class members', () => {
|
|
35
|
-
beforeEach(() => {
|
|
36
|
-
serviceHost = new ServiceHost(fixture);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
describe('#active', () => {
|
|
40
|
-
it('should return false when the host has failed', () => {
|
|
41
|
-
serviceHost.failed = true;
|
|
42
|
-
assert.isFalse(serviceHost.active);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('should return false when the host has been replaced', () => {
|
|
46
|
-
serviceHost.replaced = true;
|
|
47
|
-
assert.isFalse(serviceHost.active);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('should return true when the host is active', () => {
|
|
51
|
-
serviceHost.replaced = false;
|
|
52
|
-
serviceHost.replaced = false;
|
|
53
|
-
assert.isTrue(serviceHost.active);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
describe('#catalog', () => {
|
|
58
|
-
it('should match the parameter value', () => {
|
|
59
|
-
assert.equal(serviceHost.catalog, fixture.catalog);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
describe('#defaultUri', () => {
|
|
64
|
-
it('should match the parameter value', () => {
|
|
65
|
-
assert.equal(serviceHost.default, fixture.defaultUri);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('#failed', () => {
|
|
70
|
-
it('should automatically set the value to false', () => {
|
|
71
|
-
assert.isFalse(serviceHost.failed);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
describe('#hostGroup', () => {
|
|
76
|
-
it('should match the parameter value', () => {
|
|
77
|
-
assert.equal(serviceHost.hostGroup, fixture.hostGroup);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
describe('#id', () => {
|
|
82
|
-
it('should match the parameter value', () => {
|
|
83
|
-
assert.equal(serviceHost.id, fixture.id);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
describe('#local', () => {
|
|
88
|
-
it('should return true when the uri includes the host group', () => {
|
|
89
|
-
serviceHost.hostGroup = defaultHostGroup;
|
|
90
|
-
assert.isTrue(serviceHost.local);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it('should return true when the uri excludes the host group', () => {
|
|
94
|
-
serviceHost.hostGroup = fixture.hostGroup;
|
|
95
|
-
assert.isFalse(serviceHost.local);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
describe('#priority', () => {
|
|
100
|
-
it('should match the parameter value', () => {
|
|
101
|
-
assert.equal(serviceHost.priority, fixture.priority);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
describe('#replaced', () => {
|
|
106
|
-
it('should automatically set the value to false', () => {
|
|
107
|
-
assert.isFalse(serviceHost.replaced);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
describe('#service', () => {
|
|
112
|
-
it('should return the service', () => {
|
|
113
|
-
assert.equal(serviceHost.service, fixture.id.split(':')[3]);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
describe('#uri', () => {
|
|
118
|
-
it('should match the parameter value', () => {
|
|
119
|
-
assert.equal(serviceHost.uri, fixture.uri);
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
describe('#url', () => {
|
|
124
|
-
it('should return a host-mapped url', () => {
|
|
125
|
-
assert.isTrue(serviceHost.url.includes(serviceHost.uri));
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
describe('#setStatus()', () => {
|
|
131
|
-
it('should set the property failed to true', () => {
|
|
132
|
-
assert.isTrue(serviceHost.setStatus({failed: true}).failed);
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
it('should set the property failed to false', () => {
|
|
136
|
-
assert.isFalse(serviceHost.setStatus({failed: false}).failed);
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
it('should set the property replaced to true', () => {
|
|
140
|
-
assert.isTrue(serviceHost.setStatus({replaced: true}).replaced);
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
it('should set the property replaced to false', () => {
|
|
144
|
-
assert.isFalse(serviceHost.setStatus({replaced: false}).replaced);
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
it('should set the property replaced and failed to true', () => {
|
|
148
|
-
assert.isTrue(
|
|
149
|
-
serviceHost.setStatus({
|
|
150
|
-
failed: true,
|
|
151
|
-
replaced: true,
|
|
152
|
-
}).failed
|
|
153
|
-
);
|
|
154
|
-
|
|
155
|
-
assert.isTrue(
|
|
156
|
-
serviceHost.setStatus({
|
|
157
|
-
failed: true,
|
|
158
|
-
replaced: true,
|
|
159
|
-
}).replaced
|
|
160
|
-
);
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it('should set the property replaced and failed to false', () => {
|
|
164
|
-
assert.isFalse(
|
|
165
|
-
serviceHost.setStatus({
|
|
166
|
-
failed: false,
|
|
167
|
-
replaced: false,
|
|
168
|
-
}).failed
|
|
169
|
-
);
|
|
170
|
-
|
|
171
|
-
assert.isFalse(
|
|
172
|
-
serviceHost.setStatus({
|
|
173
|
-
failed: false,
|
|
174
|
-
replaced: false,
|
|
175
|
-
}).replaced
|
|
176
|
-
);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
describe('static methods', () => {
|
|
180
|
-
describe('#polyGenerate()', () => {
|
|
181
|
-
let polyFixture;
|
|
182
|
-
|
|
183
|
-
beforeEach(() => {
|
|
184
|
-
polyFixture = {
|
|
185
|
-
catalog: fixture.catalog,
|
|
186
|
-
name: fixture.id.split(':')[3],
|
|
187
|
-
url: fixture.defaultUri,
|
|
188
|
-
};
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
it('should generate a new ServiceHost', () => {
|
|
192
|
-
assert.instanceOf(ServiceHost.polyGenerate(polyFixture), ServiceHost);
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
describe('#validate()', () => {
|
|
197
|
-
it('should throw an error when catalog is missing', () => {
|
|
198
|
-
delete fixture.catalog;
|
|
199
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
it('should throw an error when defaultUri is missing', () => {
|
|
203
|
-
delete fixture.defaultUri;
|
|
204
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it('should throw an error when hostGroup is missing', () => {
|
|
208
|
-
delete fixture.hostGroup;
|
|
209
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
it('should throw an error when id is missing', () => {
|
|
213
|
-
delete fixture.id;
|
|
214
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
it('should throw an error when priority is missing', () => {
|
|
218
|
-
delete fixture.priority;
|
|
219
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
it('should throw an error when uri is missing', () => {
|
|
223
|
-
delete fixture.uri;
|
|
224
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
it('should throw an error when catalog is invalid', () => {
|
|
228
|
-
fixture.catalog = 1234;
|
|
229
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it('should throw an error when defaultUri is invalid', () => {
|
|
233
|
-
fixture.defaultUri = 1234;
|
|
234
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
it('should throw an error when hostGroup is invalid', () => {
|
|
238
|
-
fixture.hostGroup = 1234;
|
|
239
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
it('should throw an error when id is invalid', () => {
|
|
243
|
-
fixture.id = 1234;
|
|
244
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
it('should throw an error when priority is invalid', () => {
|
|
248
|
-
fixture.priority = 'test-string';
|
|
249
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
it('should throw an error when uri is invalid', () => {
|
|
253
|
-
fixture.uri = 1234;
|
|
254
|
-
assert.throws(() => ServiceHost.validate(fixture));
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
});
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
});
|
|
1
|
+
import {assert} from '@webex/test-helper-chai';
|
|
2
|
+
import sinon from 'sinon';
|
|
3
|
+
import {ServiceHost} from '@webex/webex-core';
|
|
4
|
+
|
|
5
|
+
describe('webex-core', () => {
|
|
6
|
+
describe('ServiceHost', () => {
|
|
7
|
+
let defaultHostGroup;
|
|
8
|
+
let fixture;
|
|
9
|
+
let serviceHost;
|
|
10
|
+
|
|
11
|
+
beforeAll(() => {
|
|
12
|
+
fixture = {
|
|
13
|
+
catalog: 'discovery',
|
|
14
|
+
defaultUri: 'https://example-default.com/',
|
|
15
|
+
hostGroup: 'example-host-group.com',
|
|
16
|
+
id: 'example-head:example-group:example-cluster:example-name',
|
|
17
|
+
priority: 1,
|
|
18
|
+
uri: 'example-uri.com',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
defaultHostGroup = 'example-default.com';
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe('#constructor()', () => {
|
|
25
|
+
it('should attempt to validate services', () => {
|
|
26
|
+
sinon.spy(ServiceHost, 'validate');
|
|
27
|
+
|
|
28
|
+
serviceHost = new ServiceHost(fixture);
|
|
29
|
+
|
|
30
|
+
assert.called(ServiceHost.validate);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
describe('class members', () => {
|
|
35
|
+
beforeEach(() => {
|
|
36
|
+
serviceHost = new ServiceHost(fixture);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
describe('#active', () => {
|
|
40
|
+
it('should return false when the host has failed', () => {
|
|
41
|
+
serviceHost.failed = true;
|
|
42
|
+
assert.isFalse(serviceHost.active);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('should return false when the host has been replaced', () => {
|
|
46
|
+
serviceHost.replaced = true;
|
|
47
|
+
assert.isFalse(serviceHost.active);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('should return true when the host is active', () => {
|
|
51
|
+
serviceHost.replaced = false;
|
|
52
|
+
serviceHost.replaced = false;
|
|
53
|
+
assert.isTrue(serviceHost.active);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe('#catalog', () => {
|
|
58
|
+
it('should match the parameter value', () => {
|
|
59
|
+
assert.equal(serviceHost.catalog, fixture.catalog);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
describe('#defaultUri', () => {
|
|
64
|
+
it('should match the parameter value', () => {
|
|
65
|
+
assert.equal(serviceHost.default, fixture.defaultUri);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
describe('#failed', () => {
|
|
70
|
+
it('should automatically set the value to false', () => {
|
|
71
|
+
assert.isFalse(serviceHost.failed);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe('#hostGroup', () => {
|
|
76
|
+
it('should match the parameter value', () => {
|
|
77
|
+
assert.equal(serviceHost.hostGroup, fixture.hostGroup);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe('#id', () => {
|
|
82
|
+
it('should match the parameter value', () => {
|
|
83
|
+
assert.equal(serviceHost.id, fixture.id);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
describe('#local', () => {
|
|
88
|
+
it('should return true when the uri includes the host group', () => {
|
|
89
|
+
serviceHost.hostGroup = defaultHostGroup;
|
|
90
|
+
assert.isTrue(serviceHost.local);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('should return true when the uri excludes the host group', () => {
|
|
94
|
+
serviceHost.hostGroup = fixture.hostGroup;
|
|
95
|
+
assert.isFalse(serviceHost.local);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
describe('#priority', () => {
|
|
100
|
+
it('should match the parameter value', () => {
|
|
101
|
+
assert.equal(serviceHost.priority, fixture.priority);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe('#replaced', () => {
|
|
106
|
+
it('should automatically set the value to false', () => {
|
|
107
|
+
assert.isFalse(serviceHost.replaced);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
describe('#service', () => {
|
|
112
|
+
it('should return the service', () => {
|
|
113
|
+
assert.equal(serviceHost.service, fixture.id.split(':')[3]);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
describe('#uri', () => {
|
|
118
|
+
it('should match the parameter value', () => {
|
|
119
|
+
assert.equal(serviceHost.uri, fixture.uri);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
describe('#url', () => {
|
|
124
|
+
it('should return a host-mapped url', () => {
|
|
125
|
+
assert.isTrue(serviceHost.url.includes(serviceHost.uri));
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
describe('#setStatus()', () => {
|
|
131
|
+
it('should set the property failed to true', () => {
|
|
132
|
+
assert.isTrue(serviceHost.setStatus({failed: true}).failed);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('should set the property failed to false', () => {
|
|
136
|
+
assert.isFalse(serviceHost.setStatus({failed: false}).failed);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('should set the property replaced to true', () => {
|
|
140
|
+
assert.isTrue(serviceHost.setStatus({replaced: true}).replaced);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it('should set the property replaced to false', () => {
|
|
144
|
+
assert.isFalse(serviceHost.setStatus({replaced: false}).replaced);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it('should set the property replaced and failed to true', () => {
|
|
148
|
+
assert.isTrue(
|
|
149
|
+
serviceHost.setStatus({
|
|
150
|
+
failed: true,
|
|
151
|
+
replaced: true,
|
|
152
|
+
}).failed
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
assert.isTrue(
|
|
156
|
+
serviceHost.setStatus({
|
|
157
|
+
failed: true,
|
|
158
|
+
replaced: true,
|
|
159
|
+
}).replaced
|
|
160
|
+
);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it('should set the property replaced and failed to false', () => {
|
|
164
|
+
assert.isFalse(
|
|
165
|
+
serviceHost.setStatus({
|
|
166
|
+
failed: false,
|
|
167
|
+
replaced: false,
|
|
168
|
+
}).failed
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
assert.isFalse(
|
|
172
|
+
serviceHost.setStatus({
|
|
173
|
+
failed: false,
|
|
174
|
+
replaced: false,
|
|
175
|
+
}).replaced
|
|
176
|
+
);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
describe('static methods', () => {
|
|
180
|
+
describe('#polyGenerate()', () => {
|
|
181
|
+
let polyFixture;
|
|
182
|
+
|
|
183
|
+
beforeEach(() => {
|
|
184
|
+
polyFixture = {
|
|
185
|
+
catalog: fixture.catalog,
|
|
186
|
+
name: fixture.id.split(':')[3],
|
|
187
|
+
url: fixture.defaultUri,
|
|
188
|
+
};
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it('should generate a new ServiceHost', () => {
|
|
192
|
+
assert.instanceOf(ServiceHost.polyGenerate(polyFixture), ServiceHost);
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
describe('#validate()', () => {
|
|
197
|
+
it('should throw an error when catalog is missing', () => {
|
|
198
|
+
delete fixture.catalog;
|
|
199
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
it('should throw an error when defaultUri is missing', () => {
|
|
203
|
+
delete fixture.defaultUri;
|
|
204
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
it('should throw an error when hostGroup is missing', () => {
|
|
208
|
+
delete fixture.hostGroup;
|
|
209
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it('should throw an error when id is missing', () => {
|
|
213
|
+
delete fixture.id;
|
|
214
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
it('should throw an error when priority is missing', () => {
|
|
218
|
+
delete fixture.priority;
|
|
219
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
it('should throw an error when uri is missing', () => {
|
|
223
|
+
delete fixture.uri;
|
|
224
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
it('should throw an error when catalog is invalid', () => {
|
|
228
|
+
fixture.catalog = 1234;
|
|
229
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
it('should throw an error when defaultUri is invalid', () => {
|
|
233
|
+
fixture.defaultUri = 1234;
|
|
234
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
it('should throw an error when hostGroup is invalid', () => {
|
|
238
|
+
fixture.hostGroup = 1234;
|
|
239
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
it('should throw an error when id is invalid', () => {
|
|
243
|
+
fixture.id = 1234;
|
|
244
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
it('should throw an error when priority is invalid', () => {
|
|
248
|
+
fixture.priority = 'test-string';
|
|
249
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
it('should throw an error when uri is invalid', () => {
|
|
253
|
+
fixture.uri = 1234;
|
|
254
|
+
assert.throws(() => ServiceHost.validate(fixture));
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
});
|