@tellescope/sdk 1.4.37 → 1.4.42

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.
Files changed (44) hide show
  1. package/lib/cjs/enduser.d.ts +3 -3
  2. package/lib/cjs/enduser.d.ts.map +1 -1
  3. package/lib/cjs/enduser.js +1 -1
  4. package/lib/cjs/sdk.d.ts +9 -4
  5. package/lib/cjs/sdk.d.ts.map +1 -1
  6. package/lib/cjs/sdk.js +1 -1
  7. package/lib/cjs/session.d.ts +0 -1
  8. package/lib/cjs/session.d.ts.map +1 -1
  9. package/lib/cjs/session.js +1 -1
  10. package/lib/cjs/tests/public_endpoint_tests.js +1 -1
  11. package/lib/cjs/tests/socket_tests.d.ts.map +1 -1
  12. package/lib/cjs/tests/socket_tests.js +22 -9
  13. package/lib/cjs/tests/socket_tests.js.map +1 -1
  14. package/lib/cjs/tests/tests.d.ts.map +1 -1
  15. package/lib/cjs/tests/tests.js +225 -156
  16. package/lib/cjs/tests/tests.js.map +1 -1
  17. package/lib/cjs/tests/webhooks_tests.js +47 -41
  18. package/lib/cjs/tests/webhooks_tests.js.map +1 -1
  19. package/lib/esm/enduser.d.ts +5 -4
  20. package/lib/esm/enduser.d.ts.map +1 -1
  21. package/lib/esm/enduser.js +1 -1
  22. package/lib/esm/public.d.ts +2 -2
  23. package/lib/esm/public.d.ts.map +1 -1
  24. package/lib/esm/sdk.d.ts +11 -5
  25. package/lib/esm/sdk.d.ts.map +1 -1
  26. package/lib/esm/sdk.js +1 -1
  27. package/lib/esm/session.d.ts +2 -2
  28. package/lib/esm/session.d.ts.map +1 -1
  29. package/lib/esm/session.js +2 -2
  30. package/lib/esm/session.js.map +1 -1
  31. package/lib/esm/tests/public_endpoint_tests.js +1 -1
  32. package/lib/esm/tests/socket_tests.d.ts.map +1 -1
  33. package/lib/esm/tests/socket_tests.js +22 -9
  34. package/lib/esm/tests/socket_tests.js.map +1 -1
  35. package/lib/esm/tests/tests.d.ts.map +1 -1
  36. package/lib/esm/tests/tests.js +225 -156
  37. package/lib/esm/tests/tests.js.map +1 -1
  38. package/lib/esm/tests/webhooks_tests.js +47 -41
  39. package/lib/esm/tests/webhooks_tests.js.map +1 -1
  40. package/lib/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +9 -9
  42. package/src/sdk.ts +2 -2
  43. package/src/tests/socket_tests.ts +12 -1
  44. package/src/tests/tests.ts +28 -9
@@ -48,7 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
48
48
  function verb(n) { return function (v) { return step([n, v]); }; }
49
49
  function step(op) {
50
50
  if (f) throw new TypeError("Generator is already executing.");
51
- while (_) try {
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
52
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
53
  if (y = 0, t) op = [op[0] & 2, t.value];
54
54
  switch (op[0]) {
@@ -364,43 +364,82 @@ var sub_organization_tests = function () { return __awaiter(void 0, void 0, void
364
364
  });
365
365
  }); };
366
366
  var sub_organization_enduser_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
