@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.
@@ -124,7 +124,7 @@ var voidResult = function () { return true; };
124
124
  var passOnVoid = { shouldError: false, onResult: voidResult };
125
125
  // const isNull = (d: any) => d === null
126
126
  var setup_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
127
- var uInfo, originalAuthToken;
127
+ var badSDK, badEnduserSDK, uInfo, originalAuthToken;
128
128
  return __generator(this, function (_a) {
129
129
  switch (_a.label) {
130
130
  case 0:
@@ -135,89 +135,142 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
135
135
  return [4 /*yield*/, async_test('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
136
136
  case 2:
137
137
  _a.sent();
138
- return [4 /*yield*/, async_test('test_authenticated (with API Key)', (new Session({ host: host, apiKey: '3n5q0SCBT_iUvZz-b9BJtX7o7HQUVJ9v132PgHJNJsg.' /* local test key */ })).test_authenticated, { expectedResult: 'Authenticated!' })];
138
+ return [4 /*yield*/, async_test('test_authenticated (with API Key)', (new Session({ host: host, apiKey: '3n5q0SCBT_iUvZz-b9BJtX7o7HQUVJ9v132PgHJNJsg.' /* local test key */ })).test_authenticated, { expectedResult: 'Authenticated!' })
139
+ // login rate limit tests
140
+ ];
139
141
  case 3:
140
142
  _a.sent();
141
- return [4 /*yield*/, sdk.logout()];
143
+ badSDK = new Session({ host: host });
144
+ return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
142
145
  case 4:
143
146
  _a.sent();
144
- return [4 /*yield*/, async_test('test_authenticated - (logout invalidates jwt)', sdk.test_authenticated, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
147
+ return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
145
148
  case 5:
146
149
  _a.sent();
147
- return [4 /*yield*/, sdk.authenticate(email, password)];
150
+ return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
148
151
  case 6:
149
152
  _a.sent();
150
- return [4 /*yield*/, async_test('test_authenticated (re-authenticated)', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
153
+ return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
151
154
  case 7:
155
+ _a.sent();
156
+ return [4 /*yield*/, badSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
157
+ case 8:
158
+ _a.sent();
159
+ return [4 /*yield*/, 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'; } })];
160
+ case 9:
161
+ _a.sent();
162
+ return [4 /*yield*/, async_test('login not rate limited for other user', function () { return sdk.authenticate(email, password); }, passOnAnyResult)];
163
+ case 10:
164
+ _a.sent();
165
+ badEnduserSDK = new EnduserSession({ host: host, businessId: businessId });
166
+ return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
167
+ case 11:
168
+ _a.sent();
169
+ return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
170
+ case 12:
171
+ _a.sent();
172
+ return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
173
+ case 13:
174
+ _a.sent();
175
+ return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
176
+ case 14:
177
+ _a.sent();
178
+ return [4 /*yield*/, badEnduserSDK.authenticate('bademail@tellescope.com', 'badpassword').catch(console.error)];
179
+ case 15:
180
+ _a.sent();
181
+ return [4 /*yield*/, 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'; } })];
182
+ case 16:
183
+ _a.sent();
184
+ return [4 /*yield*/, 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'; } })
185
+ // prevent additional login throttling
186
+ ];
187
+ case 17:
188
+ _a.sent();
189
+ // prevent additional login throttling
190
+ return [4 /*yield*/, async_test('reset_db', function () { return sdk.reset_db(); }, passOnVoid)];
191
+ case 18:
192
+ // prevent additional login throttling
193
+ _a.sent();
194
+ return [4 /*yield*/, sdk.logout()];
195
+ case 19:
196
+ _a.sent();
197
+ return [4 /*yield*/, async_test('test_authenticated - (logout invalidates jwt)', sdk.test_authenticated, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
198
+ case 20:
199
+ _a.sent();
200
+ return [4 /*yield*/, sdk.authenticate(email, password)];
201
+ case 21:
202
+ _a.sent();
203
+ return [4 /*yield*/, async_test('test_authenticated (re-authenticated)', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
204
+ case 22:
152
205
  _a.sent();
153
206
  uInfo = sdk.userInfo;
154
207
  originalAuthToken = sdk.authToken;
155
208
  return [4 /*yield*/, sdk.refresh_session()];
156
- case 8:
209
+ case 23:
157
210
  _a.sent();
158
211
  assert(uInfo.id === sdk.userInfo.id, 'userInfo mismatch', 'userInfo id preserved after refresh');
159
212
  assert(!!originalAuthToken && !!sdk.authToken && sdk.authToken !== originalAuthToken, 'same authToken after refresh', 'authToken refresh');
160
213
  return [4 /*yield*/, async_test('role change by non-admin prevented (admin)', function () { return sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: ['Admin'] }, { replaceObjectFields: true }); }, handleAnyError)];
161
- case 9:
214
+ case 24:
162
215
  _a.sent();
163
216
  return [4 /*yield*/, 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)
164
217
  // would assign default non-admin role, which could grant additional permissions than currently-defined non-admin role, should block
165
218
  ];
166
- case 10:
219
+ case 25:
167
220
  _a.sent();
168
221
  // would assign default non-admin role, which could grant additional permissions than currently-defined non-admin role, should block
169
222
  return [4 /*yield*/, async_test('role change by non-admin prevented (empty)', function () { return sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [] }, { replaceObjectFields: true }); }, handleAnyError)
170
223
  // ensure that going to "Non-Admin" triggers a role change
171
224
  ];
172
- case 11:
225
+ case 26:
173
226
  // would assign default non-admin role, which could grant additional permissions than currently-defined non-admin role, should block
174
227
  _a.sent();
175
228
  // ensure that going to "Non-Admin" triggers a role change
176
229
  return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: ['Test'] }, { replaceObjectFields: true })];
177
- case 12:
230
+ case 27:
178
231
  // ensure that going to "Non-Admin" triggers a role change
179
232
  _a.sent();
180
233
  return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
181
- case 13:
234
+ case 28:
182
235
  _a.sent();
183
236
  return [4 /*yield*/, async_test('non admin authenticated', sdkNonAdmin.test_authenticated, { expectedResult: 'Authenticated!' })
184
237
  // reset nonAdmin role to a default non-admin
185
238
  ];
186
- case 14:
239
+ case 29:
187
240
  _a.sent();
188
241
  // reset nonAdmin role to a default non-admin
189
242
  return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: ['Non-Admin'] }, { replaceObjectFields: true })];
190
- case 15:
243
+ case 30:
191
244
  // reset nonAdmin role to a default non-admin
192
245
  _a.sent();
193
246
  // should be unauthenticated due to role change
194
247
  return [4 /*yield*/, wait(undefined, 100)];
195
- case 16:
248
+ case 31:
196
249
  // reset nonAdmin role to a default non-admin
197
250
  // should be unauthenticated due to role change
198
251
  _a.sent();
199
252
  return [4 /*yield*/, async_test('role change causes deauthentication', sdkNonAdmin.test_authenticated, handleAnyError)
200
253
  // reauthenticate
201
254
  ];
202
- case 17:
255
+ case 32:
203
256
  _a.sent();
204
257
  // reauthenticate
205
258
  return [4 /*yield*/, wait(undefined, 1000)];
206
- case 18:
259
+ case 33:
207
260
  // reauthenticate
208
261
  _a.sent();
209
262
  return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
210
263
  // may do some stuff in background after returning
211
264
  ];
212
- case 19:
265
+ case 34:
213
266
  _a.sent();
214
267
  // may do some stuff in background after returning
215
268
  return [4 /*yield*/, async_test('reset_db', function () { return sdk.reset_db(); }, passOnVoid)];
216
- case 20:
269
+ case 35:
217
270
  // may do some stuff in background after returning
218
271
  _a.sent();
219
272
  return [4 /*yield*/, wait(undefined, 250)];
220
- case 21:
273
+ case 36:
221
274
  _a.sent();
222
275
  return [2 /*return*/];
223
276
  }
@@ -412,64 +465,73 @@ var sub_organization_enduser_tests = function () { return __awaiter(void 0, void
412
465
  return [4 /*yield*/, enduserSDK.register({ email: 'root@tellescope.com', password: password })];
413
466
  case 1:
414
467
  _d.sent();
415
- return [4 /*yield*/, subEnduserSDK.register({ email: 'sub@tellescope.com', password: password })];
468
+ return [4 /*yield*/, wait(undefined, 1000)]; // avoid rate limiting error
416
469
  case 2:
470
+ _d.sent(); // avoid rate limiting error
471
+ return [4 /*yield*/, subEnduserSDK.register({ email: 'sub@tellescope.com', password: password })];
472
+ case 3:
417
473
  _d.sent();
474
+ return [4 /*yield*/, wait(undefined, 1000)]; // avoid rate limiting error
475
+ case 4:
476
+ _d.sent(); // avoid rate limiting error
418
477
  return [4 /*yield*/, enduserSDK.authenticate('root@tellescope.com', password)];
419
- case 3:
478
+ case 5:
420
479
  _d.sent();
480
+ return [4 /*yield*/, wait(undefined, 1000)]; // avoid rate limiting error
481
+ case 6:
482
+ _d.sent(); // avoid rate limiting error
421
483
  return [4 /*yield*/, subEnduserSDK.authenticate('sub@tellescope.com', password)];
422
- case 4:
484
+ case 7:
423
485
  _d.sent();
424
486
  assert(!((_a = enduserSDK.userInfo.organizationIds) === null || _a === void 0 ? void 0 : _a.length), 'bad root organizationIds', 'root auth org ids');
425
487
  assert(((_b = subEnduserSDK.userInfo.organizationIds) === null || _b === void 0 ? void 0 : _b.length) === 1, 'bad sub organizationIds', 'sub auth org ids');
426
488
  return [4 /*yield*/, enduserSDK.api.tickets.createOne({ title: 'root', enduserId: enduserSDK.userInfo.id })];
427
- case 5:
489
+ case 8:
428
490
  rootTicket = _d.sent();
429
491
  return [4 /*yield*/, async_test("root get root", function () { return sdk.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
430
- case 6:
492
+ case 9:
431
493
  _d.sent();
432
494
  return [4 /*yield*/, async_test("sub get root error", function () { return sdkSub.api.endusers.getOne(enduserSDK.userInfo.id); }, handleAnyError)];
433
- case 7:
495
+ case 10:
434
496
  _d.sent();
435
497
  return [4 /*yield*/, async_test("root get sub", function () { return sdk.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
436
- case 8:
498
+ case 11:
437
499
  _d.sent();
438
500
  return [4 /*yield*/, async_test("sub get sub", function () { return sdkSub.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
439
- case 9:
501
+ case 12:
440
502
  _d.sent();
441
503
  return [4 /*yield*/, async_test("root get root ticket", function () { return sdk.api.tickets.getOne(rootTicket.id); }, passOnAnyResult)];
442
- case 10:
504
+ case 13:
443
505
  _d.sent();
444
506
  return [4 /*yield*/, async_test("sub get root ticket error", function () { return sdkSub.api.tickets.getOne(rootTicket.id); }, handleAnyError)];
445
- case 11:
507
+ case 14:
446
508
  _d.sent();
447
509
  return [4 /*yield*/, sdk.api.endusers.updateOne(enduserSDK.userInfo.id, { sharedWithOrganizations: [(_c = sdkSub.userInfo.organizationIds) !== null && _c !== void 0 ? _c : []] })];
448
- case 12:
510
+ case 15:
449
511
  _d.sent();
450
512
  return [4 /*yield*/, enduserSDK.refresh_session()]; // ensure updated session includes new sharedWithOrganizations
451
- case 13:
513
+ case 16:
452
514
  _d.sent(); // ensure updated session includes new sharedWithOrganizations
453
515
  return [4 /*yield*/, enduserSDK.api.tickets.createOne({ title: 'root with shared', enduserId: enduserSDK.userInfo.id })];
454
- case 14:
516
+ case 17:
455
517
  rootTicketAfterUpdate = _d.sent();
456
518
  return [4 /*yield*/, async_test("root get root", function () { return sdk.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
457
- case 15:
519
+ case 18:
458
520
  _d.sent();
459
521
  return [4 /*yield*/, async_test("sub get root after update", function () { return sdkSub.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
460
- case 16:
522
+ case 19:
461
523
  _d.sent();
462
524
  return [4 /*yield*/, async_test("root get sub", function () { return sdk.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
463
- case 17:
525
+ case 20:
464
526
  _d.sent();
465
527
  return [4 /*yield*/, async_test("sub get sub", function () { return sdkSub.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
466
- case 18:
528
+ case 21:
467
529
  _d.sent();
468
530
  return [4 /*yield*/, async_test("root get root ticket after update", function () { return sdk.api.tickets.getOne(rootTicketAfterUpdate.id); }, passOnAnyResult)];
469
- case 19:
531
+ case 22:
470
532
  _d.sent();
471
533
  return [4 /*yield*/, async_test("sub get root ticket after update", function () { return sdkSub.api.tickets.getOne(rootTicketAfterUpdate.id); }, passOnAnyResult)];
472
- case 20:
534
+ case 23:
473
535
  _d.sent();
474
536
  return [4 /*yield*/, Promise.all([
475
537
  sdk.api.endusers.deleteOne(enduserSDK.userInfo.id),
@@ -477,7 +539,7 @@ var sub_organization_enduser_tests = function () { return __awaiter(void 0, void
477
539
  sdk.api.tickets.deleteOne(rootTicket.id),
478
540
  sdk.api.tickets.deleteOne(rootTicketAfterUpdate.id),
479
541
  ])];
480
- case 21:
542
+ case 24:
481
543
  _d.sent();
482
544
  return [2 /*return*/];
483
545
  }
@@ -4879,7 +4941,7 @@ export var filter_by_date_tests = function () { return __awaiter(void 0, void 0,
4879
4941
  });
4880
4942
  }); };
4881
4943
  export var self_serve_appointment_booking_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4882
- var e1, e2, event15min, event30min, dayOfWeekStartingSundayIndexedByZero, nySlots, bookedAppointment, conflict, multiSlots, bookedMultiAppointment;
4944
+ var e1, e2, e3, event15min, event30min, event30minGroup, dayOfWeekStartingSundayIndexedByZero, enduserSDK2, enduserSDK3, nySlots, bookedAppointment, conflict, groupEvent, multiSlots, bookedMultiAppointment;
4883
4945
  return __generator(this, function (_a) {
4884
4946
  switch (_a.label) {
4885
4947
  case 0:
@@ -4890,28 +4952,42 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
4890
4952
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'sebass+ca@tellescope.com', state: 'CA' })];
4891
4953
  case 2:
4892
4954
  e2 = _a.sent();
4893
- return [4 /*yield*/, sdk.api.endusers.set_password({ id: e1.id, password: password })];
4955
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'sebass+3@tellescope.com' })];
4894
4956
  case 3:
4957
+ e3 = _a.sent();
4958
+ return [4 /*yield*/, sdk.api.endusers.set_password({ id: e1.id, password: password })];
4959
+ case 4:
4895
4960
  _a.sent();
4896
4961
  return [4 /*yield*/, sdk.api.endusers.set_password({ id: e2.id, password: password })];
4897
- case 4:
4962
+ case 5:
4963
+ _a.sent();
4964
+ return [4 /*yield*/, sdk.api.endusers.set_password({ id: e3.id, password: password })];
4965
+ case 6:
4898
4966
  _a.sent();
4899
4967
  return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
4900
4968
  title: 'test 2', durationInMinutes: 15,
4901
4969
  confirmationEmailDisabled: true,
4902
4970
  confirmationSMSDisabled: true,
4903
4971
  })];
4904
- case 5:
4972
+ case 7:
4905
4973
  event15min = _a.sent();
4906
4974
  return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
4907
4975
  title: 'test 1', durationInMinutes: 30,
4908
4976
  confirmationEmailDisabled: true,
4909
4977
  confirmationSMSDisabled: true,
4978
+ })];
4979
+ case 8:
4980
+ event30min = _a.sent();
4981
+ return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
4982
+ title: 'test group', durationInMinutes: 30,
4983
+ confirmationEmailDisabled: true,
4984
+ confirmationSMSDisabled: true,
4985
+ enduserAttendeeLimit: 2,
4910
4986
  })
4911
4987
  // ensure it doesn't match current day, to avoid errors on testing
4912
4988
  ];
4913
- case 6:
4914
- event30min = _a.sent();
4989
+ case 9:
4990
+ event30minGroup = _a.sent();
4915
4991
  dayOfWeekStartingSundayIndexedByZero = (new Date().getDay() + 1) % 7;
4916
4992
  return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
4917
4993
  weeklyAvailabilities: [
@@ -4931,7 +5007,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
4931
5007
  }, {
4932
5008
  replaceObjectFields: true,
4933
5009
  })];
4934
- case 7:
5010
+ case 10:
4935
5011
  _a.sent();
4936
5012
  return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
4937
5013
  weeklyAvailabilities: [
@@ -4945,14 +5021,22 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
4945
5021
  timezone: 'America/Los_Angeles',
4946
5022
  }, {
4947
5023
  replaceObjectFields: true,
4948
- })
5024
+ })];
5025
+ case 11:
5026
+ _a.sent();
5027
+ enduserSDK2 = new EnduserSession({ host: host, businessId: businessId });
5028
+ return [4 /*yield*/, enduserSDK2.authenticate('sebass+ca@tellescope.com', password).catch(console.error)];
5029
+ case 12:
5030
+ _a.sent();
5031
+ enduserSDK3 = new EnduserSession({ host: host, businessId: businessId });
5032
+ return [4 /*yield*/, enduserSDK3.authenticate('sebass+3@tellescope.com', password).catch(console.error)
4949
5033
  // NY Enduser Tests
4950
5034
  ];
4951
- case 8:
5035
+ case 13:
4952
5036
  _a.sent();
4953
5037
  // NY Enduser Tests
4954
5038
  return [4 /*yield*/, enduserSDK.authenticate('sebass+ny@tellescope.com', password).catch(console.error)];
4955
- case 9:
5039
+ case 14:
4956
5040
  // NY Enduser Tests
4957
5041
  _a.sent();
4958
5042
  return [4 /*yield*/, async_test('30 minute slots for state restriction', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
@@ -4961,7 +5045,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
4961
5045
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
4962
5046
  restrictedByState: true,
4963
5047
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
4964
- case 10:
5048
+ case 15:
4965
5049
  _a.sent();
4966
5050
  return [4 /*yield*/, async_test('30 minute slots for state restriction with 15 min interval', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
4967
5051
  calendarEventTemplateId: event30min.id,
@@ -4970,7 +5054,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
4970
5054
  restrictedByState: true,
4971
5055
  intervalInMinutes: 15,
4972
5056
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
4973
- case 11:
5057
+ case 16:
4974
5058
  _a.sent();
4975
5059
  return [4 /*yield*/, async_test('30 minute slots for state restriction with 10 min interval', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
4976
5060
  calendarEventTemplateId: event30min.id,
@@ -4979,7 +5063,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
4979
5063
  restrictedByState: true,
4980
5064
  intervalInMinutes: 10,
4981
5065
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 4; } })];
4982
- case 12:
5066
+ case 17:
4983
5067
  _a.sent();
4984
5068
  return [4 /*yield*/, async_test('30 minute slots for no state restrictions', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
4985
5069
  calendarEventTemplateId: event30min.id,
@@ -4998,7 +5082,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
4998
5082
  }
4999
5083
  return true;
5000
5084
  } })];
5001
- case 13:
5085
+ case 18:
5002
5086
  _a.sent();
5003
5087
  return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
5004
5088
  calendarEventTemplateId: event30min.id,
@@ -5006,7 +5090,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5006
5090
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
5007
5091
  restrictedByState: true,
5008
5092
  })];
5009
- case 14:
5093
+ case 19:
5010
5094
  nySlots = _a.sent();
5011
5095
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
5012
5096
  calendarEventTemplateId: event30min.id,
@@ -5017,7 +5101,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5017
5101
  fields: "Test",
5018
5102
  }
5019
5103
  })];
