@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
@@ -71,7 +71,7 @@ var userId = '60398b0231a295e64f084fd9';
71
71
  // // delete an individual record
72
72
  // await sdk.api.endusers.deleteOne(enduser.id)
73
73
  // }
74
- var sdk = new Session();
74
+ var sdk = new Session({ host: host });
75
75
  var sdkOther = new Session({ host: host, apiKey: "ba745e25162bb95a795c5fa1af70df188d93c4d3aac9c48b34a5c8c9dd7b80f7" });
76
76
  var enduserSDK = new EnduserSession({ host: host });
77
77
  // const sdkOtherEmail = "sebass@tellescope.com"
@@ -89,15 +89,11 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
89
89
  case 0: return [4 /*yield*/, async_test('test_online', sdk.test_online, { expectedResult: 'API V1 Online' })];
90
90
  case 1:
91
91
  _a.sent();
92
- return [4 /*yield*/, async_test('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })
93
- // console.log(await sdk.api.api_keys.createOne({}))
94
- ];
92
+ return [4 /*yield*/, async_test('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
95
93
  case 2:
96
94
  _a.sent();
97
- // console.log(await sdk.api.api_keys.createOne({}))
98
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!' })];
99
96
  case 3:
100
- // console.log(await sdk.api.api_keys.createOne({}))
101
97
  _a.sent();
102
98
  return [4 /*yield*/, sdk.logout()];
103
99
  case 4:
@@ -105,7 +101,7 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
105
101
  return [4 /*yield*/, async_test('test_authenticated - (logout invalidates jwt)', sdk.test_authenticated, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
106
102
  case 5:
107
103
  _a.sent();
108
- return [4 /*yield*/, sdk.authenticate(email, password, host)];
104
+ return [4 /*yield*/, sdk.authenticate(email, password)];
109
105
  case 6:
110
106
  _a.sent();
111
107
  return [4 /*yield*/, async_test('test_authenticated (re-authenticated)', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
@@ -234,6 +230,21 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
234
230
  }
235
231
  });
236
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
+ }); };
237
248
  var filterTests = function () { return __awaiter(void 0, void 0, void 0, function () {
238
249
  var enduser, otherEnduser;
239
250
  return __generator(this, function (_a) {
@@ -247,38 +258,46 @@ var filterTests = function () { return __awaiter(void 0, void 0, void 0, functio
247
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; } })];
248
259
  case 3:
249
260
  _a.sent();
250
- 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; } })];
251
262
  case 4:
252
263
  _a.sent();
253
- 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; } })];
254
267
  case 5:
255
268
  _a.sent();
256
- 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; } })];
257
270
  case 6:
258
271
  _a.sent();
259
- 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; } })];
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; } })];
260
273
  case 7:
261
274
  _a.sent();
262
- 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; } })];
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; } })];
263
276
  case 8:
264
277
  _a.sent();
265
- 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; } })];
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; } })];
266
279
  case 9:
267
280
  _a.sent();
268
- 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; } })];
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; } })];
269
282
  case 10:
270
283
  _a.sent();
271
- 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; } })];
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; } })];
272
285
  case 11:
273
286
  _a.sent();
274
- 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; } })];
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; } })];
275
288
  case 12:
276
289
  _a.sent();
277
- return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
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; } })];
278
291
  case 13:
279
292
  _a.sent();
280
- return [4 /*yield*/, sdk.api.endusers.deleteOne(otherEnduser.id)];
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; } })];
281
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:
282
301
  _a.sent();
283
302
  return [2 /*return*/];
284
303
  }
@@ -316,40 +335,50 @@ var updatesTests = function () { return __awaiter(void 0, void 0, void 0, functi
316
335
  });
317
336
  }); };
318
337
  var generateEnduserAuthTests = function () { return __awaiter(void 0, void 0, void 0, function () {
319
- var e, _a, authToken, enduser, isAuthenticated;
320
- return __generator(this, function (_b) {
321
- switch (_b.label) {
338
+ var externalId, e, _a, authToken, enduser, isAuthenticated, _b, authTokenUID, enduser2, _c;
339
+ return __generator(this, function (_d) {
340
+ switch (_d.label) {
322
341
  case 0:
323
342
  log_header("Generated Enduser authToken Tests");
324
- return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: '1029f9v9sjd0as' })];
343
+ externalId = '1029f9v9sjd0as';
344
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: externalId })];
325
345
  case 1:
326
- e = _b.sent();
346
+ e = _d.sent();
327
347
  return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: e.id })];
