@tellescope/sdk 0.0.14 → 0.0.18

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 (48) hide show
  1. package/lib/cjs/enduser.d.ts +34 -5
  2. package/lib/cjs/enduser.d.ts.map +1 -1
  3. package/lib/cjs/enduser.js +5 -4
  4. package/lib/cjs/enduser.js.map +1 -1
  5. package/lib/cjs/sdk.d.ts +51 -16
  6. package/lib/cjs/sdk.d.ts.map +1 -1
  7. package/lib/cjs/sdk.js +10 -10
  8. package/lib/cjs/sdk.js.map +1 -1
  9. package/lib/cjs/session.d.ts +5 -21
  10. package/lib/cjs/session.d.ts.map +1 -1
  11. package/lib/cjs/session.js +12 -0
  12. package/lib/cjs/session.js.map +1 -1
  13. package/lib/cjs/tests/public_endpoint_tests.js +4 -4
  14. package/lib/cjs/tests/public_endpoint_tests.js.map +1 -1
  15. package/lib/cjs/tests/socket_tests.d.ts +1 -1
  16. package/lib/cjs/tests/socket_tests.d.ts.map +1 -1
  17. package/lib/cjs/tests/socket_tests.js +125 -8
  18. package/lib/cjs/tests/socket_tests.js.map +1 -1
  19. package/lib/cjs/tests/tests.js +207 -97
  20. package/lib/cjs/tests/tests.js.map +1 -1
  21. package/lib/esm/enduser.d.ts +34 -5
  22. package/lib/esm/enduser.d.ts.map +1 -1
  23. package/lib/esm/enduser.js +5 -4
  24. package/lib/esm/enduser.js.map +1 -1
  25. package/lib/esm/sdk.d.ts +51 -16
  26. package/lib/esm/sdk.d.ts.map +1 -1
  27. package/lib/esm/sdk.js +10 -10
  28. package/lib/esm/sdk.js.map +1 -1
  29. package/lib/esm/session.d.ts +5 -21
  30. package/lib/esm/session.d.ts.map +1 -1
  31. package/lib/esm/session.js +12 -0
  32. package/lib/esm/session.js.map +1 -1
  33. package/lib/esm/tests/public_endpoint_tests.js +4 -4
  34. package/lib/esm/tests/public_endpoint_tests.js.map +1 -1
  35. package/lib/esm/tests/socket_tests.d.ts +1 -1
  36. package/lib/esm/tests/socket_tests.d.ts.map +1 -1
  37. package/lib/esm/tests/socket_tests.js +123 -8
  38. package/lib/esm/tests/socket_tests.js.map +1 -1
  39. package/lib/esm/tests/tests.js +188 -97
  40. package/lib/esm/tests/tests.js.map +1 -1
  41. package/lib/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +10 -10
  43. package/src/enduser.ts +12 -8
  44. package/src/sdk.ts +31 -20
  45. package/src/session.ts +8 -18
  46. package/src/tests/public_endpoint_tests.ts +4 -4
  47. package/src/tests/socket_tests.ts +68 -5
  48. package/src/tests/tests.ts +116 -36
@@ -46,6 +46,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  }
47
47
  };
48
48
  require('source-map-support').install();
49
+ import * as buffer from "buffer"; // only node >=15.7.0
49
50
  import { fieldsToValidation, mongoIdValidator, } from "@tellescope/validation";
50
51
  import { Session, EnduserSession } from "../sdk";
51
52
  import { DEFAULT_OPERATIONS, PLACEHOLDER_ID } from "@tellescope/constants";
@@ -70,7 +71,7 @@ var userId = '60398b0231a295e64f084fd9';
70
71
  // // delete an individual record
71
72
  // await sdk.api.endusers.deleteOne(enduser.id)
72
73
  // }
73
- var sdk = new Session();
74
+ var sdk = new Session({ host: host });
74
75
  var sdkOther = new Session({ host: host, apiKey: "ba745e25162bb95a795c5fa1af70df188d93c4d3aac9c48b34a5c8c9dd7b80f7" });
75
76
  var enduserSDK = new EnduserSession({ host: host });
76
77
  // const sdkOtherEmail = "sebass@tellescope.com"
