@tellescope/sdk 0.0.5 → 0.0.9

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 (45) hide show
  1. package/lib/cjs/enduser.d.ts +346 -13
  2. package/lib/cjs/enduser.d.ts.map +1 -1
  3. package/lib/cjs/enduser.js +135 -14
  4. package/lib/cjs/enduser.js.map +1 -1
  5. package/lib/cjs/sdk.d.ts +107 -20
  6. package/lib/cjs/sdk.d.ts.map +1 -1
  7. package/lib/cjs/sdk.js +116 -32
  8. package/lib/cjs/sdk.js.map +1 -1
  9. package/lib/cjs/session.d.ts +37 -176
  10. package/lib/cjs/session.d.ts.map +1 -1
  11. package/lib/cjs/session.js +131 -34
  12. package/lib/cjs/session.js.map +1 -1
  13. package/lib/cjs/tests/public_endpoint_tests.js +3 -3
  14. package/lib/cjs/tests/public_endpoint_tests.js.map +1 -1
  15. package/lib/cjs/tests/socket_tests.js +42 -31
  16. package/lib/cjs/tests/socket_tests.js.map +1 -1
  17. package/lib/cjs/tests/tests.js +232 -63
  18. package/lib/cjs/tests/tests.js.map +1 -1
  19. package/lib/esm/enduser.d.ts +346 -13
  20. package/lib/esm/enduser.d.ts.map +1 -1
  21. package/lib/esm/enduser.js +132 -12
  22. package/lib/esm/enduser.js.map +1 -1
  23. package/lib/esm/sdk.d.ts +107 -20
  24. package/lib/esm/sdk.d.ts.map +1 -1
  25. package/lib/esm/sdk.js +116 -32
  26. package/lib/esm/sdk.js.map +1 -1
  27. package/lib/esm/session.d.ts +37 -176
  28. package/lib/esm/session.d.ts.map +1 -1
  29. package/lib/esm/session.js +130 -32
  30. package/lib/esm/session.js.map +1 -1
  31. package/lib/esm/tests/public_endpoint_tests.js +3 -3
  32. package/lib/esm/tests/public_endpoint_tests.js.map +1 -1
  33. package/lib/esm/tests/socket_tests.js +41 -30
  34. package/lib/esm/tests/socket_tests.js.map +1 -1
  35. package/lib/esm/tests/tests.js +228 -64
  36. package/lib/esm/tests/tests.js.map +1 -1
  37. package/lib/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +11 -9
  39. package/src/enduser.ts +93 -20
  40. package/src/sdk.ts +71 -43
  41. package/src/session.ts +122 -34
  42. package/src/tests/public_endpoint_tests.ts +6 -4
  43. package/src/tests/socket_tests.ts +37 -16
  44. package/src/tests/tests.ts +147 -25
  45. package/tsconfig.json +0 -1
@@ -48,19 +48,33 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  require('source-map-support').install();
51
- // import v from 'validator'
52
51
  var validation_1 = require("@tellescope/validation");
53
52
  var sdk_1 = require("../sdk");
54
- var utilities_1 = require("@tellescope/utilities");
55
53
  var constants_1 = require("@tellescope/constants");
56
54
  var schema_1 = require("@tellescope/schema");
57
55
  var testing_1 = require("@tellescope/testing");
56
+ var utilities_1 = require("@tellescope/utilities");
58
57
  var host = process.env.TEST_URL || 'http://localhost:8080';
59
58
  var _a = [process.env.TEST_EMAIL, process.env.TEST_PASSWORD], email = _a[0], password = _a[1];
60
59
  var _b = [process.env.TEST_EMAIL_2, process.env.TEST_PASSWORD_2], email2 = _b[0], password2 = _b[1];
61
60
  var userId = '60398b0231a295e64f084fd9';
