@tellescope/sdk 0.0.17 → 0.0.21

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 (57) hide show
  1. package/lib/cjs/enduser.d.ts +32 -3
  2. package/lib/cjs/enduser.d.ts.map +1 -1
  3. package/lib/cjs/enduser.js +6 -3
  4. package/lib/cjs/enduser.js.map +1 -1
  5. package/lib/cjs/sdk.d.ts +46 -6
  6. package/lib/cjs/sdk.d.ts.map +1 -1
  7. package/lib/cjs/sdk.js +10 -6
  8. package/lib/cjs/sdk.js.map +1 -1
  9. package/lib/cjs/session.d.ts +4 -21
  10. package/lib/cjs/session.d.ts.map +1 -1
  11. package/lib/cjs/session.js +1 -0
  12. package/lib/cjs/session.js.map +1 -1
  13. package/lib/cjs/tests/public_endpoint_tests.js +1 -1
  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 +124 -7
  18. package/lib/cjs/tests/socket_tests.js.map +1 -1
  19. package/lib/cjs/tests/tests.js +156 -113
  20. package/lib/cjs/tests/tests.js.map +1 -1
  21. package/lib/cjs/tests/webhooks_tests.d.ts +2 -0
  22. package/lib/cjs/tests/webhooks_tests.d.ts.map +1 -0
  23. package/lib/cjs/tests/webhooks_tests.js +261 -0
  24. package/lib/cjs/tests/webhooks_tests.js.map +1 -0
  25. package/lib/esm/enduser.d.ts +32 -3
  26. package/lib/esm/enduser.d.ts.map +1 -1
  27. package/lib/esm/enduser.js +6 -3
  28. package/lib/esm/enduser.js.map +1 -1
  29. package/lib/esm/sdk.d.ts +46 -6
  30. package/lib/esm/sdk.d.ts.map +1 -1
  31. package/lib/esm/sdk.js +10 -6
  32. package/lib/esm/sdk.js.map +1 -1
  33. package/lib/esm/session.d.ts +4 -21
  34. package/lib/esm/session.d.ts.map +1 -1
  35. package/lib/esm/session.js +1 -0
  36. package/lib/esm/session.js.map +1 -1
  37. package/lib/esm/tests/public_endpoint_tests.js +1 -1
  38. package/lib/esm/tests/public_endpoint_tests.js.map +1 -1
  39. package/lib/esm/tests/socket_tests.d.ts +1 -1
  40. package/lib/esm/tests/socket_tests.d.ts.map +1 -1
  41. package/lib/esm/tests/socket_tests.js +122 -7
  42. package/lib/esm/tests/socket_tests.js.map +1 -1
  43. package/lib/esm/tests/tests.js +156 -113
  44. package/lib/esm/tests/tests.js.map +1 -1
  45. package/lib/esm/tests/webhooks_tests.d.ts +2 -0
  46. package/lib/esm/tests/webhooks_tests.d.ts.map +1 -0
  47. package/lib/esm/tests/webhooks_tests.js +256 -0
  48. package/lib/esm/tests/webhooks_tests.js.map +1 -0
  49. package/lib/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +14 -11
  51. package/src/enduser.ts +12 -7
  52. package/src/sdk.ts +32 -13
  53. package/src/session.ts +3 -23
  54. package/src/tests/public_endpoint_tests.ts +1 -1
  55. package/src/tests/socket_tests.ts +67 -4
  56. package/src/tests/tests.ts +60 -37
  57. package/src/tests/webhooks_tests.ts +183 -0
@@ -92,7 +92,7 @@ var userId = '60398b0231a295e64f084fd9';
92
92
  // // delete an individual record
93
93
  // await sdk.api.endusers.deleteOne(enduser.id)
94
94
  // }
95
- var sdk = new sdk_1.Session();
95
+ var sdk = new sdk_1.Session({ host: host });
96
96
  var sdkOther = new sdk_1.Session({ host: host, apiKey: "ba745e25162bb95a795c5fa1af70df188d93c4d3aac9c48b34a5c8c9dd7b80f7" });