@@ -88,15 +89,11 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
88
89
  case 0: return [4 /*yield*/, async_test('test_online', sdk.test_online, { expectedResult: 'API V1 Online' })];
89
90
  case 1:
90
91
  _a.sent();
91
- return [4 /*yield*/, async_test('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })
92
- // console.log(await sdk.api.api_keys.createOne({}))
93
- ];
92
+ return [4 /*yield*/, async_test('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
94
93
  case 2:
95
94
  _a.sent();
96
- // console.log(await sdk.api.api_keys.createOne({}))
97
95
  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!' })];
98
96
  case 3:
99
- // console.log(await sdk.api.api_keys.createOne({}))
100
97
  _a.sent();
101
98
  return [4 /*yield*/, sdk.logout()];
102
99
  case 4:
@@ -104,7 +101,7 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
104
101
  return [4 /*yield*/, async_test('test_authenticated - (logout invalidates jwt)', sdk.test_authenticated, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
105
102
  case 5:
106
103
  _a.sent();
107
- return [4 /*yield*/, sdk.authenticate(email, password, host)];
104
+ return [4 /*yield*/, sdk.authenticate(email, password)];
108
105
  case 6:
109
106
  _a.sent();
110
107
  return [4 /*yield*/, async_test('test_authenticated (re-authenticated)', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
@@ -233,11 +230,26 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
233
230
  }
234
231
  });
235
232
  }); };
233
+ var badInputTests = function () { return __awaiter(void 0, void 0, void 0, function () {
234
+ return __generator(this, function (_a) {
235
+ switch (_a.label) {
236
+ case 0:
237
+ log_header("Bad Input Tests");
238
+ return [4 /*yield*/, async_test("_-prefixed fields are not allowed", function () { return sdk.api.endusers.createOne({ email: 'failure@tellescope.com', fields: { "_notallowed": 'hello' } }); }, { shouldError: true, onError: function (e) { return e.message === "Error parsing field fields: Fields that start with '_' are not allowed"; } })];
239
+ case 1:
240
+ _a.sent();
241
+ return [4 /*yield*/, async_test("_-prefixed fields are not allowed", function () { return sdk.api.notes.createOne({ enduserId: PLACEHOLDER_ID, fields: { "_notallowed": 'hello' } }); }, { shouldError: true, onError: function (e) { return e.message === "Error parsing field fields: Fields that start with '_' are not allowed"; } })];
242
+ case 2:
243
+ _a.sent();
244
+ return [2 /*return*/];
245
+ }
246
+ });
247
+ }); };
236
248
  var filterTests = function () { return __awaiter(void 0, void 0, void 0, function () {
237
249
  var enduser, otherEnduser;
238
250
  return __generator(this, function (_a) {
239
251
  switch (_a.label) {
240
- case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test' })];
252
+ case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test', fields: { field1: 'value1', field2: 'value2' } })];
241
253
  case 1:
242
254
  enduser = _a.sent();
243
255
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'other@tellescope.com' })];
@@ -246,20 +258,46 @@ var filterTests = function () { return __awaiter(void 0, void 0, void 0, functio
246
258
  return [4 /*yield*/, 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; } })];
247
259
  case 3:
248
260
  _a.sent();
249
- return [4 /*yield*/, 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; } })];
261
+ return [4 /*yield*/, async_test("find enduser by _exists filter", function () { return sdk.api.endusers.getSome({ filter: { fname: { _exists: true } } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === enduser.id; } })];
250
262
  case 4:
251
263
  _a.sent();
252
- return [4 /*yield*/, 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; } })];
264
+ return [4 /*yield*/, async_test("find enduser by _exists filter (findOne)",
265
+ // () => sdk.api.endusers.getOne({ fname: { _exists: true } }),
266
+ function () { return sdk.api.endusers.getOne({ fname: { _exists: true } }); }, { onResult: function (e) { return e.id === enduser.id; } })];
253
267
  case 5:
254
268
  _a.sent();
255
- return [4 /*yield*/, 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; } })];
269
+ return [4 /*yield*/, 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; } })];
256
270
  case 6:
257
271
  _a.sent();