61
+ // const example_SDK_usage = async () => {
62
+ // // initialize SDK and authenticate a user
63
+ // const sdk = new Session()
64
+ // await sdk.authenticate("user-email", 'user-password')
65
+ // // create a record, using Enduser model as example
66
+ // const enduser = await sdk.api.endusers.createOne({ email: "enduser1@tellescope.com" })
67
+ // // update an existing record
68
+ // await sdk.api.endusers.updateOne(enduser.id, { phone: "+15555555555" })
69
+ // // fetch a record by id, or a list of recent records
70
+ // const existingEnduser: Enduser = await sdk.api.endusers.getOne(enduser.id)
71
+ // const existingEndusers: Enduser[] = await sdk.api.endusers.getSome({ limit: 5, lastId: enduser.id })
72
+ // // delete an individual record
73
+ // await sdk.api.endusers.deleteOne(enduser.id)
74
+ // }
62
75
  var sdk = new sdk_1.Session();
63
76
  var sdkOther = new sdk_1.Session({ host: host, apiKey: "ba745e25162bb95a795c5fa1af70df188d93c4d3aac9c48b34a5c8c9dd7b80f7" });
77
+ var enduserSDK = new sdk_1.EnduserSession({ host: host });
64
78
  // const sdkOtherEmail = "sebass@tellescope.com"
65
79
  if (!(email && password && email2 && password2)) {
66
80
  console.error("Set TEST_EMAIL and TEST_PASSWORD");
@@ -221,6 +235,38 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
221
235
  }
222
236
  });
223
237
  }); };
