@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.
@@ -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
  }
@@ -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.set_password({ id: e1.id, password: password })];
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 4:
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 5:
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 6:
4953
- event30min = _a.sent();
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 7:
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 8:
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 9:
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 10:
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 11:
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 12:
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 13:
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 14:
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 15:
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 16:
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 17:
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 18:
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 19:
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 20:
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 21:
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 22:
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 23:
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 24:
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 25:
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 26:
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 27:
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 28:
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
- }, 25, 200); }, passOnAnyResult)];
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: return [4 /*yield*/, sdk.api.users.getSome({ filter: { email: 'deleteme@tellescope.com' } })];
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
- (function () { return __awaiter(void 0, void 0, void 0, function () {
7716
- var err_1, n, _a, _b, _c, _i, returnValidation, t, _d, _f, _g, _h, err_2;
7717
- var _j, _k;
7718
- return __generator(this, function (_l) {
7719
- switch (_l.label) {
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)("API");
7722
- 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'); } })];
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
- _l.sent();
7725
- _l.label = 2;
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
- _l.trys.push([2, 46, , 47]);
7728
- (0, exports.form_conditional_logic_tests)();
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
- _l.sent();
7732
- return [4 /*yield*/, validate_schema()];
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*/, delete_user_tests()
7766
- // await test_send_with_template()
7767
- ];
8299
+ return [4 /*yield*/, register_as_enduser_tests()];
7768
8300
  case 11:
7769
8301
  _l.sent();
7770
- // await test_send_with_template()
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*/, bulk_read_tests()];
8305
+ return [4 /*yield*/, lockout_tests()];
7776
8306
  case 13:
7777
8307
  _l.sent();
7778
- return [4 /*yield*/, (0, exports.ticket_reminder_tests)()];
8308
+ return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
7779
8309
  case 14:
7780
8310
  _l.sent();
7781
- return [4 /*yield*/, enduser_access_tags_tests()];
8311
+ return [4 /*yield*/, delete_user_tests()
8312
+ // await test_send_with_template()
8313
+ ];
7782
8314
  case 15:
7783
8315
  _l.sent();
7784
- return [4 /*yield*/, marketing_email_unsubscribe_tests()];
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*/, unique_strings_tests()];
8321
+ return [4 /*yield*/, (0, exports.ticket_reminder_tests)()];
7788
8322
  case 17:
7789
8323
  _l.sent();
7790
- return [4 /*yield*/, (0, exports.alternate_phones_tests)()];
8324
+ return [4 /*yield*/, enduser_access_tags_tests()];
7791
8325
  case 18:
7792
8326
  _l.sent();
7793
- return [4 /*yield*/, (0, exports.ticket_queue_tests)()];
8327
+ return [4 /*yield*/, marketing_email_unsubscribe_tests()];
7794
8328
  case 19:
7795
8329
  _l.sent();
7796
- return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
8330
+ return [4 /*yield*/, unique_strings_tests()];
7797
8331
  case 20:
7798
8332
  _l.sent();
7799
- return [4 /*yield*/, field_equals_trigger_tests()];
8333
+ return [4 /*yield*/, (0, exports.alternate_phones_tests)()];
7800
8334
  case 21:
7801
8335
  _l.sent();
7802
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
8336
+ return [4 /*yield*/, (0, exports.ticket_queue_tests)()];
7803
8337
  case 22:
7804
8338
  _l.sent();
7805
- return [4 /*yield*/, role_based_access_tests()];
8339
+ return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
7806
8340
  case 23:
7807
8341
  _l.sent();
7808
- return [4 /*yield*/, automation_trigger_tests()];
8342
+ return [4 /*yield*/, field_equals_trigger_tests()];
7809
8343
  case 24:
7810
8344
  _l.sent();
7811
- return [4 /*yield*/, enduser_session_tests()];
8345
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
7812
8346
  case 25:
7813
8347
  _l.sent();
7814
- return [4 /*yield*/, nextReminderInMS_tests()];
8348
+ return [4 /*yield*/, role_based_access_tests()];
7815
8349
  case 26:
7816
8350
  _l.sent();
7817
- return [4 /*yield*/, search_tests()];
8351
+ return [4 /*yield*/, automation_trigger_tests()];
7818
8352
  case 27:
7819
8353
  _l.sent();
7820
- return [4 /*yield*/, wait_for_trigger_tests()];
8354
+ return [4 /*yield*/, enduser_session_tests()];
7821
8355
  case 28:
7822
8356
  _l.sent();
7823
- return [4 /*yield*/, pdf_generation()];
8357
+ return [4 /*yield*/, nextReminderInMS_tests()];
7824
8358
  case 29:
7825
8359
  _l.sent();
7826
- return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
8360
+ return [4 /*yield*/, search_tests()];
7827
8361
  case 30:
7828
8362
  _l.sent();
7829
- return [4 /*yield*/, rate_limit_tests()];
8363
+ return [4 /*yield*/, wait_for_trigger_tests()];
7830
8364
  case 31:
7831
8365
  _l.sent();
7832
- return [4 /*yield*/, merge_enduser_tests()];
8366
+ return [4 /*yield*/, pdf_generation()];
7833
8367
  case 32:
7834
8368
  _l.sent();
7835
- return [4 /*yield*/, auto_reply_tests()];
8369
+ return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
7836
8370
  case 33:
7837
8371
  _l.sent();
7838
- return [4 /*yield*/, sub_organization_enduser_tests()];
8372
+ return [4 /*yield*/, rate_limit_tests()];
7839
8373
  case 34:
7840
8374
  _l.sent();
7841
- return [4 /*yield*/, sub_organization_tests()];
8375
+ return [4 /*yield*/, merge_enduser_tests()];
7842
8376
  case 35:
7843
8377
  _l.sent();
7844
- return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
8378
+ return [4 /*yield*/, auto_reply_tests()];
7845
8379
  case 36:
7846
8380
  _l.sent();
7847
- return [4 /*yield*/, generate_user_auth_tests()];
8381
+ return [4 /*yield*/, sub_organization_enduser_tests()];
7848
8382
  case 37:
7849
8383
  _l.sent();
7850
- return [4 /*yield*/, generateEnduserAuthTests()];
8384
+ return [4 /*yield*/, sub_organization_tests()];
7851
8385
  case 38:
7852
8386
  _l.sent();
7853
- return [4 /*yield*/, public_form_tests()];
8387
+ return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
7854
8388
  case 39:
7855
8389
  _l.sent();
7856
- return [4 /*yield*/, badInputTests()];
8390
+ return [4 /*yield*/, generate_user_auth_tests()];
7857
8391
  case 40:
7858
8392
  _l.sent();
7859
- return [4 /*yield*/, filterTests()];
8393
+ return [4 /*yield*/, generateEnduserAuthTests()];
7860
8394
  case 41:
7861
8395
  _l.sent();
7862
- return [4 /*yield*/, updatesTests()];
8396
+ return [4 /*yield*/, public_form_tests()];
7863
8397
  case 42:
7864
8398
  _l.sent();
7865
- return [4 /*yield*/, threadKeyTests()];
8399
+ return [4 /*yield*/, badInputTests()];
7866
8400
  case 43:
7867
8401
  _l.sent();
7868
- return [4 /*yield*/, enduserAccessTests()];
8402
+ return [4 /*yield*/, filterTests()];
7869
8403
  case 44:
7870
8404
  _l.sent();
7871
- return [4 /*yield*/, enduser_redaction_tests()];
8405
+ return [4 /*yield*/, updatesTests()];
7872
8406
  case 45:
7873
8407
  _l.sent();
7874
- return [3 /*break*/, 47];
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*/, 47];
7886
- case 47:
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 = 48;
7893
- case 48:
7894
- if (!(_i < _b.length)) return [3 /*break*/, 51];
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*/, 50];
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 49:
8450
+ case 52:
7908
8451
  _l.sent();
7909
- _l.label = 50;
7910
- case 50:
8452
+ _l.label = 53;
8453
+ case 53:
7911
8454
  _i++;
7912
- return [3 /*break*/, 48];
7913
- case 51:
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 = 52;
7920
- case 52:
7921
- if (!(_h < _f.length)) return [3 /*break*/, 57];
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*/, 56];
8466
+ if (!(_g in _d)) return [3 /*break*/, 59];
7924
8467
  t = _g;
7925
- _l.label = 53;
7926
- case 53:
7927
- _l.trys.push([53, 55, , 56]);
8468
+ _l.label = 56;
8469
+ case 56:
8470
+ _l.trys.push([56, 58, , 59]);
7928
8471
  return [4 /*yield*/, tests[t]()];
7929
- case 54:
8472
+ case 57:
7930
8473
  _l.sent();
7931
- return [3 /*break*/, 56];
7932
- case 55:
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*/, 56];
7938
- case 56:
8480
+ return [3 /*break*/, 59];
8481
+ case 59:
7939
8482
  _h++;
7940
- return [3 /*break*/, 52];
7941
- case 57:
8483
+ return [3 /*break*/, 55];
8484
+ case 60:
7942
8485
  process.exit();
7943
8486
  return [2 /*return*/];
7944
8487
  }