5020
- case 15:
5104
+ case 20:
5021
5105
  bookedAppointment = (_a.sent()).createdEvent;
5022
5106
  assert(bookedAppointment.attendees.length === 2, 'did not get 2 attendees', '2 attendees fo non-multi-event');
5023
5107
  return [4 /*yield*/, async_test('double-booking prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
@@ -5025,7 +5109,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5025
5109
  startTime: new Date(nySlots.availabilityBlocks[0].startTimeInMS),
5026
5110
  userId: nySlots.availabilityBlocks[0].userId,
5027
5111
  }); }, handleAnyError)];
5028
- case 16:
5112
+ case 21:
5029
5113
  _a.sent();
5030
5114
  return [4 /*yield*/, async_test('30 minute slots for state restriction with 1 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
5031
5115
  calendarEventTemplateId: event30min.id,
@@ -5037,14 +5121,14 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5037
5121
  && r.availabilityBlocks[0].startTimeInMS === nySlots.availabilityBlocks[1].startTimeInMS;
5038
5122
  } // the first slot of nySlots is booked
5039
5123
  })];
5040
- case 17:
5124
+ case 22:
5041
5125
  _a.sent();
5042
5126
  return [4 /*yield*/, sdk.api.calendar_events.createOne({
5043
5127
  title: 'conflict',
5044
5128
  startTimeInMS: nySlots.availabilityBlocks[1].startTimeInMS,
5045
5129
  durationInMinutes: nySlots.availabilityBlocks[1].durationInMinutes,
5046
5130
  })];