328
348
  case 2:
329
- _a = _b.sent(), authToken = _a.authToken, enduser = _a.enduser;
349
+ _a = _d.sent(), authToken = _a.authToken, enduser = _a.enduser;
330
350
  assert(!!authToken && !!enduser, 'invalid returned values', 'Generate authToken and get enduser');
331
351
  return [4 /*yield*/, sdk.api.endusers.is_authenticated({ id: enduser.id, authToken: authToken })];
332
352
  case 3:
333
- isAuthenticated = (_b.sent()).isAuthenticated;
353
+ isAuthenticated = (_d.sent()).isAuthenticated;
334
354
  assert(isAuthenticated, 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid');
335
- return [4 /*yield*/, async_test("auth by externalId", function () { return sdk.api.endusers.generate_auth_token({ externalId: e.externalId }); }, passOnVoid)];
355
+ return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ externalId: externalId })];
336
356
  case 4:
337
- _b.sent();
338
- return [4 /*yield*/, async_test("auth by email", function () { return sdk.api.endusers.generate_auth_token({ email: e.email }); }, passOnVoid)];
357
+ _b = _d.sent(), authTokenUID = _b.authToken, enduser2 = _b.enduser;
358
+ assert(!!authTokenUID && !!enduser2, 'invalid returned values eid', 'Generate authToken and get enduser eid');
359
+ _c = assert;
360
+ return [4 /*yield*/, sdk.api.endusers.is_authenticated({ id: enduser2.id, authToken: authTokenUID })];
339
361
  case 5:
340
- _b.sent();
341
- return [4 /*yield*/, async_test("auth by phone", function () { return sdk.api.endusers.generate_auth_token({ phone: e.phone }); }, passOnVoid)];
362
+ _c.apply(void 0, [(_d.sent()).isAuthenticated,
363
+ 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid']);
364
+ return [4 /*yield*/, async_test("auth by externalId", function () { return sdk.api.endusers.generate_auth_token({ externalId: e.externalId }); }, passOnVoid)];
342
365
  case 6:
343
- _b.sent();
344
- 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"; } })];
366
+ _d.sent();
367
+ return [4 /*yield*/, async_test("auth by email", function () { return sdk.api.endusers.generate_auth_token({ email: e.email }); }, passOnVoid)];
345
368
  case 7:
346
- _b.sent();
347
- 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"; } })];
369
+ _d.sent();
370
+ return [4 /*yield*/, async_test("auth by phone", function () { return sdk.api.endusers.generate_auth_token({ phone: e.phone }); }, passOnVoid)];
348
371
  case 8:
349
- _b.sent();
350
- return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
372
+ _d.sent();
373
+ 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"; } })];
351
374
  case 9:
352
- _b.sent();
375
+ _d.sent();
376
+ 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"; } })];
377
+ case 10:
378
+ _d.sent();
379
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
380
+ case 11:
381
+ _d.sent();
353
382
  return [2 /*return*/];
354
383
  }
355
384
  });
@@ -472,7 +501,7 @@ var run_generated_tests = function (_a) {
472
501
  case 7:
473
502
  _c.sent();
474
503
  _c.label = 8;
475
- case 8: return [4 /*yield*/, async_test("get-".concat(singularName), function () { return queries.getOne(_id, filter); }, { onResult: function (d) {
504
+ case 8: return [4 /*yield*/, async_test("get-".concat(singularName), function () { return queries.getOne(_id); }, { onResult: function (d) {
476
505
  if (!(d === null || d === void 0 ? void 0 : d.id))
477
506
  return false;
478
507
  for (var k in instance) {
@@ -501,7 +530,7 @@ var run_generated_tests = function (_a) {
501
530
  return [4 /*yield*/, async_test("delete-".concat(singularName), function () { return queries.deleteOne(_id); }, passOnVoid)];
502
531
  case 11:
503
532
  _c.sent();
504
- 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'; } })];
533
+ 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'; } })];
505
534
  case 12:
506
535
  _c.sent();
507
536
  return [2 /*return*/];
@@ -926,23 +955,30 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
926
955
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello!" })];
927
956
  case 3:
928
957
  chat = _a.sent();
929
- return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })];
958
+ return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })
959
+ // await async_test(
960
+ // `get-chat (without filter)`,
961
+ // () => sdk.api.chats.getOne(chat.id),
962
+ // { shouldError: true, onError: () => true }
963
+ // )
964
+ ];
930
965
  case 4:
931
966
  chat2 = _a.sent();
932
- return [4 /*yield*/, async_test("get-chat (without filter)", function () { return sdk.api.chats.getOne(chat.id); }, { shouldError: true, onError: function () { return true; } })];
933
- case 5:
934
- _a.sent();
967
+ // await async_test(
968
+ // `get-chat (without filter)`,
969
+ // () => sdk.api.chats.getOne(chat.id),
970
+ // { shouldError: true, onError: () => true }
971
+ // )
935
972
  return [4 /*yield*/, async_test("get-chats (without filter)", function () { return sdk.api.chats.getSome({}); }, { shouldError: true, onError: function () { return true; } })];
936
- case 6:
937
- _a.sent();
938
- 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; } })];
939
- case 7:
973
+ case 5:
974
+ // await async_test(
975
+ // `get-chat (without filter)`,
976
+ // () => sdk.api.chats.getOne(chat.id),
977
+ // { shouldError: true, onError: () => true }
978
+ // )
940
979
  _a.sent();
941
980
  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; } })];