258
- return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
272
+ return [4 /*yield*/, 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; } })];
259
273
  case 7:
260
274
  _a.sent();
261
- return [4 /*yield*/, sdk.api.endusers.deleteOne(otherEnduser.id)];
275
+ return [4 /*yield*/, 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; } })];
262
276
  case 8:
277
+ _a.sent();
278
+ return [4 /*yield*/, async_test("find enduser by nested filter", function () { return sdk.api.endusers.getSome({ filter: { fields: { field1: 'value1' } } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === enduser.id; } })];
279
+ case 9:
280
+ _a.sent();
281
+ return [4 /*yield*/, async_test("nothing found by invalid nested filter", function () { return sdk.api.endusers.getSome({ filter: { fields: { field1: 'not a nested field value' } } }); }, { onResult: function (es) { return es.length === 0; } })];
282
+ case 10:
283
+ _a.sent();
284
+ return [4 /*yield*/, async_test("find enduser by compound nested filter", function () { return sdk.api.endusers.getSome({ filter: { fields: { field1: 'value1', field2: 'value2' } } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === enduser.id; } })];
285
+ case 11:
286
+ _a.sent();
287
+ return [4 /*yield*/, async_test("nothing found by compound invalid nested filter", function () { return sdk.api.endusers.getSome({ filter: { fields: { field1: 'not a nested field value', field2: 'value2' } } }); }, { onResult: function (es) { return es.length === 0; } })];
288
+ case 12:
289
+ _a.sent();
290
+ return [4 /*yield*/, async_test("find enduser by compound nested filter with non-nested field as well", function () { return sdk.api.endusers.getSome({ filter: { email: 'filtertests@tellescope.com', fields: { field1: 'value1', field2: 'value2' } } }); }, { onResult: function (es) { return es.length === 1 && es[0].id === enduser.id; } })];
291
+ case 13:
292
+ _a.sent();
293
+ return [4 /*yield*/, async_test("nothing found for compound nested filter with non-nested field as well", function () { return sdk.api.endusers.getSome({ filter: { email: 'doesnotexist@tellescope.com', fields: { field1: 'value1', field2: 'value2' } } }); }, { onResult: function (es) { return es.length === 0; } })];
294
+ case 14:
295
+ _a.sent();
296
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
297
+ case 15:
298
+ _a.sent();
299
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(otherEnduser.id)];
300
+ case 16:
263
301
  _a.sent();
264
302
  return [2 /*return*/];
265
303
  }
@@ -297,24 +335,40 @@ var updatesTests = function () { return __awaiter(void 0, void 0, void 0, functi
297
335
  });
298
336
  }); };