5047
- case 18:
5131
+ case 23:
5048
5132
  conflict = _a.sent();
5049
5133
  return [4 /*yield*/, async_test('30 minute slots for state restriction with 2 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
5050
5134
  calendarEventTemplateId: event30min.id,
@@ -5052,16 +5136,82 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5052
5136
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
5053
5137
  restrictedByState: true,
5054
5138
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 0; } })];
5055
- case 19:
5139
+ case 24:
5056
5140
  _a.sent();
5057
5141
  return [4 /*yield*/, async_test('booking against conflict prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
5058
5142
  calendarEventTemplateId: event30min.id,
5059
5143
  startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
5060
5144
  userId: nySlots.availabilityBlocks[1].userId,
5061
5145
  }); }, handleAnyError)
5146
+ // test group bookings
5147
+ ];
5148
+ case 25:
5149
+ _a.sent();
5150
+ // test group bookings
5151
+ return [4 /*yield*/, sdk.api.calendar_events.updateOne(conflict.id, { enduserAttendeeLimit: 2 })];
5152
+ case 26:
5153
+ // test group bookings
5154
+ _a.sent();
5155
+ return [4 /*yield*/, async_test('[group booking] different event type conflict as group still blocks availability', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
5156
+ calendarEventTemplateId: event30minGroup.id,
5157
+ from: new Date(Date.now() - 10000),
5158
+ to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
5159
+ }); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
5160
+ case 27:
5161
+ _a.sent();
5162
+ return [4 /*yield*/, sdk.api.calendar_events.deleteOne(conflict.id)];
5163
+ case 28:
5164
+ _a.sent();
5165
+ return [4 /*yield*/, async_test('[group booking] availability', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
5166
+ calendarEventTemplateId: event30minGroup.id,
5167
+ from: new Date(Date.now() - 10000),
5168
+ to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
5169
+ }); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
5170
+ case 29:
5171
+ _a.sent();
5172
+ return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
5173
+ calendarEventTemplateId: event30minGroup.id,
5174
+ startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
5175
+ userId: nySlots.availabilityBlocks[1].userId,
5176
+ })];
5177
+ case 30:
5178
+ groupEvent = (_a.sent()).createdEvent;
5179
+ return [4 /*yield*/, async_test('[group booking] more booking allowed', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
5180
+ calendarEventTemplateId: event30minGroup.id,
5181
+ from: new Date(Date.now() - 10000),
5182
+ to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
5183
+ }); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
5184
+ case 31:
5185
+ _a.sent();
5186
+ return [4 /*yield*/, async_test('[group booking] prevent double-book same-enduser', function () { return enduserSDK.api.calendar_events.book_appointment({
5187
+ calendarEventTemplateId: event30minGroup.id,
5188
+ startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
5189
+ userId: nySlots.availabilityBlocks[1].userId,
5190
+ }); }, handleAnyError)];
5191
+ case 32:
5192
+ _a.sent();
5193
+ return [4 /*yield*/, async_test('[group booking] allow other enduser to book', function () { return enduserSDK2.api.calendar_events.book_appointment({
5194
+ calendarEventTemplateId: event30minGroup.id,
5195
+ startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
5196
+ userId: nySlots.availabilityBlocks[1].userId,
5197
+ }); }, passOnAnyResult)];
5198
+ case 33:
5199
+ _a.sent();
5200
+ return [4 /*yield*/, async_test('[group booking] no more booking allowed', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
5201
+ calendarEventTemplateId: event30minGroup.id,
5202
+ from: new Date(Date.now() - 10000),
5203
+ to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
5204
+ }); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
5205
+ case 34:
5206
+ _a.sent();
5207
+ return [4 /*yield*/, async_test('[group booking] other enduser cant book over capacity', function () { return enduserSDK3.api.calendar_events.book_appointment({
5208
+ calendarEventTemplateId: event30minGroup.id,
5209
+ startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
5210
+ userId: nySlots.availabilityBlocks[1].userId,
5211
+ }); }, handleAnyError)
5062
5212
  // test 'multi' flag for booking multiple providers for a given patient
5063
5213
  ];