238
+ var filterTests = function () { return __awaiter(void 0, void 0, void 0, function () {
239
+ var enduser, otherEnduser;
240
+ return __generator(this, function (_a) {
241
+ switch (_a.label) {
242
+ case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test' })];
243
+ case 1:
244
+ enduser = _a.sent();
245
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'other@tellescope.com' })];
246
+ case 2:
247
+ otherEnduser = _a.sent();
248
+ return [4 /*yield*/, (0, testing_1.async_test)("find enduser by filter", function () { return sdk.api.endusers.getSome({ filter: { email: 'filtertests@tellescope.com' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === enduser.id; } })];
249
+ case 3:
250
+ _a.sent();
251
+ return [4 /*yield*/, (0, testing_1.async_test)("find enduser by compound filter", function () { return sdk.api.endusers.getSome({ filter: { email: 'filtertests@tellescope.com', fname: 'test' } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === enduser.id; } })];
252
+ case 4:
253
+ _a.sent();
254
+ return [4 /*yield*/, (0, testing_1.async_test)("nothing found by invalid compound filter", function () { return sdk.api.endusers.getSome({ filter: { email: 'filtertests@tellescope.com', fname: 'nottest' } }); }, { onResult: function (es) { return es.length === 0; } })];
255
+ case 5:
256
+ _a.sent();
257
+ return [4 /*yield*/, (0, testing_1.async_test)("nothing found for invalid filter", function () { return sdk.api.endusers.getSome({ filter: { email: 'doesnotexist@tellescope.com' } }); }, { onResult: function (es) { return es.length === 0; } })];
258
+ case 6:
259
+ _a.sent();
260
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
261
+ case 7:
262
+ _a.sent();
263
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(otherEnduser.id)];
264
+ case 8:
265
+ _a.sent();
266
+ return [2 /*return*/];
267
+ }
268
+ });
269
+ }); };
224
270
  var instanceForModel = function (model, i) {
225
271
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
226
272
  if (i === void 0) { i = 0; }
@@ -335,7 +381,7 @@ var run_generated_tests = function (_a) {
335
381
  case 6:
336
382
  _c.sent();
337
383
  if (!model.defaultActions.update) return [3 /*break*/, 8];
338
- return [4 /*yield*/, (0, testing_1.async_test)("update-" + singularName, function () { return queries.updateOne(_id, updates, { replaceObjectFields: true }); }, passOnVoid)];
384
+ return [4 /*yield*/, (0, testing_1.async_test)("update-" + singularName, function () { return queries.updateOne(_id, updates, { replaceObjectFields: true }); }, { onResult: function (u) { return typeof u === 'object' && u.id === _id; } })];
339
385
  case 7:
340
386
  _c.sent();
341
387
  _c.label = 8;
@@ -343,7 +389,7 @@ var run_generated_tests = function (_a) {
343
389
  if (!(d === null || d === void 0 ? void 0 : d.id))
344
390
  return false;
345
391
  for (var k in instance) {
346
- if (!(0, testing_1.objects_equivalent)(instance[k], d[k]))
392
+ if (!(0, utilities_1.objects_equivalent)(instance[k], d[k]))
347
393
  return false;
348
394
  }
349
395
  return true;
@@ -351,13 +397,13 @@ var run_generated_tests = function (_a) {
351
397
  })];
352
398
  case 9:
353
399
  _c.sent();
354
- return [4 /*yield*/, (0, testing_1.async_test)("get-" + safeName, function () { return queries.getSome({}, filter); }, { onResult: function (_a) {
400
+ return [4 /*yield*/, (0, testing_1.async_test)("get-" + safeName, function () { return queries.getSome({ filter: filter }); }, { onResult: function (_a) {
355
401
  var d = _a[0];
356
402
  // if (others.length !== 0) return false // some collections are not reset during testing, like API keys
357
403
  if (!(d === null || d === void 0 ? void 0 : d.id))
358
404
  return false;
359
405
  for (var k in instance) {
360
- if (!(0, testing_1.objects_equivalent)(instance[k], d[k]))
406
+ if (!(0, utilities_1.objects_equivalent)(instance[k], d[k]))
361
407
  return false;
362
408
  }
363
409
  return true;
@@ -421,7 +467,7 @@ var enduser_tests = function (queries) {
421
467
  return [4 /*yield*/, (0, testing_1.async_test)("update-enduser test replaceObjectFields true unset", function () { var _a; return queries.updateOne((_a = e1.id) !== null && _a !== void 0 ? _a : '', { fields: {} }, { replaceObjectFields: true }); }, passOnVoid)];
422
468
  case 13:
423
469
  _a.sent();
424
- return [4 /*yield*/, (0, testing_1.async_test)("get-enduser test replaceObjectFields verify true unset", function () { var _a; return queries.getOne((_a = e1.id) !== null && _a !== void 0 ? _a : ''); }, { onResult: function (e) { return (0, testing_1.objects_equivalent)(e.fields, {}); } })];
470
+ return [4 /*yield*/, (0, testing_1.async_test)("get-enduser test replaceObjectFields verify true unset", function () { var _a; return queries.getOne((_a = e1.id) !== null && _a !== void 0 ? _a : ''); }, { onResult: function (e) { return (0, utilities_1.objects_equivalent)(e.fields, {}); } })];
425
471
  case 14:
426
472
  _a.sent();
427
473
  eToDup1 = { email: 'dup1@tellescope.com' };
@@ -560,10 +606,10 @@ var journey_tests = function (queries) {
560
606
  return [4 /*yield*/, queries.updateOne(journey.id, { states: [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }] }, { replaceObjectFields: true })];
561
607
  case 23:
562
608
  _g.sent();
563
- return [4 /*yield*/, (0, testing_1.async_test)("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return (0, testing_1.objects_equivalent)(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })];
609
+ return [4 /*yield*/, (0, testing_1.async_test)("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return (0, utilities_1.objects_equivalent)(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })];
564
610
  case 24:
565
611
  _g.sent();
566
- return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState", function () { return queries.updateState(journey.id, 'Added', { name: 'Updated', priority: 'N/A' }); }, passOnVoid)];
612
+ return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState", function () { return queries.updateState({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' } }); }, passOnVoid)];
567
613
  case 25:
568
614
  _g.sent();
569
615
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
@@ -571,13 +617,13 @@ var journey_tests = function (queries) {
571
617
  _g.sent(); // wait for side effects to update endusers
572
618
  return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) {
573
619
  var _a;
574
- return (0, testing_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a));
620
+ return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a));
575
621
  } })];
576
622
  case 27:
577
623
  _g.sent();
578
624
  return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 2", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
579
625
  var _a;
580
- return (0, testing_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a[journey2.id] = 'New', _a));
626
+ return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a[journey2.id] = 'New', _a));
581
627
  } })];
582
628
  case 28:
583
629
  _g.sent();
@@ -587,12 +633,12 @@ var journey_tests = function (queries) {
587
633
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
588
634
  case 30:
589
635
  _g.sent(); // wait for side effects to update endusers
590
- return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { return (0, testing_1.objects_equivalent)(e.journeys, {}); } })];
636
+ return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { return (0, utilities_1.objects_equivalent)(e.journeys, {}); } })];
591
637
  case 31:
592
638
  _g.sent();
593
639
  return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset, others left", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
594
640
  var _a;
595
- return (0, testing_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey2.id] = 'New', _a));
641
+ return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey2.id] = 'New', _a));
596
642
  } })];
597
643
  case 32:
598
644
  _g.sent();
@@ -782,79 +828,195 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
782
828
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (with filter)", function () { return sdk.api.chats.getOne(chat.id, { roomId: room.id }); }, { onResult: function (c) { return (c === null || c === void 0 ? void 0 : c.id) === chat.id; } })];
783
829
  case 7:
784
830
  _a.sent();
785
- return [4 /*yield*/, (0, testing_1.async_test)("get-chats (with filter)", function () { return sdk.api.chats.getSome({}, { roomId: room.id }); }, { onResult: function (c) { return (c === null || c === void 0 ? void 0 : c.length) === 2; } })];
831
+ 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; } })];
786
832
  case 8:
787
833
  _a.sent();
788
834
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat not allowed", function () { return sdk2.api.chats.getOne(chat.id, { roomId: room.id }); }, { shouldError: true, onError: function (e) { return e.message === 'You do not have permission to access this resource'; } })];
789
835
  case 9:
790
836
  _a.sent();
791
- return [4 /*yield*/, (0, testing_1.async_test)("get-chats not allowed", function () { return sdk2.api.chats.getSome({}, { roomId: room.id }); }, { shouldError: true, onError: function (e) { return e.message === 'You do not have permission to access this resource'; } })];
837
+ 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'; } })
838
+ // currently disabled endpoint altogether
839
+ // await async_test(
840
+ // `update-chat not allowed`,
841
+ // () => sdk2.api.chats.updateOne(chat.id, { message: 'Hi' }),
842
+ // { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
843
+ // )
844
+ ];
792
845
  case 10:
793
846
  _a.sent();
794
- return [4 /*yield*/, (0, testing_1.async_test)("update-chat not allowed", function () { return sdk2.api.chats.updateOne(chat.id, { message: 'Hi' }); }, { shouldError: true, onError: function (e) { return e.message === 'You do not have permission to access this resource'; } })];
847
+ // currently disabled endpoint altogether
848
+ // await async_test(
849
+ // `update-chat not allowed`,
850
+ // () => sdk2.api.chats.updateOne(chat.id, { message: 'Hi' }),
851
+ // { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
852
+ // )
853
+ return [4 /*yield*/, (0, testing_1.async_test)("delete-chat not allowed", function () { return sdk2.api.chats.deleteOne(chat.id); }, { shouldError: true, onError: function (e) { return e.message === 'You do not have permission to access this resource'; } })
854
+ // currently disabled endpoint altogether
855
+ // await async_test(
856
+ // `update-chat can't update roomId`,
857
+ // () => sdk.api.chats.updateOne(chat.id, { roomId: room.id } as any), // cast to any to allow calling with bad argument, but typing should catch this too
858
+ // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
859
+ // )
860
+ ];
795
861
  case 11:
862
+ // currently disabled endpoint altogether
863
+ // await async_test(
864
+ // `update-chat not allowed`,
865
+ // () => sdk2.api.chats.updateOne(chat.id, { message: 'Hi' }),
866
+ // { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
867
+ // )
796
868
  _a.sent();