942
- case 8:
943
- _a.sent();
944
- 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'; } })];
945
- case 9:
981
+ case 6:
946
982
  _a.sent();
947
983
  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'; } })
948
984
  // currently disabled endpoint altogether
@@ -952,7 +988,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
952
988
  // { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
953
989
  // )
954
990
  ];
955
- case 10:
991
+ case 7:
956
992
  _a.sent();
957
993
  // currently disabled endpoint altogether
958
994
  // await async_test(
@@ -968,7 +1004,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
968
1004
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
969
1005
  // )
970
1006
  ];
971
- case 11:
1007
+ case 8:
972
1008
  // currently disabled endpoint altogether
973
1009
  // await async_test(
974
1010
  // `update-chat not allowed`,
@@ -983,7 +1019,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
983
1019
  // { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
984
1020
  // )
985
1021
  return [4 /*yield*/, sdk.api.chat_rooms.deleteOne(room.id)];
986
- case 12:
1022
+ case 9:
987
1023
  // currently disabled endpoint altogether
988
1024
  // await async_test(
989
1025
  // `update-chat can't update roomId`,
@@ -992,51 +1028,51 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
992
1028
  // )
993
1029
  _a.sent();
994
1030
  return [4 /*yield*/, wait(undefined, 25)];
995
- case 13:
1031
+ case 10:
996
1032
  _a.sent();
997
- 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'; } })];
998
- case 14:
1033
+ 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'; } })];
1034
+ case 11:
999
1035
  _a.sent();
1000
- 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'; } })];
1001
- case 15:
1036
+ 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'; } })];
1037
+ case 12:
1002
1038
  _a.sent();
1003
1039
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId, sdk2.userInfo.id] })];
1004
- case 16:
1040
+ case 13:
1005
1041
  sharedRoom = _a.sent();
1006
1042
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello!", })];
1007
- case 17:
1043
+ case 14:
1008
1044
  sharedChat = _a.sent();
1009
1045
  return [4 /*yield*/, sdk2.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello there!", })];
1010
- case 18:
1046
+ case 15:
1011
1047
  sharedChat2 = _a.sent();
1012
- 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; } })];
1013
- case 19:
1048
+ 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; } })];
1049
+ case 16:
1014
1050
  _a.sent();
1015
- 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; } })];
1016
- case 20:
1051
+ 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; } })];
1052
+ case 17:
1017
1053
  _a.sent();
1018
1054
  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; }); } })];
1019
- case 21:
1055
+ case 18:
1020
1056
  _a.sent();
1021
1057
  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; }); } })
1022
1058
  // test setNull dependency
1023
1059
  ];
1024
- case 22:
1060
+ case 19:
1025
1061
  _a.sent();
1026
1062
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })];
1027
- case 23:
1063
+ case 20:
1028
1064
  roomNull = _a.sent();
1029
1065
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello!" })];
1030
- case 24:
1066
+ case 21:
1031
1067
  chatNull = _a.sent();
1032
1068
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello...", replyId: chatNull.id })];
1033
- case 25:
1069
+ case 22:
1034
1070
  chat2Null = _a.sent();
1035
1071
  return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
1036
- case 26:
1072
+ case 23:
1037
1073
  _a.sent();
