@tellescope/sdk 0.0.52 → 0.0.55
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 +96 -0
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/sdk.d.ts +98 -0
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +9 -1
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/socket_tests.js +2 -2
- package/lib/cjs/tests/socket_tests.js.map +1 -1
- package/lib/cjs/tests/tests.js +203 -51
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/cjs/tests/webhooks_tests.js +95 -21
- package/lib/cjs/tests/webhooks_tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +96 -0
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/sdk.d.ts +98 -0
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +9 -1
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/session.d.ts +1 -0
- package/lib/esm/session.d.ts.map +1 -1
- package/lib/esm/tests/socket_tests.js +2 -2
- package/lib/esm/tests/socket_tests.js.map +1 -1
- package/lib/esm/tests/tests.js +203 -51
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/esm/tests/webhooks_tests.js +95 -21
- package/lib/esm/tests/webhooks_tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/sdk.ts +10 -0
- package/src/tests/socket_tests.ts +2 -2
- package/src/tests/tests.ts +141 -15
- package/src/tests/webhooks_tests.ts +59 -5
package/lib/cjs/tests/tests.js
CHANGED
|
@@ -78,6 +78,7 @@ var constants_1 = require("@tellescope/constants");
|
|
|
78
78
|
var schema_1 = require("@tellescope/schema");
|
|
79
79
|
var testing_1 = require("@tellescope/testing");
|
|
80
80
|
var utilities_1 = require("@tellescope/utilities");
|
|
81
|
+
var UniquenessViolationMessage = 'Uniqueness Violation';
|
|
81
82
|
var host = process.env.TEST_URL || 'http://localhost:8080';
|
|
82
83
|
var _a = [process.env.TEST_EMAIL, process.env.TEST_PASSWORD], email = _a[0], password = _a[1];
|
|
83
84
|
var _b = [process.env.TEST_EMAIL_2, process.env.TEST_PASSWORD_2], email2 = _b[0], password2 = _b[1];
|
|
@@ -116,7 +117,9 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
|
|
|
116
117
|
var uInfo, originalAuthToken;
|
|
117
118
|
return __generator(this, function (_a) {
|
|
118
119
|
switch (_a.label) {
|
|
119
|
-
case 0:
|
|
120
|
+
case 0:
|
|
121
|
+
(0, testing_1.log_header)("Setup");
|
|
122
|
+
return [4 /*yield*/, (0, testing_1.async_test)('test_online', sdk.test_online, { expectedResult: 'API V1 Online' })];
|
|
120
123
|
case 1:
|
|
121
124
|
_a.sent();
|
|
122
125
|
return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
|
|
@@ -155,7 +158,9 @@ var multi_tenant_tests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
155
158
|
var e2, e1, update;
|
|
156
159
|
return __generator(this, function (_a) {
|
|
157
160
|
switch (_a.label) {
|
|
158
|
-
case 0:
|
|
161
|
+
case 0:
|
|
162
|
+
(0, testing_1.log_header)("Multi Tenant");
|
|
163
|
+
return [4 /*yield*/, sdkOther.api.endusers.createOne({ email: "hi@tellescope.com" }).catch(console.error)];
|
|
159
164
|
case 1:
|
|
160
165
|
e2 = _a.sent();
|
|
161
166
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: "hi@tellescope.com" }).catch(console.error)];
|
|
@@ -216,7 +221,9 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
|
|
|
216
221
|
var enduser, _a, e1, e2, e3, _b, e4, e5, e6, es;
|
|
217
222
|
return __generator(this, function (_c) {
|
|
218
223
|
switch (_c.label) {
|
|
219
|
-
case 0:
|
|
224
|
+
case 0:
|
|
225
|
+
(0, testing_1.log_header)("threadKey");
|
|
226
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'threadkeytests@tellescope.com' })];
|
|
220
227
|
case 1:
|
|
221
228
|
enduser = _c.sent();
|
|
222
229
|
return [4 /*yield*/, Promise.all([
|
|
@@ -252,17 +259,11 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
|
|
|
252
259
|
(0, testing_1.assert)(es.find(function (e) { return e.id === e4.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 1, new)');
|
|
253
260
|
(0, testing_1.assert)(es.find(function (e) { return e.id === e5.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 2, new)');
|
|
254
261
|
(0, testing_1.assert)(es.find(function (e) { return e.id === e6.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 3, new)');
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
sdk.api.engagement_events.deleteOne(e1.id),
|
|
258
|
-
sdk.api.engagement_events.deleteOne(e2.id),
|
|
259
|
-
sdk.api.engagement_events.deleteOne(e3.id),
|
|
260
|
-
sdk.api.engagement_events.deleteOne(e4.id),
|
|
261
|
-
sdk.api.engagement_events.deleteOne(e5.id),
|
|
262
|
-
sdk.api.engagement_events.deleteOne(e6.id),
|
|
263
|
-
])];
|
|
262
|
+
// cleanup
|
|
263
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)]; // cleans up automatin events too
|
|
264
264
|
case 7:
|
|
265
|
-
|
|
265
|
+
// cleanup
|
|
266
|
+
_c.sent(); // cleans up automatin events too
|
|
266
267
|
return [2 /*return*/];
|
|
267
268
|
}
|
|
268
269
|
});
|
|
@@ -271,7 +272,7 @@ var badInputTests = function () { return __awaiter(void 0, void 0, void 0, funct
|
|
|
271
272
|
return __generator(this, function (_a) {
|
|
272
273
|
switch (_a.label) {
|
|
273
274
|
case 0:
|
|
274
|
-
(0, testing_1.log_header)("Bad Input
|
|
275
|
+
(0, testing_1.log_header)("Bad Input");
|
|
275
276
|
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"; } })];
|
|
276
277
|
case 1:
|
|
277
278
|
_a.sent();
|
|
@@ -286,7 +287,9 @@ var filterTests = function () { return __awaiter(void 0, void 0, void 0, functio
|
|
|
286
287
|
var enduser, otherEnduser;
|
|
287
288
|
return __generator(this, function (_a) {
|
|
288
289
|
switch (_a.label) {
|
|
289
|
-
case 0:
|
|
290
|
+
case 0:
|
|
291
|
+
(0, testing_1.log_header)("Filter Tests");
|
|
292
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test', fields: { field1: 'value1', field2: 'value2' } })];
|
|
290
293
|
case 1:
|
|
291
294
|
enduser = _a.sent();
|
|
292
295
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'other@tellescope.com' })];
|
|
@@ -344,7 +347,9 @@ var updatesTests = function () { return __awaiter(void 0, void 0, void 0, functi
|
|
|
344
347
|
var enduser, task;
|
|
345
348
|
return __generator(this, function (_a) {
|
|
346
349
|
switch (_a.label) {
|
|
347
|
-
case 0:
|
|
350
|
+
case 0:
|
|
351
|
+
(0, testing_1.log_header)("Updates Tests");
|
|
352
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'test@tellescope.com', phone: '+15555555555' })];
|
|
348
353
|
case 1:
|
|
349
354
|
enduser = _a.sent();
|
|
350
355
|
return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { phone: '+15555555552' })]; // update to new phone number
|
|
@@ -376,7 +381,7 @@ var generateEnduserAuthTests = function () { return __awaiter(void 0, void 0, vo
|
|
|
376
381
|
return __generator(this, function (_e) {
|
|
377
382
|
switch (_e.label) {
|
|
378
383
|
case 0:
|
|
379
|
-
(0, testing_1.log_header)("Generated Enduser authToken
|
|
384
|
+
(0, testing_1.log_header)("Generated Enduser authToken");
|
|
380
385
|
externalId = '1029f9v9sjd0as';
|
|
381
386
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: externalId })];
|
|
382
387
|
case 1:
|
|
@@ -683,7 +688,7 @@ var engagement_tests = function () { return __awaiter(void 0, void 0, void 0, fu
|
|
|
683
688
|
var journey_tests = function (queries) {
|
|
684
689
|
if (queries === void 0) { queries = sdk.api.journeys; }
|
|
685
690
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
686
|
-
var journey, journey2, withAddedState, e1, e2, engagement, es;
|
|
691
|
+
var journey, journey2, updated, fetchAfterDeletion, withAddedState, e1, e2, engagement, es;
|
|
687
692
|
var _a, _b, _c, _d, _e, _f;
|
|
688
693
|
return __generator(this, function (_g) {
|
|
689
694
|
switch (_g.label) {
|
|
@@ -699,115 +704,131 @@ var journey_tests = function (queries) {
|
|
|
699
704
|
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'Test Journey 2' })];
|
|
700
705
|
case 4:
|
|
701
706
|
journey2 = _g.sent();
|
|
707
|
+
return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, {
|
|
708
|
+
states: [
|
|
709
|
+
{ name: 'Delete Me 1', priority: 'N/A' },
|
|
710
|
+
{ name: 'Delete Me 2', priority: 'N/A' },
|
|
711
|
+
]
|
|
712
|
+
})];
|
|
713
|
+
case 5:
|
|
714
|
+
_g.sent();
|
|
715
|
+
return [4 /*yield*/, sdk.api.journeys.delete_states({ id: journey.id, states: ['Delete Me 1', 'Delete Me 2'] })];
|
|
716
|
+
case 6:
|
|
717
|
+
updated = (_g.sent()).updated;
|
|
718
|
+
(0, testing_1.assert)(!!updated.id && updated.states.length === 1 && updated.states[0].name === 'New', 'delete states fail on returned update', 'delete states returns updated value');
|
|
719
|
+
return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
|
|
720
|
+
case 7:
|
|
721
|
+
fetchAfterDeletion = _g.sent();
|
|
722
|
+
(0, testing_1.assert)(fetchAfterDeletion.states.length === 1 && fetchAfterDeletion.states[0].name === 'New', 'delete states fail', 'delete states worked');
|
|
702
723
|
(0, testing_1.assert)(journey.defaultState === 'New', 'defaultState not set on create', 'journey-create - defaultState initialized');
|
|
703
724
|
(0, testing_1.assert)(journey.states[0].name === 'New', 'defaultState not set on create', 'journey-create - states initialized');
|
|
704
725
|
return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, { states: [{ name: 'ToDuplicate', priority: "N/A" }] })];
|
|
705
|
-
case
|
|
726
|
+
case 8:
|
|
706
727
|
_g.sent();
|
|
707
728
|
return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
|
|
708
|
-
case
|
|
729
|
+
case 9:
|
|
709
730
|
withAddedState = _g.sent();
|
|
710
731
|
(0, testing_1.assert)(withAddedState.states.length === 2 && withAddedState.states.find(function (s) { return s.name === 'ToDuplicate'; }) !== undefined, 'new state added', 'journey-update - push state change');
|
|
711
732
|
return [4 /*yield*/, (0, testing_1.async_test)("create-journey - add duplicate state", function () { return sdk.api.journeys.updateOne(journey.id, { states: [{ name: 'ToDuplicate', priority: "N/A" }] }); }, { shouldError: true, onError: function (e) { return e.message === 'Uniqueness Violation'; } })];
|
|
712
|
-
case
|
|
733
|
+
case 10:
|
|
713
734
|
_g.sent();
|
|
714
735
|
return [4 /*yield*/, (0, testing_1.async_test)("create-journey - add duplicate states in update", function () { return sdk.api.journeys.updateOne(journey.id, { states: [{ name: 'DuplicateUpdate', priority: "N/A" }, { name: 'DuplicateUpdate', priority: "N/A" }] }); }, { shouldError: true, onError: function (e) { return e.message === 'Uniqueness Violation'; } })];
|
|
715
|
-
case
|
|
736
|
+
case 11:
|
|
716
737
|
_g.sent();
|
|
717
738
|
return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, { defaultState: 'Added', states: [{ name: 'Added', priority: "N/A" }, { name: "Other", priority: "N/A" }] }, { replaceObjectFields: true })];
|
|
718
|
-
case
|
|
739
|
+
case 12:
|
|
719
740
|
_g.sent();
|
|
720
741
|
return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
|
|
721
|
-
case
|
|
742
|
+
case 13:
|
|
722
743
|
withAddedState = _g.sent();
|
|
723
744
|
(0, testing_1.assert)(withAddedState.states.length === 2 && withAddedState.states.find(function (s) { return s.name === 'Added'; }) !== undefined
|
|
724
745
|
&& withAddedState.defaultState === 'Added', 'duplicate state not added', 'journey-update - replace states');
|
|
725
746
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-update - states replace with missing default", function () { return queries.updateOne(journey.id, { states: [{ name: 'Not Default', priority: "N/A" }] }, { replaceObjectFields: true }); }, { shouldError: true, onError: function (e) { return e.message === 'defaultState does not exist in states'; } })];
|
|
726
|
-
case
|
|
747
|
+
case 14:
|
|
727
748
|
_g.sent();
|
|
728
749
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'journeyunset1@tellescope.com', journeys: (_a = {}, _a[journey.id] = 'Added', _a) })];
|
|
729
|
-
case
|
|
750
|
+
case 15:
|
|
730
751
|
e1 = _g.sent();
|
|
731
752
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'journeyunset2@tellescope.com', journeys: (_b = {}, _b[journey.id] = 'Added', _b[journey2.id] = 'New', _b) })];
|
|
732
|
-
case
|
|
753
|
+
case 16:
|
|
733
754
|
e2 = _g.sent();
|
|
734
755
|
return [4 /*yield*/, (0, testing_1.async_test)("create-enduser - invalid journey id", function () {
|
|
735
756
|
var _a;
|
|
736
757
|
return sdk.api.endusers.createOne({ email: 'journeyunset3@tellescope.com', journeys: (_a = {}, _a[e1.id] = 'Added', _a) });
|
|
737
758
|
}, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
|
|
738
|
-
case
|
|
759
|
+
case 17:
|
|
739
760
|
_g.sent();
|
|
740
761
|
return [4 /*yield*/, (0, testing_1.async_test)("update-enduser - invalid journey id", function () {
|
|
741
762
|
var _a;
|
|
742
763
|
return sdk.api.endusers.updateOne(e1.id, { journeys: (_a = {}, _a[e1.id] = 'Added', _a) });
|
|
743
764
|
}, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
|
|
744
|
-
case
|
|
765
|
+
case 18:
|
|
745
766
|
_g.sent();
|
|
746
767
|
return [4 /*yield*/, (0, testing_1.async_test)("update-enduser - one invalid journey id", function () {
|
|
747
768
|
var _a;
|
|
748
769
|
return sdk.api.endusers.updateOne(e1.id, { journeys: (_a = {}, _a[journey.id] = 'Added', _a[e1.id] = 'Added', _a) });
|
|
749
770
|
}, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
|
|
750
|
-
case
|
|
771
|
+
case 19:
|
|
751
772
|
_g.sent();
|
|
752
773
|
return [4 /*yield*/, sdk.api.endusers.updateOne(e1.id, { journeys: (_c = {}, _c[journey.id] = 'Other', _c) })]; // valid state change
|
|
753
|
-
case
|
|
774
|
+
case 20:
|
|
754
775
|
_g.sent(); // valid state change
|
|
755
776
|
return [4 /*yield*/, sdk.api.endusers.updateOne(e1.id, { journeys: (_d = {}, _d[journey.id] = 'Added', _d) })]; // change back
|
|
756
|
-
case
|
|
777
|
+
case 21:
|
|
757
778
|
_g.sent(); // change back
|
|
758
779
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to add engagement
|
|
759
|
-
case
|
|
780
|
+
case 22:
|
|
760
781
|
_g.sent(); // wait for side effects to add engagement
|
|
761
782
|
return [4 /*yield*/, sdk.api.engagement_events.getSome()];
|
|
762
|
-
case
|
|
783
|
+
case 23:
|
|
763
784
|
engagement = _g.sent();
|
|
764
785
|
(0, testing_1.assert)(engagement.filter(function (e) { return e.enduserId === e1.id && e.type === "STATE_CHANGE"; }).length === 2, 'STATE_CHANGE engagement not tracked', 'Update enduser tracks state changes');
|
|
765
786
|
return [4 /*yield*/, sdk.api.endusers.createSome([{ email: "1@tellescope.com", journeys: (_e = {}, _e[journey.id] = 'Added', _e) }, { email: "2@tellescope.com", journeys: (_f = {}, _f[journey.id] = 'Added', _f) }])];
|
|
766
|
-
case
|
|
787
|
+
case 24:
|
|
767
788
|
es = (_g.sent()).created;
|
|
768
789
|
return [4 /*yield*/, sdk.api.engagement_events.getSome()];
|
|
769
|
-
case
|
|
790
|
+
case 25:
|
|
770
791
|
engagement = _g.sent();
|
|
771
792
|
(0, testing_1.assert)(engagement.filter(function (e) { return e.enduserId === es[0].id && e.type === "JOURNEY_SET"; }).length === 1, 'JOURNEY_SET engagement not tracked', 'Create endusers tracks engagement events (1)');
|
|
772
793
|
(0, testing_1.assert)(engagement.filter(function (e) { return e.enduserId === es[1].id && e.type === "JOURNEY_SET"; }).length === 1, 'JOURNEY_SET engagement not tracked', 'Create endusers tracks engagement events (2)');
|
|
773
794
|
return [4 /*yield*/, queries.updateOne(journey.id, { states: [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }] }, { replaceObjectFields: true })];
|
|
774
|
-
case
|
|
795
|
+
case 26:
|
|
775
796
|
_g.sent();
|
|
776
797
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return (0, utilities_1.objects_equivalent)(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })];
|
|
777
|
-
case
|
|
798
|
+
case 27:
|
|
778
799
|
_g.sent();
|
|
779
800
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState", function () { return queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' } }); }, passOnVoid)];
|
|
780
|
-
case
|
|
801
|
+
case 28:
|
|
781
802
|
_g.sent();
|
|
782
803
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
|
|
783
|
-
case
|
|
804
|
+
case 29:
|
|
784
805
|
_g.sent(); // wait for side effects to update endusers
|
|
785
806
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) {
|
|
786
807
|
var _a;
|
|
787
808
|
return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a));
|
|
788
809
|
} })];
|
|
789
|
-
case
|
|
810
|
+
case 30:
|
|
790
811
|
_g.sent();
|
|
791
812
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 2", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
|
|
792
813
|
var _a;
|
|
793
814
|
return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a[journey2.id] = 'New', _a));
|
|
794
815
|
} })];
|
|
795
|
-
case
|
|
816
|
+
case 31:
|
|
796
817
|
_g.sent();
|
|
797
818
|
return [4 /*yield*/, queries.deleteOne(journey.id)];
|
|
798
|
-
case
|
|
819
|
+
case 32:
|
|
799
820
|
_g.sent();
|
|
800
821
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
|
|
801
|
-
case
|
|
822
|
+
case 33:
|
|
802
823
|
_g.sent(); // wait for side effects to update endusers
|
|
803
824
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { return (0, utilities_1.objects_equivalent)(e.journeys, {}); } })];
|
|
804
|
-
case
|
|
825
|
+
case 34:
|
|
805
826
|
_g.sent();
|
|
806
827
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset, others left", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
|
|
807
828
|
var _a;
|
|
808
829
|
return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey2.id] = 'New', _a));
|
|
809
830
|
} })];
|
|
810
|
-
case
|
|
831
|
+
case 35:
|
|
811
832
|
_g.sent();
|
|
812
833
|
return [2 /*return*/];
|
|
813
834
|
}
|
|
@@ -830,9 +851,9 @@ var tasks_tests = function (queries) {
|
|
|
830
851
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(e.id)];
|
|
831
852
|
case 3:
|
|
832
853
|
_a.sent();
|
|
833
|
-
return [4 /*yield*/, (0, testing_1.wait)(undefined,
|
|
854
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)]; // allow dependency updates to fire in background (there are a lot for endusers)
|
|
834
855
|
case 4:
|
|
835
|
-
_a.sent(); // allow dependency updates to fire in background
|
|
856
|
+
_a.sent(); // allow dependency updates to fire in background (there are a lot for endusers)
|
|
836
857
|
return [4 /*yield*/, (0, testing_1.async_test)("get-task - enduserId unset on enduser deletion", function () { return queries.getOne(t.id); }, { onResult: function (t) { return t.enduserId === undefined; } })];
|
|
837
858
|
case 5:
|
|
838
859
|
_a.sent();
|
|
@@ -1175,8 +1196,11 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
1175
1196
|
return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
|
|
1176
1197
|
case 23:
|
|
1177
1198
|
_a.sent();
|
|
1178
|
-
return [4 /*yield*/, (0, testing_1.
|
|
1199
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
|
|
1179
1200
|
case 24:
|
|
1201
|
+
_a.sent();
|
|
1202
|
+
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; } })];
|
|
1203
|
+
case 25:
|
|
1180
1204
|
_a.sent();
|
|
1181
1205
|
return [2 /*return*/];
|
|
1182
1206
|
}
|
|
@@ -1188,6 +1212,7 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
1188
1212
|
return __generator(this, function (_j) {
|
|
1189
1213
|
switch (_j.label) {
|
|
1190
1214
|
case 0:
|
|
1215
|
+
(0, testing_1.log_header)("Enduser Access");
|
|
1191
1216
|
email = 'enduser@tellescope.com';
|
|
1192
1217
|
password = 'testpassword';
|
|
1193
1218
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
|
|
@@ -1290,7 +1315,7 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
1290
1315
|
return [4 /*yield*/, sdk.api.tickets.createOne({ enduserId: constants_1.PLACEHOLDER_ID, title: "Inaccessible ticket" })];
|
|
1291
1316
|
case 15:
|
|
1292
1317
|
ticketInaccessible = _j.sent();
|
|
1293
|
-
return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot create ticket for another enduser", function () { return enduserSDK.api.tickets.createOne({ enduserId: sdk.userInfo.id, title: "Error on Creation" }); }, { shouldError: true, onError: function (e) { return e.message
|
|
1318
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot create ticket for another enduser", function () { return enduserSDK.api.tickets.createOne({ enduserId: sdk.userInfo.id, title: "Error on Creation" }); }, { shouldError: true, onError: function (e) { return !!e.message; } })];
|
|
1294
1319
|
case 16:
|
|
1295
1320
|
_j.sent();
|
|
1296
1321
|
return [4 /*yield*/, (0, testing_1.async_test)("enduser-access default, no access constraints, matching enduserId", function () { return enduserSDK.api.tickets.getOne(ticketAccessible.id); }, { onResult: function (t) { return t.id === ticketAccessible.id; } })];
|
|
@@ -1367,6 +1392,7 @@ var enduser_session_tests = function () { return __awaiter(void 0, void 0, void
|
|
|
1367
1392
|
return __generator(this, function (_a) {
|
|
1368
1393
|
switch (_a.label) {
|
|
1369
1394
|
case 0:
|
|
1395
|
+
(0, testing_1.log_header)("Enduser Session");
|
|
1370
1396
|
email = 'enduser@tellescope.com';
|
|
1371
1397
|
password = 'testpassword';
|
|
1372
1398
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
|
|
@@ -1494,6 +1520,128 @@ var calendar_events_tests = function () { return __awaiter(void 0, void 0, void
|
|
|
1494
1520
|
}
|
|
1495
1521
|
});
|
|
1496
1522
|
}); };
|
|
1523
|
+
var automation_events_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1524
|
+
var state1, state2, journey, testAction, a1, a2, a3, enduser;
|
|
1525
|
+
var _a, _b;
|
|
1526
|
+
return __generator(this, function (_c) {
|
|
1527
|
+
switch (_c.label) {
|
|
1528
|
+
case 0:
|
|
1529
|
+
(0, testing_1.log_header)("Automation Events");
|
|
1530
|
+
state1 = "State 1", state2 = "State 2";
|
|
1531
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({
|
|
1532
|
+
title: "Automations Test",
|
|
1533
|
+
defaultState: state1,
|
|
1534
|
+
states: [
|
|
1535
|
+
{ name: state1, priority: 'N/A' },
|
|
1536
|
+
{ name: state2, priority: 'N/A' },
|
|
1537
|
+
]
|
|
1538
|
+
})];
|
|
1539
|
+
case 1:
|
|
1540
|
+
journey = _c.sent();
|
|
1541
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enterState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
|
|
1542
|
+
journeyId: journey.id,
|
|
1543
|
+
event: {
|
|
1544
|
+
type: "enterState",
|
|
1545
|
+
info: { state: state1, journeyId: journey.id }
|
|
1546
|
+
},
|
|
1547
|
+
action: {
|
|
1548
|
+
type: 'updateStateForJourney',
|
|
1549
|
+
info: { state: state1, journeyId: journey.id },
|
|
1550
|
+
},
|
|
1551
|
+
}); }, { shouldError: true, onError: function (e) { return e.message === 'updateStateForJourney cannot have the same journey and state as the enterState event'; } })];
|
|
1552
|
+
case 2:
|
|
1553
|
+
_c.sent();
|
|
1554
|
+
return [4 /*yield*/, (0, testing_1.async_test)("leaveState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
|
|
1555
|
+
journeyId: journey.id,
|
|
1556
|
+
event: {
|
|
1557
|
+
type: "leaveState",
|
|
1558
|
+
info: { state: state1, journeyId: journey.id }
|
|
1559
|
+
},
|
|
1560
|
+
action: {
|
|
1561
|
+
type: 'updateStateForJourney',
|
|
1562
|
+
info: { state: state1, journeyId: journey.id },
|
|
1563
|
+
},
|
|
1564
|
+
}); }, { shouldError: true, onError: function (e) { return e.message === 'updateStateForJourney cannot have the same journey and state as the leaveState event'; } })];
|
|
1565
|
+
case 3:
|
|
1566
|
+
_c.sent();
|
|
1567
|
+
testAction = {
|
|
1568
|
+
type: 'sendWebhook',
|
|
1569
|
+
info: { message: 'test' }
|
|
1570
|
+
};
|
|
1571
|
+
return [4 /*yield*/, sdk.api.event_automations.createOne({
|
|
1572
|
+
journeyId: journey.id,
|
|
1573
|
+
event: {
|
|
1574
|
+
type: "enterState",
|
|
1575
|
+
info: { state: state1, journeyId: journey.id }
|
|
1576
|
+
},
|
|
1577
|
+
action: testAction,
|
|
1578
|
+
})];
|
|
1579
|
+
case 4:
|
|
1580
|
+
a1 = _c.sent();
|
|
1581
|
+
return [4 /*yield*/, sdk.api.event_automations.createOne({
|
|
1582
|
+
journeyId: journey.id,
|
|
1583
|
+
event: {
|
|
1584
|
+
type: "leaveState",
|
|
1585
|
+
info: { state: state1, journeyId: journey.id }
|
|
1586
|
+
},
|
|
1587
|
+
action: testAction,
|
|
1588
|
+
})];
|
|
1589
|
+
case 5:
|
|
1590
|
+
a2 = _c.sent();
|
|
1591
|
+
return [4 /*yield*/, sdk.api.event_automations.createOne({
|
|
1592
|
+
journeyId: journey.id,
|
|
1593
|
+
event: {
|
|
1594
|
+
type: "enterState",
|
|
1595
|
+
info: { state: state2, journeyId: journey.id }
|
|
1596
|
+
},
|
|
1597
|
+
action: testAction,
|
|
1598
|
+
})];
|
|
1599
|
+
case 6:
|
|
1600
|
+
a3 = _c.sent();
|
|
1601
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Cannot insert duplicate event/action pair", function () { return sdk.api.event_automations.createOne({
|
|
1602
|
+
journeyId: journey.id,
|
|
1603
|
+
event: {
|
|
1604
|
+
type: "enterState",
|
|
1605
|
+
info: { state: state2, journeyId: journey.id }
|
|
1606
|
+
},
|
|
1607
|
+
action: testAction,
|
|
1608
|
+
}); }, { shouldError: true, onError: function (e) { return e.message === UniquenessViolationMessage; } })
|
|
1609
|
+
// trigger a1 on create
|
|
1610
|
+
];
|
|
1611
|
+
case 7:
|
|
1612
|
+
_c.sent();
|
|
1613
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({
|
|
1614
|
+
email: "automations@tellescope.com",
|
|
1615
|
+
journeys: (_a = {}, _a[journey.id] = journey.defaultState, _a)
|
|
1616
|
+
})
|
|
1617
|
+
// trigger a2 and a3 by leaving state 1 an going to state 2
|
|
1618
|
+
];
|
|
1619
|
+
case 8:
|
|
1620
|
+
enduser = _c.sent();
|
|
1621
|
+
// trigger a2 and a3 by leaving state 1 an going to state 2
|
|
1622
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { journeys: (_b = {}, _b[journey.id] = state2, _b) })];
|
|
1623
|
+
case 9:
|
|
1624
|
+
// trigger a2 and a3 by leaving state 1 an going to state 2
|
|
1625
|
+
_c.sent();
|
|
1626
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Automation events triggered correctly",
|
|
1627
|
+
// () => sdk.api.automation_endusers.getSome(),
|
|
1628
|
+
function () { return sdk.api.automation_endusers.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (es) { return es && es.length === 3 && es.filter(function (a) { return a.automationId === "ONE_TIME"; }).length === 3; } })
|
|
1629
|
+
// cleanup
|
|
1630
|
+
];
|
|
1631
|
+
case 10:
|
|
1632
|
+
_c.sent();
|
|
1633
|
+
// cleanup
|
|
1634
|
+
return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id)]; // automation events deleted as side effect
|
|
1635
|
+
case 11:
|
|
1636
|
+
// cleanup
|
|
1637
|
+
_c.sent(); // automation events deleted as side effect
|
|
1638
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
|
|
1639
|
+
case 12:
|
|
1640
|
+
_c.sent();
|
|
1641
|
+
return [2 /*return*/];
|
|
1642
|
+
}
|
|
1643
|
+
});
|
|
1644
|
+
}); };
|
|
1497
1645
|
var tests = {
|
|
1498
1646
|
chats: chat_tests,
|
|
1499
1647
|
endusers: enduser_tests,
|
|
@@ -1514,6 +1662,9 @@ var tests = {
|
|
|
1514
1662
|
form_responses: function () { },
|
|
1515
1663
|
calendar_events: calendar_events_tests,
|
|
1516
1664
|
webhooks: function () { },
|
|
1665
|
+
event_automations: automation_events_tests,
|
|
1666
|
+
sequence_automations: function () { },
|
|
1667
|
+
automation_endusers: function () { },
|
|
1517
1668
|
};
|
|
1518
1669
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1519
1670
|
var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
|
|
@@ -1563,7 +1714,7 @@ var tests = {
|
|
|
1563
1714
|
err_1 = _h.sent();
|
|
1564
1715
|
console.error("Failed during custom test");
|
|
1565
1716
|
console.error(err_1);
|
|
1566
|
-
process.exit();
|
|
1717
|
+
process.exit(1);
|
|
1567
1718
|
return [3 /*break*/, 13];
|
|
1568
1719
|
case 13:
|
|
1569
1720
|
_a = [];
|
|
@@ -1609,6 +1760,7 @@ var tests = {
|
|
|
1609
1760
|
err_2 = _h.sent();
|
|
1610
1761
|
console.error("Error running test:");
|
|
1611
1762
|
console.error(err_2);
|
|
1763
|
+
process.exit(1);
|
|
1612
1764
|
return [3 /*break*/, 22];
|
|
1613
1765
|
case 22:
|
|
1614
1766
|
_e++;
|