@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.
Files changed (189) hide show
  1. package/.eslintrc.js +6 -6
  2. package/README.md +79 -79
  3. package/babel.config.js +3 -3
  4. package/dist/config.js +24 -24
  5. package/dist/config.js.map +1 -1
  6. package/dist/credentials-config.js +56 -56
  7. package/dist/credentials-config.js.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/interceptors/auth.js +28 -28
  10. package/dist/interceptors/auth.js.map +1 -1
  11. package/dist/interceptors/default-options.js +24 -24
  12. package/dist/interceptors/default-options.js.map +1 -1
  13. package/dist/interceptors/embargo.js +9 -9
  14. package/dist/interceptors/embargo.js.map +1 -1
  15. package/dist/interceptors/network-timing.js +19 -19
  16. package/dist/interceptors/network-timing.js.map +1 -1
  17. package/dist/interceptors/payload-transformer.js +19 -19
  18. package/dist/interceptors/payload-transformer.js.map +1 -1
  19. package/dist/interceptors/rate-limit.js +40 -40
  20. package/dist/interceptors/rate-limit.js.map +1 -1
  21. package/dist/interceptors/redirect.js +13 -13
  22. package/dist/interceptors/redirect.js.map +1 -1
  23. package/dist/interceptors/request-event.js +23 -23
  24. package/dist/interceptors/request-event.js.map +1 -1
  25. package/dist/interceptors/request-logger.js +13 -13
  26. package/dist/interceptors/request-logger.js.map +1 -1
  27. package/dist/interceptors/request-timing.js +23 -23
  28. package/dist/interceptors/request-timing.js.map +1 -1
  29. package/dist/interceptors/response-logger.js +19 -19
  30. package/dist/interceptors/response-logger.js.map +1 -1
  31. package/dist/interceptors/user-agent.js +29 -29
  32. package/dist/interceptors/user-agent.js.map +1 -1
  33. package/dist/interceptors/webex-tracking-id.js +15 -15
  34. package/dist/interceptors/webex-tracking-id.js.map +1 -1
  35. package/dist/interceptors/webex-user-agent.js +13 -13
  36. package/dist/interceptors/webex-user-agent.js.map +1 -1
  37. package/dist/lib/batcher.js +83 -83
  38. package/dist/lib/batcher.js.map +1 -1
  39. package/dist/lib/credentials/credentials.js +103 -103
  40. package/dist/lib/credentials/credentials.js.map +1 -1
  41. package/dist/lib/credentials/grant-errors.js +17 -17
  42. package/dist/lib/credentials/grant-errors.js.map +1 -1
  43. package/dist/lib/credentials/index.js +2 -2
  44. package/dist/lib/credentials/index.js.map +1 -1
  45. package/dist/lib/credentials/scope.js +11 -11
  46. package/dist/lib/credentials/scope.js.map +1 -1
  47. package/dist/lib/credentials/token-collection.js +2 -2
  48. package/dist/lib/credentials/token-collection.js.map +1 -1
  49. package/dist/lib/credentials/token.js +145 -145
  50. package/dist/lib/credentials/token.js.map +1 -1
  51. package/dist/lib/page.js +49 -49
  52. package/dist/lib/page.js.map +1 -1
  53. package/dist/lib/services/constants.js.map +1 -1
  54. package/dist/lib/services/index.js +2 -2
  55. package/dist/lib/services/index.js.map +1 -1
  56. package/dist/lib/services/interceptors/server-error.js +9 -9
  57. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  58. package/dist/lib/services/interceptors/service.js +24 -24
  59. package/dist/lib/services/interceptors/service.js.map +1 -1
  60. package/dist/lib/services/metrics.js.map +1 -1
  61. package/dist/lib/services/service-catalog.js +104 -104
  62. package/dist/lib/services/service-catalog.js.map +1 -1
  63. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  64. package/dist/lib/services/service-host.js +134 -134
  65. package/dist/lib/services/service-host.js.map +1 -1
  66. package/dist/lib/services/service-registry.js +175 -175
  67. package/dist/lib/services/service-registry.js.map +1 -1
  68. package/dist/lib/services/service-state.js +38 -38
  69. package/dist/lib/services/service-state.js.map +1 -1
  70. package/dist/lib/services/service-url.js +31 -31
  71. package/dist/lib/services/service-url.js.map +1 -1
  72. package/dist/lib/services/services.js +245 -245
  73. package/dist/lib/services/services.js.map +1 -1
  74. package/dist/lib/stateless-webex-plugin.js +28 -28
  75. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  76. package/dist/lib/storage/decorators.js +27 -27
  77. package/dist/lib/storage/decorators.js.map +1 -1
  78. package/dist/lib/storage/errors.js +4 -4
  79. package/dist/lib/storage/errors.js.map +1 -1
  80. package/dist/lib/storage/index.js.map +1 -1
  81. package/dist/lib/storage/make-webex-plugin-store.js +44 -44
  82. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  83. package/dist/lib/storage/make-webex-store.js +40 -40
  84. package/dist/lib/storage/make-webex-store.js.map +1 -1
  85. package/dist/lib/storage/memory-store-adapter.js +9 -9
  86. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  87. package/dist/lib/webex-core-plugin-mixin.js +13 -13
  88. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  89. package/dist/lib/webex-http-error.js +9 -9
  90. package/dist/lib/webex-http-error.js.map +1 -1
  91. package/dist/lib/webex-internal-core-plugin-mixin.js +13 -13
  92. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  93. package/dist/lib/webex-plugin.js +36 -36
  94. package/dist/lib/webex-plugin.js.map +1 -1
  95. package/dist/plugins/logger.js +9 -9
  96. package/dist/plugins/logger.js.map +1 -1
  97. package/dist/webex-core.js +104 -104
  98. package/dist/webex-core.js.map +1 -1
  99. package/dist/webex-internal-core.js +12 -12
  100. package/dist/webex-internal-core.js.map +1 -1
  101. package/jest.config.js +3 -3
  102. package/package.json +20 -19
  103. package/process +1 -1
  104. package/src/config.js +90 -90
  105. package/src/credentials-config.js +212 -212
  106. package/src/index.js +62 -62
  107. package/src/interceptors/auth.js +186 -186
  108. package/src/interceptors/default-options.js +55 -55
  109. package/src/interceptors/embargo.js +43 -43
  110. package/src/interceptors/network-timing.js +54 -54
  111. package/src/interceptors/payload-transformer.js +55 -55
  112. package/src/interceptors/rate-limit.js +169 -169
  113. package/src/interceptors/redirect.js +106 -106
  114. package/src/interceptors/request-event.js +93 -93
  115. package/src/interceptors/request-logger.js +78 -78
  116. package/src/interceptors/request-timing.js +65 -65
  117. package/src/interceptors/response-logger.js +98 -98
  118. package/src/interceptors/user-agent.js +77 -77
  119. package/src/interceptors/webex-tracking-id.js +73 -73
  120. package/src/interceptors/webex-user-agent.js +79 -79
  121. package/src/lib/batcher.js +307 -307
  122. package/src/lib/credentials/credentials.js +552 -552
  123. package/src/lib/credentials/grant-errors.js +92 -92
  124. package/src/lib/credentials/index.js +16 -16
  125. package/src/lib/credentials/scope.js +34 -34
  126. package/src/lib/credentials/token-collection.js +17 -17
  127. package/src/lib/credentials/token.js +559 -559
  128. package/src/lib/page.js +159 -159
  129. package/src/lib/services/constants.js +9 -9
  130. package/src/lib/services/index.js +26 -26
  131. package/src/lib/services/interceptors/server-error.js +48 -48
  132. package/src/lib/services/interceptors/service.js +101 -101
  133. package/src/lib/services/metrics.js +4 -4
  134. package/src/lib/services/service-catalog.js +435 -435
  135. package/src/lib/services/service-fed-ramp.js +4 -4
  136. package/src/lib/services/service-host.js +267 -267
  137. package/src/lib/services/service-registry.js +465 -465
  138. package/src/lib/services/service-state.js +78 -78
  139. package/src/lib/services/service-url.js +124 -124
  140. package/src/lib/services/services.js +1018 -1018
  141. package/src/lib/stateless-webex-plugin.js +98 -98
  142. package/src/lib/storage/decorators.js +220 -220
  143. package/src/lib/storage/errors.js +15 -15
  144. package/src/lib/storage/index.js +10 -10
  145. package/src/lib/storage/make-webex-plugin-store.js +211 -211
  146. package/src/lib/storage/make-webex-store.js +140 -140
  147. package/src/lib/storage/memory-store-adapter.js +79 -79
  148. package/src/lib/webex-core-plugin-mixin.js +114 -114
  149. package/src/lib/webex-http-error.js +61 -61
  150. package/src/lib/webex-internal-core-plugin-mixin.js +107 -107
  151. package/src/lib/webex-plugin.js +222 -222
  152. package/src/plugins/logger.js +60 -60
  153. package/src/webex-core.js +745 -745
  154. package/src/webex-internal-core.js +46 -46
  155. package/test/integration/spec/credentials/credentials.js +139 -139
  156. package/test/integration/spec/credentials/token.js +102 -102
  157. package/test/integration/spec/services/service-catalog.js +838 -838
  158. package/test/integration/spec/services/services.js +1221 -1221
  159. package/test/integration/spec/webex-core.js +178 -178
  160. package/test/unit/spec/_setup.js +44 -44
  161. package/test/unit/spec/credentials/credentials.js +1017 -1017
  162. package/test/unit/spec/credentials/token.js +441 -441
  163. package/test/unit/spec/interceptors/auth.js +521 -521
  164. package/test/unit/spec/interceptors/default-options.js +84 -84
  165. package/test/unit/spec/interceptors/embargo.js +144 -144
  166. package/test/unit/spec/interceptors/network-timing.js +49 -49
  167. package/test/unit/spec/interceptors/payload-transformer.js +155 -155
  168. package/test/unit/spec/interceptors/rate-limit.js +302 -302
  169. package/test/unit/spec/interceptors/redirect.js +102 -102
  170. package/test/unit/spec/interceptors/request-timing.js +92 -92
  171. package/test/unit/spec/interceptors/user-agent.js +76 -76
  172. package/test/unit/spec/interceptors/webex-tracking-id.js +76 -76
  173. package/test/unit/spec/interceptors/webex-user-agent.js +159 -159
  174. package/test/unit/spec/lib/batcher.js +330 -330
  175. package/test/unit/spec/lib/page.js +148 -148
  176. package/test/unit/spec/lib/webex-plugin.js +48 -48
  177. package/test/unit/spec/services/interceptors/server-error.js +204 -204
  178. package/test/unit/spec/services/interceptors/service.js +188 -188
  179. package/test/unit/spec/services/service-catalog.js +194 -194
  180. package/test/unit/spec/services/service-host.js +260 -260
  181. package/test/unit/spec/services/service-registry.js +747 -747
  182. package/test/unit/spec/services/service-state.js +60 -60
  183. package/test/unit/spec/services/service-url.js +258 -258
  184. package/test/unit/spec/services/services.js +348 -348
  185. package/test/unit/spec/storage/persist.js +50 -50
  186. package/test/unit/spec/storage/storage-adapter.js +12 -12
  187. package/test/unit/spec/storage/wait-for-value.js +81 -81
  188. package/test/unit/spec/webex-core.js +253 -253
  189. package/test/unit/spec/webex-internal-core.js +91 -91