797
- return [4 /*yield*/, (0, testing_1.async_test)("delete-chat not allowed", function () { return sdk2.api.chats.deleteOne(chat.id); }, { shouldError: true, onError: function (e) { return e.message === 'You do not have permission to access this resource'; } })];
798
- case 12:
799
- _a.sent();
800
- return [4 /*yield*/, (0, testing_1.async_test)("update-chat can't update roomId", function () { return sdk.api.chats.updateOne(chat.id, { roomId: room.id }); }, // cast to any to allow calling with bad argument, but typing should catch this too
801
- { shouldError: true, onError: function (e) { return e.message === 'Error parsing field updates: roomId is not valid for updates'; } })];
802
- case 13:
803
- _a.sent();
869
+ // currently disabled endpoint altogether
870
+ // await async_test(
871
+ // `update-chat can't update roomId`,
872
+ // () => sdk.api.chats.updateOne(chat.id, { roomId: room.id } as any), // cast to any to allow calling with bad argument, but typing should catch this too
873
+ // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
874
+ // )
804
875
  return [4 /*yield*/, sdk.api.chat_rooms.deleteOne(room.id)];
805
- case 14:
876
+ case 12:
877
+ // currently disabled endpoint altogether
878
+ // await async_test(
879
+ // `update-chat can't update roomId`,
880
+ // () => sdk.api.chats.updateOne(chat.id, { roomId: room.id } as any), // cast to any to allow calling with bad argument, but typing should catch this too
881
+ // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
882
+ // )
806
883
  _a.sent();
807
884
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)];
808
- case 15:
885
+ case 13:
809
886
  _a.sent();
810
887
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (deleted as dependency of room 1)", function () { return sdk.api.chats.getOne(chat.id, { roomId: room.id }); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
811
- case 16:
888
+ case 14:
812
889
  _a.sent();
813
890
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (deleted as dependency of room 2)", function () { return sdk.api.chats.getOne(chat2.id, { roomId: room.id }); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
814
- case 17:
891
+ case 15:
815
892
  _a.sent();
816
893
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId, sdk2.userInfo.id] })];
817
- case 18:
894
+ case 16:
818
895
  sharedRoom = _a.sent();
819
896
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello!", })];
820
- case 19:
897
+ case 17:
821
898
  sharedChat = _a.sent();
822
899
  return [4 /*yield*/, sdk2.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello there!", })];
823
- case 20:
900
+ case 18:
824
901
  sharedChat2 = _a.sent();
825
902
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (shared, user1)", function () { return sdk.api.chats.getOne(sharedChat.id, { roomId: sharedRoom.id }); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
826
- case 21:
903
+ case 19:
827
904
  _a.sent();
828
905
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (shared, user2)", function () { return sdk2.api.chats.getOne(sharedChat.id, { roomId: sharedRoom.id }); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
829
- case 22:
906
+ case 20:
830
907
  _a.sent();
831
- return [4 /*yield*/, (0, testing_1.async_test)("get-chats (shared, user1)", function () { return sdk.api.chats.getSome({}, { 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; }); } })];
832
- case 23:
908
+ 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; }); } })];
909
+ case 21:
833
910
  _a.sent();
834
- return [4 /*yield*/, (0, testing_1.async_test)("get-chats (shared, user2)", function () { return sdk2.api.chats.getSome({}, { 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; }); } })
911
+ 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; }); } })
835
912
  // test setNull dependency
836
913
  ];
837
- case 24:
914
+ case 22:
838
915
  _a.sent();
839
916
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })];
840
- case 25:
917
+ case 23:
841
918
  roomNull = _a.sent();
842
919
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello!" })];
843
- case 26:
920
+ case 24:
844
921
  chatNull = _a.sent();
845
922
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello...", replyId: chatNull.id })];
846
- case 27:
923
+ case 25:
847
924
  chat2Null = _a.sent();
848
925
  return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
849
- case 28:
926
+ case 26:
850
927
  _a.sent();
851
928
  return [4 /*yield*/, (0, testing_1.async_test)("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id, { roomId: roomNull.id }); }, { onResult: function (c) { return c.replyId === null; } })];
852
- case 29:
929
+ case 27:
853
930
  _a.sent();
854
931
  return [2 /*return*/];
855
932
  }
856
933
  });
857
934
  }); };
