@tellescope/sdk 1.76.0 → 1.78.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.
@@ -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
- return [4 /*yield*/, sdk.logout()];
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*/, (0, testing_1.async_test)('test_authenticated - (logout invalidates jwt)', sdk.test_authenticated, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
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*/, sdk.authenticate(email, password)];
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*/, (0, testing_1.async_test)('test_authenticated (re-authenticated)', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
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 8:
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 9:
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 10:
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 11:
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 12:
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 13:
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 14:
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 15:
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 16:
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 17:
284
+ case 32:
232
285
  _a.sent();
233
286
  // reauthenticate
234
287
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
235
- case 18:
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 19:
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 20:
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 21:
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*/, subEnduserSDK.register({ email: 'sub@tellescope.com', password: password })];
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 3:
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 4:
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 5:
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 6:
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 7:
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 8:
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 9:
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 10:
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 11:
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 12:
539
+ case 15:
478
540
  _d.sent();
479
541
  return [4 /*yield*/, enduserSDK.refresh_session()]; // ensure updated session includes new sharedWithOrganizations
480
- case 13:
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 14:
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 15:
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 16:
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 17:
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 18:
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 19:
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 20:
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 21:
571
+ case 24:
510
572
  _d.sent();
511
573
  return [2 /*return*/];
512
574
  }
@@ -4033,23 +4095,35 @@ var search_tests = function () { return __awaiter(void 0, void 0, void 0, functi
4033
4095
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'e2_search@tellescope.com', fname: 'sebastian', lname: "coates" })];
4034
4096
  case 3:
4035
4097
  e2 = _a.sent();