97
97
  var enduserSDK = new sdk_1.EnduserSession({ host: host });
98
98
  // const sdkOtherEmail = "sebass@tellescope.com"
@@ -110,15 +110,11 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
110
110
  case 0: return [4 /*yield*/, (0, testing_1.async_test)('test_online', sdk.test_online, { expectedResult: 'API V1 Online' })];
111
111
  case 1:
112
112
  _a.sent();
113
- return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })
114
- // console.log(await sdk.api.api_keys.createOne({}))
115
- ];
113
+ return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
116
114
  case 2:
117
115
  _a.sent();
118
- // console.log(await sdk.api.api_keys.createOne({}))
119
116
  return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated (with API Key)', (new sdk_1.Session({ host: host, apiKey: '3n5q0SCBT_iUvZz-b9BJtX7o7HQUVJ9v132PgHJNJsg.' /* local test key */ })).test_authenticated, { expectedResult: 'Authenticated!' })];
120
117
  case 3:
121
- // console.log(await sdk.api.api_keys.createOne({}))
122
118
  _a.sent();
123
119
  return [4 /*yield*/, sdk.logout()];
124
120
  case 4:
@@ -126,7 +122,7 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
126
122
  return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated - (logout invalidates jwt)', sdk.test_authenticated, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
127
123
  case 5:
128
124
  _a.sent();
129
- return [4 /*yield*/, sdk.authenticate(email, password, host)];
125
+ return [4 /*yield*/, sdk.authenticate(email, password)];
130
126
  case 6:
131
127
  _a.sent();
132
128
  return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated (re-authenticated)', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
@@ -255,6 +251,21 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
255
251
  }
256
252
  });
257
253
  }); };
254
+ var badInputTests = function () { return __awaiter(void 0, void 0, void 0, function () {
255
+ return __generator(this, function (_a) {
256
+ switch (_a.label) {
257
+ case 0:
258
+ (0, testing_1.log_header)("Bad Input Tests");
259
+ return [4 /*yield*/, (0, testing_1.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"; } })];
260
+ case 1:
261
+ _a.sent();
262
+ return [4 /*yield*/, (0, testing_1.async_test)("_-prefixed fields are not allowed", function () { return sdk.api.notes.createOne({ enduserId: constants_1.PLACEHOLDER_ID, fields: { "_notallowed": 'hello' } }); }, { shouldError: true, onError: function (e) { return e.message === "Error parsing field fields: Fields that start with '_' are not allowed"; } })];
263
+ case 2:
264
+ _a.sent();
265
+ return [2 /*return*/];
266
+ }
267
+ });
268
+ }); };
258
269
  var filterTests = function () { return __awaiter(void 0, void 0, void 0, function () {
259
270
  var enduser, otherEnduser;
260
271
  return __generator(this, function (_a) {
@@ -268,38 +279,46 @@ var filterTests = function () { return __awaiter(void 0, void 0, void 0, functio
268
279
  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; } })];
269
280
  case 3:
270
281
  _a.sent();
271
- 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; } })];
282
+ return [4 /*yield*/, (0, testing_1.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; } })];
272
283
  case 4:
273
284
  _a.sent();
274
- 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; } })];
285
+ return [4 /*yield*/, (0, testing_1.async_test)("find enduser by _exists filter (findOne)",
286
+ // () => sdk.api.endusers.getOne({ fname: { _exists: true } }),
287
+ function () { return sdk.api.endusers.getOne({ fname: { _exists: true } }); }, { onResult: function (e) { return e.id === enduser.id; } })];
275
288
  case 5:
276
289
  _a.sent();
277
- 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; } })];
290
+ 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; } })];
278
291
  case 6:
279
292
  _a.sent();
280
- return [4 /*yield*/, (0, testing_1.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; } })];
293
+ 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; } })];
281
294
  case 7:
282
295
  _a.sent();
283
- return [4 /*yield*/, (0, testing_1.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; } })];
296
+ 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; } })];
284
297
  case 8:
285
298
  _a.sent();
286
- return [4 /*yield*/, (0, testing_1.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; } })];
299
+ return [4 /*yield*/, (0, testing_1.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; } })];
287
300
  case 9:
288
301
  _a.sent();
289
- return [4 /*yield*/, (0, testing_1.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; } })];
302
+ return [4 /*yield*/, (0, testing_1.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; } })];
290
303
  case 10:
291
304
  _a.sent();
292
- return [4 /*yield*/, (0, testing_1.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; } })];
305
+ return [4 /*yield*/, (0, testing_1.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; } })];
293
306
  case 11:
294
307
  _a.sent();
295
- return [4 /*yield*/, (0, testing_1.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; } })];
308
+ return [4 /*yield*/, (0, testing_1.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; } })];
296
309
  case 12:
297
310
  _a.sent();
298
- return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
311
+ return [4 /*yield*/, (0, testing_1.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; } })];
299
312
  case 13:
300
313
  _a.sent();
301
- return [4 /*yield*/, sdk.api.endusers.deleteOne(otherEnduser.id)];
314
+ return [4 /*yield*/, (0, testing_1.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; } })];
302
315
  case 14:
316
+ _a.sent();
317
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
318
+ case 15:
319
+ _a.sent();
320
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(otherEnduser.id)];
321
+ case 16:
303
322
  _a.sent();
304
323
  return [2 /*return*/];
305
324
  }
@@ -337,40 +356,50 @@ var updatesTests = function () { return __awaiter(void 0, void 0, void 0, functi
337
356
  });
338
357
  }); };
339
358
  var generateEnduserAuthTests = function () { return __awaiter(void 0, void 0, void 0, function () {
340
- var e, _a, authToken, enduser, isAuthenticated;
341
- return __generator(this, function (_b) {
342
- switch (_b.label) {
359
+ var externalId, e, _a, authToken, enduser, isAuthenticated, _b, authTokenUID, enduser2, _c;
360
+ return __generator(this, function (_d) {
361
+ switch (_d.label) {
343
362
  case 0:
344
363
  (0, testing_1.log_header)("Generated Enduser authToken Tests");
345
- return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: '1029f9v9sjd0as' })];
364
+ externalId = '1029f9v9sjd0as';
365
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: externalId })];
346
366
  case 1:
347
- e = _b.sent();
367
+ e = _d.sent();
348
368
  return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: e.id })];
349
369
  case 2:
350
- _a = _b.sent(), authToken = _a.authToken, enduser = _a.enduser;
370
+ _a = _d.sent(), authToken = _a.authToken, enduser = _a.enduser;
351
371
  (0, testing_1.assert)(!!authToken && !!enduser, 'invalid returned values', 'Generate authToken and get enduser');
352
372
  return [4 /*yield*/, sdk.api.endusers.is_authenticated({ id: enduser.id, authToken: authToken })];
353
373
  case 3:
354
- isAuthenticated = (_b.sent()).isAuthenticated;
374
+ isAuthenticated = (_d.sent()).isAuthenticated;
355
375
  (0, testing_1.assert)(isAuthenticated, 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid');
356
- return [4 /*yield*/, (0, testing_1.async_test)("auth by externalId", function () { return sdk.api.endusers.generate_auth_token({ externalId: e.externalId }); }, passOnVoid)];
376
+ return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ externalId: externalId })];
357
377
  case 4:
358
- _b.sent();
359
- return [4 /*yield*/, (0, testing_1.async_test)("auth by email", function () { return sdk.api.endusers.generate_auth_token({ email: e.email }); }, passOnVoid)];
378
+ _b = _d.sent(), authTokenUID = _b.authToken, enduser2 = _b.enduser;
379
+ (0, testing_1.assert)(!!authTokenUID && !!enduser2, 'invalid returned values eid', 'Generate authToken and get enduser eid');
380
+ _c = testing_1.assert;
381
+ return [4 /*yield*/, sdk.api.endusers.is_authenticated({ id: enduser2.id, authToken: authTokenUID })];
360
382
  case 5:
361
- _b.sent();
362
- return [4 /*yield*/, (0, testing_1.async_test)("auth by phone", function () { return sdk.api.endusers.generate_auth_token({ phone: e.phone }); }, passOnVoid)];
383
+ _c.apply(void 0, [(_d.sent()).isAuthenticated,
384
+ 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid']);
385
+ return [4 /*yield*/, (0, testing_1.async_test)("auth by externalId", function () { return sdk.api.endusers.generate_auth_token({ externalId: e.externalId }); }, passOnVoid)];
363
386
  case 6:
364
- _b.sent();
365
- return [4 /*yield*/, (0, testing_1.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"; } })];
387
+ _d.sent();
388
+ return [4 /*yield*/, (0, testing_1.async_test)("auth by email", function () { return sdk.api.endusers.generate_auth_token({ email: e.email }); }, passOnVoid)];
366
389
  case 7:
367
- _b.sent();
368
- return [4 /*yield*/, (0, testing_1.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"; } })];
390
+ _d.sent();
391
+ return [4 /*yield*/, (0, testing_1.async_test)("auth by phone", function () { return sdk.api.endusers.generate_auth_token({ phone: e.phone }); }, passOnVoid)];
369
392
  case 8:
370
- _b.sent();
371
- return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
393
+ _d.sent();
394
+ return [4 /*yield*/, (0, testing_1.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"; } })];
372
395
  case 9:
373
- _b.sent();
396
+ _d.sent();
397
+ return [4 /*yield*/, (0, testing_1.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"; } })];
398
+ case 10:
399
+ _d.sent();
400
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
401
+ case 11:
402
+ _d.sent();
374
403
  return [2 /*return*/];
375
404
  }
376
405
  });
@@ -493,7 +522,7 @@ var run_generated_tests = function (_a) {
493
522
  case 7:
494
523
  _c.sent();
495
524
  _c.label = 8;
496
- case 8: return [4 /*yield*/, (0, testing_1.async_test)("get-".concat(singularName), function () { return queries.getOne(_id, filter); }, { onResult: function (d) {
525
+ case 8: return [4 /*yield*/, (0, testing_1.async_test)("get-".concat(singularName), function () { return queries.getOne(_id); }, { onResult: function (d) {
497
526
  if (!(d === null || d === void 0 ? void 0 : d.id))
498
527
  return false;
499
528
  for (var k in instance) {
@@ -522,7 +551,7 @@ var run_generated_tests = function (_a) {
522
551
  return [4 /*yield*/, (0, testing_1.async_test)("delete-".concat(singularName), function () { return queries.deleteOne(_id); }, passOnVoid)];
523
552
  case 11:
524
553
  _c.sent();
525
- return [4 /*yield*/, (0, testing_1.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'; } })];
554
+ return [4 /*yield*/, (0, testing_1.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'; } })];
526
555
  case 12:
527
556
  _c.sent();
528
557
  return [2 /*return*/];
@@ -947,23 +976,30 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
947
976
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello!" })];
948
977
  case 3:
949
978
  chat = _a.sent();
950
- return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })];
979
+ return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })
980
+ // await async_test(
981
+ // `get-chat (without filter)`,
982
+ // () => sdk.api.chats.getOne(chat.id),
983
+ // { shouldError: true, onError: () => true }
984
+ // )
985
+ ];
951
986
  case 4:
952
987
  chat2 = _a.sent();
953
- return [4 /*yield*/, (0, testing_1.async_test)("get-chat (without filter)", function () { return sdk.api.chats.getOne(chat.id); }, { shouldError: true, onError: function () { return true; } })];
954
- case 5:
955
- _a.sent();
988
+ // await async_test(
989
+ // `get-chat (without filter)`,
990
+ // () => sdk.api.chats.getOne(chat.id),
991
+ // { shouldError: true, onError: () => true }
992
+ // )
956
993
  return [4 /*yield*/, (0, testing_1.async_test)("get-chats (without filter)", function () { return sdk.api.chats.getSome({}); }, { shouldError: true, onError: function () { return true; } })];
957
- case 6:
958
- _a.sent();
959
- 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; } })];
960
- case 7:
994
+ case 5:
995
+ // await async_test(
996
+ // `get-chat (without filter)`,
997
+ // () => sdk.api.chats.getOne(chat.id),
998
+ // { shouldError: true, onError: () => true }
999
+ // )
961
1000
  _a.sent();
962
1001
  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; } })];
963
- case 8:
964
- _a.sent();
965
- 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'; } })];
966
- case 9:
1002
+ case 6:
967
1003
  _a.sent();
968
1004
  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'; } })
969
1005
  // currently disabled endpoint altogether
@@ -973,7 +1009,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
973
1009
  // { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
974
1010
  // )
975
1011
  ];
976
- case 10:
1012
+ case 7:
977
1013
  _a.sent();
978
1014
  // currently disabled endpoint altogether
979
1015
  // await async_test(
@@ -989,7 +1025,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
989
1025
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
990
1026
  // )
991
1027
  ];
992
- case 11:
1028
+ case 8:
993
1029
  // currently disabled endpoint altogether
994
1030
  // await async_test(
995
1031
  // `update-chat not allowed`,
@@ -1004,7 +1040,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1004
1040
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
1005
1041
  // )
1006
1042
  return [4 /*yield*/, sdk.api.chat_rooms.deleteOne(room.id)];
1007
- case 12:
1043
+ case 9:
1008
1044
  // currently disabled endpoint altogether
1009
1045
  // await async_test(
1010
1046
  // `update-chat can't update roomId`,
@@ -1013,51 +1049,51 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1013
1049
  // )
1014
1050
  _a.sent();
1015
1051
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)];
1016
- case 13:
1052
+ case 10:
1017
1053
  _a.sent();
1018
- 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'; } })];
1019
- case 14:
1054
+ 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'; } })];
1055
+ case 11:
1020
1056
  _a.sent();
1021
- 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'; } })];
1022
- case 15:
1057
+ 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'; } })];
1058
+ case 12:
1023
1059
  _a.sent();
1024
1060
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId, sdk2.userInfo.id] })];
1025
- case 16:
1061
+ case 13:
1026
1062
  sharedRoom = _a.sent();