5064
- case 20:
5214
+ case 35:
5065
5215
  _a.sent();
5066
5216
  // test 'multi' flag for booking multiple providers for a given patient
5067
5217
  return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
@@ -5076,7 +5226,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5076
5226
  }, {
5077
5227
  replaceObjectFields: true,
5078
5228
  })];
5079
- case 21:
5229
+ case 36:
5080
5230
  // test 'multi' flag for booking multiple providers for a given patient
5081
5231
  _a.sent();
5082
5232
  return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
@@ -5091,7 +5241,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5091
5241
  }, {
5092
5242
  replaceObjectFields: true,
5093
5243
  })];
5094
- case 22:
5244
+ case 37:
5095
5245
  _a.sent();
5096
5246
  return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
5097
5247
  calendarEventTemplateId: event30min.id,
@@ -5100,7 +5250,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5100
5250
  multi: true,
5101
5251
  userIds: [sdk.userInfo.id, sdkNonAdmin.userInfo.id]
5102
5252
  })];
5103
- case 23:
5253
+ case 38:
5104
5254
  multiSlots = _a.sent();
5105
5255
  assert(multiSlots.availabilityBlocks.length === 2, 'expected 2 slots', 'multi slots are intersection of availability');
5106
5256
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
@@ -5109,7 +5259,7 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5109
5259
  userId: sdk.userInfo.id,
5110
5260
  otherUserIds: [sdkNonAdmin.userInfo.id]
5111
5261
  })];
5112
- case 24:
5262
+ case 39:
5113
5263
  bookedMultiAppointment = (_a.sent()).createdEvent;
5114
5264
  assert((bookedMultiAppointment.attendees.length === 3
5115
5265
  && bookedMultiAppointment.attendees.filter(function (a) { return a.type === 'enduser'; }).length === 1), 'did not get valid attendees', 'Multi attendees fo multi-event');
@@ -5118,14 +5268,14 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5118
5268
  startTime: new Date(multiSlots.availabilityBlocks[0].startTimeInMS),
5119
5269
  userId: sdk.userInfo.id,
5120
5270
  }); }, handleAnyError)];
5121
- case 25:
5271
+ case 40:
5122
5272
  _a.sent();
5123
5273
  return [4 /*yield*/, async_test('booking against conflict prevented other user', function () { return enduserSDK.api.calendar_events.book_appointment({
5124
5274
  calendarEventTemplateId: event30min.id,
5125
5275
  startTime: new Date(multiSlots.availabilityBlocks[0].startTimeInMS),
5126
5276
  userId: sdkNonAdmin.userInfo.id,
5127
5277
  }); }, handleAnyError)];
5128
- case 26:
5278
+ case 41:
5129
5279
  _a.sent();
5130
5280
  return [4 /*yield*/, async_test('booking against conflict prevented 2 users', function () { return enduserSDK.api.calendar_events.book_appointment({
5131
5281
  calendarEventTemplateId: event30min.id,
@@ -5133,18 +5283,20 @@ export var self_serve_appointment_booking_tests = function () { return __awaiter
5133
5283
  userId: sdk.userInfo.id,
5134
5284
  otherUserIds: [sdkNonAdmin.userInfo.id],
5135
5285
  }); }, handleAnyError)];
5136
- case 27:
5286
+ case 42:
5137
5287
  _a.sent();
5138
5288
  return [4 /*yield*/, Promise.all([
5139
5289
  sdk.api.endusers.deleteOne(e1.id),
5140
5290
  sdk.api.endusers.deleteOne(e2.id),
5291
+ sdk.api.endusers.deleteOne(e3.id),
5141
5292
  sdk.api.calendar_event_templates.deleteOne(event30min.id),
5293
+ sdk.api.calendar_event_templates.deleteOne(event30minGroup.id),
5142
5294
  sdk.api.calendar_event_templates.deleteOne(event15min.id),
5143
5295
  sdk.api.calendar_events.deleteOne(bookedAppointment.id),
5144
- sdk.api.calendar_events.deleteOne(conflict.id),
5145
5296
  sdk.api.calendar_events.deleteOne(bookedMultiAppointment.id),
5297
+ sdk.api.calendar_events.deleteOne(groupEvent.id),
5146
5298
  ])];
5147
- case 28:
5299
+ case 43:
5148
5300
  _a.sent();
5149
5301
  return [2 /*return*/];
5150
5302
  }
@@ -6904,6 +7056,7 @@ var validate_schema = function () {
6904
7056
  endpoints.add(path);
6905
7057
  }
6906
7058
  }
7059
+ console.log("Schema validated");
6907
7060
  };
6908
7061
  var test_weighted_round_robin = function () { return __awaiter(void 0, void 0, void 0, function () {
6909
7062
  var testUsers, userIds, testAssignments, run_assignment_simulation;
@@ -7523,7 +7676,7 @@ export var ticket_reminder_tests = function () { return __awaiter(void 0, void 0
7523
7676
  return (((_b = (_a = t.reminders) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.didRemind) === true
7524
7677
  && t.nextReminderInMS !== -1
7525
7678
  && ((_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);
7526
- }, 25, 200); }, passOnAnyResult)];
7679
+ }, 10, 500); }, passOnAnyResult)];
7527
7680
  case 13:
7528
7681
  _a.sent();
7529
7682
  return [4 /*yield*/, async_test("Delayed reminder not processed yet", function () { return sdk.api.tickets.getOne(tToRemind.id); }, {
@@ -7631,11 +7784,13 @@ var test_send_with_template = function () { return __awaiter(void 0, void 0, voi
7631
7784
  });
7632
7785
  }); };
7633
7786
  var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
7634
- var existing, u, authToken, createdUserSDK;
7787
+ var existing, u, authToken, createdUserSDK, enduser, enduserAuthToken, enduserSDK;
7635
7788
  var _a;
