@tellescope/sdk 1.75.0 → 1.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/sdk.d.ts +8 -1
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +1 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +698 -155
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +8 -1
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +1 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +698 -155
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/sdk.ts +3 -0
- package/src/tests/tests.ts +503 -4
- package/test_generated.pdf +0 -0
package/lib/esm/tests/tests.js
CHANGED
|
@@ -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
|
-
|
|
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*/,
|
|
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*/,
|
|
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*/,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
255
|
+
case 32:
|
|
203
256
|
_a.sent();
|
|
204
257
|
// reauthenticate
|
|
205
258
|
return [4 /*yield*/, wait(undefined, 1000)];
|
|
206
|
-
case
|
|
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
|
|
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
|
|
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
|
|
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*/,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
510
|
+
case 15:
|
|
449
511
|
_d.sent();
|
|
450
512
|
return [4 /*yield*/, enduserSDK.refresh_session()]; // ensure updated session includes new sharedWithOrganizations
|
|
451
|
-
case
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
4914
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
},
|
|
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:
|
|
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
|
-
|
|
7670
|
-
|
|
7671
|
-
var
|
|
7672
|
-
return __generator(this, function (
|
|
7673
|
-
switch (
|
|
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("
|
|
7676
|
-
return [4 /*yield*/, async_test("
|
|
7849
|
+
log_header("Lockout tests");
|
|
7850
|
+
return [4 /*yield*/, async_test("API Key is authenticated", sdkMfaApiKey.test_authenticated, passOnAnyResult)];
|
|
7677
7851
|
case 1:
|
|
7678
|
-
|
|
7679
|
-
|
|
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
|
-
|
|
7682
|
-
|
|
7683
|
-
return [4 /*yield*/, test_weighted_round_robin()];
|
|
7855
|
+
_a.sent();
|
|
7856
|
+
return [4 /*yield*/, wait(undefined, 250)];
|
|
7684
7857
|
case 3:
|
|
7685
|
-
|
|
7686
|
-
return [4 /*yield*/,
|
|
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*/,
|
|
7720
|
-
// await test_send_with_template()
|
|
7721
|
-
];
|
|
8253
|
+
return [4 /*yield*/, register_as_enduser_tests()];
|
|
7722
8254
|
case 11:
|
|
7723
8255
|
_l.sent();
|
|
7724
|
-
|
|
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*/,
|
|
8259
|
+
return [4 /*yield*/, lockout_tests()];
|
|
7730
8260
|
case 13:
|
|
7731
8261
|
_l.sent();
|
|
7732
|
-
return [4 /*yield*/,
|
|
8262
|
+
return [4 /*yield*/, self_serve_appointment_booking_tests()];
|
|
7733
8263
|
case 14:
|
|
7734
8264
|
_l.sent();
|
|
7735
|
-
return [4 /*yield*/,
|
|
8265
|
+
return [4 /*yield*/, delete_user_tests()
|
|
8266
|
+
// await test_send_with_template()
|
|
8267
|
+
];
|
|
7736
8268
|
case 15:
|
|
7737
8269
|
_l.sent();
|
|
7738
|
-
|
|
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*/,
|
|
8275
|
+
return [4 /*yield*/, ticket_reminder_tests()];
|
|
7742
8276
|
case 17:
|
|
7743
8277
|
_l.sent();
|
|
7744
|
-
return [4 /*yield*/,
|
|
8278
|
+
return [4 /*yield*/, enduser_access_tags_tests()];
|
|
7745
8279
|
case 18:
|
|
7746
8280
|
_l.sent();
|
|
7747
|
-
return [4 /*yield*/,
|
|
8281
|
+
return [4 /*yield*/, marketing_email_unsubscribe_tests()];
|
|
7748
8282
|
case 19:
|
|
7749
8283
|
_l.sent();
|
|
7750
|
-
return [4 /*yield*/,
|
|
8284
|
+
return [4 /*yield*/, unique_strings_tests()];
|
|
7751
8285
|
case 20:
|
|
7752
8286
|
_l.sent();
|
|
7753
|
-
return [4 /*yield*/,
|
|
8287
|
+
return [4 /*yield*/, alternate_phones_tests()];
|
|
7754
8288
|
case 21:
|
|
7755
8289
|
_l.sent();
|
|
7756
|
-
return [4 /*yield*/,
|
|
8290
|
+
return [4 /*yield*/, ticket_queue_tests()];
|
|
7757
8291
|
case 22:
|
|
7758
8292
|
_l.sent();
|
|
7759
|
-
return [4 /*yield*/,
|
|
8293
|
+
return [4 /*yield*/, no_chained_triggers_tests()];
|
|
7760
8294
|
case 23:
|
|
7761
8295
|
_l.sent();
|
|
7762
|
-
return [4 /*yield*/,
|
|
8296
|
+
return [4 /*yield*/, field_equals_trigger_tests()];
|
|
7763
8297
|
case 24:
|
|
7764
8298
|
_l.sent();
|
|
7765
|
-
return [4 /*yield*/,
|
|
8299
|
+
return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
|
|
7766
8300
|
case 25:
|
|
7767
8301
|
_l.sent();
|
|
7768
|
-
return [4 /*yield*/,
|
|
8302
|
+
return [4 /*yield*/, role_based_access_tests()];
|
|
7769
8303
|
case 26:
|
|
7770
8304
|
_l.sent();
|
|
7771
|
-
return [4 /*yield*/,
|
|
8305
|
+
return [4 /*yield*/, automation_trigger_tests()];
|
|
7772
8306
|
case 27:
|
|
7773
8307
|
_l.sent();
|
|
7774
|
-
return [4 /*yield*/,
|
|
8308
|
+
return [4 /*yield*/, enduser_session_tests()];
|
|
7775
8309
|
case 28:
|
|
7776
8310
|
_l.sent();
|
|
7777
|
-
return [4 /*yield*/,
|
|
8311
|
+
return [4 /*yield*/, nextReminderInMS_tests()];
|
|
7778
8312
|
case 29:
|
|
7779
8313
|
_l.sent();
|
|
7780
|
-
return [4 /*yield*/,
|
|
8314
|
+
return [4 /*yield*/, search_tests()];
|
|
7781
8315
|
case 30:
|
|
7782
8316
|
_l.sent();
|
|
7783
|
-
return [4 /*yield*/,
|
|
8317
|
+
return [4 /*yield*/, wait_for_trigger_tests()];
|
|
7784
8318
|
case 31:
|
|
7785
8319
|
_l.sent();
|
|
7786
|
-
return [4 /*yield*/,
|
|
8320
|
+
return [4 /*yield*/, pdf_generation()];
|
|
7787
8321
|
case 32:
|
|
7788
8322
|
_l.sent();
|
|
7789
|
-
return [4 /*yield*/,
|
|
8323
|
+
return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
|
|
7790
8324
|
case 33:
|
|
7791
8325
|
_l.sent();
|
|
7792
|
-
return [4 /*yield*/,
|
|
8326
|
+
return [4 /*yield*/, rate_limit_tests()];
|
|
7793
8327
|
case 34:
|
|
7794
8328
|
_l.sent();
|
|
7795
|
-
return [4 /*yield*/,
|
|
8329
|
+
return [4 /*yield*/, merge_enduser_tests()];
|
|
7796
8330
|
case 35:
|
|
7797
8331
|
_l.sent();
|
|
7798
|
-
return [4 /*yield*/,
|
|
8332
|
+
return [4 /*yield*/, auto_reply_tests()];
|
|
7799
8333
|
case 36:
|
|
7800
8334
|
_l.sent();
|
|
7801
|
-
return [4 /*yield*/,
|
|
8335
|
+
return [4 /*yield*/, sub_organization_enduser_tests()];
|
|
7802
8336
|
case 37:
|
|
7803
8337
|
_l.sent();
|
|
7804
|
-
return [4 /*yield*/,
|
|
8338
|
+
return [4 /*yield*/, sub_organization_tests()];
|
|
7805
8339
|
case 38:
|
|
7806
8340
|
_l.sent();
|
|
7807
|
-
return [4 /*yield*/,
|
|
8341
|
+
return [4 /*yield*/, filter_by_date_tests()];
|
|
7808
8342
|
case 39:
|
|
7809
8343
|
_l.sent();
|
|
7810
|
-
return [4 /*yield*/,
|
|
8344
|
+
return [4 /*yield*/, generate_user_auth_tests()];
|
|
7811
8345
|
case 40:
|
|
7812
8346
|
_l.sent();
|
|
7813
|
-
return [4 /*yield*/,
|
|
8347
|
+
return [4 /*yield*/, generateEnduserAuthTests()];
|
|
7814
8348
|
case 41:
|
|
7815
8349
|
_l.sent();
|
|
7816
|
-
return [4 /*yield*/,
|
|
8350
|
+
return [4 /*yield*/, public_form_tests()];
|
|
7817
8351
|
case 42:
|
|
7818
8352
|
_l.sent();
|
|
7819
|
-
return [4 /*yield*/,
|
|
8353
|
+
return [4 /*yield*/, badInputTests()];
|
|
7820
8354
|
case 43:
|
|
7821
8355
|
_l.sent();
|
|
7822
|
-
return [4 /*yield*/,
|
|
8356
|
+
return [4 /*yield*/, filterTests()];
|
|
7823
8357
|
case 44:
|
|
7824
8358
|
_l.sent();
|
|
7825
|
-
return [4 /*yield*/,
|
|
8359
|
+
return [4 /*yield*/, updatesTests()];
|
|
7826
8360
|
case 45:
|
|
7827
8361
|
_l.sent();
|
|
7828
|
-
return [
|
|
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*/,
|
|
7840
|
-
case
|
|
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 =
|
|
7847
|
-
case
|
|
7848
|
-
if (!(_i < _b.length)) return [3 /*break*/,
|
|
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*/,
|
|
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
|
|
8404
|
+
case 52:
|
|
7862
8405
|
_l.sent();
|
|
7863
|
-
_l.label =
|
|
7864
|
-
case
|
|
8406
|
+
_l.label = 53;
|
|
8407
|
+
case 53:
|
|
7865
8408
|
_i++;
|
|
7866
|
-
return [3 /*break*/,
|
|
7867
|
-
case
|
|
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 =
|
|
7874
|
-
case
|
|
7875
|
-
if (!(_h < _f.length)) return [3 /*break*/,
|
|
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*/,
|
|
8420
|
+
if (!(_g in _d)) return [3 /*break*/, 59];
|
|
7878
8421
|
t = _g;
|
|
7879
|
-
_l.label =
|
|
7880
|
-
case
|
|
7881
|
-
_l.trys.push([
|
|
8422
|
+
_l.label = 56;
|
|
8423
|
+
case 56:
|
|
8424
|
+
_l.trys.push([56, 58, , 59]);
|
|
7882
8425
|
return [4 /*yield*/, tests[t]()];
|
|
7883
|
-
case
|
|
8426
|
+
case 57:
|
|
7884
8427
|
_l.sent();
|
|
7885
|
-
return [3 /*break*/,
|
|
7886
|
-
case
|
|
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*/,
|
|
7892
|
-
case
|
|
8434
|
+
return [3 /*break*/, 59];
|
|
8435
|
+
case 59:
|
|
7893
8436
|
_h++;
|
|
7894
|
-
return [3 /*break*/,
|
|
7895
|
-
case
|
|
8437
|
+
return [3 /*break*/, 55];
|
|
8438
|
+
case 60:
|
|
7896
8439
|
process.exit();
|
|
7897
8440
|
return [2 /*return*/];
|
|
7898
8441
|
}
|