@@ -1,194 +1,194 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- import {assert} from '@webex/test-helper-chai';
6
- import MockWebex from '@webex/test-helper-mock-webex';
7
- import {Services} from '@webex/webex-core';
8
-
9
- /* eslint-disable no-underscore-dangle */
10
- describe('webex-core', () => {
11
- describe('ServiceCatalog', () => {
12
- let webex;
13
- let services;
14
- let catalog;
15
-
16
- beforeAll(() => {
17
- webex = new MockWebex();
18
- services = new Services(undefined, {parent: webex});
19
- catalog = services._getCatalog();
20
- });
21
-
22
- describe('#namespace', () => {
23
- it('is accurate to plugin name', () => {
24
- assert.equal(catalog.namespace, 'ServiceCatalog');
25
- });
26
- });
27
-
28
- describe('#serviceGroups', () => {
29
- it('has all the required keys', () => {
30
- assert.hasAllKeys(catalog.serviceGroups, [
31
- 'discovery',
32
- 'override',
33
- 'preauth',
34
- 'signin',
35
- 'postauth',
36
- ]);
37
- });
38
-
39
- it('contains values that are arrays', () => {
40
- Object.keys(catalog.serviceGroups).forEach((key) => {
41
- assert.typeOf(catalog.serviceGroups[key], 'array');
42
- });
43
- });
44
- });
45
-
46
- describe('#status', () => {
47
- it('has all the required keys', () => {
48
- assert.hasAllKeys(catalog.status, [
49
- 'discovery',
50
- 'override',
51
- 'preauth',
52
- 'postauth',
53
- 'signin',
54
- ]);
55
- });
56
-
57
- it('has valid key value types', () => {
58
- assert.typeOf(catalog.status.preauth.ready, 'boolean');
59
- assert.typeOf(catalog.status.preauth.collecting, 'boolean');
60
- assert.typeOf(catalog.status.postauth.ready, 'boolean');
61
- assert.typeOf(catalog.status.postauth.collecting, 'boolean');
62
- assert.typeOf(catalog.status.signin.ready, 'boolean');
63
- assert.typeOf(catalog.status.signin.collecting, 'boolean');
64
- });
65
- });
66
-
67
- describe('#allowedDomains', () => {
68
- it('is an array', () => {
69
- assert.isArray(catalog.allowedDomains);
70
- });
71
- });
72
-
73
- describe('#clean()', () => {
74
- beforeEach(() => {
75
- catalog.serviceGroups.preauth = [1, 2, 3];
76
- catalog.serviceGroups.signin = [1, 2, 3];
77
- catalog.serviceGroups.postauth = [1, 2, 3];
78
- catalog.status.preauth = {ready: true};
79
- catalog.status.signin = {ready: true};
80
- catalog.status.postauth = {ready: true};
81
- });
82
-
83
- it('should reset service group ready status', () => {
84
- catalog.clean();
85
-
86
- assert.isFalse(catalog.status.preauth.ready);
87
- assert.isFalse(catalog.status.signin.ready);
88
- assert.isFalse(catalog.status.postauth.ready);
89
- });
90
-
91
- it('should clear all collected service groups', () => {
92
- catalog.clean();
93
-
94
- assert.equal(catalog.serviceGroups.preauth.length, 0);
95
- assert.equal(catalog.serviceGroups.signin.length, 0);
96
- assert.equal(catalog.serviceGroups.postauth.length, 0);
97
- });
98
- });
99
-
100
- describe('#findAllowedDomain()', () => {
101
- const domains = [];
102
-
103
- beforeEach(() => {
104
- domains.push(
105
- 'example-a',
106
- 'example-b',
107
- 'example-c'
108
- );
109
-
110
- catalog.setAllowedDomains(domains);
111
- });
112
-
113
- afterEach(() => {
114
- domains.length = 0;
115
- });
116
-
117
- it('finds an allowed domain that matches a specific url', () => {
118
- const domain = catalog.findAllowedDomain('http://example-a.com/resource/id');
119
-
120
- assert.include(domains, domain);
121
- });
122
- });
123
-
124
- describe('#getAllowedDomains()', () => {
125
- const domains = [];
126
-
127
- beforeEach(() => {
128
- domains.push(
129
- 'example-a',
130
- 'example-b',
131
- 'example-c'
132
- );
133
-
134
- catalog.setAllowedDomains(domains);
135
- });
136
-
137
- afterEach(() => {
138
- domains.length = 0;
139
- });
140
-
141
- it('returns a an array of allowed hosts', () => {
142
- const list = catalog.getAllowedDomains();
143
-
144
- assert.match(domains, list);
145
- });
146
- });
147
-
148
- describe('#list()', () => {
149
- let serviceList;
150
-
151
- beforeEach(() => {
152
- serviceList = catalog.list();
153
- });
154
-
155
- it('must return an object', () => {
156
- assert.typeOf(serviceList, 'object');
157
- });
158
-
159
- it('returned list must be of shape {Record<string, string>}', () => {
160
- Object.keys(serviceList).forEach((key) => {
161
- assert.typeOf(key, 'string');
162
- assert.typeOf(serviceList[key], 'string');
163
- });
164
- });
165
- });
166
-
167
- describe('#setAllowedDomains()', () => {
168
- const domains = [];
169
-
170
- beforeEach(() => {
171
- domains.push(
172
- 'example-a',
173
- 'example-b',
174
- 'example-c'
175
- );
176
-
177
- catalog.setAllowedDomains(domains);
178
- });
179
-
180
- afterEach(() => {
181
- domains.length = 0;
182
- });
183
-
184
- it('sets the allowed domain entries to new values', () => {
185
- const newValues = ['example-d', 'example-e', 'example-f'];
186
-
187
- catalog.setAllowedDomains(newValues);
188
-
189
- assert.notDeepInclude(domains, newValues);
190
- });
191
- });
192
- });
193
- });
194
- /* eslint-enable no-underscore-dangle */
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import {assert} from '@webex/test-helper-chai';
6
+ import MockWebex from '@webex/test-helper-mock-webex';
7
+ import {Services} from '@webex/webex-core';
8
+
9
+ /* eslint-disable no-underscore-dangle */
10
+ describe('webex-core', () => {
11
+ describe('ServiceCatalog', () => {
12
+ let webex;
13
+ let services;
14
+ let catalog;
15
+
16
+ beforeAll(() => {
17
+ webex = new MockWebex();
18
+ services = new Services(undefined, {parent: webex});
19
+ catalog = services._getCatalog();
20
+ });
21
+
22
+ describe('#namespace', () => {
23
+ it('is accurate to plugin name', () => {
24
+ assert.equal(catalog.namespace, 'ServiceCatalog');
25
+ });
26
+ });
27
+
28
+ describe('#serviceGroups', () => {
29
+ it('has all the required keys', () => {
30
+ assert.hasAllKeys(catalog.serviceGroups, [
31
+ 'discovery',
32
+ 'override',
33
+ 'preauth',
34
+ 'signin',
35
+ 'postauth',
36
+ ]);
37
+ });
38
+
39
+ it('contains values that are arrays', () => {
40
+ Object.keys(catalog.serviceGroups).forEach((key) => {
41
+ assert.typeOf(catalog.serviceGroups[key], 'array');
42
+ });
43
+ });
44
+ });
45
+
46
+ describe('#status', () => {
47
+ it('has all the required keys', () => {
48
+ assert.hasAllKeys(catalog.status, [
49
+ 'discovery',
50
+ 'override',
51
+ 'preauth',
52
+ 'postauth',
53
+ 'signin',
54
+ ]);
55
+ });
56
+
57
+ it('has valid key value types', () => {
58
+ assert.typeOf(catalog.status.preauth.ready, 'boolean');
59
+ assert.typeOf(catalog.status.preauth.collecting, 'boolean');
60
+ assert.typeOf(catalog.status.postauth.ready, 'boolean');
61
+ assert.typeOf(catalog.status.postauth.collecting, 'boolean');
62
+ assert.typeOf(catalog.status.signin.ready, 'boolean');
63
+ assert.typeOf(catalog.status.signin.collecting, 'boolean');
64
+ });
65
+ });
66
+
67
+ describe('#allowedDomains', () => {
68
+ it('is an array', () => {
69
+ assert.isArray(catalog.allowedDomains);
70
+ });
71
+ });
72
+
73
+ describe('#clean()', () => {
74
+ beforeEach(() => {
75
+ catalog.serviceGroups.preauth = [1, 2, 3];
76
+ catalog.serviceGroups.signin = [1, 2, 3];
77
+ catalog.serviceGroups.postauth = [1, 2, 3];
78
+ catalog.status.preauth = {ready: true};
79
+ catalog.status.signin = {ready: true};
80
+ catalog.status.postauth = {ready: true};
81
+ });
82
+
83
+ it('should reset service group ready status', () => {
84
+ catalog.clean();
85
+
86
+ assert.isFalse(catalog.status.preauth.ready);
87
+ assert.isFalse(catalog.status.signin.ready);
88
+ assert.isFalse(catalog.status.postauth.ready);
89
+ });
90
+
91
+ it('should clear all collected service groups', () => {
92
+ catalog.clean();
93
+
94
+ assert.equal(catalog.serviceGroups.preauth.length, 0);
95
+ assert.equal(catalog.serviceGroups.signin.length, 0);
96
+ assert.equal(catalog.serviceGroups.postauth.length, 0);
97
+ });
98
+ });
99
+
100
+ describe('#findAllowedDomain()', () => {
101
+ const domains = [];
102
+
103
+ beforeEach(() => {
104
+ domains.push(
105
+ 'example-a',
106
+ 'example-b',
107
+ 'example-c'
108
+ );
109
+
110
+ catalog.setAllowedDomains(domains);
111
+ });
112
+
113
+ afterEach(() => {
114
+ domains.length = 0;
115
+ });
116
+
117
+ it('finds an allowed domain that matches a specific url', () => {
118
+ const domain = catalog.findAllowedDomain('http://example-a.com/resource/id');
119
+
120
+ assert.include(domains, domain);
121
+ });
122
+ });
123
+
124
+ describe('#getAllowedDomains()', () => {
125
+ const domains = [];
126
+
127
+ beforeEach(() => {
128
+ domains.push(
129
+ 'example-a',
130
+ 'example-b',
131
+ 'example-c'
132
+ );
133
+
134
+ catalog.setAllowedDomains(domains);
135
+ });
136
+
137
+ afterEach(() => {
138
+ domains.length = 0;
139
+ });
140
+
141
+ it('returns a an array of allowed hosts', () => {
142
+ const list = catalog.getAllowedDomains();
143
+
144
+ assert.match(domains, list);
145
+ });
146
+ });
147
+
148
+ describe('#list()', () => {
149
+ let serviceList;
150
+
151
+ beforeEach(() => {
152
+ serviceList = catalog.list();
153
+ });
154
+
155
+ it('must return an object', () => {
156
+ assert.typeOf(serviceList, 'object');
157
+ });
158
+
159
+ it('returned list must be of shape {Record<string, string>}', () => {
160
+ Object.keys(serviceList).forEach((key) => {
161
+ assert.typeOf(key, 'string');
162
+ assert.typeOf(serviceList[key], 'string');
163
+ });
164
+ });
165
+ });
166
+
167
+ describe('#setAllowedDomains()', () => {
168
+ const domains = [];
169
+
170
+ beforeEach(() => {
171
+ domains.push(
172
+ 'example-a',
173
+ 'example-b',
174
+ 'example-c'
175
+ );
176
+
177
+ catalog.setAllowedDomains(domains);
178
+ });
179
+
180
+ afterEach(() => {
181
+ domains.length = 0;
182
+ });
183
+
184
+ it('sets the allowed domain entries to new values', () => {
185
+ const newValues = ['example-d', 'example-e', 'example-f'];
186
+
187
+ catalog.setAllowedDomains(newValues);
188
+
189
+ assert.notDeepInclude(domains, newValues);
190
+ });
191
+ });
192
+ });
193
+ });
194
+ /* eslint-enable no-underscore-dangle */