299
337
  var generateEnduserAuthTests = function () { return __awaiter(void 0, void 0, void 0, function () {
300
- var enduser, authToken, isAuthenticated;
301
- return __generator(this, function (_a) {
302
- switch (_a.label) {
338
+ var e, _a, authToken, enduser, isAuthenticated;
339
+ return __generator(this, function (_b) {
340
+ switch (_b.label) {
303
341
  case 0:
304
342
  log_header("Generated Enduser authToken Tests");
305
- return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com' })];
343
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: '1029f9v9sjd0as' })];
306
344
  case 1:
307
- enduser = _a.sent();
308
- return [4 /*yield*/, sdk.api.endusers.generateAuthToken({ id: enduser.id })];
345
+ e = _b.sent();
346
+ return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: e.id })];
309
347
  case 2:
310
- authToken = (_a.sent()).authToken;
311
- return [4 /*yield*/, sdk.api.endusers.isAuthenticated({ id: enduser.id, authToken: authToken })];
348
+ _a = _b.sent(), authToken = _a.authToken, enduser = _a.enduser;
349
+ assert(!!authToken && !!enduser, 'invalid returned values', 'Generate authToken and get enduser');
350
+ return [4 /*yield*/, sdk.api.endusers.is_authenticated({ id: enduser.id, authToken: authToken })];
312
351
  case 3:
313
- isAuthenticated = (_a.sent()).isAuthenticated;
352
+ isAuthenticated = (_b.sent()).isAuthenticated;
314
353
  assert(isAuthenticated, 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid');
315
- return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
354
+ return [4 /*yield*/, async_test("auth by externalId", function () { return sdk.api.endusers.generate_auth_token({ externalId: e.externalId }); }, passOnVoid)];
316
355
  case 4:
317
- _a.sent();
356
+ _b.sent();
357
+ return [4 /*yield*/, async_test("auth by email", function () { return sdk.api.endusers.generate_auth_token({ email: e.email }); }, passOnVoid)];
358
+ case 5:
359
+ _b.sent();
360
+ return [4 /*yield*/, async_test("auth by phone", function () { return sdk.api.endusers.generate_auth_token({ phone: e.phone }); }, passOnVoid)];
361
+ case 6:
362
+ _b.sent();
363
+ return [4 /*yield*/, async_test("auth by nothing throws error", function () { return sdk.api.endusers.generate_auth_token({ phone: undefined }); }, { shouldError: true, onError: function (e) { return e.message === "One of id, externalId, email, or phone is required"; } })];
364
+ case 7:
365
+ _b.sent();
366
+ return [4 /*yield*/, async_test("auth by bad field throws error", function () { return sdk.api.endusers.generate_auth_token({ email: "notavalidemail@tellescope.com" }); }, { shouldError: true, onError: function (e) { return e.message === "Could not find a corresponding enduser"; } })];
367
+ case 8:
368
+ _b.sent();
369
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
370
+ case 9:
371
+ _b.sent();
318
372
  return [2 /*return*/];
319
373
  }
320
374
  });
@@ -437,7 +491,7 @@ var run_generated_tests = function (_a) {
437
491
  case 7:
438
492
  _c.sent();
439
493
  _c.label = 8;
440
- case 8: return [4 /*yield*/, async_test("get-".concat(singularName), function () { return queries.getOne(_id, filter); }, { onResult: function (d) {
494
+ case 8: return [4 /*yield*/, async_test("get-".concat(singularName), function () { return queries.getOne(_id); }, { onResult: function (d) {
441
495
  if (!(d === null || d === void 0 ? void 0 : d.id))
442
496
  return false;
443
497
  for (var k in instance) {
@@ -466,7 +520,7 @@ var run_generated_tests = function (_a) {
466
520
  return [4 /*yield*/, async_test("delete-".concat(singularName), function () { return queries.deleteOne(_id); }, passOnVoid)];
467
521
  case 11:
468
522
  _c.sent();
469
- return [4 /*yield*/, async_test("get-".concat(singularName, " (verify delete)"), function () { return queries.getOne(_id, filter); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
523
+ return [4 /*yield*/, async_test("get-".concat(singularName, " (verify delete)"), function () { return queries.getOne(_id); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
470
524
  case 12:
471
525
  _c.sent();
472
526
  return [2 /*return*/];
@@ -661,7 +715,7 @@ var journey_tests = function (queries) {
661
715
  return [4 /*yield*/, async_test("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return objects_equivalent(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })];
662
716
  case 24:
663
717
  _g.sent();
664
- return [4 /*yield*/, async_test("journey-updateState", function () { return queries.updateState({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' } }); }, passOnVoid)];
718
+ return [4 /*yield*/, async_test("journey-updateState", function () { return queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' } }); }, passOnVoid)];
665
719
  case 25:
666
720
  _g.sent();
667
721
  return [4 /*yield*/, wait(undefined, 25)]; // wait for side effects to update endusers
@@ -891,23 +945,30 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
891
945
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello!" })];
892
946
  case 3:
893
947
  chat = _a.sent();
894
- return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })];
948
+ return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })
949
+ // await async_test(
950
+ // `get-chat (without filter)`,
951
+ // () => sdk.api.chats.getOne(chat.id),
952
+ // { shouldError: true, onError: () => true }
953
+ // )
954
+ ];
895
955
  case 4:
896
956
  chat2 = _a.sent();
897
- return [4 /*yield*/, async_test("get-chat (without filter)", function () { return sdk.api.chats.getOne(chat.id); }, { shouldError: true, onError: function () { return true; } })];
898
- case 5:
899
- _a.sent();
957
+ // await async_test(
958
+ // `get-chat (without filter)`,
959
+ // () => sdk.api.chats.getOne(chat.id),
960
+ // { shouldError: true, onError: () => true }
961
+ // )
900
962
  return [4 /*yield*/, async_test("get-chats (without filter)", function () { return sdk.api.chats.getSome({}); }, { shouldError: true, onError: function () { return true; } })];
901
- case 6:
902
- _a.sent();
903
- return [4 /*yield*/, 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; } })];
904
- case 7:
963
+ case 5:
964
+ // await async_test(
965
+ // `get-chat (without filter)`,
966
+ // () => sdk.api.chats.getOne(chat.id),
967
+ // { shouldError: true, onError: () => true }
968
+ // )
905
969
  _a.sent();
906
970
  return [4 /*yield*/, 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; } })];
907
- case 8:
908
- _a.sent();
909
- return [4 /*yield*/, 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'; } })];
910
- case 9:
971
+ case 6:
911
972
  _a.sent();
912
973
  return [4 /*yield*/, 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'; } })
913
974
  // currently disabled endpoint altogether
@@ -917,7 +978,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
917
978
  // { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
918
979
  // )
919
980
  ];
920
- case 10:
981
+ case 7:
921
982
  _a.sent();
922
983
  // currently disabled endpoint altogether
923
984
  // await async_test(
@@ -933,7 +994,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
933
994
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
934
995
  // )
935
996
  ];
936
- case 11:
997
+ case 8:
937
998
  // currently disabled endpoint altogether
938
999
  // await async_test(
939
1000
  // `update-chat not allowed`,
@@ -948,7 +1009,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
948
1009
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
949
1010
  // )
950
1011
  return [4 /*yield*/, sdk.api.chat_rooms.deleteOne(room.id)];
951
- case 12:
1012
+ case 9:
952
1013
  // currently disabled endpoint altogether
953
1014
  // await async_test(
954
1015
  // `update-chat can't update roomId`,
@@ -957,51 +1018,51 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
957
1018
  // )
958
1019
  _a.sent();
959
1020
  return [4 /*yield*/, wait(undefined, 25)];
960
- case 13:
1021
+ case 10:
961
1022
  _a.sent();
962
- return [4 /*yield*/, 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'; } })];
963
- case 14:
1023
+ return [4 /*yield*/, 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'; } })];
1024
+ case 11:
964
1025
  _a.sent();
965
- return [4 /*yield*/, 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'; } })];
966
- case 15:
1026
+ return [4 /*yield*/, 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'; } })];
1027
+ case 12:
967
1028
  _a.sent();
968
1029
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId, sdk2.userInfo.id] })];
969
- case 16:
1030
+ case 13:
970
1031
  sharedRoom = _a.sent();
971
1032
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello!", })];
972
- case 17:
1033
+ case 14:
973
1034
  sharedChat = _a.sent();
974
1035
  return [4 /*yield*/, sdk2.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello there!", })];
975
- case 18:
1036
+ case 15:
976
1037
  sharedChat2 = _a.sent();
977
- return [4 /*yield*/, 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; } })];
978
- case 19:
1038
+ return [4 /*yield*/, async_test("get-chat (shared, user1)", function () { return sdk.api.chats.getOne(sharedChat.id); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
1039
+ case 16:
979
1040
  _a.sent();
980
- return [4 /*yield*/, 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; } })];
981
- case 20:
1041
+ return [4 /*yield*/, async_test("get-chat (shared, user2)", function () { return sdk2.api.chats.getOne(sharedChat.id); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
1042
+ case 17:
982
1043
  _a.sent();
983
1044
  return [4 /*yield*/, 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; }); } })];
984
- case 21:
1045
+ case 18:
985
1046
  _a.sent();
986
1047
  return [4 /*yield*/, 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; }); } })
987
1048
  // test setNull dependency
988
1049
  ];
989
- case 22:
1050
+ case 19:
990
1051
  _a.sent();
991
1052
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })];
992
- case 23:
1053
+ case 20:
993
1054
  roomNull = _a.sent();
994
1055
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello!" })];
995
- case 24:
1056
+ case 21:
996
1057
  chatNull = _a.sent();
997
1058
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello...", replyId: chatNull.id })];
998
- case 25:
1059
+ case 22:
999
1060
  chat2Null = _a.sent();
1000
1061
  return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
1001
- case 26:
1062
+ case 23:
1002
1063
  _a.sent();
1003
- return [4 /*yield*/, async_test("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id, { roomId: roomNull.id }); }, { onResult: function (c) { return c.replyId === null; } })];
1004
- case 27:
1064
+ return [4 /*yield*/, async_test("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id); }, { onResult: function (c) { return c.replyId === null; } })];
1065
+ case 24:
1005
1066
  _a.sent();
1006
1067
  return [2 /*return*/];
1007
1068
  }
@@ -1018,7 +1079,7 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
1018
1079
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
1019
1080
  case 1:
1020
1081
  enduser = _j.sent();
1021
- return [4 /*yield*/, sdk.api.endusers.setPassword({ id: enduser.id, password: password }).catch(console.error)];
1082
+ return [4 /*yield*/, sdk.api.endusers.set_password({ id: enduser.id, password: password }).catch(console.error)];
1022
1083
  case 2:
1023
1084
  _j.sent();
1024
1085
  return [4 /*yield*/, enduserSDK.authenticate(email, password).catch(console.error)];
@@ -1116,6 +1177,31 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
1116
1177
  }
1117
1178
  });
1118
1179
  }); };
1180
+ var files_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
1181
+ var buff, _a, presignedUpload, file, downloadURL, downloaded;
1182
+ return __generator(this, function (_b) {
1183
+ switch (_b.label) {
1184
+ case 0:
1185
+ buff = buffer.Buffer.from('test file data');
1186
+ return [4 /*yield*/, sdk.api.files.prepare_file_upload({
1187
+ name: 'Test File', size: buff.byteLength, type: 'text/plain'
1188
+ })];
1189
+ case 1:
1190
+ _a = _b.sent(), presignedUpload = _a.presignedUpload, file = _a.file;
1191
+ return [4 /*yield*/, sdk.UPLOAD(presignedUpload, undefined, buff)];
1192
+ case 2:
1193
+ _b.sent();
1194
+ return [4 /*yield*/, sdk.api.files.file_download_URL({ secureName: file.secureName })];
1195
+ case 3:
1196
+ downloadURL = (_b.sent()).downloadURL;
1197
+ return [4 /*yield*/, sdk.DOWNLOAD(downloadURL)];
1198
+ case 4:
1199
+ downloaded = _b.sent();
1200
+ assert(downloaded === buff.toString(), 'downloaded file does not match uploaded file', 'upload, download comparison');
1201
+ return [2 /*return*/];
1202
+ }
1203
+ });
1204
+ }); };
1119
1205
  var tests = {
1120
1206
  chats: chat_tests,
1121
1207
  endusers: enduser_tests,
@@ -1128,58 +1214,63 @@ var tests = {
1128
1214
  chat_rooms: chat_room_tests,
1129
1215
  users: function () { },
1130
1216
  templates: function () { },
1131
- files: function () { },
1217
+ files: files_tests,
1132
1218
  tickets: function () { },
1133
1219
  meetings: function () { },
1220
+ notes: function () { },
1134
1221
  };
1135
1222
  (function () { return __awaiter(void 0, void 0, void 0, function () {
1136
1223
  var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
1137
1224
  var _f, _g;
1138
1225
  return __generator(this, function (_h) {
1139
1226
  switch (_h.label) {
1140
- case 0: return [4 /*yield*/, sdk.authenticate(email, password, host)];
1141
- case 1:
1142
- _h.sent();
1227
+ case 0:
1143
1228
  log_header("API");
1144
- _h.label = 2;
1229
+ _h.label = 1;
1230
+ case 1:
1231
+ _h.trys.push([1, 11, , 12]);
1232
+ return [4 /*yield*/, sdk.authenticate(email, password)];
1145
1233
  case 2:
1146
- _h.trys.push([2, 10, , 11]);
1234
+ _h.sent();
1147
1235
  return [4 /*yield*/, setup_tests()];
1148
1236
  case 3:
1149
1237
  _h.sent();
1150
1238
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
1151
1239
  case 4:
1152
1240
  _h.sent(); // should come right after setup tests
1153
- return [4 /*yield*/, filterTests()];
1241
+ return [4 /*yield*/, badInputTests()];
1154
1242
  case 5:
1155
1243
  _h.sent();
1156
- return [4 /*yield*/, updatesTests()];
1244
+ return [4 /*yield*/, filterTests()];
1157
1245
  case 6:
1158
1246
  _h.sent();
1159
- return [4 /*yield*/, threadKeyTests()];
1247
+ return [4 /*yield*/, updatesTests()];
1160
1248
  case 7:
1161
1249
  _h.sent();
1162
- return [4 /*yield*/, enduserAccessTests()];
1250
+ return [4 /*yield*/, threadKeyTests()];
1163
1251
  case 8:
1164
1252
  _h.sent();
1165
- return [4 /*yield*/, generateEnduserAuthTests()];
1253
+ return [4 /*yield*/, enduserAccessTests()];
1166
1254
  case 9:
1167
1255
  _h.sent();
1168
- return [3 /*break*/, 11];
1256
+ return [4 /*yield*/, generateEnduserAuthTests()];
1169
1257
  case 10:
1258
+ _h.sent();
1259
+ return [3 /*break*/, 12];
1260
+ case 11:
1170
1261
  err_1 = _h.sent();
1171
1262
  console.error("Failed during custom test");
1172
1263
  console.error(err_1);
1173
1264
  process.exit();
1174
- return [3 /*break*/, 11];
1175
- case 11:
1265
+ return [3 /*break*/, 12];
1266
+ case 12:
1176
1267
  _a = [];
1177
1268
  for (_b in schema)
1178
1269
  _a.push(_b);
1179
1270
  _i = 0;
1180
- _h.label = 12;
1181
- case 12:
1182
- if (!(_i < _a.length)) return [3 /*break*/, 15];
1271
+ _h.label = 13;
1272
+ case 13:
1273
+ if (!(_i < _a.length)) return [3 /*break*/, 16];
1183
1274
  n = _a[_i];
1184
1275
  returnValidation = (_g = (_f = schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
1185
1276
  return [4 /*yield*/, run_generated_tests({
@@ -1190,37 +1281,37 @@ var tests = {
1190
1281
  create: returnValidation,
1191
1282
  }
1192
1283
  })];
1193
- case 13:
1194
- _h.sent();
1195
- _h.label = 14;
1196
1284
  case 14:
1197
- _i++;
1198
- return [3 /*break*/, 12];
1285
+ _h.sent();
1286
+ _h.label = 15;
1199
1287
  case 15:
1288
+ _i++;
1289
+ return [3 /*break*/, 13];
1290
+ case 16:
1200
1291
  _c = [];
1201
1292
  for (_d in tests)
1202
1293
  _c.push(_d);
1203
1294
  _e = 0;
1204
- _h.label = 16;
1205
- case 16:
1206
- if (!(_e < _c.length)) return [3 /*break*/, 21];
1207
- t = _c[_e];
1208
1295
  _h.label = 17;
1209
1296
  case 17:
1210
- _h.trys.push([17, 19, , 20]);
1211
- return [4 /*yield*/, tests[t]()];
1297
+ if (!(_e < _c.length)) return [3 /*break*/, 22];
1298
+ t = _c[_e];
1299
+ _h.label = 18;
1212
1300
  case 18:
1213
- _h.sent();
1214
- return [3 /*break*/, 20];
1301
+ _h.trys.push([18, 20, , 21]);
1302
+ return [4 /*yield*/, tests[t]()];
1215
1303
  case 19:
1304
+ _h.sent();
1305
+ return [3 /*break*/, 21];
1306
+ case 20:
1216
1307
  err_2 = _h.sent();
1217
1308
  console.error("Error running test:");
1218
1309
  console.error(err_2);
1219
- return [3 /*break*/, 20];
1220
- case 20:
1221
- _e++;
1222
- return [3 /*break*/, 16];
1310
+ return [3 /*break*/, 21];
1223
1311
  case 21:
1312
+ _e++;
1313
+ return [3 /*break*/, 17];
1314
+ case 22:
1224
1315
  process.exit();
1225
1316
  return [2 /*return*/];
1226
1317
  }