4036
- return [4 /*yield*/, (0, testing_1.async_test)("Search full fname case insensitive", function () { return sdk.api.endusers.getSome({ search: { query: 'john' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === e1.id; } })];
4098
+ return [4 /*yield*/, (0, testing_1.async_test)("Search error message", function () { return sdk.api.endusers.getSome({ search: "alert(1)" }); }, {
4099
+ shouldError: true,
4100
+ onError: function (e) { return !e.message.includes('script') && e.message.startsWith("Error parsing field search: Expecting an object but got alert(1)"); }
4101
+ })];
4037
4102
  case 4:
4038
4103
  _a.sent();
4039
- return [4 /*yield*/, (0, testing_1.async_test)("Search start fname case insensitive", function () { return sdk.api.endusers.getSome({ search: { query: 'joh' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === e1.id; } })];
4104
+ return [4 /*yield*/, (0, testing_1.async_test)("Search error does not return script tags ", function () { return sdk.api.endusers.getSome({ search: "<script>alert(1)</script>" }); }, {
4105
+ shouldError: true,
4106
+ onError: function (e) { return !e.message.includes('script') && e.message.startsWith("Error parsing field search: Expecting an object but got"); }
4107
+ })];
4040
4108
  case 5:
4041
4109
  _a.sent();
4042
- return [4 /*yield*/, (0, testing_1.async_test)("Search end fname case insensitive", function () { return sdk.api.endusers.getSome({ search: { query: 'ohn' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === e1.id; } })];
4110
+ return [4 /*yield*/, (0, testing_1.async_test)("Search full fname case insensitive", function () { return sdk.api.endusers.getSome({ search: { query: 'john' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === e1.id; } })];
4043
4111
  case 6:
4044
4112
  _a.sent();
4045
- return [4 /*yield*/, (0, testing_1.async_test)("Search by email", function () { return sdk.api.endusers.getSome({ search: { query: 'search@tellescope' } }); }, { onResult: function (es) { return es.length === 2; } })];
4113
+ return [4 /*yield*/, (0, testing_1.async_test)("Search start fname case insensitive", function () { return sdk.api.endusers.getSome({ search: { query: 'joh' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === e1.id; } })];
4046
4114
  case 7:
4115
+ _a.sent();
4116
+ return [4 /*yield*/, (0, testing_1.async_test)("Search end fname case insensitive", function () { return sdk.api.endusers.getSome({ search: { query: 'ohn' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === e1.id; } })];
4117
+ case 8:
4118
+ _a.sent();
4119
+ return [4 /*yield*/, (0, testing_1.async_test)("Search by email", function () { return sdk.api.endusers.getSome({ search: { query: 'search@tellescope' } }); }, { onResult: function (es) { return es.length === 2; } })];
4120
+ case 9:
4047
4121
  _a.sent();
4048
4122
  return [4 /*yield*/, Promise.all([
4049
4123
  sdk.api.endusers.deleteOne(e1.id),
4050
4124
  sdk.api.endusers.deleteOne(e2.id),
4051
4125
  ])];
4052
- case 8:
4126
+ case 10:
4053
4127
  _a.sent();
4054
4128
  return [2 /*return*/];
4055
4129
  }
@@ -7038,6 +7112,7 @@ var validate_schema = function () {
7038
7112
  endpoints.add(path);
7039
7113
  }
7040
7114
  }
7115
+ console.log("Schema validated");
7041
7116
  };
7042
7117
  var test_weighted_round_robin = function () { return __awaiter(void 0, void 0, void 0, function () {
7043
7118
  var testUsers, userIds, testAssignments, run_assignment_simulation;
@@ -7658,7 +7733,7 @@ var ticket_reminder_tests = function () { return __awaiter(void 0, void 0, void
7658
7733
  return (((_b = (_a = t.reminders) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.didRemind) === true
7659
7734
  && t.nextReminderInMS !== -1
7660
7735
  && ((_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);
7661
- }, 25, 200); }, passOnAnyResult)];
7736
+ }, 10, 500); }, passOnAnyResult)];
7662
7737
  case 13:
7663
7738
  _a.sent();
7664
7739
  return [4 /*yield*/, (0, testing_1.async_test)("Delayed reminder not processed yet", function () { return sdk.api.tickets.getOne(tToRemind.id); }, {
@@ -7916,6 +7991,304 @@ var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, funct
7916
7991
  }
7917
7992
  });
7918
7993
  }); };
7994
+ var sync_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
7995
+ var from, e, t, e2;
7996
+ return __generator(this, function (_a) {
7997
+ switch (_a.label) {
7998
+ case 0:
7999
+ (0, testing_1.log_header)("Data Sync");
8000
+ from = new Date();
8001
+ return [4 /*yield*/, (0, testing_1.async_test)("No new records, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8002
+ var results = _a.results;
8003
+ return results.length === 0;
8004
+ } })];
8005
+ case 1:
8006
+ _a.sent();
8007
+ return [4 /*yield*/, (0, testing_1.async_test)("No new records, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8008
+ var results = _a.results;
8009
+ return results.length === 0;
8010
+ } })];
8011
+ case 2:
8012
+ _a.sent();
8013
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
8014
+ case 3:
8015
+ e = _a.sent();
8016
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8017
+ case 4:
8018
+ _a.sent();
8019
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser create, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8020
+ var results = _a.results;
8021
+ return (results.length === 1
8022
+ && results[0].modelName === 'endusers'
8023
+ && results[0].recordId === e.id
8024
+ && results[0].data.includes(e.id)
8025
+ && JSON.parse(results[0].data) // tests no error throwing
8026
+ );
8027
+ } })];
8028
+ case 5:
8029
+ _a.sent();
8030
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser create, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8031
+ var results = _a.results;
8032
+ return results.length === 0;
8033
+ } })];
8034
+ case 6:
8035
+ _a.sent();
8036
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser create, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8037
+ var results = _a.results;
8038
+ return results.length === 0;
8039
+ } })];
8040
+ case 7:
8041
+ _a.sent();
8042
+ return [4 /*yield*/, (0, testing_1.async_test)("Other organization", function () { return sdkOther.sync({ from: from }); }, { onResult: function (_a) {
8043
+ var results = _a.results;
8044
+ return results.length === 0;
8045
+ } })];
8046
+ case 8:
8047
+ _a.sent();
8048
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { fname: "UPDATE_TEST" })];
8049
+ case 9:
8050
+ _a.sent();
8051
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8052
+ case 10:
8053
+ _a.sent();
8054
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser update, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8055
+ var results = _a.results;
8056
+ return (results.length === 1
8057
+ && results[0].modelName === 'endusers'
8058
+ && results[0].recordId === e.id
8059
+ && results[0].data.includes("UPDATE_TEST"));
8060
+ } })];
8061
+ case 11:
8062
+ _a.sent();
8063
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser update, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8064
+ var results = _a.results;
8065
+ return results.length === 0;
8066
+ } })];
8067
+ case 12:
8068
+ _a.sent();
8069
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser update, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8070
+ var results = _a.results;
8071
+ return results.length === 0;
8072
+ } })];
8073
+ case 13:
8074
+ _a.sent();
8075
+ return [4 /*yield*/, (0, testing_1.async_test)("Other organization", function () { return sdkOther.sync({ from: from }); }, { onResult: function (_a) {
8076
+ var results = _a.results;
8077
+ return results.length === 0;
8078
+ } })];
8079
+ case 14:
8080
+ _a.sent();
8081
+ return [4 /*yield*/, sdk.api.tickets.createOne({ title: 'access test' })];
8082
+ case 15:
8083
+ t = _a.sent();
8084
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8085
+ case 16:
8086
+ _a.sent();
8087
+ return [4 /*yield*/, (0, testing_1.async_test)("Non-admin can't access ticket", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8088
+ var results = _a.results;
8089
+ return results.length === 0;
8090
+ } })
8091
+ // creates a user notification which increments count/index
8092
+ ];
8093
+ case 17:
8094
+ _a.sent();
8095
+ // creates a user notification which increments count/index
8096
+ sdk.api.tickets.updateOne(t.id, { owner: sdkNonAdmin.userInfo.id });
8097
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8098
+ case 18:
8099
+ _a.sent();
8100
+ return [4 /*yield*/, (0, testing_1.async_test)("Non-admin can access tickets on assignment", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8101
+ var results = _a.results;
8102
+ return results.length === 2;
8103
+ } })];
8104
+ case 19:
8105
+ _a.sent();
8106
+ sdk.api.tickets.updateOne(t.id, { owner: '' });
8107
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8108
+ case 20:
8109
+ _a.sent();
8110
+ 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) {
8111
+ var results = _a.results;
8112
+ return results.length === 1;
8113
+ } })];
8114
+ case 21:
8115
+ _a.sent();
8116
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { assignedTo: [sdkNonAdmin.userInfo.id] }, { replaceObjectFields: true })];
8117
+ case 22:
8118
+ _a.sent();
8119
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8120
+ case 23:
8121
+ _a.sent();
8122
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser update non-admin assignment, can access", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8123
+ var results = _a.results;
8124
+ return results.length === 2;
8125
+ } })];
8126
+ case 24:
8127
+ _a.sent();
8128
+ sdk.api.tickets.updateOne(t.id, { owner: '', enduserId: e.id });
8129
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8130
+ case 25:
8131
+ _a.sent();
8132
+ 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) {
8133
+ var results = _a.results;
8134
+ return results.length === 3;
8135
+ } })];
8136
+ case 26:
8137
+ _a.sent();
8138
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { assignedTo: [] }, { replaceObjectFields: true })];
8139
+ case 27:
8140
+ _a.sent();
8141
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8142
+ case 28:
8143
+ _a.sent();
8144
+ 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) {
8145
+ var results = _a.results;
8146
+ return results.length === 1;
8147
+ } })
8148
+ // enduser, ticket, and ticket assignment user_notification created
8149
+ ];
8150
+ case 29:
8151
+ _a.sent();
8152
+ // enduser, ticket, and ticket assignment user_notification created
8153
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(e.id)];
8154
+ case 30:
8155
+ // enduser, ticket, and ticket assignment user_notification created
8156
+ _a.sent();
8157
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8158
+ case 31:
8159
+ _a.sent();
8160
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser delete, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8161
+ var results = _a.results;
8162
+ return (results.length === 3
8163
+ && results[0].modelName === 'endusers'
8164
+ && results[0].recordId === e.id
8165
+ && results[0].data === 'deleted');
8166
+ } })];
8167
+ case 32:
8168
+ _a.sent();
8169
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser delete, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8170
+ var results = _a.results;
8171
+ return results.length === 1;
8172
+ } })];
8173
+ case 33:
8174
+ _a.sent();
8175
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser delete, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8176
+ var results = _a.results;
8177
+ return results.length === 0;
8178
+ } })];
8179
+ case 34:
8180
+ _a.sent();
8181
+ return [4 /*yield*/, (0, testing_1.async_test)("Other organization", function () { return sdkOther.sync({ from: from }); }, { onResult: function (_a) {
8182
+ var results = _a.results;
8183
+ return results.length === 0;
8184
+ } })
8185
+ // bulk create test coverage
8186
+ ];
8187
+ case 35:
8188
+ _a.sent();
8189
+ return [4 /*yield*/, sdk.api.endusers.createSome([{}])];
8190
+ case 36:
8191
+ e2 = (_a.sent()).created[0];
8192
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8193
+ case 37:
8194
+ _a.sent();
8195
+ return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser create, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8196
+ var results = _a.results;
8197
+ return (results.length === 4
8198
+ && results[0].modelName === 'endusers'
8199
+ && results[0].recordId === e2.id
8200
+ && results[0].data.includes(e2.id)
8201
+ && JSON.parse(results[0].data) // tests no error throwing
8202
+ );
8203
+ } })];
8204
+ case 38:
8205
+ _a.sent();
8206
+ return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser create, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8207
+ var results = _a.results;
8208
+ return results.length === 1;
8209
+ } })];
8210
+ case 39:
8211
+ _a.sent();
8212
+ return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser create, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8213
+ var results = _a.results;
8214
+ return results.length === 0;
8215
+ } })];
8216
+ case 40:
8217
+ _a.sent();
8218
+ return [4 /*yield*/, (0, testing_1.async_test)("Other organization", function () { return sdkOther.sync({ from: from }); }, { onResult: function (_a) {
8219
+ var results = _a.results;
8220
+ return results.length === 0;
8221
+ } })];
8222
+ case 41:
8223
+ _a.sent();
8224
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(e2.id)];
8225
+ case 42:
8226
+ _a.sent();
8227
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
8228
+ case 43:
8229
+ _a.sent();
8230
+ return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser delete, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8231
+ var results = _a.results;
8232
+ return (results.length === 4
8233
+ && results[0].modelName === 'endusers'
8234
+ && results[0].recordId === e2.id
8235
+ && results[0].data === 'deleted');
8236
+ } })];
8237
+ case 44:
8238
+ _a.sent();
8239
+ return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser delete, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8240
+ var results = _a.results;
8241
+ return results.length === 1;
8242
+ } })];
8243
+ case 45:
8244
+ _a.sent();
8245
+ return [4 /*yield*/, (0, testing_1.async_test)("Bulk Enduser delete, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8246
+ var results = _a.results;
8247
+ return results.length === 0;
8248
+ } })];
8249
+ case 46:
8250
+ _a.sent();
8251
+ return [4 /*yield*/, (0, testing_1.async_test)("Other organization", function () { return sdkOther.sync({ from: from }); }, { onResult: function (_a) {
8252
+ var results = _a.results;
8253
+ return results.length === 0;
8254
+ } })];
8255
+ case 47:
8256
+ _a.sent();
8257
+ return [2 /*return*/];
8258
+ }
8259
+ });
8260
+ }); };
8261
+ // to cover potential vulernabilities with enduser public register endpoint
8262
+ var register_as_enduser_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
8263
+ var enduser;
8264
+ return __generator(this, function (_a) {
8265
+ switch (_a.label) {
8266
+ case 0:
8267
+ (0, testing_1.log_header)("Register as Enduser");
8268
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser register", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, passOnAnyResult)];
8269
+ case 1:
8270
+ _a.sent();
8271
+ 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"; } })];
8272
+ case 2:
8273
+ _a.sent();
8274
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
8275
+ case 3:
8276
+ _a.sent();
8277
+ 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)];
8278
+ case 4:
8279
+ _a.sent();
8280
+ return [4 /*yield*/, sdk.api.endusers.getOne({ email: 'test@tellescope.com' })];
8281
+ case 5:
8282
+ enduser = _a.sent();
8283
+ if (!enduser) return [3 /*break*/, 7];
8284
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
8285
+ case 6:
8286
+ _a.sent();
8287
+ _a.label = 7;
8288
+ case 7: return [2 /*return*/];
8289
+ }
8290
+ });
8291
+ }); };
7919
8292
  (function () { return __awaiter(void 0, void 0, void 0, function () {
7920
8293
  var err_1, n, _a, _b, _c, _i, returnValidation, t, _d, _f, _g, _h, err_2;
7921
8294
  var _j, _k;
@@ -7928,7 +8301,7 @@ var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, funct
7928
8301
  _l.sent();
7929
8302
  _l.label = 2;
7930
8303
  case 2:
7931
- _l.trys.push([2, 47, , 48]);
8304
+ _l.trys.push([2, 49, , 50]);
7932
8305
  (0, exports.form_conditional_logic_tests)();
7933
8306
  return [4 /*yield*/, test_weighted_round_robin()];
7934
8307
  case 3:
@@ -7942,11 +8315,10 @@ var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, funct
7942
8315
  sdkOtherSub.authenticate(otherSubUserEmail, password),
7943
8316
  sdkSubSub.authenticate(subSubUserEmail, password),
7944
8317
  sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
7945
- ])
7946
- // console.log(JSON.stringify(await sdk.bulk_load({ load: [{ model: 'users' }]}), null, 2))
7947
- ];
8318
+ ])];
7948
8319
  case 5:
7949
8320
  _l.sent();
8321
+ console.log("Authentication done");
7950
8322
  // console.log(JSON.stringify(await sdk.bulk_load({ load: [{ model: 'users' }]}), null, 2))
7951
8323
  return [4 /*yield*/, (0, testing_1.async_test)("count exists",
7952
8324
  // @ts-ignore
@@ -7966,120 +8338,126 @@ var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, funct
7966
8338
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
7967
8339
  case 10:
7968
8340
  _l.sent(); // should come right after setup tests
7969
- return [4 /*yield*/, lockout_tests()];
8341
+ return [4 /*yield*/, register_as_enduser_tests()];
7970
8342
  case 11:
7971
8343
  _l.sent();
7972
- return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
8344
+ return [4 /*yield*/, sync_tests()];
7973
8345
  case 12:
8346
+ _l.sent();
8347
+ return [4 /*yield*/, lockout_tests()];
8348
+ case 13:
8349
+ _l.sent();
8350
+ return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
8351
+ case 14:
7974
8352
  _l.sent();
7975
8353
  return [4 /*yield*/, delete_user_tests()
7976
8354
  // await test_send_with_template()
7977
8355
  ];
7978
- case 13:
8356
+ case 15:
7979
8357
  _l.sent();
7980
8358
  // await test_send_with_template()
7981
8359
  return [4 /*yield*/, bulk_read_tests()];
7982
- case 14:
8360
+ case 16:
7983
8361
  // await test_send_with_template()
7984
8362
  _l.sent();
7985
8363
  return [4 /*yield*/, (0, exports.ticket_reminder_tests)()];
7986
- case 15:
8364
+ case 17:
7987
8365
  _l.sent();
7988
8366
  return [4 /*yield*/, enduser_access_tags_tests()];
7989
- case 16:
8367
+ case 18:
7990
8368
  _l.sent();
7991
8369
  return [4 /*yield*/, marketing_email_unsubscribe_tests()];
7992
- case 17:
8370
+ case 19:
7993
8371
  _l.sent();
7994
8372
  return [4 /*yield*/, unique_strings_tests()];
7995
- case 18:
8373
+ case 20:
7996
8374
  _l.sent();
7997
8375
  return [4 /*yield*/, (0, exports.alternate_phones_tests)()];
7998
- case 19:
8376
+ case 21:
7999
8377
  _l.sent();
8000
8378
  return [4 /*yield*/, (0, exports.ticket_queue_tests)()];
8001
- case 20:
8379
+ case 22:
8002
8380
  _l.sent();
8003
8381
  return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
8004
- case 21:
8382
+ case 23:
8005
8383
  _l.sent();
8006
8384
  return [4 /*yield*/, field_equals_trigger_tests()];
8007
- case 22:
8385
+ case 24:
8008
8386
  _l.sent();
8009
8387
  return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
8010
- case 23:
8388
+ case 25:
8011
8389
  _l.sent();
8012
8390
  return [4 /*yield*/, role_based_access_tests()];
8013
- case 24:
8391
+ case 26:
8014
8392
  _l.sent();
8015
8393
  return [4 /*yield*/, automation_trigger_tests()];
8016
- case 25:
8394
+ case 27:
8017
8395
  _l.sent();
8018
8396
  return [4 /*yield*/, enduser_session_tests()];
8019
- case 26:
8397
+ case 28:
8020
8398
  _l.sent();
8021
8399
  return [4 /*yield*/, nextReminderInMS_tests()];
8022
- case 27:
8400
+ case 29:
8023
8401
  _l.sent();
8024
8402
  return [4 /*yield*/, search_tests()];
8025
- case 28:
8403
+ case 30:
8026
8404
  _l.sent();
8027
8405
  return [4 /*yield*/, wait_for_trigger_tests()];
8028
- case 29:
8406
+ case 31:
8029
8407
  _l.sent();
8030
8408
  return [4 /*yield*/, pdf_generation()];
8031
- case 30:
8409
+ case 32:
8032
8410
  _l.sent();
8033
8411
  return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
8034
- case 31:
8412
+ case 33:
8035
8413
  _l.sent();
8036
8414
  return [4 /*yield*/, rate_limit_tests()];
8037
- case 32:
8415
+ case 34:
8038
8416
  _l.sent();
8039
8417
  return [4 /*yield*/, merge_enduser_tests()];
8040
- case 33:
8418
+ case 35:
8041
8419
  _l.sent();
8042
8420
  return [4 /*yield*/, auto_reply_tests()];
8043
- case 34:
8421
+ case 36:
8044
8422
  _l.sent();
8045
8423
  return [4 /*yield*/, sub_organization_enduser_tests()];
8046
- case 35:
8424
+ case 37:
8047
8425
  _l.sent();
8048
8426
  return [4 /*yield*/, sub_organization_tests()];
8049
- case 36:
8427
+ case 38:
8050
8428
  _l.sent();
8051
8429
  return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
8052
- case 37:
8430
+ case 39:
8053
8431
  _l.sent();
8054
8432
  return [4 /*yield*/, generate_user_auth_tests()];
8055
- case 38:
8433
+ case 40:
8056
8434
  _l.sent();
8057
8435
  return [4 /*yield*/, generateEnduserAuthTests()];
8058
- case 39:
8436
+ case 41:
8059
8437
  _l.sent();
8060
8438
  return [4 /*yield*/, public_form_tests()];
8061
- case 40:
8439
+ case 42:
8062
8440
  _l.sent();
8063
8441
  return [4 /*yield*/, badInputTests()];
8064
- case 41:
8442
+ case 43:
8065
8443
  _l.sent();
8066
8444
  return [4 /*yield*/, filterTests()];
8067
- case 42:
8445
+ case 44:
8068
8446
  _l.sent();
8069
8447
  return [4 /*yield*/, updatesTests()];
8070
- case 43:
8448
+ case 45:
8071
8449
  _l.sent();
8072
8450
  return [4 /*yield*/, threadKeyTests()];
8073
- case 44:
8451
+ case 46:
8074
8452
  _l.sent();
8075
8453
  return [4 /*yield*/, enduserAccessTests()];
8076
- case 45:
8454
+ case 47:
8077
8455
  _l.sent();
8078
8456
  return [4 /*yield*/, enduser_redaction_tests()];
8079
- case 46:
8457
+ case 48:
8080
8458
  _l.sent();
8081
- return [3 /*break*/, 48];
8082
- case 47:
8459
+ return [3 /*break*/, 50];
8460
+ case 49:
8083
8461
  err_1 = _l.sent();
8084
8462
  console.error("Failed during custom test");
8085
8463
  if (err_1.message && err_1.info) {
@@ -8089,18 +8467,18 @@ var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, funct
8089
8467
  console.error(err_1);
8090
8468
  }
8091
8469
  process.exit(1);
8092
- return [3 /*break*/, 48];
8093
- case 48:
8470
+ return [3 /*break*/, 50];
8471
+ case 50:
8094
8472
  _a = schema_1.schema;
8095
8473
  _b = [];
8096
8474
  for (_c in _a)
8097
8475
  _b.push(_c);
8098
8476
  _i = 0;
8099
- _l.label = 49;
8100
- case 49:
8101
- if (!(_i < _b.length)) return [3 /*break*/, 52];
8477
+ _l.label = 51;
8478
+ case 51:
8479
+ if (!(_i < _b.length)) return [3 /*break*/, 54];
8102
8480
  _c = _b[_i];
8103
- if (!(_c in _a)) return [3 /*break*/, 51];
8481
+ if (!(_c in _a)) return [3 /*break*/, 53];
8104
8482
  n = _c;
8105
8483
  returnValidation = (_k = (_j = schema_1.schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
8106
8484
  return [4 /*yield*/, run_generated_tests({
@@ -8111,41 +8489,41 @@ var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, funct
8111
8489
  create: returnValidation // ModelFields<ClientModel>,
8112
8490
  }
8113
8491
  })];
8114
- case 50:
8492
+ case 52:
8115
8493
  _l.sent();
8116
- _l.label = 51;
8117
- case 51:
8494
+ _l.label = 53;
8495
+ case 53:
8118
8496
  _i++;
8119
- return [3 /*break*/, 49];
8120
- case 52:
8497
+ return [3 /*break*/, 51];
8498
+ case 54:
8121
8499
  _d = tests;
8122
8500
  _f = [];
8123
8501
  for (_g in _d)
8124
8502
  _f.push(_g);
8125
8503
  _h = 0;
8126
- _l.label = 53;
8127
- case 53:
8128
- if (!(_h < _f.length)) return [3 /*break*/, 58];
8504
+ _l.label = 55;
8505
+ case 55:
8506
+ if (!(_h < _f.length)) return [3 /*break*/, 60];
8129
8507
  _g = _f[_h];
8130
- if (!(_g in _d)) return [3 /*break*/, 57];
8508
+ if (!(_g in _d)) return [3 /*break*/, 59];
8131
8509
  t = _g;
8132
- _l.label = 54;
8133
- case 54:
8134
- _l.trys.push([54, 56, , 57]);
8510
+ _l.label = 56;
8511
+ case 56:
8512
+ _l.trys.push([56, 58, , 59]);
8135
8513
  return [4 /*yield*/, tests[t]()];
8136
- case 55:
8514
+ case 57:
8137
8515
  _l.sent();
8138
- return [3 /*break*/, 57];
8139
- case 56:
8516
+ return [3 /*break*/, 59];
8517
+ case 58:
8140
8518
  err_2 = _l.sent();
8141
8519
  console.error("Error running test:");
8142
8520
  console.error(err_2);
8143
8521
  process.exit(1);
8144
- return [3 /*break*/, 57];
8145
- case 57:
8522
+ return [3 /*break*/, 59];
8523
+ case 59:
8146
8524
  _h++;
8147
- return [3 /*break*/, 53];
8148
- case 58:
8525
+ return [3 /*break*/, 55];
8526
+ case 60:
8149
8527
  process.exit();
8150
8528
  return [2 /*return*/];
8151
8529
  }