367
- var _a, _b;
368
- return __generator(this, function (_c) {
369
- switch (_c.label) {
367
+ var rootTicket, rootTicketAfterUpdate;
368
+ var _a, _b, _c;
369
+ return __generator(this, function (_d) {
370
+ switch (_d.label) {
370
371
  case 0:
371
372
  (0, testing_1.log_header)("Sub Organizations (Enduser-Facing Tests)");
372
373
  return [4 /*yield*/, enduserSDK.register({ email: 'root@tellescope.com', password: password })];
373
374
  case 1:
374
- _c.sent();
375
+ _d.sent();
375
376
  return [4 /*yield*/, subEnduserSDK.register({ email: 'sub@tellescope.com', password: password })];
376
377
  case 2:
377
- _c.sent();
378
+ _d.sent();
378
379
  return [4 /*yield*/, enduserSDK.authenticate('root@tellescope.com', password)];
379
380
  case 3:
380
- _c.sent();
381
+ _d.sent();
381
382
  return [4 /*yield*/, subEnduserSDK.authenticate('sub@tellescope.com', password)];
382
383
  case 4:
383
- _c.sent();
384
+ _d.sent();
384
385
  (0, testing_1.assert)(!((_a = enduserSDK.userInfo.organizationIds) === null || _a === void 0 ? void 0 : _a.length), 'bad root organizationIds', 'root auth org ids');
385
386
  (0, testing_1.assert)(((_b = subEnduserSDK.userInfo.organizationIds) === null || _b === void 0 ? void 0 : _b.length) === 1, 'bad sub organizationIds', 'sub auth org ids');
386
- return [4 /*yield*/, (0, testing_1.async_test)("root get root", function () { return sdk.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
387
+ return [4 /*yield*/, enduserSDK.api.tickets.createOne({ title: 'root', enduserId: enduserSDK.userInfo.id })];
387
388
  case 5:
388
- _c.sent();
389
- return [4 /*yield*/, (0, testing_1.async_test)("sub get root error", function () { return sdkSub.api.endusers.getOne(enduserSDK.userInfo.id); }, handleAnyError)];
389
+ rootTicket = _d.sent();
390
+ return [4 /*yield*/, (0, testing_1.async_test)("root get root", function () { return sdk.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
390
391
  case 6:
391
- _c.sent();
392
- return [4 /*yield*/, (0, testing_1.async_test)("root get sub", function () { return sdk.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
392
+ _d.sent();
393
+ return [4 /*yield*/, (0, testing_1.async_test)("sub get root error", function () { return sdkSub.api.endusers.getOne(enduserSDK.userInfo.id); }, handleAnyError)];
393
394
  case 7:
394
- _c.sent();
395
- return [4 /*yield*/, (0, testing_1.async_test)("sub get sub", function () { return sdkSub.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
395
+ _d.sent();
396
+ return [4 /*yield*/, (0, testing_1.async_test)("root get sub", function () { return sdk.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
396
397
  case 8:
397
- _c.sent();
398
+ _d.sent();
399
+ return [4 /*yield*/, (0, testing_1.async_test)("sub get sub", function () { return sdkSub.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
400
+ case 9:
401
+ _d.sent();
402
+ return [4 /*yield*/, (0, testing_1.async_test)("root get root ticket", function () { return sdk.api.tickets.getOne(rootTicket.id); }, passOnAnyResult)];
403
+ case 10:
404
+ _d.sent();
405
+ return [4 /*yield*/, (0, testing_1.async_test)("sub get root ticket error", function () { return sdkSub.api.tickets.getOne(rootTicket.id); }, handleAnyError)];
406
+ case 11:
407
+ _d.sent();
408
+ return [4 /*yield*/, sdk.api.endusers.updateOne(enduserSDK.userInfo.id, { sharedWithOrganizations: [(_c = sdkSub.userInfo.organizationIds) !== null && _c !== void 0 ? _c : []] })];
409
+ case 12:
410
+ _d.sent();
411
+ return [4 /*yield*/, enduserSDK.refresh_session()]; // ensure updated session includes new sharedWithOrganizations
412
+ case 13:
413
+ _d.sent(); // ensure updated session includes new sharedWithOrganizations
414
+ return [4 /*yield*/, enduserSDK.api.tickets.createOne({ title: 'root with shared', enduserId: enduserSDK.userInfo.id })];
415
+ case 14:
416
+ rootTicketAfterUpdate = _d.sent();
417
+ return [4 /*yield*/, (0, testing_1.async_test)("root get root", function () { return sdk.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
418
+ case 15:
419
+ _d.sent();
420
+ return [4 /*yield*/, (0, testing_1.async_test)("sub get root after update", function () { return sdkSub.api.endusers.getOne(enduserSDK.userInfo.id); }, passOnAnyResult)];
421
+ case 16:
422
+ _d.sent();
423
+ return [4 /*yield*/, (0, testing_1.async_test)("root get sub", function () { return sdk.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
424
+ case 17:
425
+ _d.sent();
426
+ return [4 /*yield*/, (0, testing_1.async_test)("sub get sub", function () { return sdkSub.api.endusers.getOne(subEnduserSDK.userInfo.id); }, passOnAnyResult)];
427
+ case 18:
428
+ _d.sent();
429
+ return [4 /*yield*/, (0, testing_1.async_test)("root get root ticket after update", function () { return sdk.api.tickets.getOne(rootTicketAfterUpdate.id); }, passOnAnyResult)];
430
+ case 19:
431
+ _d.sent();
432
+ return [4 /*yield*/, (0, testing_1.async_test)("sub get root ticket after update", function () { return sdkSub.api.tickets.getOne(rootTicketAfterUpdate.id); }, passOnAnyResult)];
433
+ case 20:
434
+ _d.sent();
398
435
  return [4 /*yield*/, Promise.all([
399
436
  sdk.api.endusers.deleteOne(enduserSDK.userInfo.id),
400
437
  sdk.api.endusers.deleteOne(subEnduserSDK.userInfo.id),
438
+ sdk.api.tickets.deleteOne(rootTicket.id),
439
+ sdk.api.tickets.deleteOne(rootTicketAfterUpdate.id),
401
440
  ])];
402
- case 9:
403
- _c.sent();
441
+ case 21:
442
+ _d.sent();
404
443
  return [2 /*return*/];
405
444
  }
406
445
  });
@@ -722,9 +761,9 @@ var has_required_field = function (fields) { return Object.values(fields).find(f
722
761
  var verify_missing_defaults = function (_a) {
723
762
  var queries = _a.queries, model = _a.model, name = _a.name;
724
763
  return __awaiter(void 0, void 0, void 0, function () {
725
- var queryForOperation, o, _b, _c, _i;
726
- return __generator(this, function (_d) {
727
- switch (_d.label) {
764
+ var queryForOperation, o, _b, _c, _d, _i;
765
+ return __generator(this, function (_e) {
766
+ switch (_e.label) {
728
767
  case 0:
729
768
  queryForOperation = {
730
769
  create: function () { return queries.createOne({}); },
@@ -734,20 +773,23 @@ var verify_missing_defaults = function (_a) {
734
773
  update: function () { return queries.updateOne('fakeid', {}); },
735
774
  delete: function () { return queries.deleteOne('fakeid'); },
736
775
  };
737
- _b = [];
738
- for (_c in constants_1.DEFAULT_OPERATIONS)
739
- _b.push(_c);
776
+ _b = constants_1.DEFAULT_OPERATIONS;
777
+ _c = [];
778
+ for (_d in _b)
779
+ _c.push(_d);
740
780
  _i = 0;
741
- _d.label = 1;
781
+ _e.label = 1;
742
782
  case 1:
743
- if (!(_i < _b.length)) return [3 /*break*/, 4];
744
- o = _b[_i];
783
+ if (!(_i < _c.length)) return [3 /*break*/, 4];
784
+ _d = _c[_i];
785
+ if (!(_d in _b)) return [3 /*break*/, 3];
786
+ o = _d;
745
787
  if (Object.keys(model.defaultActions).includes(o) || model.customActions[o])
746
788
  return [3 /*break*/, 3]; // action is implemented
747
789
  return [4 /*yield*/, (0, testing_1.async_test)("".concat(o, " unavailable for ").concat(name), function () { return queryForOperation[o](); }, { shouldError: true, onError: function (e) { return e.message === 'This action is not allowed' || e.message === 'Inaccessible'; } })];
748
790
  case 2:
749
- _d.sent();
750
- _d.label = 3;
791
+ _e.sent();
792
+ _e.label = 3;
751
793
  case 3:
752
794
  _i++;
753
795
  return [3 /*break*/, 1];
@@ -1530,32 +1572,50 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1530
1572
  case 10:
1531
1573
  _a.sent();
1532
1574
  return [4 /*yield*/, (0, testing_1.async_test)("get-chats for enduser", function () { return enduserSDK.api.chats.getSome({ filter: { roomId: enduserRoom.id } }); }, { onResult: function (c) { return (c === null || c === void 0 ? void 0 : c.length) === 2; } })
1575
+ // this is allowed now
1533
1576
  // await async_test(
1534
1577
  // `get-chat (without filter)`,
1535
1578
  // () => sdk.api.chats.getOne(chat.id),
1536
1579
  // { shouldError: true, onError: () => true }
1537
1580
  // )
1581
+ // this is allowed now
1582
+ // await async_test(
1583
+ // `get-chats (without filter)`,
1584
+ // () => sdk.api.chats.getSome({}),
1585
+ // { shouldError: true, onError: () => true }
1586
+ // )
1538
1587
  ];
1539
1588
  case 11:
1540
1589
  _a.sent();
1590
+ // this is allowed now
1541
1591
  // await async_test(
1542
1592
  // `get-chat (without filter)`,
1543
1593
  // () => sdk.api.chats.getOne(chat.id),
1544
1594
  // { shouldError: true, onError: () => true }
1545
1595
  // )
1546
- return [4 /*yield*/, (0, testing_1.async_test)("get-chats (without filter)", function () { return sdk.api.chats.getSome({}); }, { shouldError: true, onError: function () { return true; } })];
1596
+ // this is allowed now
1597
+ // await async_test(
1598
+ // `get-chats (without filter)`,
1599
+ // () => sdk.api.chats.getSome({}),
1600
+ // { shouldError: true, onError: () => true }
1601
+ // )
1602
+ return [4 /*yield*/, (0, testing_1.async_test)("get-chats (with filter)", function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, { onResult: function (c) { return (c === null || c === void 0 ? void 0 : c.length) === 2; } })];
1547
1603
  case 12:
1604
+ // this is allowed now
1548
1605
  // await async_test(
1549
1606
  // `get-chat (without filter)`,
1550
1607
  // () => sdk.api.chats.getOne(chat.id),
1551
1608
  // { shouldError: true, onError: () => true }
1552
1609
  // )
1553
- _a.sent();
1554
- return [4 /*yield*/, (0, testing_1.async_test)("get-chats (with filter)", function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, { onResult: function (c) { return (c === null || c === void 0 ? void 0 : c.length) === 2; } })];
1555
- case 13:
1610
+ // this is allowed now
1611
+ // await async_test(
1612
+ // `get-chats (without filter)`,
1613
+ // () => sdk.api.chats.getSome({}),
1614
+ // { shouldError: true, onError: () => true }
1615
+ // )
1556
1616
  _a.sent();
1557
1617
  return [4 /*yield*/, (0, testing_1.async_test)("get-chats not allowed", function () { return sdk2.api.chats.getSome({ filter: { roomId: room.id } }); }, { shouldError: true, onError: function (e) { return e.message === 'You do not have permission to access this resource'; } })];
1558
- case 14:
1618
+ case 13:
1559
1619
  _a.sent();
1560
1620
  return [4 /*yield*/, (0, testing_1.async_test)("get-chats admin", function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, { onResult: function () { return true; } })
1561
1621
  // currently disabled endpoint altogether
@@ -1565,7 +1625,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1565
1625
  // { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
1566
1626
  // )
1567
1627
  ];
1568
- case 15:
1628
+ case 14:
1569
1629
  _a.sent();
1570
1630
  // currently disabled endpoint altogether
1571
1631
  // await async_test(
@@ -1581,7 +1641,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1581
1641
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
1582
1642
  // )
1583
1643
  ];
1584
- case 16:
1644
+ case 15:
1585
1645
  // currently disabled endpoint altogether
1586
1646
  // await async_test(
1587
1647
  // `update-chat not allowed`,
@@ -1596,7 +1656,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1596
1656
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
1597
1657
  // )
1598
1658
  return [4 /*yield*/, sdk.api.chat_rooms.deleteOne(room.id)];
1599
- case 17:
1659
+ case 16:
1600
1660
  // currently disabled endpoint altogether
1601
1661
  // await async_test(
1602
1662
  // `update-chat can't update roomId`,
@@ -1605,198 +1665,201 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1605
1665
  // )
1606
1666
  _a.sent();
1607
1667
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)];
1608
- case 18:
1668
+ case 17:
1609
1669
  _a.sent();
1610
1670
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (deleted as dependency of room 1)", function () { return sdk.api.chats.getOne(chat.id); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
1611
- case 19:
1671
+ case 18:
1612
1672
  _a.sent();
1613
1673
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (deleted as dependency of room 2)", function () { return sdk.api.chats.getOne(chat2.id); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
1614
- case 20:
1674
+ case 19:
1615
1675
  _a.sent();
1616
1676
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId, sdk2.userInfo.id] })];
1617
- case 21:
1677
+ case 20:
1618
1678
  sharedRoom = _a.sent();
1619
1679
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello!", })];
1620
- case 22:
1680
+ case 21:
1621
1681
  sharedChat = _a.sent();
1622
1682
  return [4 /*yield*/, sdk2.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello there!", })];
1623
- case 23:
1683
+ case 22:
1624
1684
  sharedChat2 = _a.sent();
1625
1685
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (shared, user1)", function () { return sdk.api.chats.getOne(sharedChat.id); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
1626
- case 24:
1686
+ case 23:
1627
1687
  _a.sent();
1628
1688
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (shared, user2)", function () { return sdk2.api.chats.getOne(sharedChat.id); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
1629
- case 25:
1689
+ case 24:
1630
1690
  _a.sent();
1631
1691
  return [4 /*yield*/, (0, testing_1.async_test)("get-chats (shared, user1)", function () { return sdk.api.chats.getSome({ filter: { roomId: sharedRoom.id } }); }, { onResult: function (cs) { return cs.length === 2 && !!cs.find(function (c) { return c.id === sharedChat.id; }) && !!cs.find(function (c) { return c.id === sharedChat2.id; }); } })];
1632
- case 26:
1692
+ case 25:
1633
1693
  _a.sent();
1634
1694
  return [4 /*yield*/, (0, testing_1.async_test)("get-chats (shared, user2)", function () { return sdk2.api.chats.getSome({ filter: { roomId: sharedRoom.id } }); }, { onResult: function (cs) { return cs.length === 2 && !!cs.find(function (c) { return c.id === sharedChat.id; }) && !!cs.find(function (c) { return c.id === sharedChat2.id; }); } })
1635
1695
  // test setNull dependency
1636
1696
  ];
1637
- case 27:
1697
+ case 26:
1638
1698
  _a.sent();
1639
1699
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })];
1640
- case 28:
1700
+ case 27:
1641
1701
  roomNull = _a.sent();
1642
1702
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello!" })];
1643
- case 29:
1703
+ case 28:
1644
1704
  chatNull = _a.sent();
1645
1705
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello...", replyId: chatNull.id })];
1646
- case 30:
1706
+ case 29:
1647
1707
  chat2Null = _a.sent();
1648
1708
  return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
1649
- case 31:
1709
+ case 30:
1650
1710
  _a.sent();
1651
1711
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
1652
- case 32:
1712
+ case 31:
1653
1713
  _a.sent();
1654
1714
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id); }, { onResult: function (c) { return c.replyId === null; } })];
1655
- case 33:
1715
+ case 32:
1656
1716
  _a.sent();
1657
1717
  return [4 /*yield*/, Promise.all([
1658
1718
  sdk.api.endusers.deleteOne(enduser.id),
1659
1719
  sdk.api.chat_rooms.deleteOne(enduserRoom.id),
1660
1720
  ])];
1661
- case 34:
1721
+ case 33:
1662
1722
  _a.sent();
1663
1723
  return [2 /*return*/];
1664
1724
  }
1665
1725
  });
1666
1726
  }); };
1667
1727
  var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0, function () {
1668
- var email, password, enduser, enduser2, uInfo, originalAuthToken, _loop_1, _a, _b, _i, n, ticketAccessible, ticketInaccessible;
1669
- var _c, _d, _e, _f, _g, _h;
1670
- return __generator(this, function (_j) {
1671
- switch (_j.label) {
1728
+ var email, password, enduser, enduser2, uInfo, originalAuthToken, _loop_1, _a, _b, _c, _i, n, ticketAccessible, ticketInaccessible;
1729
+ var _d, _e, _f, _g, _h, _j;
1730
+ return __generator(this, function (_k) {
1731
+ switch (_k.label) {
1672
1732
  case 0:
1673
1733
  (0, testing_1.log_header)("Enduser Access");
1674
1734
  email = 'enduser@tellescope.com';
1675
1735
  password = 'testpassword';
1676
1736
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
1677
1737
  case 1:
1678
- enduser = _j.sent();
1738
+ enduser = _k.sent();
1679
1739
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'hi' + email })];
1680
1740
  case 2:
1681
- enduser2 = _j.sent();
1741
+ enduser2 = _k.sent();
1682
1742
  return [4 /*yield*/, sdk.api.endusers.set_password({ id: enduser.id, password: password }).catch(console.error)];
1683
1743
  case 3:
1684
- _j.sent();
1744
+ _k.sent();
1685
1745
  return [4 /*yield*/, enduserSDK.authenticate(email, password).catch(console.error)];
1686
1746
  case 4:
1687
- _j.sent();
1747
+ _k.sent();
1688
1748
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)]; // wait so that refresh_session generates a new authToken (different timestamp)
1689
1749
  case 5:
1690
- _j.sent(); // wait so that refresh_session generates a new authToken (different timestamp)
1750
+ _k.sent(); // wait so that refresh_session generates a new authToken (different timestamp)
1691
1751
  uInfo = enduserSDK.userInfo;
1692
1752
  originalAuthToken = enduserSDK.authToken;
1693
1753
  return [4 /*yield*/, enduserSDK.refresh_session()];
1694
1754
  case 6:
1695
- _j.sent();
1755
+ _k.sent();
1696
1756
  (0, testing_1.assert)(uInfo.id === enduserSDK.userInfo.id, 'userInfo mismatch', 'userInfo id preserved after refresh');
1697
1757
  (0, testing_1.assert)(!!originalAuthToken && !!enduserSDK.authToken && enduserSDK.authToken !== originalAuthToken, 'same authToken after refresh', 'authToken refresh');
1698
1758
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access for different businessId", function () { return enduserSDKDifferentBusinessId.authenticate(email, password); }, { shouldError: true, onError: function (e) { return (e === null || e === void 0 ? void 0 : e.message) === "Could not find a corresponding account"; } })];
1699
1759
  case 7:
1700
- _j.sent();
1760
+ _k.sent();
1701
1761
  _loop_1 = function (n) {
1702
1762
  var endpoint, model;
1703
- return __generator(this, function (_k) {
1704
- switch (_k.label) {
1763
+ return __generator(this, function (_l) {
1764
+ switch (_l.label) {
1705
1765
  case 0:
1706
1766
  endpoint = (0, utilities_1.url_safe_path)(n);
1707
1767
  model = schema_1.schema[n];
1708
1768
  if (n === 'webhooks')
1709
1769
  return [2 /*return*/, "continue"]; // no default endpoints implemented
1710
- if (!(!((_c = model === null || model === void 0 ? void 0 : model.enduserActions) === null || _c === void 0 ? void 0 : _c.read) && (model.defaultActions.read || model.customActions.read))) return [3 /*break*/, 2];
1770
+ if (!(!((_d = model === null || model === void 0 ? void 0 : model.enduserActions) === null || _d === void 0 ? void 0 : _d.read) && (model.defaultActions.read || model.customActions.read))) return [3 /*break*/, 2];
1711
1771
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access getOne (".concat(endpoint, ")"), function () { return enduserSDK.GET("/v1/".concat(endpoint.substring(0, endpoint.length - 1), "/:id")); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.message) === 'This action is not allowed'; } })];
1712
1772
  case 1:
1713
- _k.sent();
1714
- _k.label = 2;
1773
+ _l.sent();
1774
+ _l.label = 2;
1715
1775
  case 2:
1716
- if (!(!((_d = model.enduserActions) === null || _d === void 0 ? void 0 : _d.readMany) && (model.defaultActions.readMany || model.customActions.readMany))) return [3 /*break*/, 4];
1776
+ if (!(!((_e = model.enduserActions) === null || _e === void 0 ? void 0 : _e.readMany) && (model.defaultActions.readMany || model.customActions.readMany))) return [3 /*break*/, 4];
1717
1777
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access getSome (".concat(endpoint, ")"), function () { return enduserSDK.GET("/v1/".concat(endpoint)); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.message) === 'This action is not allowed'; } })];
1718
1778
  case 3:
1719
- _k.sent();
1720
- _k.label = 4;
1779
+ _l.sent();
1780
+ _l.label = 4;
1721
1781
  case 4:
1722
- if (!(!((_e = model.enduserActions) === null || _e === void 0 ? void 0 : _e.create) && (model.defaultActions.create || model.customActions.create))) return [3 /*break*/, 6];
1782
+ if (!(!((_f = model.enduserActions) === null || _f === void 0 ? void 0 : _f.create) && (model.defaultActions.create || model.customActions.create))) return [3 /*break*/, 6];
1723
1783
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access createOne (".concat(endpoint, ")"), function () { return enduserSDK.POST("/v1/".concat(endpoint.substring(0, endpoint.length - 1))); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.message) === 'This action is not allowed'; } })];
1724
1784
  case 5:
1725
- _k.sent();
1726
- _k.label = 6;
1785
+ _l.sent();
1786
+ _l.label = 6;
1727
1787
  case 6:
1728
- if (!(!((_f = model.enduserActions) === null || _f === void 0 ? void 0 : _f.createMany) && (model.defaultActions.createMany || model.customActions.createMany))) return [3 /*break*/, 8];
1788
+ if (!(!((_g = model.enduserActions) === null || _g === void 0 ? void 0 : _g.createMany) && (model.defaultActions.createMany || model.customActions.createMany))) return [3 /*break*/, 8];
1729
1789
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access createMany (".concat(endpoint, ")"), function () { return enduserSDK.POST("/v1/".concat(endpoint)); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.message) === 'This action is not allowed'; } })];
1730
1790
  case 7:
1731
- _k.sent();
1732
- _k.label = 8;
1791
+ _l.sent();
1792
+ _l.label = 8;
1733
1793
  case 8:
1734
- if (!(!((_g = model.enduserActions) === null || _g === void 0 ? void 0 : _g.update) && (model.defaultActions.update || model.customActions.update))) return [3 /*break*/, 10];
1794
+ if (!(!((_h = model.enduserActions) === null || _h === void 0 ? void 0 : _h.update) && (model.defaultActions.update || model.customActions.update))) return [3 /*break*/, 10];
1735
1795
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access update (".concat(endpoint, ")"), function () { return enduserSDK.PATCH("/v1/".concat(endpoint.substring(0, endpoint.length - 1), "/:id")); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.message) === 'This action is not allowed'; } })];
1736
1796
  case 9:
1737
- _k.sent();
1738
- _k.label = 10;
1797
+ _l.sent();
1798
+ _l.label = 10;
1739
1799
  case 10:
1740
- if (!(!((_h = model.enduserActions) === null || _h === void 0 ? void 0 : _h.delete) && (model.defaultActions.delete || model.customActions.delete))) return [3 /*break*/, 12];
1800
+ if (!(!((_j = model.enduserActions) === null || _j === void 0 ? void 0 : _j.delete) && (model.defaultActions.delete || model.customActions.delete))) return [3 /*break*/, 12];
1741
1801
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access delete (".concat(endpoint, ")"), function () { return enduserSDK.DELETE("/v1/".concat(endpoint.substring(0, endpoint.length - 1), "/:id")); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.message) === 'This action is not allowed'; } })];
1742
1802
  case 11:
1743
- _k.sent();
1744
- _k.label = 12;
1803
+ _l.sent();
1804
+ _l.label = 12;
1745
1805
  case 12: return [2 /*return*/];
1746
1806
  }
1747
1807
  });
1748
1808
  };
1749
- _a = [];
1750
- for (_b in schema_1.schema)
1751
- _a.push(_b);
1809
+ _a = schema_1.schema;
1810
+ _b = [];
1811
+ for (_c in _a)
1812
+ _b.push(_c);
1752
1813
  _i = 0;
1753
- _j.label = 8;
1814
+ _k.label = 8;
1754
1815
  case 8:
1755
- if (!(_i < _a.length)) return [3 /*break*/, 11];
1756
- n = _a[_i];
1816
+ if (!(_i < _b.length)) return [3 /*break*/, 11];
1817
+ _c = _b[_i];
1818
+ if (!(_c in _a)) return [3 /*break*/, 10];
1819
+ n = _c;
1757
1820
  return [5 /*yield**/, _loop_1(n)];
1758
1821
  case 9:
1759
- _j.sent();
1760
- _j.label = 10;
1822
+ _k.sent();
1823
+ _k.label = 10;
1761
1824
  case 10:
1762
1825
  _i++;
1763
1826
  return [3 /*break*/, 8];
1764
1827
  case 11: return [4 /*yield*/, (0, testing_1.async_test)("enduser can update self", function () { return enduserSDK.api.endusers.updateOne(enduser.id, { fname: "Sebastian", lname: "Coates" }); }, { onResult: function (e) { return e.id === enduser.id && e.fname === 'Sebastian' && e.lname === "Coates"; } })];
1765
1828
  case 12:
1766
- _j.sent();
1829
+ _k.sent();
1767
1830
  return [4 /*yield*/, (0, testing_1.async_test)("enduser can't update other enduser", function () { return enduserSDK.api.endusers.updateOne(enduser2.id, { fname: "Shouldn't Work" }); }, { shouldError: true, onError: function (e) { return e.message === "Endusers may only update their own profile"; } })];
1768
1831
  case 13:
1769
- _j.sent();
1832
+ _k.sent();
1770
1833
  return [4 /*yield*/, sdk.api.tickets.createOne({ enduserId: enduser.id, title: "Accessible ticket" })];
1771
1834
  case 14:
1772
- ticketAccessible = _j.sent();
1835
+ ticketAccessible = _k.sent();
1773
1836
  return [4 /*yield*/, sdk.api.tickets.createOne({ enduserId: constants_1.PLACEHOLDER_ID, title: "Inaccessible ticket" })];
1774
1837
  case 15:
1775
- ticketInaccessible = _j.sent();
1838
+ ticketInaccessible = _k.sent();
1776
1839
  return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot create ticket for another enduser", function () { return enduserSDK.api.tickets.createOne({ enduserId: sdk.userInfo.id, title: "Error on Creation" }); }, { shouldError: true, onError: function (e) { return !!e.message; } })];
1777
1840
  case 16:
1778
- _j.sent();
1841
+ _k.sent();
1779
1842
  return [4 /*yield*/, (0, testing_1.async_test)("enduser-access default, no access constraints, matching enduserId", function () { return enduserSDK.api.tickets.getOne(ticketAccessible.id); }, { onResult: function (t) { return t.id === ticketAccessible.id; } })];
1780
1843
  case 17:
1781
- _j.sent();
1844
+ _k.sent();
1782
1845
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access default, no access constraints, non-matching enduserId", function () { return enduserSDK.api.tickets.getOne(ticketInaccessible.id); }, { shouldError: true, onError: function (e) { return e.message.startsWith("Could not find"); } })];
1783
1846
  case 18:
1784
- _j.sent();
1847
+ _k.sent();
1785
1848
  return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access default, no access constraints, get many", function () { return enduserSDK.api.tickets.getSome(); }, { onResult: function (ts) { return ts.length === 1; } })];
1786
1849
  case 19:
1787
- _j.sent();
1850
+ _k.sent();
1788
1851
  return [4 /*yield*/, sdk.api.tickets.deleteOne(ticketAccessible.id)];
1789
1852
  case 20:
1790
- _j.sent();
1853
+ _k.sent();
1791
1854
  return [4 /*yield*/, sdk.api.tickets.deleteOne(ticketInaccessible.id)];
1792
1855
  case 21:
1793
- _j.sent();
1856
+ _k.sent();
1794
1857
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
1795
1858
  case 22:
1796
- _j.sent();
1859
+ _k.sent();
1797
1860
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser2.id)];
1798
1861
  case 23:
1799
- _j.sent();
1862
+ _k.sent();
1800
1863
  return [2 /*return*/];
1801
1864
  }
1802
1865
  });
@@ -1878,7 +1941,7 @@ var files_tests = function () { return __awaiter(void 0, void 0, void 0, functio
1878
1941
  ])];
1879
1942
  case 16:
1880
1943
  _c.sent();
1881
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)]; // wait for files to be deleted as side effect
1944
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 2000)]; // wait for files to be deleted as side effect
1882
1945
  case 17:
1883
1946
  _c.sent(); // wait for files to be deleted as side effect
1884
1947
  return [4 /*yield*/, (0, testing_1.async_test)("Files cleaned up as side effect of deleting enduser", function () { return sdk.api.files.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (fs) { return fs.length === 0; } })];
@@ -2262,7 +2325,7 @@ var ticketEventTests = function () { return __awaiter(void 0, void 0, void 0, fu
2262
2325
  return [4 /*yield*/, sdk.api.endusers.updateOne(enduserWithTeam.id, { journeys: (_b = {}, _b[nullJourney.id] = 'Added (Null)', _b) })];
2263
2326
  case 16:
2264
2327
  _c.sent();
2265
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 2200)]; // wait for tickets to be automatically created
2328
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 2000)]; // wait for tickets to be automatically created
2266
2329
  case 17:
2267
2330
  _c.sent(); // wait for tickets to be automatically created
2268
2331
  return [4 /*yield*/, (0, testing_1.async_test)("Tickets automatically created", function () { return sdk.api.tickets.getSome(); }, { onResult: function (tickets) { return (tickets === null || tickets === void 0 ? void 0 : tickets.length) === 2; } })];
@@ -2727,13 +2790,13 @@ var addToJourneyTests = function () { return __awaiter(void 0, void 0, void 0, f
2727
2790
  case 5:
2728
2791
  // add to journey and re-add
2729
2792
  _a.sent();
2730
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 2250)]; // allow onJourneyStart step to trigger
2793
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 4000)]; // allow onJourneyStart step to trigger
2731
2794
  case 6:
2732
2795
  _a.sent(); // allow onJourneyStart step to trigger
2733
2796
  return [4 /*yield*/, sdk.api.endusers.add_to_journey({ enduserIds: [enduser.id], journeyId: journey.id })];
2734
2797
  case 7:
2735
2798
  _a.sent();
2736
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 2250)]; // allow onJourneyStart step to trigger
2799
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 4000)]; // allow onJourneyStart step to trigger
2737
2800
  case 8:
2738
2801
  _a.sent(); // allow onJourneyStart step to trigger
2739
2802
  return [4 /*yield*/, (0, testing_1.async_test)("Enduser correctly added and re-added", function () { return sdk.api.automated_actions.getSome(); }, { onResult: function (es) { return es.length === 4
@@ -4075,15 +4138,15 @@ var tests = {
4075
4138
  integrations: NO_TEST,
4076
4139
  };
4077
4140
  (function () { return __awaiter(void 0, void 0, void 0, function () {
4078
- var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
4079
- var _f, _g;
4080
- return __generator(this, function (_h) {
4081
- switch (_h.label) {
4141
+ var err_1, n, _a, _b, _c, _i, returnValidation, t, _d, _e, _f, _g, err_2;
4142
+ var _h, _j;
4143
+ return __generator(this, function (_k) {
4144
+ switch (_k.label) {
4082
4145
  case 0:
4083
4146
  (0, testing_1.log_header)("API");
4084
- _h.label = 1;
4147
+ _k.label = 1;
4085
4148
  case 1:
4086
- _h.trys.push([1, 21, , 22]);
4149
+ _k.trys.push([1, 21, , 22]);
4087
4150
  return [4 /*yield*/, Promise.all([
4088
4151
  sdk.authenticate(email, password),
4089
4152
  sdkSub.authenticate(subUserEmail, password),
@@ -4092,64 +4155,64 @@ var tests = {
4092
4155
  sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
4093
4156
  ])];
4094
4157
  case 2:
4095
- _h.sent();
4158
+ _k.sent();
4096
4159
  return [4 /*yield*/, setup_tests()];
4097
4160
  case 3:
4098
- _h.sent();
4161
+ _k.sent();
4099
4162
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
4100
4163
  case 4:
4101
- _h.sent(); // should come right after setup tests
4164
+ _k.sent(); // should come right after setup tests
4102
4165
  return [4 /*yield*/, sub_organization_enduser_tests()];
4103
4166
  case 5:
4104
- _h.sent();
4167
+ _k.sent();
4105
4168
  return [4 /*yield*/, sub_organization_tests()];
4106
4169
  case 6:
4107
- _h.sent();
4170
+ _k.sent();
4108
4171
  return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
4109
4172
  case 7:
4110
- _h.sent();
4173
+ _k.sent();
4111
4174
  return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
4112
4175
  case 8:
4113
- _h.sent();
4176
+ _k.sent();
4114
4177
  return [4 /*yield*/, generate_user_auth_tests()];
4115
4178
  case 9:
4116
- _h.sent();
4179
+ _k.sent();
4117
4180
  return [4 /*yield*/, role_based_access_tests()];
4118
4181
  case 10:
4119
- _h.sent();
4182
+ _k.sent();
4120
4183
  return [4 /*yield*/, generateEnduserAuthTests()];
4121
4184
  case 11:
4122
- _h.sent();
4185
+ _k.sent();
4123
4186
  return [4 /*yield*/, public_form_tests()];
4124
4187
  case 12:
4125
- _h.sent();
4188
+ _k.sent();
4126
4189
  return [4 /*yield*/, search_tests()];
4127
4190
  case 13:
4128
- _h.sent();
4191
+ _k.sent();
4129
4192
  return [4 /*yield*/, badInputTests()];
4130
4193
  case 14:
4131
- _h.sent();
4194
+ _k.sent();
4132
4195
  return [4 /*yield*/, filterTests()];
4133
4196
  case 15:
4134
- _h.sent();
4197
+ _k.sent();
4135
4198
  return [4 /*yield*/, updatesTests()];
4136
4199
  case 16:
4137
- _h.sent();
4200
+ _k.sent();
4138
4201
  return [4 /*yield*/, threadKeyTests()];
4139
4202
  case 17:
4140
- _h.sent();
4203
+ _k.sent();
4141
4204
  return [4 /*yield*/, enduserAccessTests()];
4142
4205
  case 18:
4143
- _h.sent();
4206
+ _k.sent();
4144
4207
  return [4 /*yield*/, enduser_session_tests()];
4145
4208
  case 19:
4146
- _h.sent();
4209
+ _k.sent();
4147
4210
  return [4 /*yield*/, enduser_redaction_tests()];
4148
4211
  case 20:
4149
- _h.sent();
4212
+ _k.sent();
4150
4213
  return [3 /*break*/, 22];
4151
4214
  case 21:
4152
- err_1 = _h.sent();
4215
+ err_1 = _k.sent();
4153
4216
  console.error("Failed during custom test");
4154
4217
  if (err_1.message && err_1.info) {
4155
4218
  console.error(err_1.message, JSON.stringify(err_1.info, null, 2));
@@ -4160,15 +4223,18 @@ var tests = {
4160
4223
  process.exit(1);
4161
4224
  return [3 /*break*/, 22];
4162
4225
  case 22:
4163
- _a = [];
4164
- for (_b in schema_1.schema)
4165
- _a.push(_b);
4226
+ _a = schema_1.schema;
4227
+ _b = [];
4228
+ for (_c in _a)
4229
+ _b.push(_c);
4166
4230
  _i = 0;
4167
- _h.label = 23;
4231
+ _k.label = 23;
4168
4232
  case 23:
4169
- if (!(_i < _a.length)) return [3 /*break*/, 26];
4170
- n = _a[_i];
4171
- returnValidation = (_g = (_f = schema_1.schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
4233
+ if (!(_i < _b.length)) return [3 /*break*/, 26];
4234
+ _c = _b[_i];
4235
+ if (!(_c in _a)) return [3 /*break*/, 25];
4236
+ n = _c;
4237
+ returnValidation = (_j = (_h = schema_1.schema[n].customActions) === null || _h === void 0 ? void 0 : _h.create) === null || _j === void 0 ? void 0 : _j.returns;
4172
4238
  return [4 /*yield*/, run_generated_tests({
4173
4239
  queries: sdk.api[n],
4174
4240
  model: schema_1.schema[n],
@@ -4178,35 +4244,38 @@ var tests = {
4178
4244
  }
4179
4245
  })];
4180
4246
  case 24:
4181
- _h.sent();
4182
- _h.label = 25;
4247
+ _k.sent();
4248
+ _k.label = 25;
4183
4249
  case 25:
4184
4250
  _i++;
4185
4251
  return [3 /*break*/, 23];
4186
4252
  case 26:
4187
- _c = [];
4188
- for (_d in tests)
4189
- _c.push(_d);
4190
- _e = 0;
4191
- _h.label = 27;
4253
+ _d = tests;
4254
+ _e = [];
4255
+ for (_f in _d)
4256
+ _e.push(_f);
4257
+ _g = 0;
4258
+ _k.label = 27;
4192
4259
  case 27:
4193
- if (!(_e < _c.length)) return [3 /*break*/, 32];
4194
- t = _c[_e];
4195
- _h.label = 28;
4260
+ if (!(_g < _e.length)) return [3 /*break*/, 32];
4261
+ _f = _e[_g];
4262
+ if (!(_f in _d)) return [3 /*break*/, 31];
4263
+ t = _f;
4264
+ _k.label = 28;
4196
4265
  case 28:
4197
- _h.trys.push([28, 30, , 31]);
4266
+ _k.trys.push([28, 30, , 31]);
4198
4267
  return [4 /*yield*/, tests[t]()];
4199
4268
  case 29:
4200
- _h.sent();
4269
+ _k.sent();
4201
4270
  return [3 /*break*/, 31];
4202
4271
  case 30:
4203
- err_2 = _h.sent();
4272
+ err_2 = _k.sent();
4204
4273
  console.error("Error running test:");
4205
4274
  console.error(err_2);
4206
4275
  process.exit(1);
4207
4276
  return [3 /*break*/, 31];
4208
4277
  case 31:
4209
- _e++;
4278
+ _g++;
4210
4279
  return [3 /*break*/, 27];
4211
4280
  case 32:
4212
4281
  process.exit();