@tellescope/sdk 0.0.53 → 0.0.56
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/esm/tests/tests.js
CHANGED
|
@@ -54,6 +54,7 @@ import { DEFAULT_OPERATIONS, PLACEHOLDER_ID } from "@tellescope/constants";
|
|
|
54
54
|
import { schema, } from "@tellescope/schema";
|
|
55
55
|
import { assert, async_test, log_header, wait, } from "@tellescope/testing";
|
|
56
56
|
import { objects_equivalent, url_safe_path, } from "@tellescope/utilities";
|
|
57
|
+
var UniquenessViolationMessage = 'Uniqueness Violation';
|
|
57
58
|
var host = process.env.TEST_URL || 'http://localhost:8080';
|
|
58
59
|
var _a = [process.env.TEST_EMAIL, process.env.TEST_PASSWORD], email = _a[0], password = _a[1];
|
|
59
60
|
var _b = [process.env.TEST_EMAIL_2, process.env.TEST_PASSWORD_2], email2 = _b[0], password2 = _b[1];
|
|
@@ -92,7 +93,9 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
|
|
|
92
93
|
var uInfo, originalAuthToken;
|
|
93
94
|
return __generator(this, function (_a) {
|
|
94
95
|
switch (_a.label) {
|
|
95
|
-
case 0:
|
|
96
|
+
case 0:
|
|
97
|
+
log_header("Setup");
|
|
98
|
+
return [4 /*yield*/, async_test('test_online', sdk.test_online, { expectedResult: 'API V1 Online' })];
|
|
96
99
|
case 1:
|
|
97
100
|
_a.sent();
|
|
98
101
|
return [4 /*yield*/, async_test('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
|
|
@@ -131,7 +134,9 @@ var multi_tenant_tests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
131
134
|
var e2, e1, update;
|
|
132
135
|
return __generator(this, function (_a) {
|
|
133
136
|
switch (_a.label) {
|
|
134
|
-
case 0:
|
|
137
|
+
case 0:
|
|
138
|
+
log_header("Multi Tenant");
|
|
139
|
+
return [4 /*yield*/, sdkOther.api.endusers.createOne({ email: "hi@tellescope.com" }).catch(console.error)];
|
|
135
140
|
case 1:
|
|
136
141
|
e2 = _a.sent();
|
|
137
142
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: "hi@tellescope.com" }).catch(console.error)];
|
|
@@ -192,7 +197,9 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
|
|
|
192
197
|
var enduser, _a, e1, e2, e3, _b, e4, e5, e6, es;
|
|
193
198
|
return __generator(this, function (_c) {
|
|
194
199
|
switch (_c.label) {
|
|
195
|
-
case 0:
|
|
200
|
+
case 0:
|
|
201
|
+
log_header("threadKey");
|
|
202
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'threadkeytests@tellescope.com' })];
|
|
196
203
|
case 1:
|
|
197
204
|
enduser = _c.sent();
|
|
198
205
|
return [4 /*yield*/, Promise.all([
|
|
@@ -228,17 +235,11 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
|
|
|
228
235
|
assert(es.find(function (e) { return e.id === e4.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 1, new)');
|
|
229
236
|
assert(es.find(function (e) { return e.id === e5.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 2, new)');
|
|
230
237
|
assert(es.find(function (e) { return e.id === e6.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 3, new)');
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
sdk.api.engagement_events.deleteOne(e1.id),
|
|
234
|
-
sdk.api.engagement_events.deleteOne(e2.id),
|
|
235
|
-
sdk.api.engagement_events.deleteOne(e3.id),
|
|
236
|
-
sdk.api.engagement_events.deleteOne(e4.id),
|
|
237
|
-
sdk.api.engagement_events.deleteOne(e5.id),
|
|
238
|
-
sdk.api.engagement_events.deleteOne(e6.id),
|
|
239
|
-
])];
|
|
238
|
+
// cleanup
|
|
239
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)]; // cleans up automatin events too
|
|
240
240
|
case 7:
|
|
241
|
-
|
|
241
|
+
// cleanup
|
|
242
|
+
_c.sent(); // cleans up automatin events too
|
|
242
243
|
return [2 /*return*/];
|
|
243
244
|
}
|
|
244
245
|
});
|
|
@@ -247,7 +248,7 @@ var badInputTests = function () { return __awaiter(void 0, void 0, void 0, funct
|
|
|
247
248
|
return __generator(this, function (_a) {
|
|
248
249
|
switch (_a.label) {
|
|
249
250
|
case 0:
|
|
250
|
-
log_header("Bad Input
|
|
251
|
+
log_header("Bad Input");
|
|
251
252
|
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"; } })];
|
|
252
253
|
case 1:
|
|
253
254
|
_a.sent();
|
|
@@ -262,7 +263,9 @@ var filterTests = function () { return __awaiter(void 0, void 0, void 0, functio
|
|
|
262
263
|
var enduser, otherEnduser;
|
|
263
264
|
return __generator(this, function (_a) {
|
|
264
265
|
switch (_a.label) {
|
|
265
|
-
case 0:
|
|
266
|
+
case 0:
|
|
267
|
+
log_header("Filter Tests");
|
|
268
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test', fields: { field1: 'value1', field2: 'value2' } })];
|
|
266
269
|
case 1:
|
|
267
270
|
enduser = _a.sent();
|
|
268
271
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'other@tellescope.com' })];
|
|
@@ -320,7 +323,9 @@ var updatesTests = function () { return __awaiter(void 0, void 0, void 0, functi
|
|
|
320
323
|
var enduser, task;
|
|
321
324
|
return __generator(this, function (_a) {
|
|
322
325
|
switch (_a.label) {
|
|
323
|
-
case 0:
|
|
326
|
+
case 0:
|
|
327
|
+
log_header("Updates Tests");
|
|
328
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'test@tellescope.com', phone: '+15555555555' })];
|
|
324
329
|
case 1:
|
|
325
330
|
enduser = _a.sent();
|
|
326
331
|
return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { phone: '+15555555552' })]; // update to new phone number
|
|
@@ -352,7 +357,7 @@ var generateEnduserAuthTests = function () { return __awaiter(void 0, void 0, vo
|
|
|
352
357
|
return __generator(this, function (_e) {
|
|
353
358
|
switch (_e.label) {
|
|
354
359
|
case 0:
|
|
355
|
-
log_header("Generated Enduser authToken
|
|
360
|
+
log_header("Generated Enduser authToken");
|
|
356
361
|
externalId = '1029f9v9sjd0as';
|
|
357
362
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: externalId })];
|
|
358
363
|
case 1:
|
|
@@ -659,7 +664,7 @@ var engagement_tests = function () { return __awaiter(void 0, void 0, void 0, fu
|
|
|
659
664
|
var journey_tests = function (queries) {
|
|
660
665
|
if (queries === void 0) { queries = sdk.api.journeys; }
|
|
661
666
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
662
|
-
var journey, journey2, withAddedState, e1, e2, engagement, es;
|
|
667
|
+
var journey, journey2, updated, fetchAfterDeletion, withAddedState, e1, e2, engagement, es;
|
|
663
668
|
var _a, _b, _c, _d, _e, _f;
|
|
664
669
|
return __generator(this, function (_g) {
|
|
665
670
|
switch (_g.label) {
|
|
@@ -675,115 +680,131 @@ var journey_tests = function (queries) {
|
|
|
675
680
|
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'Test Journey 2' })];
|
|
676
681
|
case 4:
|
|
677
682
|
journey2 = _g.sent();
|
|
683
|
+
return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, {
|
|
684
|
+
states: [
|
|
685
|
+
{ name: 'Delete Me 1', priority: 'N/A' },
|
|
686
|
+
{ name: 'Delete Me 2', priority: 'N/A' },
|
|
687
|
+
]
|
|
688
|
+
})];
|
|
689
|
+
case 5:
|
|
690
|
+
_g.sent();
|
|
691
|
+
return [4 /*yield*/, sdk.api.journeys.delete_states({ id: journey.id, states: ['Delete Me 1', 'Delete Me 2'] })];
|
|
692
|
+
case 6:
|
|
693
|
+
updated = (_g.sent()).updated;
|
|
694
|
+
assert(!!updated.id && updated.states.length === 1 && updated.states[0].name === 'New', 'delete states fail on returned update', 'delete states returns updated value');
|
|
695
|
+
return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
|
|
696
|
+
case 7:
|
|
697
|
+
fetchAfterDeletion = _g.sent();
|
|
698
|
+
assert(fetchAfterDeletion.states.length === 1 && fetchAfterDeletion.states[0].name === 'New', 'delete states fail', 'delete states worked');
|
|
678
699
|
assert(journey.defaultState === 'New', 'defaultState not set on create', 'journey-create - defaultState initialized');
|
|
679
700
|
assert(journey.states[0].name === 'New', 'defaultState not set on create', 'journey-create - states initialized');
|
|
680
701
|
return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, { states: [{ name: 'ToDuplicate', priority: "N/A" }] })];
|
|
681
|
-
case
|
|
702
|
+
case 8:
|
|
682
703
|
_g.sent();
|
|
683
704
|
return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
|
|
684
|
-
case
|
|
705
|
+
case 9:
|
|
685
706
|
withAddedState = _g.sent();
|
|
686
707
|
assert(withAddedState.states.length === 2 && withAddedState.states.find(function (s) { return s.name === 'ToDuplicate'; }) !== undefined, 'new state added', 'journey-update - push state change');
|
|
687
708
|
return [4 /*yield*/, 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'; } })];
|
|
688
|
-
case
|
|
709
|
+
case 10:
|
|
689
710
|
_g.sent();
|
|
690
711
|
return [4 /*yield*/, 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'; } })];
|
|
691
|
-
case
|
|
712
|
+
case 11:
|
|
692
713
|
_g.sent();
|
|
693
714
|
return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, { defaultState: 'Added', states: [{ name: 'Added', priority: "N/A" }, { name: "Other", priority: "N/A" }] }, { replaceObjectFields: true })];
|
|
694
|
-
case
|
|
715
|
+
case 12:
|
|
695
716
|
_g.sent();
|
|
696
717
|
return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
|
|
697
|
-
case
|
|
718
|
+
case 13:
|
|
698
719
|
withAddedState = _g.sent();
|
|
699
720
|
assert(withAddedState.states.length === 2 && withAddedState.states.find(function (s) { return s.name === 'Added'; }) !== undefined
|
|
700
721
|
&& withAddedState.defaultState === 'Added', 'duplicate state not added', 'journey-update - replace states');
|
|
701
722
|
return [4 /*yield*/, 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'; } })];
|
|
702
|
-
case
|
|
723
|
+
case 14:
|
|
703
724
|
_g.sent();
|
|
704
725
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'journeyunset1@tellescope.com', journeys: (_a = {}, _a[journey.id] = 'Added', _a) })];
|
|
705
|
-
case
|
|
726
|
+
case 15:
|
|
706
727
|
e1 = _g.sent();
|
|
707
728
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'journeyunset2@tellescope.com', journeys: (_b = {}, _b[journey.id] = 'Added', _b[journey2.id] = 'New', _b) })];
|
|
708
|
-
case
|
|
729
|
+
case 16:
|
|
709
730
|
e2 = _g.sent();
|
|
710
731
|
return [4 /*yield*/, async_test("create-enduser - invalid journey id", function () {
|
|
711
732
|
var _a;
|
|
712
733
|
return sdk.api.endusers.createOne({ email: 'journeyunset3@tellescope.com', journeys: (_a = {}, _a[e1.id] = 'Added', _a) });
|
|
713
734
|
}, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
|
|
714
|
-
case
|
|
735
|
+
case 17:
|
|
715
736
|
_g.sent();
|
|
716
737
|
return [4 /*yield*/, async_test("update-enduser - invalid journey id", function () {
|
|
717
738
|
var _a;
|
|
718
739
|
return sdk.api.endusers.updateOne(e1.id, { journeys: (_a = {}, _a[e1.id] = 'Added', _a) });
|
|
719
740
|
}, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
|
|
720
|
-
case
|
|
741
|
+
case 18:
|
|
721
742
|
_g.sent();
|
|
722
743
|
return [4 /*yield*/, async_test("update-enduser - one invalid journey id", function () {
|
|
723
744
|
var _a;
|
|
724
745
|
return sdk.api.endusers.updateOne(e1.id, { journeys: (_a = {}, _a[journey.id] = 'Added', _a[e1.id] = 'Added', _a) });
|
|
725
746
|
}, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
|
|
726
|
-
case
|
|
747
|
+
case 19:
|
|
727
748
|
_g.sent();
|
|
728
749
|
return [4 /*yield*/, sdk.api.endusers.updateOne(e1.id, { journeys: (_c = {}, _c[journey.id] = 'Other', _c) })]; // valid state change
|
|
729
|
-
case
|
|
750
|
+
case 20:
|
|
730
751
|
_g.sent(); // valid state change
|
|
731
752
|
return [4 /*yield*/, sdk.api.endusers.updateOne(e1.id, { journeys: (_d = {}, _d[journey.id] = 'Added', _d) })]; // change back
|
|
732
|
-
case
|
|
753
|
+
case 21:
|
|
733
754
|
_g.sent(); // change back
|
|
734
755
|
return [4 /*yield*/, wait(undefined, 25)]; // wait for side effects to add engagement
|
|
735
|
-
case
|
|
756
|
+
case 22:
|
|
736
757
|
_g.sent(); // wait for side effects to add engagement
|
|
737
758
|
return [4 /*yield*/, sdk.api.engagement_events.getSome()];
|
|
738
|
-
case
|
|
759
|
+
case 23:
|
|
739
760
|
engagement = _g.sent();
|
|
740
761
|
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');
|
|
741
762
|
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) }])];
|
|
742
|
-
case
|
|
763
|
+
case 24:
|
|
743
764
|
es = (_g.sent()).created;
|
|
744
765
|
return [4 /*yield*/, sdk.api.engagement_events.getSome()];
|
|
745
|
-
case
|
|
766
|
+
case 25:
|
|
746
767
|
engagement = _g.sent();
|
|
747
768
|
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)');
|
|
748
769
|
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)');
|
|
749
770
|
return [4 /*yield*/, queries.updateOne(journey.id, { states: [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }] }, { replaceObjectFields: true })];
|
|
750
|
-
case
|
|
771
|
+
case 26:
|
|
751
772
|
_g.sent();
|
|
752
773
|
return [4 /*yield*/, async_test("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return objects_equivalent(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })];
|
|
753
|
-
case
|
|
774
|
+
case 27:
|
|
754
775
|
_g.sent();
|
|
755
776
|
return [4 /*yield*/, async_test("journey-updateState", function () { return queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' } }); }, passOnVoid)];
|
|
756
|
-
case
|
|
777
|
+
case 28:
|
|
757
778
|
_g.sent();
|
|
758
779
|
return [4 /*yield*/, wait(undefined, 25)]; // wait for side effects to update endusers
|
|
759
|
-
case
|
|
780
|
+
case 29:
|
|
760
781
|
_g.sent(); // wait for side effects to update endusers
|
|
761
782
|
return [4 /*yield*/, async_test("journey-updateState verify propagation to enduser 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) {
|
|
762
783
|
var _a;
|
|
763
784
|
return objects_equivalent(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a));
|
|
764
785
|
} })];
|
|
765
|
-
case
|
|
786
|
+
case 30:
|
|
766
787
|
_g.sent();
|
|
767
788
|
return [4 /*yield*/, async_test("journey-updateState verify propagation to enduser 2", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
|
|
768
789
|
var _a;
|
|
769
790
|
return objects_equivalent(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a[journey2.id] = 'New', _a));
|
|
770
791
|
} })];
|
|
771
|
-
case
|
|
792
|
+
case 31:
|
|
772
793
|
_g.sent();
|
|
773
794
|
return [4 /*yield*/, queries.deleteOne(journey.id)];
|
|
774
|
-
case
|
|
795
|
+
case 32:
|
|
775
796
|
_g.sent();
|
|
776
797
|
return [4 /*yield*/, wait(undefined, 25)]; // wait for side effects to update endusers
|
|
777
|
-
case
|
|
798
|
+
case 33:
|
|
778
799
|
_g.sent(); // wait for side effects to update endusers
|
|
779
800
|
return [4 /*yield*/, async_test("journey-delete - corresponding enduser journeys are unset 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { return objects_equivalent(e.journeys, {}); } })];
|
|
780
|
-
case
|
|
801
|
+
case 34:
|
|
781
802
|
_g.sent();
|
|
782
803
|
return [4 /*yield*/, async_test("journey-delete - corresponding enduser journeys are unset, others left", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
|
|
783
804
|
var _a;
|
|
784
805
|
return objects_equivalent(e.journeys, (_a = {}, _a[journey2.id] = 'New', _a));
|
|
785
806
|
} })];
|
|
786
|
-
case
|
|
807
|
+
case 35:
|
|
787
808
|
_g.sent();
|
|
788
809
|
return [2 /*return*/];
|
|
789
810
|
}
|
|
@@ -806,9 +827,9 @@ var tasks_tests = function (queries) {
|
|
|
806
827
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(e.id)];
|
|
807
828
|
case 3:
|
|
808
829
|
_a.sent();
|
|
809
|
-
return [4 /*yield*/, wait(undefined,
|
|
830
|
+
return [4 /*yield*/, wait(undefined, 100)]; // allow dependency updates to fire in background (there are a lot for endusers)
|
|
810
831
|
case 4:
|
|
811
|
-
_a.sent(); // allow dependency updates to fire in background
|
|
832
|
+
_a.sent(); // allow dependency updates to fire in background (there are a lot for endusers)
|
|
812
833
|
return [4 /*yield*/, async_test("get-task - enduserId unset on enduser deletion", function () { return queries.getOne(t.id); }, { onResult: function (t) { return t.enduserId === undefined; } })];
|
|
813
834
|
case 5:
|
|
814
835
|
_a.sent();
|
|
@@ -1151,8 +1172,11 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
1151
1172
|
return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
|
|
1152
1173
|
case 23:
|
|
1153
1174
|
_a.sent();
|
|
1154
|
-
return [4 /*yield*/,
|
|
1175
|
+
return [4 /*yield*/, wait(undefined, 250)];
|
|
1155
1176
|
case 24:
|
|
1177
|
+
_a.sent();
|
|
1178
|
+
return [4 /*yield*/, async_test("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id); }, { onResult: function (c) { return c.replyId === null; } })];
|
|
1179
|
+
case 25:
|
|
1156
1180
|
_a.sent();
|
|
1157
1181
|
return [2 /*return*/];
|
|
1158
1182
|
}
|
|
@@ -1164,6 +1188,7 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
1164
1188
|
return __generator(this, function (_j) {
|
|
1165
1189
|
switch (_j.label) {
|
|
1166
1190
|
case 0:
|
|
1191
|
+
log_header("Enduser Access");
|
|
1167
1192
|
email = 'enduser@tellescope.com';
|
|
1168
1193
|
password = 'testpassword';
|
|
1169
1194
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
|
|
@@ -1266,7 +1291,7 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
1266
1291
|
return [4 /*yield*/, sdk.api.tickets.createOne({ enduserId: PLACEHOLDER_ID, title: "Inaccessible ticket" })];
|
|
1267
1292
|
case 15:
|
|
1268
1293
|
ticketInaccessible = _j.sent();
|
|
1269
|
-
return [4 /*yield*/, 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
|
+
return [4 /*yield*/, 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; } })];
|
|
1270
1295
|
case 16:
|
|
1271
1296
|
_j.sent();
|
|
1272
1297
|
return [4 /*yield*/, 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; } })];
|
|
@@ -1343,6 +1368,7 @@ var enduser_session_tests = function () { return __awaiter(void 0, void 0, void
|
|
|
1343
1368
|
return __generator(this, function (_a) {
|
|
1344
1369
|
switch (_a.label) {
|
|
1345
1370
|
case 0:
|
|
1371
|
+
log_header("Enduser Session");
|
|
1346
1372
|
email = 'enduser@tellescope.com';
|
|
1347
1373
|
password = 'testpassword';
|
|
1348
1374
|
return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
|
|
@@ -1470,6 +1496,128 @@ var calendar_events_tests = function () { return __awaiter(void 0, void 0, void
|
|
|
1470
1496
|
}
|
|
1471
1497
|
});
|
|
1472
1498
|
}); };
|
|
1499
|
+
var automation_events_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1500
|
+
var state1, state2, journey, testAction, a1, a2, a3, enduser;
|
|
1501
|
+
var _a, _b;
|
|
1502
|
+
return __generator(this, function (_c) {
|
|
1503
|
+
switch (_c.label) {
|
|
1504
|
+
case 0:
|
|
1505
|
+
log_header("Automation Events");
|
|
1506
|
+
state1 = "State 1", state2 = "State 2";
|
|
1507
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({
|
|
1508
|
+
title: "Automations Test",
|
|
1509
|
+
defaultState: state1,
|
|
1510
|
+
states: [
|
|
1511
|
+
{ name: state1, priority: 'N/A' },
|
|
1512
|
+
{ name: state2, priority: 'N/A' },
|
|
1513
|
+
]
|
|
1514
|
+
})];
|
|
1515
|
+
case 1:
|
|
1516
|
+
journey = _c.sent();
|
|
1517
|
+
return [4 /*yield*/, async_test("enterState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
|
|
1518
|
+
journeyId: journey.id,
|
|
1519
|
+
event: {
|
|
1520
|
+
type: "enterState",
|
|
1521
|
+
info: { state: state1, journeyId: journey.id }
|
|
1522
|
+
},
|
|
1523
|
+
action: {
|
|
1524
|
+
type: 'updateStateForJourney',
|
|
1525
|
+
info: { state: state1, journeyId: journey.id },
|
|
1526
|
+
},
|
|
1527
|
+
}); }, { shouldError: true, onError: function (e) { return e.message === 'updateStateForJourney cannot have the same journey and state as the enterState event'; } })];
|
|
1528
|
+
case 2:
|
|
1529
|
+
_c.sent();
|
|
1530
|
+
return [4 /*yield*/, async_test("leaveState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
|
|
1531
|
+
journeyId: journey.id,
|
|
1532
|
+
event: {
|
|
1533
|
+
type: "leaveState",
|
|
1534
|
+
info: { state: state1, journeyId: journey.id }
|
|
1535
|
+
},
|
|
1536
|
+
action: {
|
|
1537
|
+
type: 'updateStateForJourney',
|
|
1538
|
+
info: { state: state1, journeyId: journey.id },
|
|
1539
|
+
},
|
|
1540
|
+
}); }, { shouldError: true, onError: function (e) { return e.message === 'updateStateForJourney cannot have the same journey and state as the leaveState event'; } })];
|
|
1541
|
+
case 3:
|
|
1542
|
+
_c.sent();
|
|
1543
|
+
testAction = {
|
|
1544
|
+
type: 'sendWebhook',
|
|
1545
|
+
info: { message: 'test' }
|
|
1546
|
+
};
|
|
1547
|
+
return [4 /*yield*/, sdk.api.event_automations.createOne({
|
|
1548
|
+
journeyId: journey.id,
|
|
1549
|
+
event: {
|
|
1550
|
+
type: "enterState",
|
|
1551
|
+
info: { state: state1, journeyId: journey.id }
|
|
1552
|
+
},
|
|
1553
|
+
action: testAction,
|
|
1554
|
+
})];
|
|
1555
|
+
case 4:
|
|
1556
|
+
a1 = _c.sent();
|
|
1557
|
+
return [4 /*yield*/, sdk.api.event_automations.createOne({
|
|
1558
|
+
journeyId: journey.id,
|
|
1559
|
+
event: {
|
|
1560
|
+
type: "leaveState",
|
|
1561
|
+
info: { state: state1, journeyId: journey.id }
|
|
1562
|
+
},
|
|
1563
|
+
action: testAction,
|
|
1564
|
+
})];
|
|
1565
|
+
case 5:
|
|
1566
|
+
a2 = _c.sent();
|
|
1567
|
+
return [4 /*yield*/, sdk.api.event_automations.createOne({
|
|
1568
|
+
journeyId: journey.id,
|
|
1569
|
+
event: {
|
|
1570
|
+
type: "enterState",
|
|
1571
|
+
info: { state: state2, journeyId: journey.id }
|
|
1572
|
+
},
|
|
1573
|
+
action: testAction,
|
|
1574
|
+
})];
|
|
1575
|
+
case 6:
|
|
1576
|
+
a3 = _c.sent();
|
|
1577
|
+
return [4 /*yield*/, async_test("Cannot insert duplicate event/action pair", function () { return sdk.api.event_automations.createOne({
|
|
1578
|
+
journeyId: journey.id,
|
|
1579
|
+
event: {
|
|
1580
|
+
type: "enterState",
|
|
1581
|
+
info: { state: state2, journeyId: journey.id }
|
|
1582
|
+
},
|
|
1583
|
+
action: testAction,
|
|
1584
|
+
}); }, { shouldError: true, onError: function (e) { return e.message === UniquenessViolationMessage; } })
|
|
1585
|
+
// trigger a1 on create
|
|
1586
|
+
];
|
|
1587
|
+
case 7:
|
|
1588
|
+
_c.sent();
|
|
1589
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({
|
|
1590
|
+
email: "automations@tellescope.com",
|
|
1591
|
+
journeys: (_a = {}, _a[journey.id] = journey.defaultState, _a)
|
|
1592
|
+
})
|
|
1593
|
+
// trigger a2 and a3 by leaving state 1 an going to state 2
|
|
1594
|
+
];
|
|
1595
|
+
case 8:
|
|
1596
|
+
enduser = _c.sent();
|
|
1597
|
+
// trigger a2 and a3 by leaving state 1 an going to state 2
|
|
1598
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { journeys: (_b = {}, _b[journey.id] = state2, _b) })];
|
|
1599
|
+
case 9:
|
|
1600
|
+
// trigger a2 and a3 by leaving state 1 an going to state 2
|
|
1601
|
+
_c.sent();
|
|
1602
|
+
return [4 /*yield*/, async_test("Automation events triggered correctly",
|
|
1603
|
+
// () => sdk.api.automation_endusers.getSome(),
|
|
1604
|
+
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; } })
|
|
1605
|
+
// cleanup
|
|
1606
|
+
];
|
|
1607
|
+
case 10:
|
|
1608
|
+
_c.sent();
|
|
1609
|
+
// cleanup
|
|
1610
|
+
return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id)]; // automation events deleted as side effect
|
|
1611
|
+
case 11:
|
|
1612
|
+
// cleanup
|
|
1613
|
+
_c.sent(); // automation events deleted as side effect
|
|
1614
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
|
|
1615
|
+
case 12:
|
|
1616
|
+
_c.sent();
|
|
1617
|
+
return [2 /*return*/];
|
|
1618
|
+
}
|
|
1619
|
+
});
|
|
1620
|
+
}); };
|
|
1473
1621
|
var tests = {
|
|
1474
1622
|
chats: chat_tests,
|
|
1475
1623
|
endusers: enduser_tests,
|
|
@@ -1490,6 +1638,9 @@ var tests = {
|
|
|
1490
1638
|
form_responses: function () { },
|
|
1491
1639
|
calendar_events: calendar_events_tests,
|
|
1492
1640
|
webhooks: function () { },
|
|
1641
|
+
event_automations: automation_events_tests,
|
|
1642
|
+
sequence_automations: function () { },
|
|
1643
|
+
automation_endusers: function () { },
|
|
1493
1644
|
};
|
|
1494
1645
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1495
1646
|
var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
|
|
@@ -1539,7 +1690,7 @@ var tests = {
|
|
|
1539
1690
|
err_1 = _h.sent();
|
|
1540
1691
|
console.error("Failed during custom test");
|
|
1541
1692
|
console.error(err_1);
|
|
1542
|
-
process.exit();
|
|
1693
|
+
process.exit(1);
|
|
1543
1694
|
return [3 /*break*/, 13];
|
|
1544
1695
|
case 13:
|
|
1545
1696
|
_a = [];
|
|
@@ -1585,6 +1736,7 @@ var tests = {
|
|
|
1585
1736
|
err_2 = _h.sent();
|
|
1586
1737
|
console.error("Error running test:");
|
|
1587
1738
|
console.error(err_2);
|
|
1739
|
+
process.exit(1);
|
|
1588
1740
|
return [3 /*break*/, 22];
|
|
1589
1741
|
case 22:
|
|
1590
1742
|
_e++;
|