1027
1063
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello!", })];
1028
- case 17:
1064
+ case 14:
1029
1065
  sharedChat = _a.sent();
1030
1066
  return [4 /*yield*/, sdk2.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello there!", })];
1031
- case 18:
1067
+ case 15:
1032
1068
  sharedChat2 = _a.sent();
1033
- 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; } })];
1034
- case 19:
1069
+ 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; } })];
1070
+ case 16:
1035
1071
  _a.sent();
1036
- 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; } })];
1037
- case 20:
1072
+ 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; } })];
1073
+ case 17:
1038
1074
  _a.sent();
1039
1075
  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; }); } })];
1040
- case 21:
1076
+ case 18:
1041
1077
  _a.sent();
1042
1078
  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; }); } })
1043
1079
  // test setNull dependency
1044
1080
  ];
1045
- case 22:
1081
+ case 19:
1046
1082
  _a.sent();
1047
1083
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })];
1048
- case 23:
1084
+ case 20:
1049
1085
  roomNull = _a.sent();
1050
1086
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello!" })];
1051
- case 24:
1087
+ case 21:
1052
1088
  chatNull = _a.sent();
1053
1089
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello...", replyId: chatNull.id })];
1054
- case 25:
1090
+ case 22:
1055
1091
  chat2Null = _a.sent();
1056
1092
  return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
1057
- case 26:
1093
+ case 23:
1058
1094
  _a.sent();
1059
- 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; } })];
1060
- case 27:
1095
+ 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; } })];
1096
+ case 24:
1061
1097
  _a.sent();
1062
1098
  return [2 /*return*/];
1063
1099
  }
@@ -1087,38 +1123,40 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
1087
1123
  case 0:
1088
1124
  endpoint = (0, utilities_1.url_safe_path)(n);
1089
1125
  model = schema_1.schema[n];
1126
+ if (n === 'webhooks')
1127
+ return [2 /*return*/, "continue"]; // no default endpoints implemented
1090
1128
  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];
1091
- 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'; } })];
1129
+ 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'; } })];
1092
1130
  case 1:
1093
1131
  _k.sent();
1094
1132
  _k.label = 2;
1095
1133
  case 2:
1096
1134
  if (!(!((_d = model.enduserActions) === null || _d === void 0 ? void 0 : _d.readMany) && (model.defaultActions.readMany || model.customActions.readMany))) return [3 /*break*/, 4];
1097
- 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'; } })];
1135
+ 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'; } })];
1098
1136
  case 3:
1099
1137
  _k.sent();
1100
1138
  _k.label = 4;
1101
1139
  case 4:
1102
1140
  if (!(!((_e = model.enduserActions) === null || _e === void 0 ? void 0 : _e.create) && (model.defaultActions.create || model.customActions.create))) return [3 /*break*/, 6];
1103
- 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'; } })];
1141
+ 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'; } })];
1104
1142
  case 5:
1105
1143
  _k.sent();
1106
1144
  _k.label = 6;
1107
1145
  case 6:
1108
1146
  if (!(!((_f = model.enduserActions) === null || _f === void 0 ? void 0 : _f.createMany) && (model.defaultActions.createMany || model.customActions.createMany))) return [3 /*break*/, 8];
1109
- 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'; } })];
1147
+ 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'; } })];
1110
1148
  case 7:
1111
1149
  _k.sent();
1112
1150
  _k.label = 8;
1113
1151
  case 8:
1114
1152
  if (!(!((_g = model.enduserActions) === null || _g === void 0 ? void 0 : _g.update) && (model.defaultActions.update || model.customActions.update))) return [3 /*break*/, 10];
1115
- 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'; } })];
1153
+ 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'; } })];
1116
1154
  case 9:
1117
1155
  _k.sent();
1118
1156
  _k.label = 10;
1119
1157
  case 10:
1120
1158
  if (!(!((_h = model.enduserActions) === null || _h === void 0 ? void 0 : _h.delete) && (model.defaultActions.delete || model.customActions.delete))) return [3 /*break*/, 12];
1121
- 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'; } })];
1159
+ 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'; } })];
1122
1160
  case 11:
1123
1161
  _k.sent();
1124
1162
  _k.label = 12;
@@ -1213,55 +1251,60 @@ var tests = {
1213
1251
  tickets: function () { },
1214
1252
  meetings: function () { },
1215
1253
  notes: function () { },
1254
+ webhooks: function () { },
1216
1255
  };
