@tellescope/sdk 1.3.2 → 1.3.8

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.
@@ -361,6 +361,76 @@ var updatesTests = function () { return __awaiter(void 0, void 0, void 0, functi
361
361
  }
362
362
  });
363
363
  }); };
364
+ var generate_user_auth_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
365
+ var info, externalId, e, _a, authToken, enduser, isAuthenticated, _b, withDurationResult, _c, authTokenUID, enduser2, _d;
366
+ return __generator(this, function (_e) {
367
+ switch (_e.label) {
368
+ case 0:
369
+ log_header("Generated User/Enduser authToken");
370
+ return [4 /*yield*/, sdk.api.users.generate_auth_token({ id: sdk.userInfo.id })];
371
+ case 1:
372
+ info = _e.sent();
373
+ sdk.authToken = info.authToken;
374
+ sdk.userInfo = info.user;
375
+ externalId = '1029f9v9sjd0as';
376
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: externalId })];
377
+ case 2:
378
+ e = _e.sent();
379
+ return [4 /*yield*/, sdk.api.users.generate_auth_token({ id: e.id })];
380
+ case 3:
381
+ _a = _e.sent(), authToken = _a.authToken, enduser = _a.enduser;
382
+ if (!enduser)
383
+ throw new Error("Didn't get enduser when generate_auth_token called");
384
+ assert(!!authToken && !!enduser, 'invalid returned values', 'Generate authToken and get enduser');
385
+ return [4 /*yield*/, sdk.api.endusers.is_authenticated({ id: enduser.id, authToken: authToken })];
386
+ case 4:
387
+ isAuthenticated = (_e.sent()).isAuthenticated;
388
+ assert(isAuthenticated, 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid');
389
+ _b = assert;
390
+ return [4 /*yield*/, sdk.api.endusers.is_authenticated({ authToken: authToken })];
391
+ case 5:
392
+ _b.apply(void 0, [(_e.sent()).isAuthenticated,
393
+ 'id omitted results in failed authentication',
394
+ 'id optional for is_authenticated']);
395
+ return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: e.id, durationInSeconds: 1000 })];
396
+ case 6:
397
+ withDurationResult = _e.sent();
398
+ assert(!!withDurationResult, 'no result for id with duration', 'id with duration');
399
+ return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ externalId: externalId })];
400
+ case 7:
401
+ _c = _e.sent(), authTokenUID = _c.authToken, enduser2 = _c.enduser;
402
+ assert(!!authTokenUID && !!enduser2, 'invalid returned values eid', 'Generate authToken and get enduser eid');
403
+ _d = assert;
404
+ return [4 /*yield*/, sdk.api.endusers.is_authenticated({ id: enduser2.id, authToken: authTokenUID })];
405
+ case 8:
406
+ _d.apply(void 0, [(_e.sent()).isAuthenticated,
407
+ 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid']);
408
+ return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ externalId: externalId, durationInSeconds: 1000 })];
409
+ case 9:
410
+ withDurationResult = _e.sent();
411
+ assert(!!withDurationResult, 'no result for externalId with duration', 'externalId with duration');
412
+ return [4 /*yield*/, async_test("auth by externalId", function () { return sdk.api.endusers.generate_auth_token({ externalId: e.externalId }); }, passOnVoid)];
413
+ case 10:
414
+ _e.sent();
415
+ return [4 /*yield*/, async_test("auth by email", function () { return sdk.api.endusers.generate_auth_token({ email: e.email }); }, passOnVoid)];
416
+ case 11:
417
+ _e.sent();
418
+ return [4 /*yield*/, async_test("auth by phone", function () { return sdk.api.endusers.generate_auth_token({ phone: e.phone }); }, passOnVoid)];
419
+ case 12:
420
+ _e.sent();
421
+ 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"; } })];
422
+ case 13:
423
+ _e.sent();
424
+ 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"; } })];
425
+ case 14:
426
+ _e.sent();
427
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
428
+ case 15:
429
+ _e.sent();
430
+ return [2 /*return*/];
431
+ }
432
+ });
433
+ }); };
364
434
  var generateEnduserAuthTests = function () { return __awaiter(void 0, void 0, void 0, function () {
365
435
  var externalId, e, _a, authToken, enduser, isAuthenticated, _b, withDurationResult, _c, authTokenUID, enduser2, _d;
366
436
  return __generator(this, function (_e) {
@@ -504,7 +574,9 @@ var run_generated_tests = function (_a) {
504
574
  return __generator(this, function (_c) {
505
575
  switch (_c.label) {
506
576
  case 0:
507
- if (name === 'post_likes')
577
+ if (name === 'post_likes'
578
+ || name === 'users'
579
+ || name === 'integrations')
508
580
  return [2 /*return*/]; // all custom
509
581
  if (!!defaultEnduser) return [3 /*break*/, 2];
510
582
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'default@tellescope.com', phone: "5555555555" })];
@@ -1552,7 +1624,7 @@ var enduser_session_tests = function () { return __awaiter(void 0, void 0, void
1552
1624
  });
1553
1625
  }); };
1554
1626
  var users_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
1555
- var randomFieldValue, randomFieldNumber;
1627
+ var randomFieldValue, randomFieldNumber, created;
1556
1628
  return __generator(this, function (_a) {
1557
1629
  switch (_a.label) {
1558
1630
  case 0:
@@ -1560,23 +1632,32 @@ var users_tests = function () { return __awaiter(void 0, void 0, void 0, functio
1560
1632
  randomFieldValue = crypto.randomBytes(32).toString('hex').toUpperCase() // uppercase so name parsing doesn't cause case change
1561
1633
  ;
1562
1634
  randomFieldNumber = Math.random();
1635
+ return [4 /*yield*/, sdk.api.users.createOne({ email: 'created@tellescope.com', verifiedEmail: true })];
1636
+ case 1:
1637
+ created = _a.sent();
1638
+ assert(created.verifiedEmail, 'user not created with verified email', 'user created, with verifiedEmail');
1639
+ return [4 /*yield*/, sdk.api.users.deleteOne(created.id)
1640
+ /* Update user tests */
1641
+ ];
1642
+ case 2:
1643
+ _a.sent();
1563
1644
  /* Update user tests */
1564
1645
  return [4 /*yield*/, async_test("update user (non-admin, other user)", function () { return sdkNonAdmin.api.users.updateOne(sdk.userInfo.id, { fname: randomFieldValue }); }, { shouldError: true, onError: function (e) { return e.message === "Only admin users can update others' profiles"; } })];
1565
- case 1:
1646
+ case 3:
1566
1647
  /* Update user tests */
1567
1648
  _a.sent();
1568
1649
  return [4 /*yield*/, async_test("verify no update", function () { return sdk.api.users.getOne(sdk.userInfo.id); }, { onResult: function (u) { return u.fname !== randomFieldValue; } })];
1569
- case 2:
1650
+ case 4:
1570
1651
  _a.sent();
1571
1652
  return [4 /*yield*/, async_test("update user (non-admin, self)", function () { return sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, { fname: 'Updated' }); }, { onResult: function (u) { return u.id === sdkNonAdmin.userInfo.id && u.fname === "Updated"; } })];
1572
- case 3:
1653
+ case 5:
1573
1654
  _a.sent();
1574
1655
  return [4 /*yield*/, async_test("verify user update with admin get", function () { return sdk.api.users.getOne(sdkNonAdmin.userInfo.id); }, { onResult: function (u) { return u.id === sdkNonAdmin.userInfo.id && u.fname === "Updated"; } })
1575
1656
  // reset fname to "Non" if this test throws, otherwise will falsely pass on next run
1576
1657
  // NOT Supported behavior any more
1577
1658
  // assert(sdkNonAdmin.userInfo.fname === 'Updated', 'refresh_session not called on self after update', 'sdk updated on user update')
1578
1659
  ];
1579
- case 4:
1660
+ case 6:
1580
1661
  _a.sent();
1581
1662
  // reset fname to "Non" if this test throws, otherwise will falsely pass on next run
1582
1663
  // NOT Supported behavior any more
@@ -1585,25 +1666,25 @@ var users_tests = function () { return __awaiter(void 0, void 0, void 0, functio
1585
1666
  { onResult: function (u) { return u.id === sdkNonAdmin.userInfo.id && u.fname === "Non"; } })
1586
1667
  // sdkNonAdmin.userInfo.fname = 'Non' // update back in sdk instance as well
1587
1668
  ];
1588
- case 5:
1669
+ case 7:
1589
1670
  // reset fname to "Non" if this test throws, otherwise will falsely pass on next run
1590
1671
  // NOT Supported behavior any more
1591
1672
  // assert(sdkNonAdmin.userInfo.fname === 'Updated', 'refresh_session not called on self after update', 'sdk updated on user update')
1592
1673
  _a.sent();
1593
1674
  // sdkNonAdmin.userInfo.fname = 'Non' // update back in sdk instance as well
1594
1675
  return [4 /*yield*/, async_test("verify user update with admin get", function () { return sdk.api.users.getOne(sdkNonAdmin.userInfo.id); }, { onResult: function (u) { return u.id === sdkNonAdmin.userInfo.id && u.fname === "Non"; } })];
1595
- case 6:
1676
+ case 8:
1596
1677
  // sdkNonAdmin.userInfo.fname = 'Non' // update back in sdk instance as well
1597
1678
  _a.sent();
1598
1679
  return [4 /*yield*/, async_test("update user (custom fields)", function () { return sdk.api.users.updateOne(sdk.userInfo.id, { fields: { boolean: true, f1: randomFieldValue, f2: randomFieldNumber, f3: { object: randomFieldValue } } }); }, // change back
1599
1680
  { onResult: function (u) { var _a, _b, _c; return u.id === sdk.userInfo.id && ((_a = u.fields) === null || _a === void 0 ? void 0 : _a.f1) === randomFieldValue && ((_b = u.fields) === null || _b === void 0 ? void 0 : _b.f2) === randomFieldNumber && ((_c = u.fields) === null || _c === void 0 ? void 0 : _c.f3).object == randomFieldValue; } })
1600
1681
  // sdkNonAdmin.userInfo.fname = 'Non' // update back in sdk instance as well
1601
1682
  ];
1602
- case 7:
1683
+ case 9:
1603
1684
  _a.sent();
1604
1685
  // sdkNonAdmin.userInfo.fname = 'Non' // update back in sdk instance as well
1605
1686
  return [4 /*yield*/, async_test("verify user update (custom fields)", function () { return sdk.api.users.getOne(sdk.userInfo.id); }, { onResult: function (u) { var _a, _b, _c; return u.id === sdk.userInfo.id && ((_a = u.fields) === null || _a === void 0 ? void 0 : _a.f1) === randomFieldValue && ((_b = u.fields) === null || _b === void 0 ? void 0 : _b.f2) === randomFieldNumber && ((_c = u.fields) === null || _c === void 0 ? void 0 : _c.f3).object == randomFieldValue; } })];
1606
- case 8:
1687
+ case 10:
1607
1688
  // sdkNonAdmin.userInfo.fname = 'Non' // update back in sdk instance as well
1608
1689
  _a.sent();
1609
1690
  return [2 /*return*/];
@@ -2842,6 +2923,7 @@ var tests = {
2842
2923
  post_comments: NO_TEST,
2843
2924
  post_likes: NO_TEST,
2844
2925
  organizations: NO_TEST,
2926
+ integrations: NO_TEST,
2845
2927
  };
2846
2928
  (function () { return __awaiter(void 0, void 0, void 0, function () {
2847
2929
  var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
@@ -2852,7 +2934,7 @@ var tests = {
2852
2934
  log_header("API");
2853
2935
  _h.label = 1;
2854
2936
  case 1:
2855
- _h.trys.push([1, 16, , 17]);
2937
+ _h.trys.push([1, 17, , 18]);
2856
2938
  return [4 /*yield*/, Promise.all([
2857
2939
  sdk.authenticate(email, password),
2858
2940
  sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
@@ -2865,41 +2947,44 @@ var tests = {
2865
2947
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
2866
2948
  case 4:
2867
2949
  _h.sent(); // should come right after setup tests
2868
- return [4 /*yield*/, role_based_access_tests()];
2950
+ return [4 /*yield*/, generate_user_auth_tests()];
2869
2951
  case 5:
2870
2952
  _h.sent();
2871
- return [4 /*yield*/, public_form_tests()];
2953
+ return [4 /*yield*/, role_based_access_tests()];
2872
2954
  case 6:
2873
2955
  _h.sent();
2874
- return [4 /*yield*/, search_tests()];
2956
+ return [4 /*yield*/, generateEnduserAuthTests()];
2875
2957
  case 7:
2876
2958
  _h.sent();
2877
- return [4 /*yield*/, badInputTests()];
2959
+ return [4 /*yield*/, public_form_tests()];
2878
2960
  case 8:
2879
2961
  _h.sent();
2880
- return [4 /*yield*/, filterTests()];
2962
+ return [4 /*yield*/, search_tests()];
2881
2963
  case 9:
2882
2964
  _h.sent();
2883
- return [4 /*yield*/, updatesTests()];
2965
+ return [4 /*yield*/, badInputTests()];
2884
2966
  case 10:
2885
2967
  _h.sent();
2886
- return [4 /*yield*/, threadKeyTests()];
2968
+ return [4 /*yield*/, filterTests()];
2887
2969
  case 11:
2888
2970
  _h.sent();
2889
- return [4 /*yield*/, enduserAccessTests()];
2971
+ return [4 /*yield*/, updatesTests()];
2890
2972
  case 12:
2891
2973
  _h.sent();
2892
- return [4 /*yield*/, generateEnduserAuthTests()];
2974
+ return [4 /*yield*/, threadKeyTests()];
2893
2975
  case 13:
2894
2976
  _h.sent();
2895
- return [4 /*yield*/, enduser_session_tests()];
2977
+ return [4 /*yield*/, enduserAccessTests()];
2896
2978
  case 14:
2897
2979
  _h.sent();
2898
- return [4 /*yield*/, enduser_redaction_tests()];
2980
+ return [4 /*yield*/, enduser_session_tests()];
2899
2981
  case 15:
2900
2982
  _h.sent();
2901
- return [3 /*break*/, 17];
2983
+ return [4 /*yield*/, enduser_redaction_tests()];
2902
2984
  case 16:
2985
+ _h.sent();
2986
+ return [3 /*break*/, 18];
2987
+ case 17:
2903
2988
  err_1 = _h.sent();
2904
2989
  console.error("Failed during custom test");
2905
2990
  if (err_1.message && err_1.info) {
@@ -2909,15 +2994,15 @@ var tests = {
2909
2994
  console.error(err_1);
2910
2995
  }
2911
2996
  process.exit(1);
2912
- return [3 /*break*/, 17];
2913
- case 17:
2997
+ return [3 /*break*/, 18];
2998
+ case 18:
2914
2999
  _a = [];
2915
3000
  for (_b in schema)
2916
3001
  _a.push(_b);
2917
3002
  _i = 0;
2918
- _h.label = 18;
2919
- case 18:
2920
- if (!(_i < _a.length)) return [3 /*break*/, 21];
3003
+ _h.label = 19;
3004
+ case 19:
3005
+ if (!(_i < _a.length)) return [3 /*break*/, 22];
2921
3006
  n = _a[_i];
2922
3007
  returnValidation = (_g = (_f = schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
2923
3008
  return [4 /*yield*/, run_generated_tests({
@@ -2928,38 +3013,38 @@ var tests = {
2928
3013
  create: returnValidation // ModelFields<ClientModel>,
2929
3014
  }
2930
3015
  })];
2931
- case 19:
2932
- _h.sent();
2933
- _h.label = 20;
2934
3016
  case 20:
2935
- _i++;
2936
- return [3 /*break*/, 18];
3017
+ _h.sent();
3018
+ _h.label = 21;
2937
3019
  case 21:
3020
+ _i++;
3021
+ return [3 /*break*/, 19];
3022
+ case 22:
2938
3023
  _c = [];
2939
3024
  for (_d in tests)
2940
3025
  _c.push(_d);
2941
3026
  _e = 0;
2942
- _h.label = 22;
2943
- case 22:
2944
- if (!(_e < _c.length)) return [3 /*break*/, 27];
2945
- t = _c[_e];
2946
3027
  _h.label = 23;
2947
3028
  case 23:
2948
- _h.trys.push([23, 25, , 26]);
2949
- return [4 /*yield*/, tests[t]()];
3029
+ if (!(_e < _c.length)) return [3 /*break*/, 28];
3030
+ t = _c[_e];
3031
+ _h.label = 24;
2950
3032
  case 24:
2951
- _h.sent();
2952
- return [3 /*break*/, 26];
3033
+ _h.trys.push([24, 26, , 27]);
3034
+ return [4 /*yield*/, tests[t]()];
2953
3035
  case 25:
3036
+ _h.sent();
3037
+ return [3 /*break*/, 27];
3038
+ case 26:
2954
3039
  err_2 = _h.sent();
2955
3040
  console.error("Error running test:");
2956
3041
  console.error(err_2);
2957
3042
  process.exit(1);
2958
- return [3 /*break*/, 26];
2959
- case 26:
2960
- _e++;
2961
- return [3 /*break*/, 22];
3043
+ return [3 /*break*/, 27];
2962
3044
  case 27:
3045
+ _e++;
3046
+ return [3 /*break*/, 23];
3047
+ case 28:
2963
3048
  process.exit();
2964
3049
  return [2 /*return*/];
2965
3050
  }