7636
7789
  return __generator(this, function (_b) {
7637
7790
  switch (_b.label) {
7638
- case 0: return [4 /*yield*/, sdk.api.users.getSome({ filter: { email: 'deleteme@tellescope.com' } })];
7791
+ case 0:
7792
+ log_header("Delete user tests");
7793
+ return [4 /*yield*/, sdk.api.users.getSome({ filter: { email: 'deleteme@tellescope.com' } })];
7639
7794
  case 1:
7640
7795
  existing = _b.sent();
7641
7796
  if (!(((_a = existing[0]) === null || _a === void 0 ? void 0 : _a.email) === 'deleteme@tellescope.com')) return [3 /*break*/, 3];
@@ -7661,29 +7816,409 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
7661
7816
  _b.sent();
7662
7817
  return [4 /*yield*/, async_test("De-authenticated after deletion", createdUserSDK.test_authenticated, handleAnyError)];
7663
7818
  case 9:
7819
+ _b.sent();
7820
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
7821
+ case 10:
7822
+ enduser = _b.sent();
7823
+ return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: enduser.id })];
7824
+ case 11:
7825
+ enduserAuthToken = (_b.sent()).authToken;
7826
+ enduserSDK = new EnduserSession({ host: host, businessId: businessId, authToken: enduserAuthToken });
7827
+ return [4 /*yield*/, async_test("Enduser Authenticated", function () { return enduserSDK.api.endusers.getSome(); }, passOnAnyResult)];
7828
+ case 12:
7829
+ _b.sent();
7830
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
7831
+ case 13:
7832
+ _b.sent();
7833
+ return [4 /*yield*/, wait(undefined, 250)];
7834
+ case 14:
7835
+ _b.sent();
7836
+ return [4 /*yield*/, async_test("Enduser De-authenticated after deletion", function () { return enduserSDK.api.endusers.getSome(); }, handleAnyError)];
7837
+ case 15:
7664
7838
  _b.sent();
7665
7839
  return [2 /*return*/];
7666
7840
  }
7667
7841
  });
7668
7842
  }); };
