@webex/calling 3.8.0-next.31 → 3.8.0-next.32
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/CallingClient/constants.js +4 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +2 -2
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +149 -143
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +495 -139
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/common/Utils.js +58 -44
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +45 -14
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/module/CallingClient/constants.js +3 -2
- package/dist/module/CallingClient/registration/register.js +54 -44
- package/dist/module/common/Utils.js +24 -8
- package/dist/types/CallingClient/constants.d.ts +3 -2
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +3 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +1 -0
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +2 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -29,6 +29,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
29
29
|
var mockSubmitRegistrationMetric = jest.fn();
|
|
30
30
|
var mockEmitterCb = jest.fn();
|
|
31
31
|
var mockRestoreCb = jest.fn();
|
|
32
|
+
var mock429RetryCb = jest.fn();
|
|
32
33
|
var webex = (0, _testUtil.getTestUtilsWebex)();
|
|
33
34
|
_SDKConnector.default.setWebex(webex);
|
|
34
35
|
webex.internal.metrics.submitClientMetrics = mockSubmitRegistrationMetric;
|
|
@@ -71,48 +72,60 @@ describe('Registration Tests', function () {
|
|
|
71
72
|
* logMsg: log message.
|
|
72
73
|
*/
|
|
73
74
|
var errorCodes = [{
|
|
75
|
+
name: 'verify 429 error response',
|
|
76
|
+
statusCode: _types2.ERROR_CODE.TOO_MANY_REQUESTS,
|
|
77
|
+
deviceErrorCode: 0,
|
|
78
|
+
retryAfter: 30,
|
|
79
|
+
message: '',
|
|
80
|
+
errorType: _types2.ERROR_TYPE.REGISTRATION_ERROR,
|
|
81
|
+
emitterCbExpected: false,
|
|
82
|
+
finalError: false,
|
|
83
|
+
retry429CbExpected: true,
|
|
84
|
+
restoreCbExpected: false,
|
|
85
|
+
logMsg: '429 Too Many Requests'
|
|
86
|
+
}, {
|
|
74
87
|
name: 'verify 404 error response',
|
|
75
88
|
statusCode: _types2.ERROR_CODE.DEVICE_NOT_FOUND,
|
|
76
89
|
deviceErrorCode: 0,
|
|
77
|
-
|
|
78
|
-
message: 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.',
|
|
90
|
+
message: 'Webex Calling is unable to find your device. Sign out, then sign back in',
|
|
79
91
|
errorType: _types2.ERROR_TYPE.NOT_FOUND,
|
|
80
92
|
emitterCbExpected: true,
|
|
81
93
|
finalError: true,
|
|
82
94
|
restoreCbExpected: false,
|
|
95
|
+
retry429CbExpected: false,
|
|
83
96
|
logMsg: '404 Device Not Found'
|
|
84
97
|
}, {
|
|
85
98
|
name: 'verify 500 error response',
|
|
86
99
|
statusCode: _types2.ERROR_CODE.INTERNAL_SERVER_ERROR,
|
|
87
100
|
deviceErrorCode: 0,
|
|
88
|
-
retryAfter: 0,
|
|
89
101
|
message: 'An unknown error occurred while placing the request. Wait a moment and try again.',
|
|
90
102
|
errorType: _types2.ERROR_TYPE.SERVICE_UNAVAILABLE,
|
|
91
103
|
emitterCbExpected: true,
|
|
92
104
|
finalError: false,
|
|
93
105
|
restoreCbExpected: false,
|
|
106
|
+
retry429CbExpected: false,
|
|
94
107
|
logMsg: '500 Internal Server Error'
|
|
95
108
|
}, {
|
|
96
109
|
name: 'verify 503 error response',
|
|
97
110
|
statusCode: _types2.ERROR_CODE.SERVICE_UNAVAILABLE,
|
|
98
111
|
deviceErrorCode: 0,
|
|
99
|
-
retryAfter: 0,
|
|
100
112
|
message: 'An error occurred on the server while processing the request. Wait a moment and try again.',
|
|
101
113
|
errorType: _types2.ERROR_TYPE.SERVICE_UNAVAILABLE,
|
|
102
114
|
emitterCbExpected: true,
|
|
103
115
|
finalError: false,
|
|
104
116
|
restoreCbExpected: false,
|
|
117
|
+
retry429CbExpected: false,
|
|
105
118
|
logMsg: '503 Service Unavailable'
|
|
106
119
|
}, {
|
|
107
120
|
name: 'verify 403 response with no response body',
|
|
108
121
|
statusCode: _types2.ERROR_CODE.FORBIDDEN,
|
|
109
122
|
deviceErrorCode: 0,
|
|
110
|
-
retryAfter: 0,
|
|
111
123
|
message: 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.',
|
|
112
124
|
errorType: _types2.ERROR_TYPE.FORBIDDEN_ERROR,
|
|
113
125
|
emitterCbExpected: true,
|
|
114
126
|
finalError: false,
|
|
115
127
|
restoreCbExpected: false,
|
|
128
|
+
retry429CbExpected: false,
|
|
116
129
|
logMsg: 'Error response has no body, throwing default error',
|
|
117
130
|
customBodyPresent: true,
|
|
118
131
|
body: undefined
|
|
@@ -120,67 +133,78 @@ describe('Registration Tests', function () {
|
|
|
120
133
|
name: 'verify 403 response with unknown device.errorCode',
|
|
121
134
|
statusCode: _types2.ERROR_CODE.FORBIDDEN,
|
|
122
135
|
deviceErrorCode: 0,
|
|
123
|
-
retryAfter: 0,
|
|
124
136
|
message: 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.',
|
|
125
137
|
errorType: _types2.ERROR_TYPE.FORBIDDEN_ERROR,
|
|
126
138
|
emitterCbExpected: true,
|
|
127
139
|
finalError: false,
|
|
128
140
|
restoreCbExpected: false,
|
|
141
|
+
retry429CbExpected: false,
|
|
129
142
|
logMsg: 'Error code found : 0'
|
|
130
143
|
}, {
|
|
131
144
|
name: 'verify 403 response with code 101',
|
|
132
145
|
statusCode: _types2.ERROR_CODE.FORBIDDEN,
|
|
133
146
|
deviceErrorCode: _types2.DEVICE_ERROR_CODE.DEVICE_LIMIT_EXCEEDED,
|
|
134
|
-
retryAfter: 0,
|
|
135
147
|
message: 'User device limit exceeded',
|
|
136
148
|
errorType: _types2.ERROR_TYPE.FORBIDDEN_ERROR,
|
|
137
149
|
emitterCbExpected: false,
|
|
138
150
|
finalError: false,
|
|
139
151
|
restoreCbExpected: true,
|
|
152
|
+
retry429CbExpected: false,
|
|
140
153
|
logMsg: 'User device limit exceeded'
|
|
141
154
|
}, {
|
|
142
155
|
name: 'verify 403 response with code 102',
|
|
143
156
|
statusCode: _types2.ERROR_CODE.FORBIDDEN,
|
|
144
157
|
deviceErrorCode: _types2.DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED,
|
|
145
|
-
retryAfter: 0,
|
|
146
158
|
message: 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.',
|
|
147
159
|
errorType: _types2.ERROR_TYPE.FORBIDDEN_ERROR,
|
|
148
160
|
emitterCbExpected: true,
|
|
149
161
|
finalError: true,
|
|
150
162
|
restoreCbExpected: false,
|
|
163
|
+
retry429CbExpected: false,
|
|
151
164
|
logMsg: 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.'
|
|
152
165
|
}, {
|
|
153
166
|
name: 'verify 403 response with code 103',
|
|
154
167
|
statusCode: _types2.ERROR_CODE.FORBIDDEN,
|
|
155
168
|
deviceErrorCode: _types2.DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED,
|
|
156
|
-
retryAfter: 0,
|
|
157
169
|
message: 'An unknown error occurred while provisioning the device. Wait a moment and try again.',
|
|
158
170
|
errorType: _types2.ERROR_TYPE.FORBIDDEN_ERROR,
|
|
159
171
|
emitterCbExpected: true,
|
|
160
172
|
finalError: false,
|
|
161
173
|
restoreCbExpected: false,
|
|
174
|
+
retry429CbExpected: false,
|
|
162
175
|
logMsg: 'An unknown error occurred while provisioning the device. Wait a moment and try again.'
|
|
163
176
|
}, {
|
|
164
177
|
name: 'verify 401 error response',
|
|
165
178
|
statusCode: _types2.ERROR_CODE.UNAUTHORIZED,
|
|
166
179
|
deviceErrorCode: 0,
|
|
167
|
-
retryAfter: 0,
|
|
168
180
|
message: 'User is unauthorized due to an expired token. Sign out, then sign back in.',
|
|
169
181
|
errorType: _types2.ERROR_TYPE.TOKEN_ERROR,
|
|
170
182
|
emitterCbExpected: true,
|
|
171
183
|
finalError: true,
|
|
172
184
|
restoreCbExpected: false,
|
|
185
|
+
retry429CbExpected: false,
|
|
173
186
|
logMsg: '401 Unauthorized'
|
|
187
|
+
}, {
|
|
188
|
+
name: 'verify 400 error response',
|
|
189
|
+
statusCode: _types2.ERROR_CODE.BAD_REQUEST,
|
|
190
|
+
deviceErrorCode: 0,
|
|
191
|
+
message: 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data',
|
|
192
|
+
errorType: _types2.ERROR_TYPE.SERVER_ERROR,
|
|
193
|
+
emitterCbExpected: true,
|
|
194
|
+
finalError: true,
|
|
195
|
+
restoreCbExpected: false,
|
|
196
|
+
retry429CbExpected: false,
|
|
197
|
+
logMsg: '400 Bad Request'
|
|
174
198
|
}, {
|
|
175
199
|
name: 'verify unknown error response',
|
|
176
200
|
statusCode: 206,
|
|
177
201
|
deviceErrorCode: 0,
|
|
178
|
-
retryAfter: 0,
|
|
179
202
|
message: 'Unknown error',
|
|
180
203
|
errorType: _types2.ERROR_TYPE.DEFAULT,
|
|
181
204
|
emitterCbExpected: true,
|
|
182
205
|
finalError: false,
|
|
183
206
|
restoreCbExpected: false,
|
|
207
|
+
retry429CbExpected: false,
|
|
184
208
|
logMsg: 'Unknown Error'
|
|
185
209
|
}].map(function (stat) {
|
|
186
210
|
return (0, _assign.default)(stat, {
|
|
@@ -199,9 +223,11 @@ describe('Registration Tests', function () {
|
|
|
199
223
|
it.each(errorCodes)('%s', function (codeObj) {
|
|
200
224
|
var webexPayload = {
|
|
201
225
|
statusCode: codeObj.statusCode,
|
|
202
|
-
headers: {
|
|
226
|
+
headers: _objectSpread({
|
|
203
227
|
trackingid: 'webex-js-sdk_b5812e58-7246-4a9b-bf64-831bdf13b0cd_31'
|
|
204
|
-
},
|
|
228
|
+
}, codeObj.retryAfter && {
|
|
229
|
+
'retry-after': codeObj.retryAfter.toString()
|
|
230
|
+
}),
|
|
205
231
|
body: {
|
|
206
232
|
device: {
|
|
207
233
|
deviceId: '8a67806f-fc4d-446b-a131-31e71ea5b010'
|
|
@@ -226,7 +252,7 @@ describe('Registration Tests', function () {
|
|
|
226
252
|
context: logObj
|
|
227
253
|
};
|
|
228
254
|
var callClientError = new _Errors.CallingClientError(mockErrorEvent.message, mockErrorEvent.context, mockErrorEvent.type, _types.RegistrationStatus.ACTIVE);
|
|
229
|
-
(0, _Utils.handleRegistrationErrors)(webexPayload, mockEmitterCb, logObj, mockRestoreCb);
|
|
255
|
+
(0, _Utils.handleRegistrationErrors)(webexPayload, mockEmitterCb, logObj, mock429RetryCb, mockRestoreCb);
|
|
230
256
|
if (codeObj.emitterCbExpected) {
|
|
231
257
|
expect(mockEmitterCb).toBeCalledOnceWith(callClientError, codeObj.finalError);
|
|
232
258
|
}
|
|
@@ -235,6 +261,11 @@ describe('Registration Tests', function () {
|
|
|
235
261
|
} else {
|
|
236
262
|
expect(mockRestoreCb).not.toHaveBeenCalled();
|
|
237
263
|
}
|
|
264
|
+
if (codeObj.retry429CbExpected) {
|
|
265
|
+
expect(mock429RetryCb).toBeCalledOnceWith(codeObj.retryAfter, logObj.method);
|
|
266
|
+
} else {
|
|
267
|
+
expect(mock429RetryCb).not.toHaveBeenCalled();
|
|
268
|
+
}
|
|
238
269
|
expect(logSpy).toHaveBeenCalledWith("Status code: -> ".concat(codeObj.statusCode), logObj);
|
|
239
270
|
expect(logSpy).toHaveBeenCalledWith(codeObj.logMsg, logObj);
|
|
240
271
|
});
|