1217
1256
  (function () { return __awaiter(void 0, void 0, void 0, function () {
1218
1257
  var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
1219
1258
  var _f, _g;
1220
1259
  return __generator(this, function (_h) {
1221
1260
  switch (_h.label) {
1222
- case 0: return [4 /*yield*/, sdk.authenticate(email, password, host)];
1223
- case 1:
1224
- _h.sent();
1261
+ case 0:
1225
1262
  (0, testing_1.log_header)("API");
1226
- _h.label = 2;
1263
+ _h.label = 1;
1264
+ case 1:
1265
+ _h.trys.push([1, 11, , 12]);
1266
+ return [4 /*yield*/, sdk.authenticate(email, password)];
1227
1267
  case 2:
1228
- _h.trys.push([2, 10, , 11]);
1268
+ _h.sent();
1229
1269
  return [4 /*yield*/, setup_tests()];
1230
1270
  case 3:
1231
1271
  _h.sent();
1232
1272
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
1233
1273
  case 4:
1234
1274
  _h.sent(); // should come right after setup tests
1235
- return [4 /*yield*/, filterTests()];
1275
+ return [4 /*yield*/, badInputTests()];
1236
1276
  case 5:
1237
1277
  _h.sent();
1238
- return [4 /*yield*/, updatesTests()];
1278
+ return [4 /*yield*/, filterTests()];
1239
1279
  case 6:
1240
1280
  _h.sent();
1241
- return [4 /*yield*/, threadKeyTests()];
1281
+ return [4 /*yield*/, updatesTests()];
1242
1282
  case 7:
1243
1283
  _h.sent();
1244
- return [4 /*yield*/, enduserAccessTests()];
1284
+ return [4 /*yield*/, threadKeyTests()];
1245
1285
  case 8:
1246
1286
  _h.sent();
1247
- return [4 /*yield*/, generateEnduserAuthTests()];
1287
+ return [4 /*yield*/, enduserAccessTests()];
1248
1288
  case 9:
1249
1289
  _h.sent();
1250
- return [3 /*break*/, 11];
1290
+ return [4 /*yield*/, generateEnduserAuthTests()];
1251
1291
  case 10:
1292
+ _h.sent();
1293
+ return [3 /*break*/, 12];
1294
+ case 11:
1252
1295
  err_1 = _h.sent();
1253
1296
  console.error("Failed during custom test");
1254
1297
  console.error(err_1);
1255
1298
  process.exit();
1256
- return [3 /*break*/, 11];
1257
- case 11:
1299
+ return [3 /*break*/, 12];
1300
+ case 12:
1258
1301
  _a = [];
1259
1302
  for (_b in schema_1.schema)
1260
1303
  _a.push(_b);
1261
1304
  _i = 0;
1262
- _h.label = 12;
1263
- case 12:
1264
- if (!(_i < _a.length)) return [3 /*break*/, 15];
1305
+ _h.label = 13;
1306
+ case 13:
1307
+ if (!(_i < _a.length)) return [3 /*break*/, 16];
1265
1308
  n = _a[_i];
1266
1309
  returnValidation = (_g = (_f = schema_1.schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
1267
1310
  return [4 /*yield*/, run_generated_tests({
@@ -1272,37 +1315,37 @@ var tests = {
1272
1315
  create: returnValidation,
1273
1316
  }
1274
1317
  })];
1275
- case 13:
1276
- _h.sent();
1277
- _h.label = 14;
1278
1318
  case 14:
1279
- _i++;
1280
- return [3 /*break*/, 12];
1319
+ _h.sent();
1320
+ _h.label = 15;
1281
1321
  case 15:
1322
+ _i++;
1323
+ return [3 /*break*/, 13];
1324
+ case 16:
1282
1325
  _c = [];
1283
1326
  for (_d in tests)
1284
1327
  _c.push(_d);
1285
1328
  _e = 0;
1286
- _h.label = 16;
1287
- case 16:
1288
- if (!(_e < _c.length)) return [3 /*break*/, 21];
1289
- t = _c[_e];
1290
1329
  _h.label = 17;
1291
1330
  case 17:
1292
- _h.trys.push([17, 19, , 20]);
1293
- return [4 /*yield*/, tests[t]()];
1331
+ if (!(_e < _c.length)) return [3 /*break*/, 22];
1332
+ t = _c[_e];
1333
+ _h.label = 18;
1294
1334
  case 18:
1295
- _h.sent();
1296
- return [3 /*break*/, 20];
1335
+ _h.trys.push([18, 20, , 21]);
1336
+ return [4 /*yield*/, tests[t]()];
1297
1337
  case 19:
1338
+ _h.sent();
1339
+ return [3 /*break*/, 21];
1340
+ case 20:
1298
1341
  err_2 = _h.sent();
1299
1342
  console.error("Error running test:");
1300
1343
  console.error(err_2);
1301
- return [3 /*break*/, 20];
1302
- case 20:
1303
- _e++;
1304
- return [3 /*break*/, 16];
1344
+ return [3 /*break*/, 21];
1305
1345
  case 21:
1346
+ _e++;
1347
+ return [3 /*break*/, 17];
1348
+ case 22:
1306
1349
  process.exit();
1307
1350
  return [2 /*return*/];
1308
1351
  }