7669
- (function () { return __awaiter(void 0, void 0, void 0, function () {
7670
- var err_1, n, _a, _b, _c, _i, returnValidation, t, _d, _f, _g, _h, err_2;
7671
- var _j, _k;
7672
- return __generator(this, function (_l) {
7673
- switch (_l.label) {
7843
+ var sdkMfaApiKeyUserId = '6525a43e1e75f0350d62afc4';
7844
+ var lockout_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
7845
+ var nonAdminId;
7846
+ return __generator(this, function (_a) {
7847
+ switch (_a.label) {
7674
7848
  case 0:
7675
- log_header("API");
7676
- return [4 /*yield*/, async_test("email-image tracking endpoint is live", function () { return axios.get('http://localhost:8080/email-image/'); }, { onResult: function (result) { return result.data === TRACK_OPEN_IMAGE.toString('utf-8'); } })];
7849
+ log_header("Lockout tests");
7850
+ return [4 /*yield*/, async_test("API Key is authenticated", sdkMfaApiKey.test_authenticated, passOnAnyResult)];
7677
7851
  case 1:
7678
- _l.sent();
7679
- _l.label = 2;
7852
+ _a.sent();
7853
+ return [4 /*yield*/, async_test("API Key lock to future date", function () { return sdk.api.users.updateOne(sdkMfaApiKeyUserId, { lockedOutUntil: 0 }); }, passOnAnyResult)];
7680
7854
  case 2:
7681
- _l.trys.push([2, 46, , 47]);
7682
- form_conditional_logic_tests();
7683
- return [4 /*yield*/, test_weighted_round_robin()];
7855
+ _a.sent();
7856
+ return [4 /*yield*/, wait(undefined, 250)];
7684
7857
  case 3:
7685
- _l.sent();
7686
- return [4 /*yield*/, validate_schema()];
7858
+ _a.sent();
7859
+ return [4 /*yield*/, async_test("API Key is de-authenticated when locked", sdkMfaApiKey.test_authenticated, handleAnyError)];
7860
+ case 4:
7861
+ _a.sent();
7862
+ return [4 /*yield*/, async_test("API Key unlock to -1", function () { return sdk.api.users.updateOne(sdkMfaApiKeyUserId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
7863
+ case 5:
7864
+ _a.sent();
7865
+ return [4 /*yield*/, async_test("API Key is authenticated", sdkMfaApiKey.test_authenticated, passOnAnyResult)];
7866
+ case 6:
7867
+ _a.sent();
7868
+ nonAdminId = sdkNonAdmin.userInfo.id;
7869
+ return [4 /*yield*/, async_test("users cannot update own lock status", function () { return sdk.api.users.updateOne(sdk.userInfo.id, { lockedOutUntil: -1 }); }, handleAnyError)];
7870
+ case 7:
7871
+ _a.sent();
7872
+ return [4 /*yield*/, async_test("non-admin can't lock out others", function () { return sdkNonAdmin.api.users.updateOne(sdk.userInfo.id, { lockedOutUntil: Date.now() }); }, handleAnyError)];
7873
+ case 8:
7874
+ _a.sent();
7875
+ return [4 /*yield*/, async_test("non-admin is authenticated", sdkNonAdmin.test_authenticated, passOnAnyResult)];
7876
+ case 9:
7877
+ _a.sent();
7878
+ return [4 /*yield*/, async_test("admin unlock to -1", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
7879
+ case 10:
7880
+ _a.sent();
7881
+ return [4 /*yield*/, async_test("non-admin is authenticated (-1)", sdkNonAdmin.test_authenticated, passOnAnyResult)];
7882
+ case 11:
7883
+ _a.sent();
7884
+ return [4 /*yield*/, async_test("admin lock to past date", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: Date.now() - 1000 }); }, passOnAnyResult)];
7885
+ case 12:
7886
+ _a.sent();
7887
+ return [4 /*yield*/, async_test("non-admin is authenticated (past date)", sdkNonAdmin.test_authenticated, passOnAnyResult)];
7888
+ case 13:
7889
+ _a.sent();
7890
+ return [4 /*yield*/, async_test("admin lock to 0 (indefinite)", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: 0 }); }, passOnAnyResult)];
7891
+ case 14:
7892
+ _a.sent();
7893
+ return [4 /*yield*/, wait(undefined, 250)];
7894
+ case 15:
7895
+ _a.sent();
7896
+ return [4 /*yield*/, async_test("non-admin is de-authenticated when locked to 0", sdkNonAdmin.test_authenticated, handleAnyError)];
7897
+ case 16:
7898
+ _a.sent();
7899
+ return [4 /*yield*/, async_test("non-admin can't authenciate when locked to 0", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, handleAnyError)];
7900
+ case 17:
7901
+ _a.sent();
7902
+ return [4 /*yield*/, async_test("admin unlock to -1", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
7903
+ case 18:
7904
+ _a.sent();
7905
+ return [4 /*yield*/, async_test("non-admin can re authenciate when locked to 0", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, passOnAnyResult)];
7906
+ case 19:
7907
+ _a.sent();
7908
+ return [4 /*yield*/, async_test("non-admin is authenticated", sdkNonAdmin.test_authenticated, passOnAnyResult)];
7909
+ case 20:
7910
+ _a.sent();
7911
+ return [4 /*yield*/, async_test("admin lock to future date", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: Date.now() + 10000 }); }, passOnAnyResult)];
7912
+ case 21:
7913
+ _a.sent();
7914
+ return [4 /*yield*/, wait(undefined, 250)];
7915
+ case 22:
7916
+ _a.sent();
7917
+ return [4 /*yield*/, async_test("non-admin is de-authenticated when locked to future date", sdkNonAdmin.test_authenticated, handleAnyError)];
7918
+ case 23:
7919
+ _a.sent();
7920
+ return [4 /*yield*/, async_test("non-admin can't authenciate when locked to future date", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, handleAnyError)];
7921
+ case 24:
7922
+ _a.sent();
7923
+ return [4 /*yield*/, async_test("admin unlock to -1", function () { return sdk.api.users.updateOne(nonAdminId, { lockedOutUntil: -1 }); }, passOnAnyResult)];
7924
+ case 25:
7925
+ _a.sent();
7926
+ return [4 /*yield*/, async_test("non-admin can re authenciate when locked to future date", function () { return sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword); }, passOnAnyResult)];
7927
+ case 26:
7928
+ _a.sent();
7929
+ return [4 /*yield*/, async_test("non-admin is authenticated", sdkNonAdmin.test_authenticated, passOnAnyResult)];
7930
+ case 27:
7931
+ _a.sent();
7932
+ return [2 /*return*/];
7933
+ }
7934
+ });
7935
+ }); };
7936
+ var sync_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
7937
+ var from, e, t, e2;
7938
+ return __generator(this, function (_a) {
7939
+ switch (_a.label) {
7940
+ case 0:
7941
+ log_header("Data Sync");
7942
+ from = new Date();
7943
+ return [4 /*yield*/, async_test("No new records, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
7944
+ var results = _a.results;
7945
+ return results.length === 0;
7946
+ } })];
7947
+ case 1:
7948
+ _a.sent();
7949
+ return [4 /*yield*/, async_test("No new records, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
7950
+ var results = _a.results;
7951
+ return results.length === 0;
7952
+ } })];
7953
+ case 2:
7954
+ _a.sent();
7955
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
7956
+ case 3:
7957
+ e = _a.sent();
7958
+ return [4 /*yield*/, wait(undefined, 100)];
7959
+ case 4:
7960
+ _a.sent();
7961
+ return [4 /*yield*/, async_test("Enduser create, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
7962
+ var results = _a.results;
7963
+ return (results.length === 1
7964
+ && results[0].modelName === 'endusers'
7965
+ && results[0].recordId === e.id
7966
+ && results[0].data.includes(e.id)
7967
+ && JSON.parse(results[0].data) // tests no error throwing
7968
+ );
7969
+ } })];
7970
+ case 5:
7971
+ _a.sent();
7972
+ return [4 /*yield*/, async_test("Enduser create, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
7973
+ var results = _a.results;
7974
+ return results.length === 0;
7975
+ } })];
7976
+ case 6:
7977
+ _a.sent();
7978
+ return [4 /*yield*/, async_test("Enduser create, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
7979
+ var results = _a.results;
7980
+ return results.length === 0;
7981
+ } })];
7982
+ case 7:
7983
+ _a.sent();
7984
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { fname: "UPDATE_TEST" })];
7985
+ case 8:
7986
+ _a.sent();
7987
+ return [4 /*yield*/, wait(undefined, 100)];
7988
+ case 9:
7989
+ _a.sent();
7990
+ return [4 /*yield*/, async_test("Enduser update, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
7991
+ var results = _a.results;
7992
+ return (results.length === 1
7993
+ && results[0].modelName === 'endusers'
7994
+ && results[0].recordId === e.id
7995
+ && results[0].data.includes("UPDATE_TEST"));
7996
+ } })];
7997
+ case 10:
7998
+ _a.sent();
7999
+ return [4 /*yield*/, async_test("Enduser update, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8000
+ var results = _a.results;
8001
+ return results.length === 0;
8002
+ } })];
8003
+ case 11:
8004
+ _a.sent();
8005
+ return [4 /*yield*/, async_test("Enduser update, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8006
+ var results = _a.results;
8007
+ return results.length === 0;
8008
+ } })];
8009
+ case 12:
8010
+ _a.sent();
8011
+ return [4 /*yield*/, sdk.api.tickets.createOne({ title: 'access test' })];
8012
+ case 13:
8013
+ t = _a.sent();
8014
+ return [4 /*yield*/, wait(undefined, 100)];
8015
+ case 14:
8016
+ _a.sent();
8017
+ return [4 /*yield*/, async_test("Non-admin can't access ticket", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8018
+ var results = _a.results;
8019
+ return results.length === 0;
8020
+ } })
8021
+ // creates a user notification which increments count/index
8022
+ ];
8023
+ case 15:
8024
+ _a.sent();
8025
+ // creates a user notification which increments count/index
8026
+ sdk.api.tickets.updateOne(t.id, { owner: sdkNonAdmin.userInfo.id });
8027
+ return [4 /*yield*/, wait(undefined, 100)];
8028
+ case 16:
8029
+ _a.sent();
8030
+ return [4 /*yield*/, async_test("Non-admin can access tickets on assignment", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8031
+ var results = _a.results;
8032
+ return results.length === 2;
8033
+ } })];
8034
+ case 17:
8035
+ _a.sent();
8036
+ sdk.api.tickets.updateOne(t.id, { owner: '' });
8037
+ return [4 /*yield*/, wait(undefined, 100)];
8038
+ case 18:
8039
+ _a.sent();
8040
+ return [4 /*yield*/, async_test("Non-admin can't access tickets on unassignment", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8041
+ var results = _a.results;
8042
+ return results.length === 1;
8043
+ } })];
8044
+ case 19:
8045
+ _a.sent();
8046
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { assignedTo: [sdkNonAdmin.userInfo.id] }, { replaceObjectFields: true })];
8047
+ case 20:
8048
+ _a.sent();
8049
+ return [4 /*yield*/, wait(undefined, 100)];
8050
+ case 21:
8051
+ _a.sent();
8052
+ return [4 /*yield*/, async_test("Enduser update non-admin assignment, can access", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8053
+ var results = _a.results;
8054
+ return results.length === 2;
8055
+ } })];
8056
+ case 22:
8057
+ _a.sent();
8058
+ sdk.api.tickets.updateOne(t.id, { owner: '', enduserId: e.id });
8059
+ return [4 /*yield*/, wait(undefined, 100)];
8060
+ case 23:
8061
+ _a.sent();
8062
+ return [4 /*yield*/, async_test("Non-admin can access ticket (and enduser) after enduser assignment", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8063
+ var results = _a.results;
8064
+ return results.length === 3;
8065
+ } })];
8066
+ case 24:
8067
+ _a.sent();
8068
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { assignedTo: [] }, { replaceObjectFields: true })];
8069
+ case 25:
8070
+ _a.sent();
8071
+ return [4 /*yield*/, wait(undefined, 100)];
8072
+ case 26:
8073
+ _a.sent();
8074
+ return [4 /*yield*/, async_test("Enduser update non-admin assignment, revoked access to enduser and ticket", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8075
+ var results = _a.results;
8076
+ return results.length === 1;
8077
+ } })
8078
+ // enduser, ticket, and ticket assignment user_notification created
8079
+ ];
8080
+ case 27:
8081
+ _a.sent();
8082
+ // enduser, ticket, and ticket assignment user_notification created
8083
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(e.id)];
8084
+ case 28:
8085
+ // enduser, ticket, and ticket assignment user_notification created
8086
+ _a.sent();
8087
+ return [4 /*yield*/, wait(undefined, 100)];
8088
+ case 29:
8089
+ _a.sent();
8090
+ return [4 /*yield*/, async_test("Enduser delete, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8091
+ var results = _a.results;
8092
+ return (results.length === 3
8093
+ && results[0].modelName === 'endusers'
8094
+ && results[0].recordId === e.id
8095
+ && results[0].data === 'deleted');
8096
+ } })];
8097
+ case 30:
8098
+ _a.sent();
8099
+ return [4 /*yield*/, async_test("Enduser delete, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8100
+ var results = _a.results;
8101
+ return results.length === 1;
8102
+ } })];
8103
+ case 31:
8104
+ _a.sent();
8105
+ return [4 /*yield*/, async_test("Enduser delete, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8106
+ var results = _a.results;
8107
+ return results.length === 0;
8108
+ } })
8109
+ // bulk create test coverage
8110
+ ];
8111
+ case 32:
8112
+ _a.sent();
8113
+ return [4 /*yield*/, sdk.api.endusers.createSome([{}])];
8114
+ case 33:
8115
+ e2 = (_a.sent()).created[0];
8116
+ return [4 /*yield*/, wait(undefined, 100)];
8117
+ case 34:
8118
+ _a.sent();
8119
+ return [4 /*yield*/, async_test("Bulk Enduser create, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8120
+ var results = _a.results;
8121
+ return (results.length === 4
8122
+ && results[0].modelName === 'endusers'
8123
+ && results[0].recordId === e2.id
8124
+ && results[0].data.includes(e2.id)
8125
+ && JSON.parse(results[0].data) // tests no error throwing
8126
+ );
8127
+ } })];
8128
+ case 35:
8129
+ _a.sent();
8130
+ return [4 /*yield*/, async_test("Bulk Enduser create, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8131
+ var results = _a.results;
8132
+ return results.length === 1;
8133
+ } })];
8134
+ case 36:
8135
+ _a.sent();
8136
+ return [4 /*yield*/, async_test("Bulk Enduser create, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8137
+ var results = _a.results;
8138
+ return results.length === 0;
8139
+ } })];
8140
+ case 37:
8141
+ _a.sent();
8142
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(e2.id)];
8143
+ case 38:
8144
+ _a.sent();
8145
+ return [4 /*yield*/, wait(undefined, 100)];
8146
+ case 39:
8147
+ _a.sent();
8148
+ return [4 /*yield*/, async_test("Bulk Enduser delete, admin", function () { return sdk.sync({ from: from }); }, { onResult: function (_a) {
8149
+ var results = _a.results;
8150
+ return (results.length === 4
8151
+ && results[0].modelName === 'endusers'
8152
+ && results[0].recordId === e2.id
8153
+ && results[0].data === 'deleted');
8154
+ } })];
8155
+ case 40:
8156
+ _a.sent();
8157
+ return [4 /*yield*/, async_test("Bulk Enduser delete, non-admin", function () { return sdkNonAdmin.sync({ from: from }); }, { onResult: function (_a) {
8158
+ var results = _a.results;
8159
+ return results.length === 1;
8160
+ } })];
8161
+ case 41:
8162
+ _a.sent();
8163
+ return [4 /*yield*/, async_test("Bulk Enduser delete, sub organization", function () { return sdkSub.sync({ from: from }); }, { onResult: function (_a) {
8164
+ var results = _a.results;
8165
+ return results.length === 0;
8166
+ } })];
8167
+ case 42:
8168
+ _a.sent();
8169
+ return [2 /*return*/];
8170
+ }
8171
+ });
8172
+ }); };
8173
+ // to cover potential vulernabilities with enduser public register endpoint
8174
+ var register_as_enduser_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
8175
+ var enduser;
8176
+ return __generator(this, function (_a) {
8177
+ switch (_a.label) {
8178
+ case 0:
8179
+ log_header("Register as Enduser");
8180
+ return [4 /*yield*/, async_test("Enduser register", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, passOnAnyResult)];
8181
+ case 1:
8182
+ _a.sent();
8183
+ return [4 /*yield*/, 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"; } })];
8184
+ case 2:
8185
+ _a.sent();
8186
+ return [4 /*yield*/, wait(undefined, 1000)];
8187
+ case 3:
8188
+ _a.sent();
8189
+ return [4 /*yield*/, async_test("Enduser duplicate register (same response, no ability to enumerate contacts)", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, passOnAnyResult)];
8190
+ case 4:
8191
+ _a.sent();
8192
+ return [4 /*yield*/, sdk.api.endusers.getOne({ email: 'test@tellescope.com' })];
8193
+ case 5:
8194
+ enduser = _a.sent();
8195
+ if (!enduser) return [3 /*break*/, 7];
8196
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
8197
+ case 6:
8198
+ _a.sent();
8199
+ _a.label = 7;
8200
+ case 7: return [2 /*return*/];
8201
+ }
8202
+ });
8203
+ }); };
8204
+ (function () { return __awaiter(void 0, void 0, void 0, function () {
8205
+ var err_1, n, _a, _b, _c, _i, returnValidation, t, _d, _f, _g, _h, err_2;
8206
+ var _j, _k;
8207
+ return __generator(this, function (_l) {
8208
+ switch (_l.label) {
8209
+ case 0:
8210
+ log_header("API");
8211
+ return [4 /*yield*/, async_test("email-image tracking endpoint is live", function () { return axios.get('http://localhost:8080/email-image/'); }, { onResult: function (result) { return result.data === TRACK_OPEN_IMAGE.toString('utf-8'); } })];
8212
+ case 1:
8213
+ _l.sent();
8214
+ _l.label = 2;
8215
+ case 2:
8216
+ _l.trys.push([2, 49, , 50]);
8217
+ form_conditional_logic_tests();
8218
+ return [4 /*yield*/, test_weighted_round_robin()];
8219
+ case 3:
8220
+ _l.sent();
8221
+ return [4 /*yield*/, validate_schema()];
7687
8222
  case 4:
7688
8223
  _l.sent();
7689
8224
  return [4 /*yield*/, Promise.all([
@@ -7692,11 +8227,10 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
7692
8227
  sdkOtherSub.authenticate(otherSubUserEmail, password),
7693
8228
  sdkSubSub.authenticate(subSubUserEmail, password),
7694
8229
  sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
7695
- ])
7696
- // console.log(JSON.stringify(await sdk.bulk_load({ load: [{ model: 'users' }]}), null, 2))
7697
- ];
8230
+ ])];
7698
8231
  case 5:
7699
8232
  _l.sent();
8233
+ console.log("Authentication done");
7700
8234
  // console.log(JSON.stringify(await sdk.bulk_load({ load: [{ model: 'users' }]}), null, 2))
7701
8235
  return [4 /*yield*/, async_test("count exists",
7702
8236
  // @ts-ignore
@@ -7716,117 +8250,126 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
7716
8250
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
7717
8251
  case 10:
7718
8252
  _l.sent(); // should come right after setup tests
7719
- return [4 /*yield*/, delete_user_tests()
7720
- // await test_send_with_template()
7721
- ];
8253
+ return [4 /*yield*/, register_as_enduser_tests()];
7722
8254
  case 11:
7723
8255
  _l.sent();
7724
- // await test_send_with_template()
7725
- return [4 /*yield*/, self_serve_appointment_booking_tests()];
8256
+ return [4 /*yield*/, sync_tests()];
7726
8257
  case 12:
7727
- // await test_send_with_template()
7728
8258
  _l.sent();
7729
- return [4 /*yield*/, bulk_read_tests()];
8259
+ return [4 /*yield*/, lockout_tests()];
7730
8260
  case 13:
7731
8261
  _l.sent();
7732
- return [4 /*yield*/, ticket_reminder_tests()];
8262
+ return [4 /*yield*/, self_serve_appointment_booking_tests()];
7733
8263
  case 14:
7734
8264
  _l.sent();
7735
- return [4 /*yield*/, enduser_access_tags_tests()];
8265
+ return [4 /*yield*/, delete_user_tests()
8266
+ // await test_send_with_template()
8267
+ ];
7736
8268
  case 15:
7737
8269
  _l.sent();
7738
- return [4 /*yield*/, marketing_email_unsubscribe_tests()];
8270
+ // await test_send_with_template()
8271
+ return [4 /*yield*/, bulk_read_tests()];
7739
8272
  case 16:
8273
+ // await test_send_with_template()
7740
8274
  _l.sent();
7741
- return [4 /*yield*/, unique_strings_tests()];
8275
+ return [4 /*yield*/, ticket_reminder_tests()];
7742
8276
  case 17:
7743
8277
  _l.sent();
7744
- return [4 /*yield*/, alternate_phones_tests()];
8278
+ return [4 /*yield*/, enduser_access_tags_tests()];
7745
8279
  case 18:
7746
8280
  _l.sent();
7747
- return [4 /*yield*/, ticket_queue_tests()];
8281
+ return [4 /*yield*/, marketing_email_unsubscribe_tests()];
7748
8282
  case 19:
7749
8283
  _l.sent();
7750
- return [4 /*yield*/, no_chained_triggers_tests()];
8284
+ return [4 /*yield*/, unique_strings_tests()];
7751
8285
  case 20:
7752
8286
  _l.sent();
7753
- return [4 /*yield*/, field_equals_trigger_tests()];
8287
+ return [4 /*yield*/, alternate_phones_tests()];
7754
8288
  case 21:
7755
8289
  _l.sent();
7756
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
8290
+ return [4 /*yield*/, ticket_queue_tests()];
7757
8291
  case 22:
7758
8292
  _l.sent();
7759
- return [4 /*yield*/, role_based_access_tests()];
8293
+ return [4 /*yield*/, no_chained_triggers_tests()];
7760
8294
  case 23:
7761
8295
  _l.sent();
7762
- return [4 /*yield*/, automation_trigger_tests()];
8296
+ return [4 /*yield*/, field_equals_trigger_tests()];
7763
8297
  case 24:
7764
8298
  _l.sent();
7765
- return [4 /*yield*/, enduser_session_tests()];
8299
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
7766
8300
  case 25:
7767
8301
  _l.sent();
7768
- return [4 /*yield*/, nextReminderInMS_tests()];
8302
+ return [4 /*yield*/, role_based_access_tests()];
7769
8303
  case 26:
7770
8304
  _l.sent();
7771
- return [4 /*yield*/, search_tests()];
8305
+ return [4 /*yield*/, automation_trigger_tests()];
7772
8306
  case 27:
7773
8307
  _l.sent();
7774
- return [4 /*yield*/, wait_for_trigger_tests()];
8308
+ return [4 /*yield*/, enduser_session_tests()];
7775
8309
  case 28:
7776
8310
  _l.sent();
7777
- return [4 /*yield*/, pdf_generation()];
8311
+ return [4 /*yield*/, nextReminderInMS_tests()];
7778
8312
  case 29:
7779
8313
  _l.sent();
7780
- return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
8314
+ return [4 /*yield*/, search_tests()];
7781
8315
  case 30:
7782
8316
  _l.sent();
7783
- return [4 /*yield*/, rate_limit_tests()];
8317
+ return [4 /*yield*/, wait_for_trigger_tests()];
7784
8318
  case 31:
7785
8319
  _l.sent();
7786
- return [4 /*yield*/, merge_enduser_tests()];
8320
+ return [4 /*yield*/, pdf_generation()];
7787
8321
  case 32:
7788
8322
  _l.sent();
7789
- return [4 /*yield*/, auto_reply_tests()];
8323
+ return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
7790
8324
  case 33:
7791
8325
  _l.sent();
7792
- return [4 /*yield*/, sub_organization_enduser_tests()];
8326
+ return [4 /*yield*/, rate_limit_tests()];
7793
8327
  case 34:
7794
8328
  _l.sent();
7795
- return [4 /*yield*/, sub_organization_tests()];
8329
+ return [4 /*yield*/, merge_enduser_tests()];
7796
8330
  case 35:
7797
8331
  _l.sent();
7798
- return [4 /*yield*/, filter_by_date_tests()];
8332
+ return [4 /*yield*/, auto_reply_tests()];
7799
8333
  case 36:
7800
8334
  _l.sent();
7801
- return [4 /*yield*/, generate_user_auth_tests()];
8335
+ return [4 /*yield*/, sub_organization_enduser_tests()];
7802
8336
  case 37:
7803
8337
  _l.sent();
7804
- return [4 /*yield*/, generateEnduserAuthTests()];
8338
+ return [4 /*yield*/, sub_organization_tests()];
7805
8339
  case 38:
7806
8340
  _l.sent();
7807
- return [4 /*yield*/, public_form_tests()];
8341
+ return [4 /*yield*/, filter_by_date_tests()];
7808
8342
  case 39:
7809
8343
  _l.sent();
7810
- return [4 /*yield*/, badInputTests()];
8344
+ return [4 /*yield*/, generate_user_auth_tests()];
7811
8345
  case 40:
7812
8346
  _l.sent();
7813
- return [4 /*yield*/, filterTests()];
8347
+ return [4 /*yield*/, generateEnduserAuthTests()];
7814
8348
  case 41:
7815
8349
  _l.sent();
7816
- return [4 /*yield*/, updatesTests()];
8350
+ return [4 /*yield*/, public_form_tests()];
7817
8351
  case 42:
7818
8352
  _l.sent();
7819
- return [4 /*yield*/, threadKeyTests()];
8353
+ return [4 /*yield*/, badInputTests()];
7820
8354
  case 43:
7821
8355
  _l.sent();
7822
- return [4 /*yield*/, enduserAccessTests()];
8356
+ return [4 /*yield*/, filterTests()];
7823
8357
  case 44:
7824
8358
  _l.sent();
7825
- return [4 /*yield*/, enduser_redaction_tests()];
8359
+ return [4 /*yield*/, updatesTests()];
7826
8360
  case 45:
7827
8361
  _l.sent();
7828
- return [3 /*break*/, 47];
8362
+ return [4 /*yield*/, threadKeyTests()];
7829
8363
  case 46:
8364
+ _l.sent();
8365
+ return [4 /*yield*/, enduserAccessTests()];
8366
+ case 47:
8367
+ _l.sent();
8368
+ return [4 /*yield*/, enduser_redaction_tests()];
8369
+ case 48:
8370
+ _l.sent();
8371
+ return [3 /*break*/, 50];
8372
+ case 49:
7830
8373
  err_1 = _l.sent();
7831
8374
  console.error("Failed during custom test");
7832
8375
  if (err_1.message && err_1.info) {
@@ -7836,18 +8379,18 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
7836
8379
  console.error(err_1);
7837
8380
  }
7838
8381
  process.exit(1);
7839
- return [3 /*break*/, 47];
7840
- case 47:
8382
+ return [3 /*break*/, 50];
8383
+ case 50:
7841
8384
  _a = schema;
7842
8385
  _b = [];
7843
8386
  for (_c in _a)
7844
8387
  _b.push(_c);
7845
8388
  _i = 0;
7846
- _l.label = 48;
7847
- case 48:
7848
- if (!(_i < _b.length)) return [3 /*break*/, 51];
8389
+ _l.label = 51;
8390
+ case 51:
8391
+ if (!(_i < _b.length)) return [3 /*break*/, 54];
7849
8392
  _c = _b[_i];
7850
- if (!(_c in _a)) return [3 /*break*/, 50];
8393
+ if (!(_c in _a)) return [3 /*break*/, 53];
7851
8394
  n = _c;
7852
8395
  returnValidation = (_k = (_j = schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
7853
8396
  return [4 /*yield*/, run_generated_tests({
@@ -7858,41 +8401,41 @@ var delete_user_tests = function () { return __awaiter(void 0, void 0, void 0, f
7858
8401
  create: returnValidation // ModelFields<ClientModel>,
7859
8402
  }
7860
8403
  })];
7861
- case 49:
8404
+ case 52:
7862
8405
  _l.sent();
7863
- _l.label = 50;
7864
- case 50:
8406
+ _l.label = 53;
8407
+ case 53:
7865
8408
  _i++;
7866
- return [3 /*break*/, 48];
7867
- case 51:
8409
+ return [3 /*break*/, 51];
8410
+ case 54:
7868
8411
  _d = tests;
7869
8412
  _f = [];
7870
8413
  for (_g in _d)
7871
8414
  _f.push(_g);
7872
8415
  _h = 0;
7873
- _l.label = 52;
7874
- case 52:
7875
- if (!(_h < _f.length)) return [3 /*break*/, 57];
8416
+ _l.label = 55;
8417
+ case 55:
8418
+ if (!(_h < _f.length)) return [3 /*break*/, 60];
7876
8419
  _g = _f[_h];
7877
- if (!(_g in _d)) return [3 /*break*/, 56];
8420
+ if (!(_g in _d)) return [3 /*break*/, 59];
7878
8421
  t = _g;
7879
- _l.label = 53;
7880
- case 53:
7881
- _l.trys.push([53, 55, , 56]);
8422
+ _l.label = 56;
8423
+ case 56:
8424
+ _l.trys.push([56, 58, , 59]);
7882
8425
  return [4 /*yield*/, tests[t]()];
7883
- case 54:
8426
+ case 57:
7884
8427
  _l.sent();
7885
- return [3 /*break*/, 56];
7886
- case 55:
8428
+ return [3 /*break*/, 59];
8429
+ case 58:
7887
8430
  err_2 = _l.sent();
7888
8431
  console.error("Error running test:");
7889
8432
  console.error(err_2);
7890
8433
  process.exit(1);
7891
- return [3 /*break*/, 56];
7892
- case 56:
8434
+ return [3 /*break*/, 59];
8435
+ case 59:
7893
8436
  _h++;
7894
- return [3 /*break*/, 52];
7895
- case 57:
8437
+ return [3 /*break*/, 55];
8438
+ case 60:
7896
8439
  process.exit();
7897
8440
  return [2 /*return*/];
7898
8441
  }