@tellescope/sdk 1.75.0 → 1.77.0
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/lib/cjs/sdk.d.ts +8 -1
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +1 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +698 -155
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +8 -1
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +1 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +698 -155
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/sdk.ts +3 -0
- package/src/tests/tests.ts +503 -4
- package/test_generated.pdf +0 -0
package/lib/cjs/tests/tests.js
CHANGED
|
@@ -153,7 +153,7 @@ var voidResult = function () { return true; };
|
|
|
153
153
|
var passOnVoid = { shouldError: false, onResult: voidResult };
|
|
154
154
|
// const isNull = (d: any) => d === null
|
|
155
155
|
var setup_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
156
|
-
var uInfo, originalAuthToken;
|
|
156
|
+
var badSDK, badEnduserSDK, uInfo, originalAuthToken;
|
|
157
157
|
return __generator(this, function (_a) {
|
|
158
158
|
switch (_a.label) {
|
|
159
159
|
case 0:
|
|
@@ -164,89 +164,142 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
|
|
|
164
164
|
return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
|
|
165
165
|
case 2:
|
|
166
166
|
_a.sent();
|
|
167
|
-
return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated (with API Key)', (new sdk_1.Session({ host: host, apiKey: '3n5q0SCBT_iUvZz-b9BJtX7o7HQUVJ9v132PgHJNJsg.' /* local test key */ })).test_authenticated, { expectedResult: 'Authenticated!' })
|
|
167
|
+
return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated (with API Key)', (new sdk_1.Session({ host: host, apiKey: '3n5q0SCBT_iUvZz-b9BJtX7o7HQUVJ9v132PgHJNJsg.' /* local test key */ })).test_authenticated, { expectedResult: 'Authenticated!' })
|
|
168
|
+
// login rate limit tests
|
|
169
|
+
];
|
|
168
170
|
case 3:
|
|
169
171
|
_a.sent();
|
|
170
|
-
|
|
172
|
+
badSDK = new sdk_1.Session({ host: host });
|
|
173
|
+
return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
171
174
|
case 4:
|
|
172
175
|
_a.sent();
|
|
173
|
-
return [4 /*yield*/,
|
|
176
|
+
return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
174
177
|
case 5:
|
|
175
178
|
_a.sent();
|
|
176
|
-
return [4 /*yield*/,
|
|
179
|
+
return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
177
180
|
case 6:
|
|
178
181
|
_a.sent();
|
|
179
|
-
return [4 /*yield*/,
|
|
182
|
+
return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
180
183
|
case 7:
|
|
184
|
+
_a.sent();
|
|
185
|
+
return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
186
|
+
case 8:
|
|
187
|
+
_a.sent();
|
|
188
|
+
return [4 /*yield*/, (0, testing_1.async_test)('login rate limited', function () { return badSDK.authenticate('bademail@tellescope.com', 'badpassword@tellescope.com'); }, { shouldError: true, onError: function (e) { return e.message === 'Too many login attempts'; } })];
|
|
189
|
+
case 9:
|
|
190
|
+
_a.sent();
|
|
191
|
+
return [4 /*yield*/, (0, testing_1.async_test)('login not rate limited for other user', function () { return sdk.authenticate(email, password); }, passOnAnyResult)];
|
|
192
|
+
case 10:
|
|
193
|
+
_a.sent();
|
|
194
|
+
badEnduserSDK = new sdk_1.EnduserSession({ host: host, businessId: businessId });
|
|
195
|
+
return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
196
|
+
case 11:
|
|
197
|
+
_a.sent();
|
|
198
|
+
return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
199
|
+
case 12:
|
|
200
|
+
_a.sent();
|
|
201
|
+
return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
202
|
+
case 13:
|
|
203
|
+
_a.sent();
|
|
204
|
+
return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
205
|
+
case 14:
|
|
206
|
+
_a.sent();
|
|
207
|
+
return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
|
|
208
|
+
case 15:
|
|
209
|
+
_a.sent();
|
|
210
|
+
return [4 /*yield*/, (0, testing_1.async_test)('login rate limited', function () { return badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword@tellescope.com'); }, { shouldError: true, onError: function (e) { return e.message === 'Too many login attempts'; } })];
|
|
211
|
+
case 16:
|
|
212
|
+
_a.sent();
|
|
213
|
+
return [4 /*yield*/, (0, testing_1.async_test)('login not rate limited for other enduser', function () { return badEnduserSDK.authenticate('otherbademail@tellescope.com', 'badpassword@tellescope.com'); }, { shouldError: true, onError: function (e) { return e.message !== 'Too many login attempts'; } })
|
|
214
|
+
// prevent additional login throttling
|
|
215
|
+
];
|
|
216
|
+
case 17:
|
|
217
|
+
_a.sent();
|
|
218
|
+
// prevent additional login throttling
|
|
219
|
+
return [4 /*yield*/, (0, testing_1.async_test)('reset_db', function () { return sdk.reset_db(); }, passOnVoid)];
|
|
220
|
+
case 18:
|
|
221
|
+
// prevent additional login throttling
|
|
222
|
+
_a.sent();
|
|
223
|
+
return [4 /*yield*/, sdk.logout()];
|
|
224
|
+
case 19:
|
|
225
|
+
_a.sent();
|
|
226
|
+
return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated - (logout invalidates jwt)', sdk.test_authenticated, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
|
|
227
|
+
case 20:
|
|
228
|
+
_a.sent();
|
|
229
|
+
return [4 /*yield*/, sdk.authenticate(email, password)];
|
|
230
|
+
case 21:
|
|
231
|
+
_a.sent();
|
|
232
|
+
return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated (re-authenticated)', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
|
|
233
|
+
case 22:
|
|
181
234
|
_a.sent();
|
|
182
235
|
uInfo = sdk.userInfo;
|
|
183
236
|
originalAuthToken = sdk.authToken;
|
|
184
237
|
return [4 /*yield*/, sdk.refresh_session()];
|
|
185
|
-
case
|
|
238
|
+
case 23:
|
|
186
239
|
_a.sent();
|
|
187
240
|
(0, testing_1.assert)(uInfo.id === sdk.userInfo.id, 'userInfo mismatch', 'userInfo id preserved after refresh');
|
|
188
241
|
(0, testing_1.assert)(!!originalAuthToken && !!sdk.authToken && sdk.authToken !== originalAuthToken, 'same authToken after refresh', 'authToken refresh');
|
|
189
242
|
return [4 /*yield*/, (0, testing_1.async_test)('role change by non-admin prevented (admin)', function () { return sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: ['Admin'] }, { replaceObjectFields: true }); }, handleAnyError)];
|
|
190
|
-
case
|
|
243
|
+
case 24:
|
|
191
244
|
_a.sent();
|
|
192
245
|
return [4 /*yield*/, (0, testing_1.async_test)('role change by non-admin prevented (non-admin)', function () { return sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: ['Not Admin'] }, { replaceObjectFields: true }); }, handleAnyError)
|
|
193
246
|
// would assign default non-admin role, which could grant additional permissions than currently-defined non-admin role, should block
|
|
194
247
|
];
|
|
195
|
-
case
|
|
248
|
+
case 25:
|
|
196
249
|
_a.sent();
|
|
197
250
|
// would assign default non-admin role, which could grant additional permissions than currently-defined non-admin role, should block
|
|
198
251
|
return [4 /*yield*/, (0, testing_1.async_test)('role change by non-admin prevented (empty)', function () { return sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [] }, { replaceObjectFields: true }); }, handleAnyError)
|
|
199
252
|
// ensure that going to "Non-Admin" triggers a role change
|
|
200
253
|
];
|
|
201
|
-
case
|
|
254
|
+
case 26:
|
|
202
255
|
// would assign default non-admin role, which could grant additional permissions than currently-defined non-admin role, should block
|
|
203
256
|
_a.sent();
|
|
204
257
|
// ensure that going to "Non-Admin" triggers a role change
|
|
205
258
|
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: ['Test'] }, { replaceObjectFields: true })];
|
|
206
|
-
case
|
|
259
|
+
case 27:
|
|
207
260
|
// ensure that going to "Non-Admin" triggers a role change
|
|
208
261
|
_a.sent();
|
|
209
262
|
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
|
|
210
|
-
case
|
|
263
|
+
case 28:
|
|
211
264
|
_a.sent();
|
|
212
265
|
return [4 /*yield*/, (0, testing_1.async_test)('non admin authenticated', sdkNonAdmin.test_authenticated, { expectedResult: 'Authenticated!' })
|
|
213
266
|
// reset nonAdmin role to a default non-admin
|
|
214
267
|
];
|
|
215
|
-
case
|
|
268
|
+
case 29:
|
|
216
269
|
_a.sent();
|
|
217
270
|
// reset nonAdmin role to a default non-admin
|
|
218
271
|
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: ['Non-Admin'] }, { replaceObjectFields: true })];
|
|
219
|
-
case
|
|
272
|
+
case 30:
|
|
220
273
|
// reset nonAdmin role to a default non-admin
|
|
221
274
|
_a.sent();
|
|
222
275
|
// should be unauthenticated due to role change
|
|
223
276
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
224
|
-
case
|
|
277
|
+
case 31:
|
|
225
278
|
// reset nonAdmin role to a default non-admin
|
|
226
279
|
// should be unauthenticated due to role change
|
|
227
280
|
_a.sent();
|
|
228
281
|
return [4 /*yield*/, (0, testing_1.async_test)('role change causes deauthentication', sdkNonAdmin.test_authenticated, handleAnyError)
|
|
229
282
|
// reauthenticate
|
|
230
283
|
];
|
|
231
|
-
case
|
|
284
|
+
case 32:
|
|
232
285
|
_a.sent();
|
|
233
286
|
// reauthenticate
|
|
234
287
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
|
|
235
|
-
case
|
|
288
|
+
case 33:
|
|
236
289
|
// reauthenticate
|
|
237
290
|
_a.sent();
|
|
238
291
|
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
|
|
239
292
|
// may do some stuff in background after returning
|
|
240
293
|
];
|
|
241
|
-
case
|
|
294
|
+
case 34:
|
|
242
295
|
_a.sent();
|
|
243
296
|
// may do some stuff in background after returning
|
|
244
297
|
return [4 /*yield*/, (0, testing_1.async_test)('reset_db', function () { return sdk.reset_db(); }, passOnVoid)];
|
|
245
|
-
case
|
|
298
|
+
case 35:
|
|
246
299
|
// may do some stuff in background after returning
|
|
247
300
|
_a.sent();
|
|
248
301
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
|
|
249
|
-
case
|
|
302
|
+
case 36:
|
|
250
303
|
_a.sent();
|
|
251
304
|
return [2 /*return*/];
|
|
252
305
|
}
|
|
@@ -441,64 +494,73 @@ var sub_organization_enduser_tests = function () { return __awaiter(void 0, void
|
|
|
441
494
|
return [4 /*yield*/, enduserSDK.register({ email: 'root@tellescope.com', password: password })];
|
|
442
495
|
case 1:
|
|
443
496
|
_d.sent();
|
|
444
|
-
return [4 /*yield*/,
|
|
497
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)]; // avoid rate limiting error
|
|
445
498
|
case 2:
|
|
499
|
+
_d.sent(); // avoid rate limiting error
|
|
500
|
+
return [4 /*yield*/, subEnduserSDK.register({ email: 'sub@tellescope.com', password: password })];
|
|
501
|
+
case 3:
|
|
446
502
|
_d.sent();
|
|
503
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)]; // avoid rate limiting error
|
|
504
|
+
case 4:
|
|
505
|
+
_d.sent(); // avoid rate limiting error
|
|
447
506
|
return [4 /*yield*/, enduserSDK.authenticate('root@tellescope.com', password)];
|
|
448
|
-
case
|
|
507
|
+
case 5:
|
|
449
508
|
_d.sent();
|
|
509
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)]; // avoid rate limiting error
|
|
510
|
+
case 6:
|
|
511
|
+
_d.sent(); // avoid rate limiting error
|
|
450
512
|
return [4 /*yield*/, subEnduserSDK.authenticate('sub@tellescope.com', password)];
|
|
451
|
-
case
|
|
513
|
+
case 7:
|
|
452
514
|
_d.sent();
|
|
453
515
|
(0, testing_1.assert)(!((_a = enduserSDK.userInfo.organizationIds) === null || _a === void 0 ? void 0 : _a.length), 'bad root organizationIds', 'root auth org ids');
|
|
454
516
|
(0, testing_1.assert)(((_b = subEnduserSDK.userInfo.organizationIds) === null || _b === void 0 ? void 0 : _b.length) === 1, 'bad sub organizationIds', 'sub auth org ids');
|
|
455
517
|
return [4 /*yield*/, enduserSDK.api.tickets.createOne({ title: 'root', enduserId: enduserSDK.userInfo.id })];
|
|
456
|
-
case
|
|
518
|
+
case 8:
|
|
457
519
|
rootTicket = _d.sent();
|
|
458
520
|
return [4 /*yield*/, (0, testing_1.async_test)("root get root", function () { return sdk.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
|
|
459
|
-
case
|
|
521
|
+
case 9:
|
|
460
522
|
_d.sent();
|
|
461
523
|
return [4 /*yield*/, (0, testing_1.async_test)("sub get root error", function () { return sdkSub.api.endusers.getOne(enduserSDK.userInfo.id); }, handleAnyError)];
|
|
462
|
-
case
|
|
524
|
+
case 10:
|
|
463
525
|
_d.sent();
|
|
464
526
|
return [4 /*yield*/, (0, testing_1.async_test)("root get sub", function () { return sdk.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
|
|
465
|
-
case
|
|
527
|
+
case 11:
|
|
466
528
|
_d.sent();
|
|
467
529
|
return [4 /*yield*/, (0, testing_1.async_test)("sub get sub", function () { return sdkSub.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
|
|
468
|
-
case
|
|
530
|
+
case 12:
|
|
469
531
|
_d.sent();
|
|
470
532
|
return [4 /*yield*/, (0, testing_1.async_test)("root get root ticket", function () { return sdk.api.tickets.getOne(rootTicket.id); }, passOnAnyResult)];
|
|
471
|
-
case
|
|
533
|
+
case 13:
|
|
472
534
|
_d.sent();
|
|
473
535
|
return [4 /*yield*/, (0, testing_1.async_test)("sub get root ticket error", function () { return sdkSub.api.tickets.getOne(rootTicket.id); }, handleAnyError)];
|
|
474
|
-
case
|
|
536
|
+
case 14:
|
|
475
537
|
_d.sent();
|
|
476
538
|
return [4 /*yield*/, sdk.api.endusers.updateOne(enduserSDK.userInfo.id, { sharedWithOrganizations: [(_c = sdkSub.userInfo.organizationIds) !== null && _c !== void 0 ? _c : []] })];
|
|
477
|
-
case
|
|
539
|
+
case 15:
|
|
478
540
|
_d.sent();
|
|
479
541
|
return [4 /*yield*/, enduserSDK.refresh_session()]; // ensure updated session includes new sharedWithOrganizations
|
|
480
|
-
case
|
|
542
|
+
case 16:
|
|
481
543
|
_d.sent(); // ensure updated session includes new sharedWithOrganizations
|
|
482
544
|
return [4 /*yield*/, enduserSDK.api.tickets.createOne({ title: 'root with shared', enduserId: enduserSDK.userInfo.id })];
|
|
483
|
-
case
|
|
545
|
+
case 17:
|
|
484
546
|
rootTicketAfterUpdate = _d.sent();
|
|
485
547
|
return [4 /*yield*/, (0, testing_1.async_test)("root get root", function () { return sdk.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
|
|
486
|
-
case
|
|
548
|
+
case 18:
|
|
487
549
|
_d.sent();
|
|
488
550
|
return [4 /*yield*/, (0, testing_1.async_test)("sub get root after update", function () { return sdkSub.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
|
|
489
|
-
case
|
|
551
|
+
case 19:
|
|
490
552
|
_d.sent();
|
|
491
553
|
return [4 /*yield*/, (0, testing_1.async_test)("root get sub", function () { return sdk.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
|
|
492
|
-
case
|
|
554
|
+
case 20:
|
|
493
555
|
_d.sent();
|
|
494
556
|
return [4 /*yield*/, (0, testing_1.async_test)("sub get sub", function () { return sdkSub.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
|
|
495
|
-
case
|
|
557
|
+
case 21:
|
|
496
558
|
_d.sent();
|
|
497
559
|
return [4 /*yield*/, (0, testing_1.async_test)("root get root ticket after update", function () { return sdk.api.tickets.getOne(rootTicketAfterUpdate.id); }, passOnAnyResult)];
|
|
498
|
-
case
|
|
560
|
+
case 22:
|
|
499
561
|
_d.sent();
|
|
500
562
|
return [4 /*yield*/, (0, testing_1.async_test)("sub get root ticket after update", function () { return sdkSub.api.tickets.getOne(rootTicketAfterUpdate.id); }, passOnAnyResult)];
|
|
501
|
-
case
|
|
563
|
+
case 23:
|
|
502
564
|
_d.sent();
|
|
503
565
|
return [4 /*yield*/, Promise.all([
|
|
504
566
|
sdk.api.endusers.deleteOne(enduserSDK.userInfo.id),
|
|
@@ -506,7 +568,7 @@ var sub_organization_enduser_tests = function () { return __awaiter(void 0, void
|
|
|
506
568
|
sdk.api.tickets.deleteOne(rootTicket.id),
|
|
507
569
|
sdk.api.tickets.deleteOne(rootTicketAfterUpdate.id),
|
|
508
570
|
])];
|
|
509
|
-
case
|
|
571
|
+
case 24:
|
|
510
572
|
_d.sent();
|
|
511
573
|
return [2 /*return*/];
|
|
512
574
|
}
|
|
@@ -4918,7 +4980,7 @@ var filter_by_date_tests = function () { return __awaiter(void 0, void 0, void 0
|
|
|
4918
4980
|
}); };
|
|
4919
4981
|
exports.filter_by_date_tests = filter_by_date_tests;
|
|
4920
4982
|
var self_serve_appointment_booking_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
4921
|
-
var e1, e2, event15min, event30min, dayOfWeekStartingSundayIndexedByZero, nySlots, bookedAppointment, conflict, multiSlots, bookedMultiAppointment;
|
|
4983
|
+
var e1, e2, e3, event15min, event30min, event30minGroup, dayOfWeekStartingSundayIndexedByZero, enduserSDK2, enduserSDK3, nySlots, bookedAppointment, conflict, groupEvent, multiSlots, bookedMultiAppointment;
|
|
4922
4984
|
return __generator(this, function (_a) {
|
|
4923
4985
|
switch (_a.label) {
|
|
4924
4986
|
case 0:
|
|
@@ -4929,28 +4991,42 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
4929
4991
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'sebass+ca@tellescope.com', state: 'CA' })];
|
|
4930
4992
|
case 2:
|
|
4931
4993
|
e2 = _a.sent();
|
|
4932
|
-
return [4 /*yield*/, sdk.api.endusers.
|
|
4994
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'sebass+3@tellescope.com' })];
|
|
4933
4995
|
case 3:
|
|
4996
|
+
e3 = _a.sent();
|
|
4997
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: e1.id, password: password })];
|
|
4998
|
+
case 4:
|
|
4934
4999
|
_a.sent();
|
|
4935
5000
|
return [4 /*yield*/, sdk.api.endusers.set_password({ id: e2.id, password: password })];
|
|
4936
|
-
case
|
|
5001
|
+
case 5:
|
|
5002
|
+
_a.sent();
|
|
5003
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: e3.id, password: password })];
|
|
5004
|
+
case 6:
|
|
4937
5005
|
_a.sent();
|
|
4938
5006
|
return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
|
|
4939
5007
|
title: 'test 2', durationInMinutes: 15,
|
|
4940
5008
|
confirmationEmailDisabled: true,
|
|
4941
5009
|
confirmationSMSDisabled: true,
|
|
4942
5010
|
})];
|
|
4943
|
-
case
|
|
5011
|
+
case 7:
|
|
4944
5012
|
event15min = _a.sent();
|
|
4945
5013
|
return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
|
|
4946
5014
|
title: 'test 1', durationInMinutes: 30,
|
|
4947
5015
|
confirmationEmailDisabled: true,
|
|
4948
5016
|
confirmationSMSDisabled: true,
|
|
5017
|
+
})];
|
|
5018
|
+
case 8:
|
|
5019
|
+
event30min = _a.sent();
|
|
5020
|
+
return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
|
|
5021
|
+
title: 'test group', durationInMinutes: 30,
|
|
5022
|
+
confirmationEmailDisabled: true,
|
|
5023
|
+
confirmationSMSDisabled: true,
|
|
5024
|
+
enduserAttendeeLimit: 2,
|
|
4949
5025
|
})
|
|
4950
5026
|
// ensure it doesn't match current day, to avoid errors on testing
|
|
4951
5027
|
];
|
|
4952
|
-
case
|
|
4953
|
-
|
|
5028
|
+
case 9:
|
|
5029
|
+
event30minGroup = _a.sent();
|
|
4954
5030
|
dayOfWeekStartingSundayIndexedByZero = (new Date().getDay() + 1) % 7;
|
|
4955
5031
|
return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
|
|
4956
5032
|
weeklyAvailabilities: [
|
|
@@ -4970,7 +5046,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
4970
5046
|
}, {
|
|
4971
5047
|
replaceObjectFields: true,
|
|
4972
5048
|
})];
|
|
4973
|
-
case
|
|
5049
|
+
case 10:
|
|
4974
5050
|
_a.sent();
|
|
4975
5051
|
return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
|
|
4976
5052
|
weeklyAvailabilities: [
|
|
@@ -4984,14 +5060,22 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
4984
5060
|
timezone: 'America/Los_Angeles',
|
|
4985
5061
|
}, {
|
|
4986
5062
|
replaceObjectFields: true,
|
|
4987
|
-
})
|
|
5063
|
+
})];
|
|
5064
|
+
case 11:
|
|
5065
|
+
_a.sent();
|
|
5066
|
+
enduserSDK2 = new sdk_1.EnduserSession({ host: host, businessId: businessId });
|
|
5067
|
+
return [4 /*yield*/, enduserSDK2.authenticate('sebass+ca@tellescope.com', password).catch(console.error)];
|
|
5068
|
+
case 12:
|
|
5069
|
+
_a.sent();
|
|
5070
|
+
enduserSDK3 = new sdk_1.EnduserSession({ host: host, businessId: businessId });
|
|
5071
|
+
return [4 /*yield*/, enduserSDK3.authenticate('sebass+3@tellescope.com', password).catch(console.error)
|
|
4988
5072
|
// NY Enduser Tests
|
|
4989
5073
|
];
|
|
4990
|
-
case
|
|
5074
|
+
case 13:
|
|
4991
5075
|
_a.sent();
|
|
4992
5076
|
// NY Enduser Tests
|
|
4993
5077
|
return [4 /*yield*/, enduserSDK.authenticate('sebass+ny@tellescope.com', password).catch(console.error)];
|
|
4994
|
-
case
|
|
5078
|
+
case 14:
|
|
4995
5079
|
// NY Enduser Tests
|
|
4996
5080
|
_a.sent();
|
|
4997
5081
|
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
@@ -5000,7 +5084,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5000
5084
|
to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
5001
5085
|
restrictedByState: true,
|
|
5002
5086
|
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
|
|
5003
|
-
case
|
|
5087
|
+
case 15:
|
|
5004
5088
|
_a.sent();
|
|
5005
5089
|
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 15 min interval', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5006
5090
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5009,7 +5093,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5009
5093
|
restrictedByState: true,
|
|
5010
5094
|
intervalInMinutes: 15,
|
|
5011
5095
|
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
|
|
5012
|
-
case
|
|
5096
|
+
case 16:
|
|
5013
5097
|
_a.sent();
|
|
5014
5098
|
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 10 min interval', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5015
5099
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5018,7 +5102,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5018
5102
|
restrictedByState: true,
|
|
5019
5103
|
intervalInMinutes: 10,
|
|
5020
5104
|
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 4; } })];
|
|
5021
|
-
case
|
|
5105
|
+
case 17:
|
|
5022
5106
|
_a.sent();
|
|
5023
5107
|
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for no state restrictions', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5024
5108
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5037,7 +5121,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5037
5121
|
}
|
|
5038
5122
|
return true;
|
|
5039
5123
|
} })];
|
|
5040
|
-
case
|
|
5124
|
+
case 18:
|
|
5041
5125
|
_a.sent();
|
|
5042
5126
|
return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5043
5127
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5045,7 +5129,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5045
5129
|
to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
5046
5130
|
restrictedByState: true,
|
|
5047
5131
|
})];
|
|
5048
|
-
case
|
|
5132
|
+
case 19:
|
|
5049
5133
|
nySlots = _a.sent();
|
|
5050
5134
|
return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
|
|
5051
5135
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5056,7 +5140,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5056
5140
|
fields: "Test",
|
|
5057
5141
|
}
|
|
5058
5142
|
})];
|
|
5059
|
-
case
|
|
5143
|
+
case 20:
|
|
5060
5144
|
bookedAppointment = (_a.sent()).createdEvent;
|
|
5061
5145
|
(0, testing_1.assert)(bookedAppointment.attendees.length === 2, 'did not get 2 attendees', '2 attendees fo non-multi-event');
|
|
5062
5146
|
return [4 /*yield*/, (0, testing_1.async_test)('double-booking prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
|
|
@@ -5064,7 +5148,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5064
5148
|
startTime: new Date(nySlots.availabilityBlocks[0].startTimeInMS),
|
|
5065
5149
|
userId: nySlots.availabilityBlocks[0].userId,
|
|
5066
5150
|
}); }, handleAnyError)];
|
|
5067
|
-
case
|
|
5151
|
+
case 21:
|
|
5068
5152
|
_a.sent();
|
|
5069
5153
|
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 1 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5070
5154
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5076,14 +5160,14 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5076
5160
|
&& r.availabilityBlocks[0].startTimeInMS === nySlots.availabilityBlocks[1].startTimeInMS;
|
|
5077
5161
|
} // the first slot of nySlots is booked
|
|
5078
5162
|
})];
|
|
5079
|
-
case
|
|
5163
|
+
case 22:
|
|
5080
5164
|
_a.sent();
|
|
5081
5165
|
return [4 /*yield*/, sdk.api.calendar_events.createOne({
|
|
5082
5166
|
title: 'conflict',
|
|
5083
5167
|
startTimeInMS: nySlots.availabilityBlocks[1].startTimeInMS,
|
|
5084
5168
|
durationInMinutes: nySlots.availabilityBlocks[1].durationInMinutes,
|
|
5085
5169
|
})];
|
|
5086
|
-
case
|
|
5170
|
+
case 23:
|
|
5087
5171
|
conflict = _a.sent();
|
|
5088
5172
|
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 2 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5089
5173
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5091,16 +5175,82 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5091
5175
|
to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
5092
5176
|
restrictedByState: true,
|
|
5093
5177
|
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 0; } })];
|
|
5094
|
-
case
|
|
5178
|
+
case 24:
|
|
5095
5179
|
_a.sent();
|
|
5096
5180
|
return [4 /*yield*/, (0, testing_1.async_test)('booking against conflict prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
|
|
5097
5181
|
calendarEventTemplateId: event30min.id,
|
|
5098
5182
|
startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
|
|
5099
5183
|
userId: nySlots.availabilityBlocks[1].userId,
|
|
5100
5184
|
}); }, handleAnyError)
|
|
5185
|
+
// test group bookings
|
|
5186
|
+
];
|
|
5187
|
+
case 25:
|
|
5188
|
+
_a.sent();
|
|
5189
|
+
// test group bookings
|
|
5190
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(conflict.id, { enduserAttendeeLimit: 2 })];
|
|
5191
|
+
case 26:
|
|
5192
|
+
// test group bookings
|
|
5193
|
+
_a.sent();
|
|
5194
|
+
return [4 /*yield*/, (0, testing_1.async_test)('[group booking] different event type conflict as group still blocks availability', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5195
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5196
|
+
from: new Date(Date.now() - 10000),
|
|
5197
|
+
to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
5198
|
+
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
|
|
5199
|
+
case 27:
|
|
5200
|
+
_a.sent();
|
|
5201
|
+
return [4 /*yield*/, sdk.api.calendar_events.deleteOne(conflict.id)];
|
|
5202
|
+
case 28:
|
|
5203
|
+
_a.sent();
|
|
5204
|
+
return [4 /*yield*/, (0, testing_1.async_test)('[group booking] availability', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5205
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5206
|
+
from: new Date(Date.now() - 10000),
|
|
5207
|
+
to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
5208
|
+
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
|
|
5209
|
+
case 29:
|
|
5210
|
+
_a.sent();
|
|
5211
|
+
return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
|
|
5212
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5213
|
+
startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
|
|
5214
|
+
userId: nySlots.availabilityBlocks[1].userId,
|
|
5215
|
+
})];
|
|
5216
|
+
case 30:
|
|
5217
|
+
groupEvent = (_a.sent()).createdEvent;
|
|
5218
|
+
return [4 /*yield*/, (0, testing_1.async_test)('[group booking] more booking allowed', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5219
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5220
|
+
from: new Date(Date.now() - 10000),
|
|
5221
|
+
to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
5222
|
+
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
|
|
5223
|
+
case 31:
|
|
5224
|
+
_a.sent();
|
|
5225
|
+
return [4 /*yield*/, (0, testing_1.async_test)('[group booking] prevent double-book same-enduser', function () { return enduserSDK.api.calendar_events.book_appointment({
|
|
5226
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5227
|
+
startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
|
|
5228
|
+
userId: nySlots.availabilityBlocks[1].userId,
|
|
5229
|
+
}); }, handleAnyError)];
|
|
5230
|
+
case 32:
|
|
5231
|
+
_a.sent();
|
|
5232
|
+
return [4 /*yield*/, (0, testing_1.async_test)('[group booking] allow other enduser to book', function () { return enduserSDK2.api.calendar_events.book_appointment({
|
|
5233
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5234
|
+
startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
|
|
5235
|
+
userId: nySlots.availabilityBlocks[1].userId,
|
|
5236
|
+
}); }, passOnAnyResult)];
|
|
5237
|
+
case 33:
|
|
5238
|
+
_a.sent();
|
|
5239
|
+
return [4 /*yield*/, (0, testing_1.async_test)('[group booking] no more booking allowed', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5240
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5241
|
+
from: new Date(Date.now() - 10000),
|
|
5242
|
+
to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
5243
|
+
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
|
|
5244
|
+
case 34:
|
|
5245
|
+
_a.sent();
|
|
5246
|
+
return [4 /*yield*/, (0, testing_1.async_test)('[group booking] other enduser cant book over capacity', function () { return enduserSDK3.api.calendar_events.book_appointment({
|
|
5247
|
+
calendarEventTemplateId: event30minGroup.id,
|
|
5248
|
+
startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
|
|
5249
|
+
userId: nySlots.availabilityBlocks[1].userId,
|
|
5250
|
+
}); }, handleAnyError)
|
|
5101
5251
|
// test 'multi' flag for booking multiple providers for a given patient
|
|
5102
5252
|
];
|
|
5103
|
-
case
|
|
5253
|
+
case 35:
|
|
5104
5254
|
_a.sent();
|
|
5105
5255
|
// test 'multi' flag for booking multiple providers for a given patient
|
|
5106
5256
|
return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
|
|
@@ -5115,7 +5265,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5115
5265
|
}, {
|
|
5116
5266
|
replaceObjectFields: true,
|
|
5117
5267
|
})];
|
|
5118
|
-
case
|
|
5268
|
+
case 36:
|
|
5119
5269
|
// test 'multi' flag for booking multiple providers for a given patient
|
|
5120
5270
|
_a.sent();
|
|
5121
5271
|
return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
|
|
@@ -5130,7 +5280,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5130
5280
|
}, {
|
|
5131
5281
|
replaceObjectFields: true,
|
|
5132
5282
|
})];
|
|
5133
|
-
case
|
|
5283
|
+
case 37:
|
|
5134
5284
|
_a.sent();
|
|
5135
5285
|
return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
|
|
5136
5286
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5139,7 +5289,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5139
5289
|
multi: true,
|
|
5140
5290
|
userIds: [sdk.userInfo.id, sdkNonAdmin.userInfo.id]
|
|
5141
5291
|
})];
|
|
5142
|
-
case
|
|
5292
|
+
case 38:
|
|
5143
5293
|
multiSlots = _a.sent();
|
|
5144
5294
|
(0, testing_1.assert)(multiSlots.availabilityBlocks.length === 2, 'expected 2 slots', 'multi slots are intersection of availability');
|
|
5145
5295
|
return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
|
|
@@ -5148,7 +5298,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5148
5298
|
userId: sdk.userInfo.id,
|
|
5149
5299
|
otherUserIds: [sdkNonAdmin.userInfo.id]
|
|
5150
5300
|
})];
|
|
5151
|
-
case
|
|
5301
|
+
case 39:
|
|
5152
5302
|
bookedMultiAppointment = (_a.sent()).createdEvent;
|
|
5153
5303
|
(0, testing_1.assert)((bookedMultiAppointment.attendees.length === 3
|
|
5154
5304
|
&& bookedMultiAppointment.attendees.filter(function (a) { return a.type === 'enduser'; }).length === 1), 'did not get valid attendees', 'Multi attendees fo multi-event');
|
|
@@ -5157,14 +5307,14 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5157
5307
|
startTime: new Date(multiSlots.availabilityBlocks[0].startTimeInMS),
|
|
5158
5308
|
userId: sdk.userInfo.id,
|
|
5159
5309
|
}); }, handleAnyError)];
|
|
5160
|
-
case
|
|
5310
|
+
case 40:
|
|
5161
5311
|
_a.sent();
|
|
5162
5312
|
return [4 /*yield*/, (0, testing_1.async_test)('booking against conflict prevented other user', function () { return enduserSDK.api.calendar_events.book_appointment({
|
|
5163
5313
|
calendarEventTemplateId: event30min.id,
|
|
5164
5314
|
startTime: new Date(multiSlots.availabilityBlocks[0].startTimeInMS),
|
|
5165
5315
|
userId: sdkNonAdmin.userInfo.id,
|
|
5166
5316
|
}); }, handleAnyError)];
|
|
5167
|
-
case
|
|
5317
|
+
case 41:
|
|
5168
5318
|
_a.sent();
|
|
5169
5319
|
return [4 /*yield*/, (0, testing_1.async_test)('booking against conflict prevented 2 users', function () { return enduserSDK.api.calendar_events.book_appointment({
|
|
5170
5320
|
calendarEventTemplateId: event30min.id,
|
|
@@ -5172,18 +5322,20 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
|
|
|
5172
5322
|
userId: sdk.userInfo.id,
|
|
5173
5323
|
otherUserIds: [sdkNonAdmin.userInfo.id],
|
|
5174
5324
|
}); }, handleAnyError)];
|
|
5175
|
-
case
|
|
5325
|
+
case 42:
|
|
5176
5326
|
_a.sent();
|
|
5177
5327
|
return [4 /*yield*/, Promise.all([
|
|
5178
5328
|
sdk.api.endusers.deleteOne(e1.id),
|
|
5179
5329
|
sdk.api.endusers.deleteOne(e2.id),
|
|
5330
|
+
sdk.api.endusers.deleteOne(e3.id),
|
|
5180
5331
|
sdk.api.calendar_event_templates.deleteOne(event30min.id),
|
|
5332
|
+
sdk.api.calendar_event_templates.deleteOne(event30minGroup.id),
|
|
5181
5333
|
sdk.api.calendar_event_templates.deleteOne(event15min.id),
|
|
5182
5334
|
sdk.api.calendar_events.deleteOne(bookedAppointment.id),
|
|
5183
|
-
sdk.api.calendar_events.deleteOne(conflict.id),
|
|
5184
5335
|
sdk.api.calendar_events.deleteOne(bookedMultiAppointment.id),
|
|
5336
|
+
sdk.api.calendar_events.deleteOne(groupEvent.id),
|
|
5185
5337
|
])];
|
|
5186
|
-
case
|
|
5338
|
+
case 43:
|
|
5187
5339
|
_a.sent();
|
|
5188
5340
|
return [2 /*return*/];
|
|
5189
5341
|
}
|
|
@@ -6948,6 +7100,7 @@ var validate_schema = function () {
|
|
|
6948
7100
|
endpoints.add(path);
|
|
6949
7101
|
}
|
|
6950
7102
|
}
|
|
7103
|
+
console.log("Schema validated");
|
|
6951
7104
|
};
|
|
6952
7105
|
var test_weighted_round_robin = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
6953
7106
|
var testUsers, userIds, testAssignments, run_assignment_simulation;
|
|
@@ -7568,7 +7721,7 @@ var ticket_reminder_tests = function () { return __awaiter(void 0, void 0, void
|
|
|
7568
7721
|
return (((_b = (_a = t.reminders) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.didRemind) === true
|
|
7569
7722
|
&& t.nextReminderInMS !== -1
|
|
7570
7723
|
&& ((_d = (_c = t.reminders) === null || _c === void 0 ? void 0 : _c.filter(function (r) { return r.didRemind; })) === null || _d === void 0 ? void 0 : _d.length) === 1);
|
|
7571
|
-
},
|
|
7724
|
+
}, 10, 500); }, passOnAnyResult)];
|
|
7572
7725
|
case 13:
|
|
7573
7726
|
_a.sent();
|
|
7574
7727
|
return [4 /*yield*/, (0, testing_1.async_test)("Delayed reminder not processed yet", function () { return sdk.api.tickets.getOne(tToRemind.id); }, {
|
|
@@ -7677,11 +7830,13 @@ var test_send_with_template = function () { return __awaiter(void 0, void 0, voi
|
|
|
7677
7830
|
});
|
|
7678
7831
|
}); };
|
|
7679
7832
|
var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
7680
|
-
var existing, u, authToken, createdUserSDK;
|
|
7833
|
+
var existing, u, authToken, createdUserSDK, enduser, enduserAuthToken, enduserSDK;
|
|
7681
7834
|
var _a;
|
|
7682
7835
|
return __generator(this, function (_b) {
|
|
7683
7836
|
switch (_b.label) {
|
|
7684
|
-
case 0:
|
|
7837
|
+
case 0:
|
|
7838
|
+
(0, testing_1.log_header)("Delete user tests");
|
|
7839
|
+
return [4 /*yield*/, sdk.api.users.getSome({ filter: { email: 'deleteme@tellescope.com' } })];
|
|
7685
7840
|
case 1:
|
|
7686
7841
|
existing = _b.sent();
|
|
7687
7842
|
if (!(((_a = existing[0]) === null || _a === void 0 ? void 0 : _a.email) === 'deleteme@tellescope.com')) return [3 /*break*/, 3];
|
|
@@ -7707,29 +7862,409 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
|
|
|
7707
7862
|
_b.sent();
|
|
7708
7863
|
return [4 /*yield*/, (0, testing_1.async_test)("De-authenticated after deletion", createdUserSDK.test_authenticated, handleAnyError)];
|
|
7709
7864
|
case 9:
|
|
7865
|
+
_b.sent();
|
|
7866
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
7867
|
+
case 10:
|
|
7868
|
+
enduser = _b.sent();
|
|
7869
|
+
return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: enduser.id })];
|
|
7870
|
+
case 11:
|
|
7871
|
+
enduserAuthToken = (_b.sent()).authToken;
|
|
7872
|
+
enduserSDK = new sdk_1.EnduserSession({ host: host, businessId: businessId, authToken: enduserAuthToken });
|
|
7873
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser Authenticated", function () { return enduserSDK.api.endusers.getSome(); }, passOnAnyResult)];
|
|
7874
|
+
case 12:
|
|
7875
|
+
_b.sent();
|
|
7876
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
|
|
7877
|
+
case 13:
|
|
7878
|
+
_b.sent();
|
|
7879
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
|
|
7880
|
+
case 14:
|
|
7881
|
+
_b.sent();
|
|
7882
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser De-authenticated after deletion", function () { return enduserSDK.api.endusers.getSome(); }, handleAnyError)];
|
|
7883
|
+
case 15:
|
|
7710
7884
|
_b.sent();
|
|
7711
7885
|
return [2 /*return*/];
|
|
7712
7886
|
}
|
|
7713
7887
|
});
|
|
7714
7888
|
}); };
|
|
7715
|
-
|
|
7716
|
-
|
|
7717
|
-
var
|
|
7718
|
-
return __generator(this, function (
|
|
7719
|
-
switch (
|
|
7889
|
+
var sdkMfaApiKeyUserId = '6525a43e1e75f0350d62afc4';
|
|
7890
|
+
var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
7891
|
+
var nonAdminId;
|
|
7892
|
+
return __generator(this, function (_a) {
|
|
7893
|
+
switch (_a.label) {
|
|
7720
7894
|
case 0:
|
|
7721
|
-
(0, testing_1.log_header)("
|
|
7722
|
-
return [4 /*yield*/, (0, testing_1.async_test)("
|
|
7895
|
+
(0, testing_1.log_header)("Lockout tests");
|
|
7896
|
+
return [4 /*yield*/, (0, testing_1.async_test)("API Key is authenticated", sdkMfaApiKey.test_authenticated, passOnAnyResult)];
|
|
7723
7897
|
case 1:
|
|
7724
|
-
|
|
7725
|
-
|
|
7898
|
+
_a.sent();
|
|
7899
|
+
return [4 /*yield*/, (0, testing_1.async_test)("API Key lock to future date", function () { return sdk.api.users.updateOne(sdkMfaApiKeyUserId, { lockedOutUntil: 0 }); }, passOnAnyResult)];
|
|
7726
7900
|
case 2:
|
|
7727
|
-
|
|
7728
|
-
(0,
|
|
7729
|
-
return [4 /*yield*/, test_weighted_round_robin()];
|
|
7901
|
+
_a.sent();
|
|
7902
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
|
|
7730
7903
|
case 3:
|
|
7731
|
-
|
|
7732
|
-
return [4 /*yield*/,
|
|
7904
|
+
_a.sent();
|
|
7905
|
+
return [4 /*yield*/, (0, testing_1.async_test)("API Key is de-authenticated when locked", sdkMfaApiKey.test_authenticated, handleAnyError)];
|
|
7906
|
+
case 4:
|
|
7907
|
+
_a.sent();
|
|
7908
|
+
return [4 /*yield*/, (0, testing_1.async_test)("API Key unlock to -1", function () { return sdk.api.users.updateOne(sdkMfaApiKeyUserId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
|
|
7909
|
+
case 5:
|
|
7910
|
+
_a.sent();
|
|
7911
|
+
return [4 /*yield*/, (0, testing_1.async_test)("API Key is authenticated", sdkMfaApiKey.test_authenticated, passOnAnyResult)];
|
|
7912
|
+
case 6:
|
|
7913
|
+
_a.sent();
|
|
7914
|
+
nonAdminId = sdkNonAdmin.userInfo.id;
|
|
7915
|
+
return [4 /*yield*/, (0, testing_1.async_test)("users cannot update own lock status", function () { return sdk.api.users.updateOne(sdk.userInfo.id, { lockedOutUntil: -1 }); }, handleAnyError)];
|
|
7916
|
+
case 7:
|
|
7917
|
+
_a.sent();
|
|
7918
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin can't lock out others", function () { return sdkNonAdmin.api.users.updateOne(sdk.userInfo.id, { lockedOutUntil: Date.now() }); }, handleAnyError)];
|
|
7919
|
+
case 8:
|
|
7920
|
+
_a.sent();
|
|
7921
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin is authenticated", sdkNonAdmin.test_authenticated, passOnAnyResult)];
|
|
7922
|
+
case 9:
|
|
7923
|
+
_a.sent();
|
|
7924
|
+
return [4 /*yield*/, (0, testing_1.async_test)("admin unlock to -1", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
|
|
7925
|
+
case 10:
|
|
7926
|
+
_a.sent();
|
|
7927
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin is authenticated (-1)", sdkNonAdmin.test_authenticated, passOnAnyResult)];
|
|
7928
|
+
case 11:
|
|
7929
|
+
_a.sent();
|
|
7930
|
+
return [4 /*yield*/, (0, testing_1.async_test)("admin lock to past date", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: Date.now() - 1000 }); }, passOnAnyResult)];
|
|
7931
|
+
case 12:
|
|
7932
|
+
_a.sent();
|
|
7933
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin is authenticated (past date)", sdkNonAdmin.test_authenticated, passOnAnyResult)];
|
|
7934
|
+
case 13:
|
|
7935
|
+
_a.sent();
|
|
7936
|
+
return [4 /*yield*/, (0, testing_1.async_test)("admin lock to 0 (indefinite)", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: 0 }); }, passOnAnyResult)];
|
|
7937
|
+
case 14:
|
|
7938
|
+
_a.sent();
|
|
7939
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
|
|
7940
|
+
case 15:
|
|
7941
|
+
_a.sent();
|
|
7942
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin is de-authenticated when locked to 0", sdkNonAdmin.test_authenticated, handleAnyError)];
|
|
7943
|
+
case 16:
|
|
7944
|
+
_a.sent();
|
|
7945
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin can't authenciate when locked to 0", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, handleAnyError)];
|
|
7946
|
+
case 17:
|
|
7947
|
+
_a.sent();
|
|
7948
|
+
return [4 /*yield*/, (0, testing_1.async_test)("admin unlock to -1", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
|
|
7949
|
+
case 18:
|
|
7950
|
+
_a.sent();
|
|
7951
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin can re authenciate when locked to 0", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, passOnAnyResult)];
|
|
7952
|
+
case 19:
|
|
7953
|
+
_a.sent();
|
|
7954
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin is authenticated", sdkNonAdmin.test_authenticated, passOnAnyResult)];
|
|
7955
|
+
case 20:
|
|
7956
|
+
_a.sent();
|
|
7957
|
+
return [4 /*yield*/, (0, testing_1.async_test)("admin lock to future date", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: Date.now() + 10000 }); }, passOnAnyResult)];
|
|
7958
|
+
case 21:
|
|
7959
|
+
_a.sent();
|
|
7960
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
|
|
7961
|
+
case 22:
|
|
7962
|
+
_a.sent();
|
|
7963
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin is de-authenticated when locked to future date", sdkNonAdmin.test_authenticated, handleAnyError)];
|
|
7964
|
+
case 23:
|
|
7965
|
+
_a.sent();
|
|
7966
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin can't authenciate when locked to future date", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, handleAnyError)];
|
|
7967
|
+
case 24:
|
|
7968
|
+
_a.sent();
|
|
7969
|
+
return [4 /*yield*/, (0, testing_1.async_test)("admin unlock to -1", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
|
|
7970
|
+
case 25:
|
|
7971
|
+
_a.sent();
|
|
7972
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin can re authenciate when locked to future date", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, passOnAnyResult)];
|
|
7973
|
+
case 26:
|
|
7974
|
+
_a.sent();
|
|
7975
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin is authenticated", sdkNonAdmin.test_authenticated, passOnAnyResult)];
|
|
7976
|
+
case 27:
|
|
7977
|
+
_a.sent();
|
|
7978
|
+
return [2 /*return*/];
|
|
7979
|
+
}
|
|
7980
|
+
});
|
|
7981
|
+
}); };
|
|
7982
|
+
var sync_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
7983
|
+
var from, e, t, e2;
|
|
7984
|
+
return __generator(this, function (_a) {
|
|
7985
|
+
switch (_a.label) {
|
|
7986
|
+
case 0:
|
|
7987
|
+
(0, testing_1.log_header)("Data Sync");
|
|
7988
|
+
from = new Date();
|
|
7989
|
+
return [4 /*yield*/, (0, testing_1.async_test)("No new records, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
|
|
7990
|
+
var results = _a.results;
|
|
7991
|
+
return results.length === 0;
|
|
7992
|
+
} })];
|
|
7993
|
+
case 1:
|
|
7994
|
+
_a.sent();
|
|
7995
|
+
return [4 /*yield*/, (0, testing_1.async_test)("No new records, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
7996
|
+
var results = _a.results;
|
|
7997
|
+
return results.length === 0;
|
|
7998
|
+
} })];
|
|
7999
|
+
case 2:
|
|
8000
|
+
_a.sent();
|
|
8001
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
8002
|
+
case 3:
|
|
8003
|
+
e = _a.sent();
|
|
8004
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8005
|
+
case 4:
|
|
8006
|
+
_a.sent();
|
|
8007
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser create, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
|
|
8008
|
+
var results = _a.results;
|
|
8009
|
+
return (results.length === 1
|
|
8010
|
+
&& results[0].modelName === 'endusers'
|
|
8011
|
+
&& results[0].recordId === e.id
|
|
8012
|
+
&& results[0].data.includes(e.id)
|
|
8013
|
+
&& JSON.parse(results[0].data) // tests no error throwing
|
|
8014
|
+
);
|
|
8015
|
+
} })];
|
|
8016
|
+
case 5:
|
|
8017
|
+
_a.sent();
|
|
8018
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser create, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8019
|
+
var results = _a.results;
|
|
8020
|
+
return results.length === 0;
|
|
8021
|
+
} })];
|
|
8022
|
+
case 6:
|
|
8023
|
+
_a.sent();
|
|
8024
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser create, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
|
|
8025
|
+
var results = _a.results;
|
|
8026
|
+
return results.length === 0;
|
|
8027
|
+
} })];
|
|
8028
|
+
case 7:
|
|
8029
|
+
_a.sent();
|
|
8030
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { fname: "UPDATE_TEST" })];
|
|
8031
|
+
case 8:
|
|
8032
|
+
_a.sent();
|
|
8033
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8034
|
+
case 9:
|
|
8035
|
+
_a.sent();
|
|
8036
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser update, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
|
|
8037
|
+
var results = _a.results;
|
|
8038
|
+
return (results.length === 1
|
|
8039
|
+
&& results[0].modelName === 'endusers'
|
|
8040
|
+
&& results[0].recordId === e.id
|
|
8041
|
+
&& results[0].data.includes("UPDATE_TEST"));
|
|
8042
|
+
} })];
|
|
8043
|
+
case 10:
|
|
8044
|
+
_a.sent();
|
|
8045
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser update, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8046
|
+
var results = _a.results;
|
|
8047
|
+
return results.length === 0;
|
|
8048
|
+
} })];
|
|
8049
|
+
case 11:
|
|
8050
|
+
_a.sent();
|
|
8051
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser update, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
|
|
8052
|
+
var results = _a.results;
|
|
8053
|
+
return results.length === 0;
|
|
8054
|
+
} })];
|
|
8055
|
+
case 12:
|
|
8056
|
+
_a.sent();
|
|
8057
|
+
return [4 /*yield*/, sdk.api.tickets.createOne({ title: 'access test' })];
|
|
8058
|
+
case 13:
|
|
8059
|
+
t = _a.sent();
|
|
8060
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8061
|
+
case 14:
|
|
8062
|
+
_a.sent();
|
|
8063
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Non-admin can't access ticket", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8064
|
+
var results = _a.results;
|
|
8065
|
+
return results.length === 0;
|
|
8066
|
+
} })
|
|
8067
|
+
// creates a user notification which increments count/index
|
|
8068
|
+
];
|
|
8069
|
+
case 15:
|
|
8070
|
+
_a.sent();
|
|
8071
|
+
// creates a user notification which increments count/index
|
|
8072
|
+
sdk.api.tickets.updateOne(t.id, { owner: sdkNonAdmin.userInfo.id });
|
|
8073
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8074
|
+
case 16:
|
|
8075
|
+
_a.sent();
|
|
8076
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Non-admin can access tickets on assignment", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8077
|
+
var results = _a.results;
|
|
8078
|
+
return results.length === 2;
|
|
8079
|
+
} })];
|
|
8080
|
+
case 17:
|
|
8081
|
+
_a.sent();
|
|
8082
|
+
sdk.api.tickets.updateOne(t.id, { owner: '' });
|
|
8083
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8084
|
+
case 18:
|
|
8085
|
+
_a.sent();
|
|
8086
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Non-admin can't access tickets on unassignment", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8087
|
+
var results = _a.results;
|
|
8088
|
+
return results.length === 1;
|
|
8089
|
+
} })];
|
|
8090
|
+
case 19:
|
|
8091
|
+
_a.sent();
|
|
8092
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { assignedTo: [sdkNonAdmin.userInfo.id] }, { replaceObjectFields: true })];
|
|
8093
|
+
case 20:
|
|
8094
|
+
_a.sent();
|
|
8095
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8096
|
+
case 21:
|
|
8097
|
+
_a.sent();
|
|
8098
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser update non-admin assignment, can access", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8099
|
+
var results = _a.results;
|
|
8100
|
+
return results.length === 2;
|
|
8101
|
+
} })];
|
|
8102
|
+
case 22:
|
|
8103
|
+
_a.sent();
|
|
8104
|
+
sdk.api.tickets.updateOne(t.id, { owner: '', enduserId: e.id });
|
|
8105
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8106
|
+
case 23:
|
|
8107
|
+
_a.sent();
|
|
8108
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Non-admin can access ticket (and enduser) after enduser assignment", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8109
|
+
var results = _a.results;
|
|
8110
|
+
return results.length === 3;
|
|
8111
|
+
} })];
|
|
8112
|
+
case 24:
|
|
8113
|
+
_a.sent();
|
|
8114
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { assignedTo: [] }, { replaceObjectFields: true })];
|
|
8115
|
+
case 25:
|
|
8116
|
+
_a.sent();
|
|
8117
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8118
|
+
case 26:
|
|
8119
|
+
_a.sent();
|
|
8120
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser update non-admin assignment, revoked access to enduser and ticket", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8121
|
+
var results = _a.results;
|
|
8122
|
+
return results.length === 1;
|
|
8123
|
+
} })
|
|
8124
|
+
// enduser, ticket, and ticket assignment user_notification created
|
|
8125
|
+
];
|
|
8126
|
+
case 27:
|
|
8127
|
+
_a.sent();
|
|
8128
|
+
// enduser, ticket, and ticket assignment user_notification created
|
|
8129
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(e.id)];
|
|
8130
|
+
case 28:
|
|
8131
|
+
// enduser, ticket, and ticket assignment user_notification created
|
|
8132
|
+
_a.sent();
|
|
8133
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8134
|
+
case 29:
|
|
8135
|
+
_a.sent();
|
|
8136
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser delete, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
|
|
8137
|
+
var results = _a.results;
|
|
8138
|
+
return (results.length === 3
|
|
8139
|
+
&& results[0].modelName === 'endusers'
|
|
8140
|
+
&& results[0].recordId === e.id
|
|
8141
|
+
&& results[0].data === 'deleted');
|
|
8142
|
+
} })];
|
|
8143
|
+
case 30:
|
|
8144
|
+
_a.sent();
|
|
8145
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser delete, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8146
|
+
var results = _a.results;
|
|
8147
|
+
return results.length === 1;
|
|
8148
|
+
} })];
|
|
8149
|
+
case 31:
|
|
8150
|
+
_a.sent();
|
|
8151
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser delete, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
|
|
8152
|
+
var results = _a.results;
|
|
8153
|
+
return results.length === 0;
|
|
8154
|
+
} })
|
|
8155
|
+
// bulk create test coverage
|
|
8156
|
+
];
|
|
8157
|
+
case 32:
|
|
8158
|
+
_a.sent();
|
|
8159
|
+
return [4 /*yield*/, sdk.api.endusers.createSome([{}])];
|
|
8160
|
+
case 33:
|
|
8161
|
+
e2 = (_a.sent()).created[0];
|
|
8162
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8163
|
+
case 34:
|
|
8164
|
+
_a.sent();
|
|
8165
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser create, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
|
|
8166
|
+
var results = _a.results;
|
|
8167
|
+
return (results.length === 4
|
|
8168
|
+
&& results[0].modelName === 'endusers'
|
|
8169
|
+
&& results[0].recordId === e2.id
|
|
8170
|
+
&& results[0].data.includes(e2.id)
|
|
8171
|
+
&& JSON.parse(results[0].data) // tests no error throwing
|
|
8172
|
+
);
|
|
8173
|
+
} })];
|
|
8174
|
+
case 35:
|
|
8175
|
+
_a.sent();
|
|
8176
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser create, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8177
|
+
var results = _a.results;
|
|
8178
|
+
return results.length === 1;
|
|
8179
|
+
} })];
|
|
8180
|
+
case 36:
|
|
8181
|
+
_a.sent();
|
|
8182
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser create, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
|
|
8183
|
+
var results = _a.results;
|
|
8184
|
+
return results.length === 0;
|
|
8185
|
+
} })];
|
|
8186
|
+
case 37:
|
|
8187
|
+
_a.sent();
|
|
8188
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(e2.id)];
|
|
8189
|
+
case 38:
|
|
8190
|
+
_a.sent();
|
|
8191
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
|
|
8192
|
+
case 39:
|
|
8193
|
+
_a.sent();
|
|
8194
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser delete, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
|
|
8195
|
+
var results = _a.results;
|
|
8196
|
+
return (results.length === 4
|
|
8197
|
+
&& results[0].modelName === 'endusers'
|
|
8198
|
+
&& results[0].recordId === e2.id
|
|
8199
|
+
&& results[0].data === 'deleted');
|
|
8200
|
+
} })];
|
|
8201
|
+
case 40:
|
|
8202
|
+
_a.sent();
|
|
8203
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser delete, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
|
|
8204
|
+
var results = _a.results;
|
|
8205
|
+
return results.length === 1;
|
|
8206
|
+
} })];
|
|
8207
|
+
case 41:
|
|
8208
|
+
_a.sent();
|
|
8209
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser delete, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
|
|
8210
|
+
var results = _a.results;
|
|
8211
|
+
return results.length === 0;
|
|
8212
|
+
} })];
|
|
8213
|
+
case 42:
|
|
8214
|
+
_a.sent();
|
|
8215
|
+
return [2 /*return*/];
|
|
8216
|
+
}
|
|
8217
|
+
});
|
|
8218
|
+
}); };
|
|
8219
|
+
// to cover potential vulernabilities with enduser public register endpoint
|
|
8220
|
+
var register_as_enduser_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
8221
|
+
var enduser;
|
|
8222
|
+
return __generator(this, function (_a) {
|
|
8223
|
+
switch (_a.label) {
|
|
8224
|
+
case 0:
|
|
8225
|
+
(0, testing_1.log_header)("Register as Enduser");
|
|
8226
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser register", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, passOnAnyResult)];
|
|
8227
|
+
case 1:
|
|
8228
|
+
_a.sent();
|
|
8229
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser register (rate limited)", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, { shouldError: true, onError: function (e) { return e.message === "Too many requests"; } })];
|
|
8230
|
+
case 2:
|
|
8231
|
+
_a.sent();
|
|
8232
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
|
|
8233
|
+
case 3:
|
|
8234
|
+
_a.sent();
|
|
8235
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Enduser duplicate register (same response, no ability to enumerate contacts)", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, passOnAnyResult)];
|
|
8236
|
+
case 4:
|
|
8237
|
+
_a.sent();
|
|
8238
|
+
return [4 /*yield*/, sdk.api.endusers.getOne({ email: 'test@tellescope.com' })];
|
|
8239
|
+
case 5:
|
|
8240
|
+
enduser = _a.sent();
|
|
8241
|
+
if (!enduser) return [3 /*break*/, 7];
|
|
8242
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
|
|
8243
|
+
case 6:
|
|
8244
|
+
_a.sent();
|
|
8245
|
+
_a.label = 7;
|
|
8246
|
+
case 7: return [2 /*return*/];
|
|
8247
|
+
}
|
|
8248
|
+
});
|
|
8249
|
+
}); };
|
|
8250
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
8251
|
+
var err_1, n, _a, _b, _c, _i, returnValidation, t, _d, _f, _g, _h, err_2;
|
|
8252
|
+
var _j, _k;
|
|
8253
|
+
return __generator(this, function (_l) {
|
|
8254
|
+
switch (_l.label) {
|
|
8255
|
+
case 0:
|
|
8256
|
+
(0, testing_1.log_header)("API");
|
|
8257
|
+
return [4 /*yield*/, (0, testing_1.async_test)("email-image tracking endpoint is live", function () { return axios_1.default.get('http://localhost:8080/email-image/'); }, { onResult: function (result) { return result.data === TRACK_OPEN_IMAGE.toString('utf-8'); } })];
|
|
8258
|
+
case 1:
|
|
8259
|
+
_l.sent();
|
|
8260
|
+
_l.label = 2;
|
|
8261
|
+
case 2:
|
|
8262
|
+
_l.trys.push([2, 49, , 50]);
|
|
8263
|
+
(0, exports.form_conditional_logic_tests)();
|
|
8264
|
+
return [4 /*yield*/, test_weighted_round_robin()];
|
|
8265
|
+
case 3:
|
|
8266
|
+
_l.sent();
|
|
8267
|
+
return [4 /*yield*/, validate_schema()];
|
|
7733
8268
|
case 4:
|
|
7734
8269
|
_l.sent();
|
|
7735
8270
|
return [4 /*yield*/, Promise.all([
|
|
@@ -7738,11 +8273,10 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
|
|
|
7738
8273
|
sdkOtherSub.authenticate(otherSubUserEmail, password),
|
|
7739
8274
|
sdkSubSub.authenticate(subSubUserEmail, password),
|
|
7740
8275
|
sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
|
|
7741
|
-
])
|
|
7742
|
-
// console.log(JSON.stringify(await sdk.bulk_load({ load: [{ model: 'users' }]}), null, 2))
|
|
7743
|
-
];
|
|
8276
|
+
])];
|
|
7744
8277
|
case 5:
|
|
7745
8278
|
_l.sent();
|
|
8279
|
+
console.log("Authentication done");
|
|
7746
8280
|
// console.log(JSON.stringify(await sdk.bulk_load({ load: [{ model: 'users' }]}), null, 2))
|
|
7747
8281
|
return [4 /*yield*/, (0, testing_1.async_test)("count exists",
|
|
7748
8282
|
// @ts-ignore
|
|
@@ -7762,117 +8296,126 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
|
|
|
7762
8296
|
return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
|
|
7763
8297
|
case 10:
|
|
7764
8298
|
_l.sent(); // should come right after setup tests
|
|
7765
|
-
return [4 /*yield*/,
|
|
7766
|
-
// await test_send_with_template()
|
|
7767
|
-
];
|
|
8299
|
+
return [4 /*yield*/, register_as_enduser_tests()];
|
|
7768
8300
|
case 11:
|
|
7769
8301
|
_l.sent();
|
|
7770
|
-
|
|
7771
|
-
return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
|
|
8302
|
+
return [4 /*yield*/, sync_tests()];
|
|
7772
8303
|
case 12:
|
|
7773
|
-
// await test_send_with_template()
|
|
7774
8304
|
_l.sent();
|
|
7775
|
-
return [4 /*yield*/,
|
|
8305
|
+
return [4 /*yield*/, lockout_tests()];
|
|
7776
8306
|
case 13:
|
|
7777
8307
|
_l.sent();
|
|
7778
|
-
return [4 /*yield*/, (0, exports.
|
|
8308
|
+
return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
|
|
7779
8309
|
case 14:
|
|
7780
8310
|
_l.sent();
|
|
7781
|
-
return [4 /*yield*/,
|
|
8311
|
+
return [4 /*yield*/, delete_user_tests()
|
|
8312
|
+
// await test_send_with_template()
|
|
8313
|
+
];
|
|
7782
8314
|
case 15:
|
|
7783
8315
|
_l.sent();
|
|
7784
|
-
|
|
8316
|
+
// await test_send_with_template()
|
|
8317
|
+
return [4 /*yield*/, bulk_read_tests()];
|
|
7785
8318
|
case 16:
|
|
8319
|
+
// await test_send_with_template()
|
|
7786
8320
|
_l.sent();
|
|
7787
|
-
return [4 /*yield*/,
|
|
8321
|
+
return [4 /*yield*/, (0, exports.ticket_reminder_tests)()];
|
|
7788
8322
|
case 17:
|
|
7789
8323
|
_l.sent();
|
|
7790
|
-
return [4 /*yield*/, (
|
|
8324
|
+
return [4 /*yield*/, enduser_access_tags_tests()];
|
|
7791
8325
|
case 18:
|
|
7792
8326
|
_l.sent();
|
|
7793
|
-
return [4 /*yield*/, (
|
|
8327
|
+
return [4 /*yield*/, marketing_email_unsubscribe_tests()];
|
|
7794
8328
|
case 19:
|
|
7795
8329
|
_l.sent();
|
|
7796
|
-
return [4 /*yield*/, (
|
|
8330
|
+
return [4 /*yield*/, unique_strings_tests()];
|
|
7797
8331
|
case 20:
|
|
7798
8332
|
_l.sent();
|
|
7799
|
-
return [4 /*yield*/,
|
|
8333
|
+
return [4 /*yield*/, (0, exports.alternate_phones_tests)()];
|
|
7800
8334
|
case 21:
|
|
7801
8335
|
_l.sent();
|
|
7802
|
-
return [4 /*yield*/,
|
|
8336
|
+
return [4 /*yield*/, (0, exports.ticket_queue_tests)()];
|
|
7803
8337
|
case 22:
|
|
7804
8338
|
_l.sent();
|
|
7805
|
-
return [4 /*yield*/,
|
|
8339
|
+
return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
|
|
7806
8340
|
case 23:
|
|
7807
8341
|
_l.sent();
|
|
7808
|
-
return [4 /*yield*/,
|
|
8342
|
+
return [4 /*yield*/, field_equals_trigger_tests()];
|
|
7809
8343
|
case 24:
|
|
7810
8344
|
_l.sent();
|
|
7811
|
-
return [4 /*yield*/,
|
|
8345
|
+
return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
|
|
7812
8346
|
case 25:
|
|
7813
8347
|
_l.sent();
|
|
7814
|
-
return [4 /*yield*/,
|
|
8348
|
+
return [4 /*yield*/, role_based_access_tests()];
|
|
7815
8349
|
case 26:
|
|
7816
8350
|
_l.sent();
|
|
7817
|
-
return [4 /*yield*/,
|
|
8351
|
+
return [4 /*yield*/, automation_trigger_tests()];
|
|
7818
8352
|
case 27:
|
|
7819
8353
|
_l.sent();
|
|
7820
|
-
return [4 /*yield*/,
|
|
8354
|
+
return [4 /*yield*/, enduser_session_tests()];
|
|
7821
8355
|
case 28:
|
|
7822
8356
|
_l.sent();
|
|
7823
|
-
return [4 /*yield*/,
|
|
8357
|
+
return [4 /*yield*/, nextReminderInMS_tests()];
|
|
7824
8358
|
case 29:
|
|
7825
8359
|
_l.sent();
|
|
7826
|
-
return [4 /*yield*/,
|
|
8360
|
+
return [4 /*yield*/, search_tests()];
|
|
7827
8361
|
case 30:
|
|
7828
8362
|
_l.sent();
|
|
7829
|
-
return [4 /*yield*/,
|
|
8363
|
+
return [4 /*yield*/, wait_for_trigger_tests()];
|
|
7830
8364
|
case 31:
|
|
7831
8365
|
_l.sent();
|
|
7832
|
-
return [4 /*yield*/,
|
|
8366
|
+
return [4 /*yield*/, pdf_generation()];
|
|
7833
8367
|
case 32:
|
|
7834
8368
|
_l.sent();
|
|
7835
|
-
return [4 /*yield*/,
|
|
8369
|
+
return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
|
|
7836
8370
|
case 33:
|
|
7837
8371
|
_l.sent();
|
|
7838
|
-
return [4 /*yield*/,
|
|
8372
|
+
return [4 /*yield*/, rate_limit_tests()];
|
|
7839
8373
|
case 34:
|
|
7840
8374
|
_l.sent();
|
|
7841
|
-
return [4 /*yield*/,
|
|
8375
|
+
return [4 /*yield*/, merge_enduser_tests()];
|
|
7842
8376
|
case 35:
|
|
7843
8377
|
_l.sent();
|
|
7844
|
-
return [4 /*yield*/, (
|
|
8378
|
+
return [4 /*yield*/, auto_reply_tests()];
|
|
7845
8379
|
case 36:
|
|
7846
8380
|
_l.sent();
|
|
7847
|
-
return [4 /*yield*/,
|
|
8381
|
+
return [4 /*yield*/, sub_organization_enduser_tests()];
|
|
7848
8382
|
case 37:
|
|
7849
8383
|
_l.sent();
|
|
7850
|
-
return [4 /*yield*/,
|
|
8384
|
+
return [4 /*yield*/, sub_organization_tests()];
|
|
7851
8385
|
case 38:
|
|
7852
8386
|
_l.sent();
|
|
7853
|
-
return [4 /*yield*/,
|
|
8387
|
+
return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
|
|
7854
8388
|
case 39:
|
|
7855
8389
|
_l.sent();
|
|
7856
|
-
return [4 /*yield*/,
|
|
8390
|
+
return [4 /*yield*/, generate_user_auth_tests()];
|
|
7857
8391
|
case 40:
|
|
7858
8392
|
_l.sent();
|
|
7859
|
-
return [4 /*yield*/,
|
|
8393
|
+
return [4 /*yield*/, generateEnduserAuthTests()];
|
|
7860
8394
|
case 41:
|
|
7861
8395
|
_l.sent();
|
|
7862
|
-
return [4 /*yield*/,
|
|
8396
|
+
return [4 /*yield*/, public_form_tests()];
|
|
7863
8397
|
case 42:
|
|
7864
8398
|
_l.sent();
|
|
7865
|
-
return [4 /*yield*/,
|
|
8399
|
+
return [4 /*yield*/, badInputTests()];
|
|
7866
8400
|
case 43:
|
|
7867
8401
|
_l.sent();
|
|
7868
|
-
return [4 /*yield*/,
|
|
8402
|
+
return [4 /*yield*/, filterTests()];
|
|
7869
8403
|
case 44:
|
|
7870
8404
|
_l.sent();
|
|
7871
|
-
return [4 /*yield*/,
|
|
8405
|
+
return [4 /*yield*/, updatesTests()];
|
|
7872
8406
|
case 45:
|
|
7873
8407
|
_l.sent();
|
|
7874
|
-
return [
|
|
8408
|
+
return [4 /*yield*/, threadKeyTests()];
|
|
7875
8409
|
case 46:
|
|
8410
|
+
_l.sent();
|
|
8411
|
+
return [4 /*yield*/, enduserAccessTests()];
|
|
8412
|
+
case 47:
|
|
8413
|
+
_l.sent();
|
|
8414
|
+
return [4 /*yield*/, enduser_redaction_tests()];
|
|
8415
|
+
case 48:
|
|
8416
|
+
_l.sent();
|
|
8417
|
+
return [3 /*break*/, 50];
|
|
8418
|
+
case 49:
|
|
7876
8419
|
err_1 = _l.sent();
|
|
7877
8420
|
console.error("Failed during custom test");
|
|
7878
8421
|
if (err_1.message && err_1.info) {
|
|
@@ -7882,18 +8425,18 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
|
|
|
7882
8425
|
console.error(err_1);
|
|
7883
8426
|
}
|
|
7884
8427
|
process.exit(1);
|
|
7885
|
-
return [3 /*break*/,
|
|
7886
|
-
case
|
|
8428
|
+
return [3 /*break*/, 50];
|
|
8429
|
+
case 50:
|
|
7887
8430
|
_a = schema_1.schema;
|
|
7888
8431
|
_b = [];
|
|
7889
8432
|
for (_c in _a)
|
|
7890
8433
|
_b.push(_c);
|
|
7891
8434
|
_i = 0;
|
|
7892
|
-
_l.label =
|
|
7893
|
-
case
|
|
7894
|
-
if (!(_i < _b.length)) return [3 /*break*/,
|
|
8435
|
+
_l.label = 51;
|
|
8436
|
+
case 51:
|
|
8437
|
+
if (!(_i < _b.length)) return [3 /*break*/, 54];
|
|
7895
8438
|
_c = _b[_i];
|
|
7896
|
-
if (!(_c in _a)) return [3 /*break*/,
|
|
8439
|
+
if (!(_c in _a)) return [3 /*break*/, 53];
|
|
7897
8440
|
n = _c;
|
|
7898
8441
|
returnValidation = (_k = (_j = schema_1.schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
|
|
7899
8442
|
return [4 /*yield*/, run_generated_tests({
|
|
@@ -7904,41 +8447,41 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
|
|
|
7904
8447
|
create: returnValidation // ModelFields<ClientModel>,
|
|
7905
8448
|
}
|
|
7906
8449
|
})];
|
|
7907
|
-
case
|
|
8450
|
+
case 52:
|
|
7908
8451
|
_l.sent();
|
|
7909
|
-
_l.label =
|
|
7910
|
-
case
|
|
8452
|
+
_l.label = 53;
|
|
8453
|
+
case 53:
|
|
7911
8454
|
_i++;
|
|
7912
|
-
return [3 /*break*/,
|
|
7913
|
-
case
|
|
8455
|
+
return [3 /*break*/, 51];
|
|
8456
|
+
case 54:
|
|
7914
8457
|
_d = tests;
|
|
7915
8458
|
_f = [];
|
|
7916
8459
|
for (_g in _d)
|
|
7917
8460
|
_f.push(_g);
|
|
7918
8461
|
_h = 0;
|
|
7919
|
-
_l.label =
|
|
7920
|
-
case
|
|
7921
|
-
if (!(_h < _f.length)) return [3 /*break*/,
|
|
8462
|
+
_l.label = 55;
|
|
8463
|
+
case 55:
|
|
8464
|
+
if (!(_h < _f.length)) return [3 /*break*/, 60];
|
|
7922
8465
|
_g = _f[_h];
|
|
7923
|
-
if (!(_g in _d)) return [3 /*break*/,
|
|
8466
|
+
if (!(_g in _d)) return [3 /*break*/, 59];
|
|
7924
8467
|
t = _g;
|
|
7925
|
-
_l.label =
|
|
7926
|
-
case
|
|
7927
|
-
_l.trys.push([
|
|
8468
|
+
_l.label = 56;
|
|
8469
|
+
case 56:
|
|
8470
|
+
_l.trys.push([56, 58, , 59]);
|
|
7928
8471
|
return [4 /*yield*/, tests[t]()];
|
|
7929
|
-
case
|
|
8472
|
+
case 57:
|
|
7930
8473
|
_l.sent();
|
|
7931
|
-
return [3 /*break*/,
|
|
7932
|
-
case
|
|
8474
|
+
return [3 /*break*/, 59];
|
|
8475
|
+
case 58:
|
|
7933
8476
|
err_2 = _l.sent();
|
|
7934
8477
|
console.error("Error running test:");
|
|
7935
8478
|
console.error(err_2);
|
|
7936
8479
|
process.exit(1);
|
|
7937
|
-
return [3 /*break*/,
|
|
7938
|
-
case
|
|
8480
|
+
return [3 /*break*/, 59];
|
|
8481
|
+
case 59:
|
|
7939
8482
|
_h++;
|
|
7940
|
-
return [3 /*break*/,
|
|
7941
|
-
case
|
|
8483
|
+
return [3 /*break*/, 55];
|
|
8484
|
+
case 60:
|
|
7942
8485
|
process.exit();
|
|
7943
8486
|
return [2 /*return*/];
|
|
7944
8487
|
}
|