@webex/calling 3.8.0-next.9 → 3.8.0-web-workers-keepalive.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/dist/CallingClient/CallingClient.js +2 -41
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +1 -4
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +12 -12
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +2 -2
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +4 -10
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +333 -333
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +312 -263
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +115 -0
- package/dist/CallingClient/registration/webWorker.js.map +1 -0
- package/dist/CallingClient/registration/webWorker.test.js +256 -0
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/Utils.js +11 -13
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +13 -7
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/testUtil.js +1 -3
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +8 -1
- package/dist/common/types.js.map +1 -1
- package/dist/index.js +0 -12
- package/dist/index.js.map +1 -1
- package/dist/module/CallingClient/CallingClient.js +1 -10
- package/dist/module/CallingClient/calling/call.js +12 -12
- package/dist/module/CallingClient/registration/register.js +50 -54
- package/dist/module/CallingClient/registration/webWorker.js +59 -0
- package/dist/module/common/Utils.js +1 -2
- package/dist/module/common/testUtil.js +1 -3
- package/dist/module/common/types.js +7 -0
- package/dist/module/index.js +0 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +1 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts +2 -0
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -0
- package/dist/types/SDKConnector/types.d.ts +1 -1
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +1 -1
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +1 -3
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +12 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
6
|
+
var _uuid = require("uuid");
|
|
7
|
+
var _webWorker = require("./webWorker");
|
|
8
|
+
var _types = require("../../common/types");
|
|
9
|
+
global.self = global;
|
|
10
|
+
jest.mock('uuid');
|
|
11
|
+
describe('webWorker', function () {
|
|
12
|
+
var postMessageSpy;
|
|
13
|
+
var capturedIntervalCallback;
|
|
14
|
+
var capturedIntervalTimer;
|
|
15
|
+
var clearIntervalSpy;
|
|
16
|
+
beforeEach(function () {
|
|
17
|
+
jest.useFakeTimers();
|
|
18
|
+
global.fetch = jest.fn();
|
|
19
|
+
_uuid.v4.mockReturnValue('mock-uuid');
|
|
20
|
+
postMessageSpy = jest.spyOn(global, 'postMessage').mockImplementation(function () {});
|
|
21
|
+
clearIntervalSpy = jest.spyOn(global, 'clearInterval');
|
|
22
|
+
|
|
23
|
+
// Overriding setInterval so that we capture the callback rather than schedule a timer
|
|
24
|
+
jest.spyOn(global, 'setInterval').mockImplementation(
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
|
+
function (callback, interval) {
|
|
27
|
+
capturedIntervalCallback = callback;
|
|
28
|
+
// Create a dummy timer object (could be any non-null value)
|
|
29
|
+
capturedIntervalTimer = {
|
|
30
|
+
dummy: true
|
|
31
|
+
};
|
|
32
|
+
return capturedIntervalTimer;
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
afterEach(function () {
|
|
36
|
+
jest.clearAllMocks();
|
|
37
|
+
jest.clearAllTimers();
|
|
38
|
+
jest.useRealTimers();
|
|
39
|
+
});
|
|
40
|
+
it('should start keepalive lifecycle correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
41
|
+
var fakeSuccessResponse, fakeFailureRespponse;
|
|
42
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
43
|
+
while (1) switch (_context.prev = _context.next) {
|
|
44
|
+
case 0:
|
|
45
|
+
fakeSuccessResponse = {
|
|
46
|
+
ok: true,
|
|
47
|
+
status: 200
|
|
48
|
+
};
|
|
49
|
+
global.fetch.mockResolvedValue(fakeSuccessResponse);
|
|
50
|
+
(0, _webWorker.messageHandler)({
|
|
51
|
+
data: {
|
|
52
|
+
type: _types.WorkerMessageType.START_KEEPALIVE,
|
|
53
|
+
accessToken: 'dummy',
|
|
54
|
+
deviceUrl: 'dummyDevice',
|
|
55
|
+
interval: 1,
|
|
56
|
+
retryCountThreshold: 3,
|
|
57
|
+
url: 'http://example.com'
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// Manually invoke the captured interval callback to simulate one tick
|
|
62
|
+
_context.next = 5;
|
|
63
|
+
return capturedIntervalCallback();
|
|
64
|
+
case 5:
|
|
65
|
+
expect(global.fetch.mock.calls.length).toBe(1);
|
|
66
|
+
expect(global.fetch).toHaveBeenCalledWith('http://example.com/status', {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
headers: {
|
|
69
|
+
'cisco-device-url': 'dummyDevice',
|
|
70
|
+
'spark-user-agent': 'webex-calling/beta',
|
|
71
|
+
Authorization: 'dummy',
|
|
72
|
+
trackingId: 'web_worker_mock-uuid'
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
expect(postMessageSpy).not.toHaveBeenCalled();
|
|
76
|
+
fakeFailureRespponse = {
|
|
77
|
+
ok: false,
|
|
78
|
+
status: 401
|
|
79
|
+
};
|
|
80
|
+
global.fetch.mockResolvedValue(fakeFailureRespponse);
|
|
81
|
+
(0, _webWorker.messageHandler)({
|
|
82
|
+
data: {
|
|
83
|
+
type: _types.WorkerMessageType.START_KEEPALIVE,
|
|
84
|
+
accessToken: 'dummy',
|
|
85
|
+
deviceUrl: 'dummyDevice',
|
|
86
|
+
interval: 1,
|
|
87
|
+
retryCountThreshold: 3,
|
|
88
|
+
url: 'http://example.com'
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Manually invoke the captured interval callback to simulate one tick
|
|
93
|
+
_context.next = 13;
|
|
94
|
+
return capturedIntervalCallback();
|
|
95
|
+
case 13:
|
|
96
|
+
expect(global.fetch.mock.calls.length).toBe(2);
|
|
97
|
+
expect(postMessageSpy).toHaveBeenCalledWith({
|
|
98
|
+
err: new Error("Keepalive failed with status: 401"),
|
|
99
|
+
keepAliveRetryCount: 1,
|
|
100
|
+
type: 'KEEPALIVE_FAILURE'
|
|
101
|
+
});
|
|
102
|
+
case 15:
|
|
103
|
+
case "end":
|
|
104
|
+
return _context.stop();
|
|
105
|
+
}
|
|
106
|
+
}, _callee);
|
|
107
|
+
})));
|
|
108
|
+
it('should post KEEPALIVE_FAILURE when fetch fails', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
109
|
+
var mockError;
|
|
110
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
111
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
112
|
+
case 0:
|
|
113
|
+
mockError = new Error('Network error');
|
|
114
|
+
global.fetch.mockRejectedValue({
|
|
115
|
+
ok: false,
|
|
116
|
+
err: mockError,
|
|
117
|
+
status: 401
|
|
118
|
+
});
|
|
119
|
+
(0, _webWorker.messageHandler)({
|
|
120
|
+
data: {
|
|
121
|
+
type: _types.WorkerMessageType.START_KEEPALIVE,
|
|
122
|
+
accessToken: 'dummy',
|
|
123
|
+
deviceUrl: 'dummyDevice',
|
|
124
|
+
interval: 1,
|
|
125
|
+
retryCountThreshold: 1,
|
|
126
|
+
url: 'http://example.com'
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
_context2.next = 5;
|
|
130
|
+
return capturedIntervalCallback();
|
|
131
|
+
case 5:
|
|
132
|
+
expect(postMessageSpy).toHaveBeenCalledWith({
|
|
133
|
+
type: _types.WorkerMessageType.KEEPALIVE_FAILURE,
|
|
134
|
+
err: {
|
|
135
|
+
ok: false,
|
|
136
|
+
err: mockError,
|
|
137
|
+
status: 401
|
|
138
|
+
},
|
|
139
|
+
keepAliveRetryCount: 1
|
|
140
|
+
});
|
|
141
|
+
case 6:
|
|
142
|
+
case "end":
|
|
143
|
+
return _context2.stop();
|
|
144
|
+
}
|
|
145
|
+
}, _callee2);
|
|
146
|
+
})));
|
|
147
|
+
it('should post KEEPALIVE_SUCCESS after a failure when fetch succeeds', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
148
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
149
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
150
|
+
case 0:
|
|
151
|
+
// Set fetch so that first tick rejects (failure) and second tick resolves (success)
|
|
152
|
+
global.fetch.mockRejectedValueOnce(new Error('first failure')).mockResolvedValueOnce({
|
|
153
|
+
ok: true,
|
|
154
|
+
status: 200
|
|
155
|
+
});
|
|
156
|
+
(0, _webWorker.messageHandler)({
|
|
157
|
+
data: {
|
|
158
|
+
type: _types.WorkerMessageType.START_KEEPALIVE,
|
|
159
|
+
accessToken: 'dummy',
|
|
160
|
+
deviceUrl: 'dummyDevice',
|
|
161
|
+
interval: 1,
|
|
162
|
+
retryCountThreshold: 3,
|
|
163
|
+
url: 'http://example.com'
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// First tick: trigger failure
|
|
168
|
+
_context3.next = 4;
|
|
169
|
+
return capturedIntervalCallback();
|
|
170
|
+
case 4:
|
|
171
|
+
expect(postMessageSpy.mock.calls[0][0].type).toBe(_types.WorkerMessageType.KEEPALIVE_FAILURE);
|
|
172
|
+
|
|
173
|
+
// Second tick: trigger success.
|
|
174
|
+
_context3.next = 7;
|
|
175
|
+
return capturedIntervalCallback();
|
|
176
|
+
case 7:
|
|
177
|
+
expect(postMessageSpy.mock.calls[1][0].type).toBe(_types.WorkerMessageType.KEEPALIVE_SUCCESS);
|
|
178
|
+
expect(postMessageSpy.mock.calls[1][0].statusCode).toBe(200);
|
|
179
|
+
case 9:
|
|
180
|
+
case "end":
|
|
181
|
+
return _context3.stop();
|
|
182
|
+
}
|
|
183
|
+
}, _callee3);
|
|
184
|
+
})));
|
|
185
|
+
it('should clear keepalive timer on receiving CLEAR_KEEPALIVE message', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
186
|
+
var fakeSuccessResponse, startEvent;
|
|
187
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
188
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
189
|
+
case 0:
|
|
190
|
+
fakeSuccessResponse = {
|
|
191
|
+
ok: true,
|
|
192
|
+
status: 200
|
|
193
|
+
};
|
|
194
|
+
global.fetch.mockResolvedValue(fakeSuccessResponse);
|
|
195
|
+
startEvent = {
|
|
196
|
+
data: {
|
|
197
|
+
type: _types.WorkerMessageType.START_KEEPALIVE,
|
|
198
|
+
accessToken: 'dummy',
|
|
199
|
+
deviceUrl: 'dummyDevice',
|
|
200
|
+
interval: 1,
|
|
201
|
+
retryCountThreshold: 1,
|
|
202
|
+
url: 'http://example.com'
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
(0, _webWorker.messageHandler)(startEvent);
|
|
206
|
+
(0, _webWorker.messageHandler)({
|
|
207
|
+
data: {
|
|
208
|
+
type: _types.WorkerMessageType.CLEAR_KEEPALIVE
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
jest.advanceTimersByTime(3000);
|
|
212
|
+
expect(global.fetch.mock.calls.length).toBeLessThanOrEqual(3);
|
|
213
|
+
expect(clearIntervalSpy).toHaveBeenCalled();
|
|
214
|
+
case 8:
|
|
215
|
+
case "end":
|
|
216
|
+
return _context4.stop();
|
|
217
|
+
}
|
|
218
|
+
}, _callee4);
|
|
219
|
+
})));
|
|
220
|
+
it('improve coverage: should not clear keepalive timer on receiving CLEAR_KEEPALIVE message without keepTimer', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
221
|
+
var fakeSuccessResponse, startEvent;
|
|
222
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
223
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
224
|
+
case 0:
|
|
225
|
+
jest.spyOn(global, 'setInterval').mockReturnValue(undefined);
|
|
226
|
+
fakeSuccessResponse = {
|
|
227
|
+
ok: true,
|
|
228
|
+
status: 200
|
|
229
|
+
};
|
|
230
|
+
global.fetch.mockResolvedValue(fakeSuccessResponse);
|
|
231
|
+
startEvent = {
|
|
232
|
+
data: {
|
|
233
|
+
type: _types.WorkerMessageType.START_KEEPALIVE,
|
|
234
|
+
accessToken: 'dummy',
|
|
235
|
+
deviceUrl: 'dummyDevice',
|
|
236
|
+
interval: 1,
|
|
237
|
+
retryCountThreshold: 1,
|
|
238
|
+
url: 'http://example.com'
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
(0, _webWorker.messageHandler)(startEvent);
|
|
242
|
+
(0, _webWorker.messageHandler)({
|
|
243
|
+
data: {
|
|
244
|
+
type: _types.WorkerMessageType.CLEAR_KEEPALIVE
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
jest.advanceTimersByTime(3000);
|
|
248
|
+
expect(clearIntervalSpy).not.toHaveBeenCalled();
|
|
249
|
+
case 8:
|
|
250
|
+
case "end":
|
|
251
|
+
return _context5.stop();
|
|
252
|
+
}
|
|
253
|
+
}, _callee5);
|
|
254
|
+
})));
|
|
255
|
+
});
|
|
256
|
+
//# sourceMappingURL=webWorker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_uuid","require","_webWorker","_types","global","self","jest","mock","describe","postMessageSpy","capturedIntervalCallback","capturedIntervalTimer","clearIntervalSpy","beforeEach","useFakeTimers","fetch","fn","uuid","mockReturnValue","spyOn","mockImplementation","callback","interval","dummy","afterEach","clearAllMocks","clearAllTimers","useRealTimers","it","_asyncToGenerator2","default","_regenerator","mark","_callee","fakeSuccessResponse","fakeFailureRespponse","wrap","_callee$","_context","prev","next","ok","status","mockResolvedValue","messageHandler","data","type","WorkerMessageType","START_KEEPALIVE","accessToken","deviceUrl","retryCountThreshold","url","expect","calls","length","toBe","toHaveBeenCalledWith","method","headers","Authorization","trackingId","not","toHaveBeenCalled","err","Error","keepAliveRetryCount","stop","_callee2","mockError","_callee2$","_context2","mockRejectedValue","KEEPALIVE_FAILURE","_callee3","_callee3$","_context3","mockRejectedValueOnce","mockResolvedValueOnce","KEEPALIVE_SUCCESS","statusCode","_callee4","startEvent","_callee4$","_context4","CLEAR_KEEPALIVE","advanceTimersByTime","toBeLessThanOrEqual","_callee5","_callee5$","_context5","undefined"],"sources":["webWorker.test.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {messageHandler} from './webWorker';\nimport {WorkerMessageType} from '../../common/types';\n\n(global as any).self = global;\n\njest.mock('uuid');\n\ndescribe('webWorker', () => {\n let postMessageSpy: jest.SpyInstance;\n let capturedIntervalCallback: any;\n let capturedIntervalTimer: any;\n let clearIntervalSpy: jest.SpyInstance;\n\n beforeEach(() => {\n jest.useFakeTimers();\n global.fetch = jest.fn();\n (uuid as jest.Mock).mockReturnValue('mock-uuid');\n\n postMessageSpy = jest.spyOn(global, 'postMessage').mockImplementation(() => {});\n clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n // Overriding setInterval so that we capture the callback rather than schedule a timer\n jest.spyOn(global, 'setInterval').mockImplementation(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n (callback: any, interval: number): NodeJS.Timeout => {\n capturedIntervalCallback = callback;\n // Create a dummy timer object (could be any non-null value)\n capturedIntervalTimer = {dummy: true};\n\n return capturedIntervalTimer as NodeJS.Timeout;\n }\n );\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n jest.clearAllTimers();\n jest.useRealTimers();\n });\n\n it('should start keepalive lifecycle correctly', async () => {\n const fakeSuccessResponse = {ok: true, status: 200};\n (global.fetch as jest.Mock).mockResolvedValue(fakeSuccessResponse);\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 3,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n // Manually invoke the captured interval callback to simulate one tick\n await capturedIntervalCallback();\n\n expect((global.fetch as jest.Mock).mock.calls.length).toBe(1);\n expect(global.fetch).toHaveBeenCalledWith('http://example.com/status', {\n method: 'POST',\n headers: {\n 'cisco-device-url': 'dummyDevice',\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: 'dummy',\n trackingId: 'web_worker_mock-uuid',\n },\n });\n expect(postMessageSpy).not.toHaveBeenCalled();\n\n const fakeFailureRespponse = {ok: false, status: 401};\n (global.fetch as jest.Mock).mockResolvedValue(fakeFailureRespponse);\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 3,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n // Manually invoke the captured interval callback to simulate one tick\n await capturedIntervalCallback();\n\n expect((global.fetch as jest.Mock).mock.calls.length).toBe(2);\n expect(postMessageSpy).toHaveBeenCalledWith({\n err: new Error(`Keepalive failed with status: 401`),\n keepAliveRetryCount: 1,\n type: 'KEEPALIVE_FAILURE',\n });\n });\n\n it('should post KEEPALIVE_FAILURE when fetch fails', async () => {\n const mockError = new Error('Network error');\n (global.fetch as jest.Mock).mockRejectedValue({\n ok: false,\n err: mockError,\n status: 401,\n });\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 1,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n await capturedIntervalCallback();\n\n expect(postMessageSpy).toHaveBeenCalledWith({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {\n ok: false,\n err: mockError,\n status: 401,\n },\n keepAliveRetryCount: 1,\n });\n });\n\n it('should post KEEPALIVE_SUCCESS after a failure when fetch succeeds', async () => {\n // Set fetch so that first tick rejects (failure) and second tick resolves (success)\n (global.fetch as jest.Mock)\n .mockRejectedValueOnce(new Error('first failure'))\n .mockResolvedValueOnce({ok: true, status: 200});\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 3,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n // First tick: trigger failure\n await capturedIntervalCallback();\n expect(postMessageSpy.mock.calls[0][0].type).toBe(WorkerMessageType.KEEPALIVE_FAILURE);\n\n // Second tick: trigger success.\n await capturedIntervalCallback();\n expect(postMessageSpy.mock.calls[1][0].type).toBe(WorkerMessageType.KEEPALIVE_SUCCESS);\n expect(postMessageSpy.mock.calls[1][0].statusCode).toBe(200);\n });\n\n it('should clear keepalive timer on receiving CLEAR_KEEPALIVE message', async () => {\n const fakeSuccessResponse = {ok: true, status: 200};\n (global.fetch as jest.Mock).mockResolvedValue(fakeSuccessResponse);\n\n const startEvent = {\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 1,\n url: 'http://example.com',\n },\n };\n\n messageHandler(startEvent as MessageEvent);\n messageHandler({data: {type: WorkerMessageType.CLEAR_KEEPALIVE}} as MessageEvent);\n\n jest.advanceTimersByTime(3000);\n expect((global.fetch as jest.Mock).mock.calls.length).toBeLessThanOrEqual(3);\n expect(clearIntervalSpy).toHaveBeenCalled();\n });\n\n it('improve coverage: should not clear keepalive timer on receiving CLEAR_KEEPALIVE message without keepTimer', async () => {\n jest.spyOn(global, 'setInterval').mockReturnValue(undefined);\n const fakeSuccessResponse = {ok: true, status: 200};\n (global.fetch as jest.Mock).mockResolvedValue(fakeSuccessResponse);\n\n const startEvent = {\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 1,\n url: 'http://example.com',\n },\n };\n\n messageHandler(startEvent as MessageEvent);\n messageHandler({data: {type: WorkerMessageType.CLEAR_KEEPALIVE}} as MessageEvent);\n\n jest.advanceTimersByTime(3000);\n expect(clearIntervalSpy).not.toHaveBeenCalled();\n });\n});\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {KmsKey, KmsResourceObject, PeopleListResponse, WebexRequestPayload} from '../common/types';\n/* eslint-disable no-shadow */\n\ntype Listener = (e: string, data?: unknown) => void;\ntype ListenerOff = (e: string) => void;\n\nexport type ServiceHost = {\n host: string;\n ttl: number;\n priority: number;\n id: string;\n homeCluster?: boolean;\n};\n\nexport type Model = {\n _values: {\n key: string;\n };\n};\n\nexport type ServiceCatalog = {\n serviceGroups: {\n // cSpell:disable\n postauth: [\n {\n _values: {\n name: string;\n hosts: ServiceHost[];\n };\n }\n ];\n /* cSpell:enable */\n };\n};\n\nexport type ClientRegionInfo = {\n attribution: string;\n clientAddress: string;\n clientRegion: string;\n countryCode: string;\n disclaimer: string;\n regionCode: string;\n timezone: string;\n};\n\nexport type Logger = {\n log: (
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {KmsKey, KmsResourceObject, PeopleListResponse, WebexRequestPayload} from '../common/types';\n/* eslint-disable no-shadow */\n\ntype Listener = (e: string, data?: unknown) => void;\ntype ListenerOff = (e: string) => void;\n\nexport type ServiceHost = {\n host: string;\n ttl: number;\n priority: number;\n id: string;\n homeCluster?: boolean;\n};\n\nexport type Model = {\n _values: {\n key: string;\n };\n};\n\nexport type ServiceCatalog = {\n serviceGroups: {\n // cSpell:disable\n postauth: [\n {\n _values: {\n name: string;\n hosts: ServiceHost[];\n };\n }\n ];\n /* cSpell:enable */\n };\n};\n\nexport type ClientRegionInfo = {\n attribution: string;\n clientAddress: string;\n clientRegion: string;\n countryCode: string;\n disclaimer: string;\n regionCode: string;\n timezone: string;\n};\n\nexport type Logger = {\n log: (mess: string) => void;\n error: (payload: string) => void;\n warn: (payload: string) => void;\n info: (payload: string) => void;\n trace: (payload: string) => void;\n debug: (payload: string) => void;\n};\n\n// TODO: is there a way to import bindings from the Webex JS SDK without having to redefine expected methods and structure?\n// This defines the shape for the webex SDK, if a typing doesn't exist, it should be added here\nexport interface WebexSDK {\n // top level primitives/funcs\n version: string;\n canAuthorize: boolean;\n credentials: {\n getUserToken: () => Promise<string>;\n };\n ready: boolean;\n request: <T>(payload: WebexRequestPayload) => Promise<T>;\n // internal plugins\n internal: {\n mercury: {\n on: Listener;\n off: ListenerOff;\n connected: boolean;\n connecting: boolean;\n };\n calendar: unknown;\n device: {\n url: string;\n userId: string;\n orgId: string;\n version: string;\n callingBehavior: string;\n features: {\n entitlement: {\n models: Model[];\n };\n };\n };\n encryption: {\n decryptText: (encryptionKeyUrl: string, encryptedData?: string) => Promise<string>;\n encryptText: (encryptionKeyUrl: string, text?: string) => Promise<string>;\n kms: {\n createUnboundKeys: (arg0: {count?: number}) => Promise<KmsKey[]>;\n createResource: (arg0: {keyUris: string[]}) => Promise<KmsResourceObject>;\n bindKey: (arg0: {kroUri: string; keyUri: string}) => Promise<KmsKey>;\n };\n };\n presence: unknown;\n support: {\n submitLogs: (info: object) => Promise<void>;\n };\n services: {\n _hostCatalog: Record<string, ServiceHost[]>;\n _serviceUrls: {\n mobius: string;\n identity: string;\n janus: string;\n wdm: string;\n broadworksIdpProxy: string;\n hydra: string;\n mercuryApi: string;\n 'ucmgmt-gateway': string;\n contactsService: string;\n };\n fetchClientRegionInfo: () => Promise<ClientRegionInfo>;\n };\n metrics: {\n submitClientMetrics: (name: string, data: unknown) => void;\n };\n };\n // public plugins\n logger: Logger;\n messages: unknown;\n memberships: unknown;\n people: {\n list: (arg: object) => Promise<PeopleListResponse>;\n };\n rooms: unknown;\n teams: unknown;\n}\n\nexport interface ISDKConnector {\n setWebex: (webexInstance: WebexSDK) => void;\n getWebex: () => WebexSDK;\n get: () => ISDKConnector;\n registerListener: <T>(event: string, cb: (data?: T) => unknown) => void;\n unregisterListener: (event: string) => void;\n}\n"],"mappings":""}
|
package/dist/common/Utils.js
CHANGED
|
@@ -1325,37 +1325,35 @@ function modifySdpForIPv4(sdp) {
|
|
|
1325
1325
|
* @param webex - Webex object to get service urls.
|
|
1326
1326
|
* @param data - Data to be uploaded.
|
|
1327
1327
|
*/
|
|
1328
|
-
function uploadLogs() {
|
|
1328
|
+
function uploadLogs(_x24) {
|
|
1329
1329
|
return _uploadLogs.apply(this, arguments);
|
|
1330
1330
|
}
|
|
1331
1331
|
function _uploadLogs() {
|
|
1332
|
-
_uploadLogs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {
|
|
1332
|
+
_uploadLogs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(webex) {
|
|
1333
1333
|
var data,
|
|
1334
|
-
_webex,
|
|
1335
1334
|
_args10 = arguments;
|
|
1336
1335
|
return _regenerator.default.wrap(function _callee10$(_context10) {
|
|
1337
1336
|
while (1) switch (_context10.prev = _context10.next) {
|
|
1338
1337
|
case 0:
|
|
1339
|
-
data = _args10.length >
|
|
1338
|
+
data = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : {};
|
|
1340
1339
|
_context10.prev = 1;
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
_context10.next = 10;
|
|
1340
|
+
_context10.next = 4;
|
|
1341
|
+
return webex.internal.support.submitLogs(data);
|
|
1342
|
+
case 4:
|
|
1343
|
+
_context10.next = 9;
|
|
1346
1344
|
break;
|
|
1347
|
-
case
|
|
1348
|
-
_context10.prev =
|
|
1345
|
+
case 6:
|
|
1346
|
+
_context10.prev = 6;
|
|
1349
1347
|
_context10.t0 = _context10["catch"](1);
|
|
1350
1348
|
_Logger.default.error(_context10.t0, {
|
|
1351
1349
|
file: _constants.UTILS_FILE,
|
|
1352
1350
|
method: 'uploadLogs'
|
|
1353
1351
|
});
|
|
1354
|
-
case
|
|
1352
|
+
case 9:
|
|
1355
1353
|
case "end":
|
|
1356
1354
|
return _context10.stop();
|
|
1357
1355
|
}
|
|
1358
|
-
}, _callee10, null, [[1,
|
|
1356
|
+
}, _callee10, null, [[1, 6]]);
|
|
1359
1357
|
}));
|
|
1360
1358
|
return _uploadLogs.apply(this, arguments);
|
|
1361
1359
|
}
|