935
+ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0, function () {
936
+ var email, password, enduser, _loop_1, _a, _b, _i, n;
937
+ var _c, _d, _e, _f, _g, _h;
938
+ return __generator(this, function (_j) {
939
+ switch (_j.label) {
940
+ case 0:
941
+ email = 'enduser@tellescope.com';
942
+ password = 'testpassword';
943
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
944
+ case 1:
945
+ enduser = _j.sent();
946
+ return [4 /*yield*/, sdk.api.endusers.setPassword({ id: enduser.id, password: password }).catch(console.error)];
947
+ case 2:
948
+ _j.sent();
949
+ return [4 /*yield*/, enduserSDK.authenticate(email, password).catch(console.error)];
950
+ case 3:
951
+ _j.sent();
952
+ _loop_1 = function (n) {
953
+ var endpoint, model;
954
+ return __generator(this, function (_k) {
955
+ switch (_k.label) {
956
+ case 0:
957
+ endpoint = (0, utilities_1.url_safe_path)(n);
958
+ model = schema_1.schema[n];
959
+ 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];
960
+ return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access getOne (" + endpoint + ")", function () { return enduserSDK.GET("/v1/" + endpoint.substring(0, endpoint.length - 1) + "/:id"); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
961
+ case 1:
962
+ _k.sent();
963
+ _k.label = 2;
964
+ case 2:
965
+ if (!(!((_d = model.enduserActions) === null || _d === void 0 ? void 0 : _d.readMany) && (model.defaultActions.readMany || model.customActions.readMany))) return [3 /*break*/, 4];
966
+ return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access getSome (" + endpoint + ")", function () { return enduserSDK.GET("/v1/" + endpoint); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
967
+ case 3:
968
+ _k.sent();
969
+ _k.label = 4;
970
+ case 4:
971
+ if (!(!((_e = model.enduserActions) === null || _e === void 0 ? void 0 : _e.create) && (model.defaultActions.create || model.customActions.create))) return [3 /*break*/, 6];
972
+ return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access createOne (" + endpoint + ")", function () { return enduserSDK.POST("/v1/" + endpoint.substring(0, endpoint.length - 1)); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
973
+ case 5:
974
+ _k.sent();
975
+ _k.label = 6;
976
+ case 6:
977
+ if (!(!((_f = model.enduserActions) === null || _f === void 0 ? void 0 : _f.createMany) && (model.defaultActions.createMany || model.customActions.createMany))) return [3 /*break*/, 8];
978
+ return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access createMany (" + endpoint + ")", function () { return enduserSDK.POST("/v1/" + endpoint); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
979
+ case 7:
980
+ _k.sent();
981
+ _k.label = 8;
982
+ case 8:
983
+ if (!(!((_g = model.enduserActions) === null || _g === void 0 ? void 0 : _g.update) && (model.defaultActions.update || model.customActions.update))) return [3 /*break*/, 10];
984
+ return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access update (" + endpoint + ")", function () { return enduserSDK.PATCH("/v1/" + endpoint.substring(0, endpoint.length - 1) + "/:id"); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
985
+ case 9:
986
+ _k.sent();
987
+ _k.label = 10;
988
+ case 10:
989
+ if (!(!((_h = model.enduserActions) === null || _h === void 0 ? void 0 : _h.delete) && (model.defaultActions.delete || model.customActions.delete))) return [3 /*break*/, 12];
990
+ return [4 /*yield*/, (0, testing_1.async_test)("no-enduser-access delete (" + endpoint + ")", function () { return enduserSDK.DELETE("/v1/" + endpoint.substring(0, endpoint.length - 1) + "/:id"); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
991
+ case 11:
992
+ _k.sent();
993
+ _k.label = 12;
994
+ case 12: return [2 /*return*/];
995
+ }
996
+ });
997
+ };
998
+ _a = [];
999
+ for (_b in schema_1.schema)
1000
+ _a.push(_b);
1001
+ _i = 0;
1002
+ _j.label = 4;
1003
+ case 4:
1004
+ if (!(_i < _a.length)) return [3 /*break*/, 7];
1005
+ n = _a[_i];
1006
+ return [5 /*yield**/, _loop_1(n)];
1007
+ case 5:
1008
+ _j.sent();
1009
+ _j.label = 6;
1010
+ case 6:
1011
+ _i++;
1012
+ return [3 /*break*/, 4];
1013
+ case 7: return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
1014
+ case 8:
1015
+ _j.sent();
1016
+ return [2 /*return*/];
1017
+ }
1018
+ });
1019
+ }); };
858
1020
  var tests = {
859
1021
  chats: chat_tests,
860
1022
  endusers: enduser_tests,
@@ -867,6 +1029,7 @@ var tests = {
867
1029
  chat_rooms: chat_room_tests,
868
1030
  users: function () { },
869
1031
  templates: function () { },
1032
+ files: function () { },
870
1033
  };
871
1034
  (function () { return __awaiter(void 0, void 0, void 0, function () {
872
1035
  var n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_1;
@@ -883,16 +1046,22 @@ var tests = {
883
1046
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
884
1047
  case 3:
885
1048
  _h.sent(); // should come right after setup tests
886
- return [4 /*yield*/, threadKeyTests()];
1049
+ return [4 /*yield*/, filterTests()];
887
1050
  case 4:
1051
+ _h.sent();
1052
+ return [4 /*yield*/, threadKeyTests()];
1053
+ case 5:
1054
+ _h.sent();
1055
+ return [4 /*yield*/, enduserAccessTests()];
1056
+ case 6:
888
1057
  _h.sent();
889
1058
  _a = [];
890
1059
  for (_b in schema_1.schema)
891
1060
  _a.push(_b);
892
1061
  _i = 0;
893
- _h.label = 5;
894
- case 5:
895
- if (!(_i < _a.length)) return [3 /*break*/, 8];
1062
+ _h.label = 7;
1063
+ case 7:
1064
+ if (!(_i < _a.length)) return [3 /*break*/, 10];
896
1065
  n = _a[_i];
897
1066
  returnValidation = (_g = (_f = schema_1.schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
898
1067
  return [4 /*yield*/, run_generated_tests({
@@ -903,37 +1072,37 @@ var tests = {
903
1072
  create: returnValidation,
904
1073
  }
905
1074
  })];
906
- case 6:
1075
+ case 8:
907
1076
  _h.sent();
908
- _h.label = 7;
909
- case 7:
1077
+ _h.label = 9;
1078
+ case 9:
910
1079
  _i++;
911
- return [3 /*break*/, 5];
912
- case 8:
1080
+ return [3 /*break*/, 7];
1081
+ case 10:
913
1082
  _c = [];
914
1083
  for (_d in tests)
915
1084
  _c.push(_d);
916
1085
  _e = 0;
917
- _h.label = 9;
918
- case 9:
919
- if (!(_e < _c.length)) return [3 /*break*/, 14];
1086
+ _h.label = 11;
1087
+ case 11:
1088
+ if (!(_e < _c.length)) return [3 /*break*/, 16];
920
1089
  t = _c[_e];
921
- _h.label = 10;
922
- case 10:
923
- _h.trys.push([10, 12, , 13]);
1090
+ _h.label = 12;
1091
+ case 12:
1092
+ _h.trys.push([12, 14, , 15]);
924
1093
  return [4 /*yield*/, tests[t]()];
925
- case 11:
1094
+ case 13:
926
1095
  _h.sent();
927
- return [3 /*break*/, 13];
928
- case 12:
1096
+ return [3 /*break*/, 15];
1097
+ case 14:
929
1098
  err_1 = _h.sent();
930
1099
  console.error("Error running test:");
931
1100
  console.error(err_1);
932
- return [3 /*break*/, 13];
933
- case 13:
1101
+ return [3 /*break*/, 15];
1102
+ case 15:
934
1103
  _e++;
935
- return [3 /*break*/, 9];
936
- case 14:
1104
+ return [3 /*break*/, 11];
1105
+ case 16:
937
1106
  process.exit();
938
1107
  return [2 /*return*/];
939
1108
  }