1038
- 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; } })];
1039
- case 27:
1074
+ return [4 /*yield*/, async_test("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id); }, { onResult: function (c) { return c.replyId === null; } })];
1075
+ case 24:
1040
1076
  _a.sent();
1041
1077
  return [2 /*return*/];
1042
1078
  }
@@ -1066,38 +1102,40 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
1066
1102
  case 0:
1067
1103
  endpoint = url_safe_path(n);
1068
1104
  model = schema[n];
1105
+ if (n === 'webhooks')
1106
+ return [2 /*return*/, "continue"]; // no default endpoints implemented
1069
1107
  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];
1070
- return [4 /*yield*/, 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'; } })];
1108
+ return [4 /*yield*/, 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'; } })];
1071
1109
  case 1:
1072
1110
  _k.sent();
1073
1111
  _k.label = 2;
1074
1112
  case 2:
1075
1113
  if (!(!((_d = model.enduserActions) === null || _d === void 0 ? void 0 : _d.readMany) && (model.defaultActions.readMany || model.customActions.readMany))) return [3 /*break*/, 4];
1076
- return [4 /*yield*/, async_test("no-enduser-access getSome (".concat(endpoint, ")"), function () { return enduserSDK.GET("/v1/".concat(endpoint)); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
1114
+ return [4 /*yield*/, 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'; } })];
1077
1115
  case 3:
1078
1116
  _k.sent();
1079
1117
  _k.label = 4;
1080
1118
  case 4:
1081
1119
  if (!(!((_e = model.enduserActions) === null || _e === void 0 ? void 0 : _e.create) && (model.defaultActions.create || model.customActions.create))) return [3 /*break*/, 6];
1082
- return [4 /*yield*/, 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'; } })];
1120
+ return [4 /*yield*/, 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'; } })];
1083
1121
  case 5:
1084
1122
  _k.sent();
1085
1123
  _k.label = 6;
1086
1124
  case 6:
1087
1125
  if (!(!((_f = model.enduserActions) === null || _f === void 0 ? void 0 : _f.createMany) && (model.defaultActions.createMany || model.customActions.createMany))) return [3 /*break*/, 8];
1088
- return [4 /*yield*/, async_test("no-enduser-access createMany (".concat(endpoint, ")"), function () { return enduserSDK.POST("/v1/".concat(endpoint)); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated'; } })];
1126
+ return [4 /*yield*/, 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'; } })];
1089
1127
  case 7:
1090
1128
  _k.sent();
1091
1129
  _k.label = 8;
1092
1130
  case 8:
1093
1131
  if (!(!((_g = model.enduserActions) === null || _g === void 0 ? void 0 : _g.update) && (model.defaultActions.update || model.customActions.update))) return [3 /*break*/, 10];
1094
- return [4 /*yield*/, 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'; } })];
1132
+ return [4 /*yield*/, 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'; } })];
1095
1133
  case 9:
1096
1134
  _k.sent();
1097
1135
  _k.label = 10;
1098
1136
  case 10:
1099
1137
  if (!(!((_h = model.enduserActions) === null || _h === void 0 ? void 0 : _h.delete) && (model.defaultActions.delete || model.customActions.delete))) return [3 /*break*/, 12];
1100
- return [4 /*yield*/, 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'; } })];
1138
+ return [4 /*yield*/, 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'; } })];
1101
1139
  case 11:
1102
1140
  _k.sent();
1103
1141
  _k.label = 12;
@@ -1192,55 +1230,60 @@ var tests = {
1192
1230
  tickets: function () { },
1193
1231
  meetings: function () { },
1194
1232
  notes: function () { },
1233
+ webhooks: function () { },
1195
1234
  };
1196
1235
  (function () { return __awaiter(void 0, void 0, void 0, function () {
1197
1236
  var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
1198
1237
  var _f, _g;
1199
1238
  return __generator(this, function (_h) {
1200
1239
  switch (_h.label) {
1201
- case 0: return [4 /*yield*/, sdk.authenticate(email, password, host)];
1202
- case 1:
1203
- _h.sent();
1240
+ case 0:
1204
1241
  log_header("API");
1205
- _h.label = 2;
1242
+ _h.label = 1;
1243
+ case 1:
1244
+ _h.trys.push([1, 11, , 12]);
1245
+ return [4 /*yield*/, sdk.authenticate(email, password)];
1206
1246
  case 2:
1207
- _h.trys.push([2, 10, , 11]);
1247
+ _h.sent();
1208
1248
  return [4 /*yield*/, setup_tests()];
1209
1249
  case 3:
1210
1250
  _h.sent();
1211
1251
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
1212
1252
  case 4:
1213
1253
  _h.sent(); // should come right after setup tests
1214
- return [4 /*yield*/, filterTests()];
1254
+ return [4 /*yield*/, badInputTests()];
1215
1255
  case 5:
1216
1256
  _h.sent();
1217
- return [4 /*yield*/, updatesTests()];
1257
+ return [4 /*yield*/, filterTests()];
1218
1258
  case 6:
1219
1259
  _h.sent();
1220
- return [4 /*yield*/, threadKeyTests()];
1260
+ return [4 /*yield*/, updatesTests()];
1221
1261
  case 7:
1222
1262
  _h.sent();
1223
- return [4 /*yield*/, enduserAccessTests()];
1263
+ return [4 /*yield*/, threadKeyTests()];
1224
1264
  case 8:
1225
1265
  _h.sent();
1226
- return [4 /*yield*/, generateEnduserAuthTests()];
1266
+ return [4 /*yield*/, enduserAccessTests()];
1227
1267
  case 9:
1228
1268
  _h.sent();
1229
- return [3 /*break*/, 11];
1269
+ return [4 /*yield*/, generateEnduserAuthTests()];
1230
1270
  case 10:
1271
+ _h.sent();
1272
+ return [3 /*break*/, 12];
1273
+ case 11:
1231
1274
  err_1 = _h.sent();
1232
1275
  console.error("Failed during custom test");
1233
1276
  console.error(err_1);
1234
1277
  process.exit();
1235
- return [3 /*break*/, 11];
1236
- case 11:
1278
+ return [3 /*break*/, 12];
1279
+ case 12:
1237
1280
  _a = [];
1238
1281
  for (_b in schema)
1239
1282
  _a.push(_b);
1240
1283
  _i = 0;
1241
- _h.label = 12;
1242
- case 12:
1243
- if (!(_i < _a.length)) return [3 /*break*/, 15];
1284
+ _h.label = 13;
1285
+ case 13:
1286
+ if (!(_i < _a.length)) return [3 /*break*/, 16];
1244
1287
  n = _a[_i];
1245
1288
  returnValidation = (_g = (_f = schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
1246
1289
  return [4 /*yield*/, run_generated_tests({
@@ -1251,37 +1294,37 @@ var tests = {
1251
1294
  create: returnValidation,
1252
1295
  }
1253
1296
  })];
1254
- case 13:
1255
- _h.sent();
1256
- _h.label = 14;
1257
1297
  case 14:
1258
- _i++;
1259
- return [3 /*break*/, 12];
1298
+ _h.sent();
1299
+ _h.label = 15;
1260
1300
  case 15:
1301
+ _i++;
1302
+ return [3 /*break*/, 13];
1303
+ case 16:
1261
1304
  _c = [];
1262
1305
  for (_d in tests)
1263
1306
  _c.push(_d);
1264
1307
  _e = 0;
1265
- _h.label = 16;
1266
- case 16:
1267
- if (!(_e < _c.length)) return [3 /*break*/, 21];
1268
- t = _c[_e];
1269
1308
  _h.label = 17;
1270
1309
  case 17:
1271
- _h.trys.push([17, 19, , 20]);
1272
- return [4 /*yield*/, tests[t]()];
1310
+ if (!(_e < _c.length)) return [3 /*break*/, 22];
1311
+ t = _c[_e];
1312
+ _h.label = 18;
1273
1313
  case 18:
1274
- _h.sent();
1275
- return [3 /*break*/, 20];
1314
+ _h.trys.push([18, 20, , 21]);
1315
+ return [4 /*yield*/, tests[t]()];
1276
1316
  case 19:
1317
+ _h.sent();
1318
+ return [3 /*break*/, 21];
1319
+ case 20:
1277
1320
  err_2 = _h.sent();
1278
1321
  console.error("Error running test:");
1279
1322
  console.error(err_2);
1280
- return [3 /*break*/, 20];
1281
- case 20:
1282
- _e++;
1283
- return [3 /*break*/, 16];
1323
+ return [3 /*break*/, 21];
1284
1324
  case 21:
1325
+ _e++;
1326
+ return [3 /*break*/, 17];
1327
+ case 22:
1285
1328
  process.exit();
1286
1329
  return [2 /*return*/];
1287
1330
  }