@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.
- package/lib/cjs/enduser.d.ts +26 -1
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/enduser.js +1 -0
- package/lib/cjs/enduser.js.map +1 -1
- package/lib/cjs/sdk.d.ts +32 -0
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +4 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/session.d.ts +1 -0
- package/lib/cjs/session.d.ts.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +130 -45
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +25 -1
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/enduser.js +1 -0
- package/lib/esm/enduser.js.map +1 -1
- package/lib/esm/sdk.d.ts +31 -0
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +4 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +130 -45
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/enduser.ts +2 -0
- package/src/sdk.ts +17 -1
- package/src/tests/tests.ts +66 -2
package/lib/esm/tests/tests.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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*/,
|
|
2950
|
+
return [4 /*yield*/, generate_user_auth_tests()];
|
|
2869
2951
|
case 5:
|
|
2870
2952
|
_h.sent();
|
|
2871
|
-
return [4 /*yield*/,
|
|
2953
|
+
return [4 /*yield*/, role_based_access_tests()];
|
|
2872
2954
|
case 6:
|
|
2873
2955
|
_h.sent();
|
|
2874
|
-
return [4 /*yield*/,
|
|
2956
|
+
return [4 /*yield*/, generateEnduserAuthTests()];
|
|
2875
2957
|
case 7:
|
|
2876
2958
|
_h.sent();
|
|
2877
|
-
return [4 /*yield*/,
|
|
2959
|
+
return [4 /*yield*/, public_form_tests()];
|
|
2878
2960
|
case 8:
|
|
2879
2961
|
_h.sent();
|
|
2880
|
-
return [4 /*yield*/,
|
|
2962
|
+
return [4 /*yield*/, search_tests()];
|
|
2881
2963
|
case 9:
|
|
2882
2964
|
_h.sent();
|
|
2883
|
-
return [4 /*yield*/,
|
|
2965
|
+
return [4 /*yield*/, badInputTests()];
|
|
2884
2966
|
case 10:
|
|
2885
2967
|
_h.sent();
|
|
2886
|
-
return [4 /*yield*/,
|
|
2968
|
+
return [4 /*yield*/, filterTests()];
|
|
2887
2969
|
case 11:
|
|
2888
2970
|
_h.sent();
|
|
2889
|
-
return [4 /*yield*/,
|
|
2971
|
+
return [4 /*yield*/, updatesTests()];
|
|
2890
2972
|
case 12:
|
|
2891
2973
|
_h.sent();
|
|
2892
|
-
return [4 /*yield*/,
|
|
2974
|
+
return [4 /*yield*/, threadKeyTests()];
|
|
2893
2975
|
case 13:
|
|
2894
2976
|
_h.sent();
|
|
2895
|
-
return [4 /*yield*/,
|
|
2977
|
+
return [4 /*yield*/, enduserAccessTests()];
|
|
2896
2978
|
case 14:
|
|
2897
2979
|
_h.sent();
|
|
2898
|
-
return [4 /*yield*/,
|
|
2980
|
+
return [4 /*yield*/, enduser_session_tests()];
|
|
2899
2981
|
case 15:
|
|
2900
2982
|
_h.sent();
|
|
2901
|
-
return [
|
|
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*/,
|
|
2913
|
-
case
|
|
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 =
|
|
2919
|
-
case
|
|
2920
|
-
if (!(_i < _a.length)) return [3 /*break*/,
|
|
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
|
-
|
|
2936
|
-
|
|
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
|
-
|
|
2949
|
-
|
|
3029
|
+
if (!(_e < _c.length)) return [3 /*break*/, 28];
|
|
3030
|
+
t = _c[_e];
|
|
3031
|
+
_h.label = 24;
|
|
2950
3032
|
case 24:
|
|
2951
|
-
_h.
|
|
2952
|
-
return [
|
|
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*/,
|
|
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
|
}
|