@tellescope/sdk 1.1.5 → 1.2.2
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 +53 -1
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/enduser.js +5 -0
- package/lib/cjs/enduser.js.map +1 -1
- package/lib/cjs/sdk.d.ts +53 -0
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +3 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/session.d.ts.map +1 -1
- package/lib/cjs/session.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +606 -85
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +53 -1
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/enduser.js +5 -0
- package/lib/esm/enduser.js.map +1 -1
- package/lib/esm/sdk.d.ts +53 -0
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +3 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/session.d.ts +0 -1
- package/lib/esm/session.d.ts.map +1 -1
- package/lib/esm/session.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +606 -85
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -10
- package/src/enduser.ts +17 -2
- package/src/sdk.ts +9 -0
- package/src/session.ts +1 -0
- package/src/tests/tests.ts +431 -12
package/lib/esm/tests/tests.js
CHANGED
|
@@ -1104,36 +1104,58 @@ var chat_room_tests = function () { return __awaiter(void 0, void 0, void 0, fun
|
|
|
1104
1104
|
});
|
|
1105
1105
|
}); };
|
|
1106
1106
|
var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1107
|
-
var sdk2, room, chat, chat2, sharedRoom, sharedChat, sharedChat2, roomNull, chatNull, chat2Null;
|
|
1107
|
+
var sdk2, enduser, room, chat, chat2, enduserRoom, sharedRoom, sharedChat, sharedChat2, roomNull, chatNull, chat2Null;
|
|
1108
1108
|
return __generator(this, function (_a) {
|
|
1109
1109
|
switch (_a.label) {
|
|
1110
1110
|
case 0:
|
|
1111
|
+
log_header("Chat");
|
|
1111
1112
|
sdk2 = new Session({ host: host });
|
|
1112
1113
|
return [4 /*yield*/, sdk2.authenticate(nonAdminEmail, nonAdminPassword)]; // non-admin has access restrictions we want to test
|
|
1113
1114
|
case 1:
|
|
1114
1115
|
_a.sent(); // non-admin has access restrictions we want to test
|
|
1115
|
-
return [4 /*yield*/, sdk.api.
|
|
1116
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
|
|
1116
1117
|
case 2:
|
|
1118
|
+
enduser = _a.sent();
|
|
1119
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: enduser.id, password: password }).catch(console.error)];
|
|
1120
|
+
case 3:
|
|
1121
|
+
_a.sent();
|
|
1122
|
+
return [4 /*yield*/, enduserSDK.authenticate(email, password).catch(console.error)];
|
|
1123
|
+
case 4:
|
|
1124
|
+
_a.sent();
|
|
1125
|
+
return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })];
|
|
1126
|
+
case 5:
|
|
1117
1127
|
room = _a.sent();
|
|
1118
1128
|
return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello!" })];
|
|
1119
|
-
case
|
|
1129
|
+
case 6:
|
|
1120
1130
|
chat = _a.sent();
|
|
1121
|
-
return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })
|
|
1131
|
+
return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: "Hello..." })];
|
|
1132
|
+
case 7:
|
|
1133
|
+
chat2 = _a.sent();
|
|
1134
|
+
return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId], enduserIds: [enduser.id] })];
|
|
1135
|
+
case 8:
|
|
1136
|
+
enduserRoom = _a.sent();
|
|
1137
|
+
return [4 /*yield*/, sdk.api.chats.createOne({ roomId: enduserRoom.id, message: 'enduser' })];
|
|
1138
|
+
case 9:
|
|
1139
|
+
_a.sent();
|
|
1140
|
+
return [4 /*yield*/, enduserSDK.api.chats.createOne({ roomId: enduserRoom.id, message: 'enduser' })];
|
|
1141
|
+
case 10:
|
|
1142
|
+
_a.sent();
|
|
1143
|
+
return [4 /*yield*/, async_test("get-chats for enduser", function () { return enduserSDK.api.chats.getSome({ filter: { roomId: enduserRoom.id } }); }, { onResult: function (c) { return (c === null || c === void 0 ? void 0 : c.length) === 2; } })
|
|
1122
1144
|
// await async_test(
|
|
1123
1145
|
// `get-chat (without filter)`,
|
|
1124
1146
|
// () => sdk.api.chats.getOne(chat.id),
|
|
1125
1147
|
// { shouldError: true, onError: () => true }
|
|
1126
1148
|
// )
|
|
1127
1149
|
];
|
|
1128
|
-
case
|
|
1129
|
-
|
|
1150
|
+
case 11:
|
|
1151
|
+
_a.sent();
|
|
1130
1152
|
// await async_test(
|
|
1131
1153
|
// `get-chat (without filter)`,
|
|
1132
1154
|
// () => sdk.api.chats.getOne(chat.id),
|
|
1133
1155
|
// { shouldError: true, onError: () => true }
|
|
1134
1156
|
// )
|
|
1135
1157
|
return [4 /*yield*/, async_test("get-chats (without filter)", function () { return sdk.api.chats.getSome({}); }, { shouldError: true, onError: function () { return true; } })];
|
|
1136
|
-
case
|
|
1158
|
+
case 12:
|
|
1137
1159
|
// await async_test(
|
|
1138
1160
|
// `get-chat (without filter)`,
|
|
1139
1161
|
// () => sdk.api.chats.getOne(chat.id),
|
|
@@ -1141,10 +1163,10 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
1141
1163
|
// )
|
|
1142
1164
|
_a.sent();
|
|
1143
1165
|
return [4 /*yield*/, async_test("get-chats (with filter)", function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, { onResult: function (c) { return (c === null || c === void 0 ? void 0 : c.length) === 2; } })];
|
|
1144
|
-
case
|
|
1166
|
+
case 13:
|
|
1145
1167
|
_a.sent();
|
|
1146
1168
|
return [4 /*yield*/, async_test("get-chats not allowed", function () { return sdk2.api.chats.getSome({ filter: { roomId: room.id } }); }, { shouldError: true, onError: function (e) { return e.message === 'You do not have permission to access this resource'; } })];
|
|
1147
|
-
case
|
|
1169
|
+
case 14:
|
|
1148
1170
|
_a.sent();
|
|
1149
1171
|
return [4 /*yield*/, async_test("get-chats admin", function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, { onResult: function () { return true; } })
|
|
1150
1172
|
// currently disabled endpoint altogether
|
|
@@ -1154,7 +1176,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
1154
1176
|
// { shouldError: true, onError: e => e.message === 'You do not have permission to access this resource' }
|
|
1155
1177
|
// )
|
|
1156
1178
|
];
|
|
1157
|
-
case
|
|
1179
|
+
case 15:
|
|
1158
1180
|
_a.sent();
|
|
1159
1181
|
// currently disabled endpoint altogether
|
|
1160
1182
|
// await async_test(
|
|
@@ -1170,7 +1192,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
1170
1192
|
// { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
|
|
1171
1193
|
// )
|
|
1172
1194
|
];
|
|
1173
|
-
case
|
|
1195
|
+
case 16:
|
|
1174
1196
|
// currently disabled endpoint altogether
|
|
1175
1197
|
// await async_test(
|
|
1176
1198
|
// `update-chat not allowed`,
|
|
@@ -1185,7 +1207,7 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
1185
1207
|
// { shouldError: true, onError: e => e.message === 'Error parsing field updates: roomId is not valid for updates' }
|
|
1186
1208
|
// )
|
|
1187
1209
|
return [4 /*yield*/, sdk.api.chat_rooms.deleteOne(room.id)];
|
|
1188
|
-
case
|
|
1210
|
+
case 17:
|
|
1189
1211
|
// currently disabled endpoint altogether
|
|
1190
1212
|
// await async_test(
|
|
1191
1213
|
// `update-chat can't update roomId`,
|
|
@@ -1194,54 +1216,60 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
|
|
|
1194
1216
|
// )
|
|
1195
1217
|
_a.sent();
|
|
1196
1218
|
return [4 /*yield*/, wait(undefined, 25)];
|
|
1197
|
-
case
|
|
1219
|
+
case 18:
|
|
1198
1220
|
_a.sent();
|
|
1199
1221
|
return [4 /*yield*/, async_test("get-chat (deleted as dependency of room 1)", function () { return sdk.api.chats.getOne(chat.id); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
|
|
1200
|
-
case
|
|
1222
|
+
case 19:
|
|
1201
1223
|
_a.sent();
|
|
1202
1224
|
return [4 /*yield*/, async_test("get-chat (deleted as dependency of room 2)", function () { return sdk.api.chats.getOne(chat2.id); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })];
|
|
1203
|
-
case
|
|
1225
|
+
case 20:
|
|
1204
1226
|
_a.sent();
|
|
1205
1227
|
return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId, sdk2.userInfo.id] })];
|
|
1206
|
-
case
|
|
1228
|
+
case 21:
|
|
1207
1229
|
sharedRoom = _a.sent();
|
|
1208
1230
|
return [4 /*yield*/, sdk.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello!", })];
|
|
1209
|
-
case
|
|
1231
|
+
case 22:
|
|
1210
1232
|
sharedChat = _a.sent();
|
|
1211
1233
|
return [4 /*yield*/, sdk2.api.chats.createOne({ roomId: sharedRoom.id, message: "Hello there!", })];
|
|
1212
|
-
case
|
|
1234
|
+
case 23:
|
|
1213
1235
|
sharedChat2 = _a.sent();
|
|
1214
1236
|
return [4 /*yield*/, async_test("get-chat (shared, user1)", function () { return sdk.api.chats.getOne(sharedChat.id); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
|
|
1215
|
-
case
|
|
1237
|
+
case 24:
|
|
1216
1238
|
_a.sent();
|
|
1217
1239
|
return [4 /*yield*/, async_test("get-chat (shared, user2)", function () { return sdk2.api.chats.getOne(sharedChat.id); }, { onResult: function (r) { return r.id === sharedChat.id; } })];
|
|
1218
|
-
case
|
|
1240
|
+
case 25:
|
|
1219
1241
|
_a.sent();
|
|
1220
1242
|
return [4 /*yield*/, async_test("get-chats (shared, user1)", function () { return sdk.api.chats.getSome({ filter: { roomId: sharedRoom.id } }); }, { onResult: function (cs) { return cs.length === 2 && !!cs.find(function (c) { return c.id === sharedChat.id; }) && !!cs.find(function (c) { return c.id === sharedChat2.id; }); } })];
|
|
1221
|
-
case
|
|
1243
|
+
case 26:
|
|
1222
1244
|
_a.sent();
|
|
1223
1245
|
return [4 /*yield*/, async_test("get-chats (shared, user2)", function () { return sdk2.api.chats.getSome({ filter: { roomId: sharedRoom.id } }); }, { onResult: function (cs) { return cs.length === 2 && !!cs.find(function (c) { return c.id === sharedChat.id; }) && !!cs.find(function (c) { return c.id === sharedChat2.id; }); } })
|
|
1224
1246
|
// test setNull dependency
|
|
1225
1247
|
];
|
|
1226
|
-
case
|
|
1248
|
+
case 27:
|
|
1227
1249
|
_a.sent();
|
|
1228
1250
|
return [4 /*yield*/, sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })];
|
|
1229
|
-
case
|
|
1251
|
+
case 28:
|
|
1230
1252
|
roomNull = _a.sent();
|
|
1231
1253
|
return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello!" })];
|
|
1232
|
-
case
|
|
1254
|
+
case 29:
|
|
1233
1255
|
chatNull = _a.sent();
|
|
1234
1256
|
return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello...", replyId: chatNull.id })];
|
|
1235
|
-
case
|
|
1257
|
+
case 30:
|
|
1236
1258
|
chat2Null = _a.sent();
|
|
1237
1259
|
return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
|
|
1238
|
-
case
|
|
1260
|
+
case 31:
|
|
1239
1261
|
_a.sent();
|
|
1240
1262
|
return [4 /*yield*/, wait(undefined, 250)];
|
|
1241
|
-
case
|
|
1263
|
+
case 32:
|
|
1242
1264
|
_a.sent();
|
|
1243
1265
|
return [4 /*yield*/, async_test("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id); }, { onResult: function (c) { return c.replyId === null; } })];
|
|
1244
|
-
case
|
|
1266
|
+
case 33:
|
|
1267
|
+
_a.sent();
|
|
1268
|
+
return [4 /*yield*/, Promise.all([
|
|
1269
|
+
sdk.api.endusers.deleteOne(enduser.id),
|
|
1270
|
+
sdk.api.chat_rooms.deleteOne(enduserRoom.id),
|
|
1271
|
+
])];
|
|
1272
|
+
case 34:
|
|
1245
1273
|
_a.sent();
|
|
1246
1274
|
return [2 /*return*/];
|
|
1247
1275
|
}
|
|
@@ -1609,15 +1637,366 @@ var calendar_events_tests = function () { return __awaiter(void 0, void 0, void
|
|
|
1609
1637
|
}
|
|
1610
1638
|
});
|
|
1611
1639
|
}); };
|
|
1640
|
+
var formEventTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1641
|
+
var enduser, journey, form, field, triggerStep, acNoStep, acStep, testResponse, formResponse;
|
|
1642
|
+
return __generator(this, function (_a) {
|
|
1643
|
+
switch (_a.label) {
|
|
1644
|
+
case 0:
|
|
1645
|
+
log_header("Form Events");
|
|
1646
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'deletemeee@tellescope.com' })];
|
|
1647
|
+
case 1:
|
|
1648
|
+
enduser = _a.sent();
|
|
1649
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'test journey ' })];
|
|
1650
|
+
case 2:
|
|
1651
|
+
journey = _a.sent();
|
|
1652
|
+
return [4 /*yield*/, sdk.api.forms.createOne({
|
|
1653
|
+
title: 'test form',
|
|
1654
|
+
})];
|
|
1655
|
+
case 3:
|
|
1656
|
+
form = _a.sent();
|
|
1657
|
+
return [4 /*yield*/, sdk.api.form_fields.createOne({
|
|
1658
|
+
formId: form.id,
|
|
1659
|
+
title: 'question',
|
|
1660
|
+
type: 'string',
|
|
1661
|
+
previousFields: [{ type: 'root', info: {} }]
|
|
1662
|
+
})];
|
|
1663
|
+
case 4:
|
|
1664
|
+
field = _a.sent();
|
|
1665
|
+
return [4 /*yield*/, sdk.api.automation_steps.createOne({
|
|
1666
|
+
journeyId: journey.id,
|
|
1667
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
1668
|
+
// in practice, this would send a form, so that the next step(s) could handle the response
|
|
1669
|
+
// but we don't want to send emails in testing, and can still attach this Id to a form response to test a trigger
|
|
1670
|
+
action: {
|
|
1671
|
+
type: 'setEnduserStatus',
|
|
1672
|
+
info: { status: 'placeholder' },
|
|
1673
|
+
},
|
|
1674
|
+
})];
|
|
1675
|
+
case 5:
|
|
1676
|
+
triggerStep = _a.sent();
|
|
1677
|
+
return [4 /*yield*/, sdk.api.automation_steps.createOne({
|
|
1678
|
+
journeyId: journey.id,
|
|
1679
|
+
event: {
|
|
1680
|
+
type: 'formResponse',
|
|
1681
|
+
info: { automationStepId: triggerStep.id }
|
|
1682
|
+
},
|
|
1683
|
+
action: {
|
|
1684
|
+
type: 'setEnduserStatus',
|
|
1685
|
+
info: { status: 'placeholder' },
|
|
1686
|
+
},
|
|
1687
|
+
})];
|
|
1688
|
+
case 6:
|
|
1689
|
+
_a.sent();
|
|
1690
|
+
return [4 /*yield*/, sdk.api.form_responses.prepare_form_response({ formId: form.id, enduserId: enduser.id })];
|
|
1691
|
+
case 7:
|
|
1692
|
+
acNoStep = (_a.sent()).accessCode;
|
|
1693
|
+
return [4 /*yield*/, sdk.api.form_responses.prepare_form_response({ formId: form.id, enduserId: enduser.id })];
|
|
1694
|
+
case 8:
|
|
1695
|
+
acStep = (_a.sent()).accessCode;
|
|
1696
|
+
testResponse = {
|
|
1697
|
+
answer: {
|
|
1698
|
+
type: 'string',
|
|
1699
|
+
value: 'answer'
|
|
1700
|
+
},
|
|
1701
|
+
fieldId: field.id,
|
|
1702
|
+
fieldTitle: field.title,
|
|
1703
|
+
};
|
|
1704
|
+
return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: acNoStep, responses: [testResponse] })];
|
|
1705
|
+
case 9:
|
|
1706
|
+
formResponse = (_a.sent()).formResponse;
|
|
1707
|
+
assert(objects_equivalent(formResponse.responses, [testResponse]), 'bad form resonse returned', 'form response returned correctly');
|
|
1708
|
+
return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: acStep, automationStepId: triggerStep.id, responses: [testResponse] })];
|
|
1709
|
+
case 10:
|
|
1710
|
+
_a.sent();
|
|
1711
|
+
return [4 /*yield*/, wait(undefined, 250)]; // allow background creation with generous pause
|
|
1712
|
+
case 11:
|
|
1713
|
+
_a.sent(); // allow background creation with generous pause
|
|
1714
|
+
return [4 /*yield*/, async_test("Without automation stepId, form response handler is not triggered", function () { return sdk.api.automated_actions.getSome(); }, { onResult: function (steps) { return steps.length === 1; } /* NOT 2 or more */ })];
|
|
1715
|
+
case 12:
|
|
1716
|
+
_a.sent();
|
|
1717
|
+
return [4 /*yield*/, Promise.all([
|
|
1718
|
+
sdk.api.forms.deleteOne(form.id),
|
|
1719
|
+
sdk.api.journeys.deleteOne(journey.id),
|
|
1720
|
+
sdk.api.endusers.deleteOne(enduser.id)
|
|
1721
|
+
])];
|
|
1722
|
+
case 13:
|
|
1723
|
+
_a.sent();
|
|
1724
|
+
return [2 /*return*/];
|
|
1725
|
+
}
|
|
1726
|
+
});
|
|
1727
|
+
}); };
|
|
1728
|
+
var ticketEventTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1729
|
+
var testCloseReasons, enduser, enduserWithTeam, journey, nullJourney, root, nullRoot, createStep, ticket, ticketNull;
|
|
1730
|
+
var _a, _b;
|
|
1731
|
+
return __generator(this, function (_c) {
|
|
1732
|
+
switch (_c.label) {
|
|
1733
|
+
case 0:
|
|
1734
|
+
log_header("Ticket Events");
|
|
1735
|
+
testCloseReasons = ['Yes', 'No', 'Maybe'];
|
|
1736
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'deletemeee@tellescope.com' })];
|
|
1737
|
+
case 1:
|
|
1738
|
+
enduser = _c.sent();
|
|
1739
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'deleteme2@tellescope.com', assignedTo: [sdkNonAdmin.userInfo.id] })];
|
|
1740
|
+
case 2:
|
|
1741
|
+
enduserWithTeam = _c.sent();
|
|
1742
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'test journey with completion options' })];
|
|
1743
|
+
case 3:
|
|
1744
|
+
journey = _c.sent();
|
|
1745
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'test journey null' })];
|
|
1746
|
+
case 4:
|
|
1747
|
+
nullJourney = _c.sent();
|
|
1748
|
+
return [4 /*yield*/, sdk.api.automation_steps.createOne({
|
|
1749
|
+
journeyId: journey.id,
|
|
1750
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
1751
|
+
action: {
|
|
1752
|
+
type: 'createTicket',
|
|
1753
|
+
info: {
|
|
1754
|
+
title: 'close reasons tests',
|
|
1755
|
+
assignmentStrategy: {
|
|
1756
|
+
type: 'care-team-random',
|
|
1757
|
+
info: {},
|
|
1758
|
+
},
|
|
1759
|
+
closeReasons: testCloseReasons,
|
|
1760
|
+
defaultAssignee: sdk.userInfo.id,
|
|
1761
|
+
},
|
|
1762
|
+
},
|
|
1763
|
+
})];
|
|
1764
|
+
case 5:
|
|
1765
|
+
root = _c.sent();
|
|
1766
|
+
return [4 /*yield*/, sdk.api.automation_steps.createOne({
|
|
1767
|
+
journeyId: nullJourney.id,
|
|
1768
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
1769
|
+
action: {
|
|
1770
|
+
type: 'createTicket',
|
|
1771
|
+
info: {
|
|
1772
|
+
title: 'null test',
|
|
1773
|
+
assignmentStrategy: {
|
|
1774
|
+
type: 'care-team-random',
|
|
1775
|
+
info: {},
|
|
1776
|
+
},
|
|
1777
|
+
closeReasons: [],
|
|
1778
|
+
defaultAssignee: sdk.userInfo.id,
|
|
1779
|
+
},
|
|
1780
|
+
},
|
|
1781
|
+
})];
|
|
1782
|
+
case 6:
|
|
1783
|
+
nullRoot = _c.sent();
|
|
1784
|
+
createStep = function (journeyId, automationStepId, closedForReason) { return (sdk.api.automation_steps.createOne({
|
|
1785
|
+
journeyId: journeyId,
|
|
1786
|
+
event: { type: 'ticketCompleted', info: { automationStepId: automationStepId, closedForReason: closedForReason, } },
|
|
1787
|
+
action: { type: 'setEnduserStatus', info: { status: closedForReason !== null && closedForReason !== void 0 ? closedForReason : 'Null' }, },
|
|
1788
|
+
})); };
|
|
1789
|
+
return [4 /*yield*/, createStep(nullJourney.id, nullRoot.id)];
|
|
1790
|
+
case 7:
|
|
1791
|
+
_c.sent();
|
|
1792
|
+
return [4 /*yield*/, createStep(nullJourney.id, nullRoot.id, testCloseReasons[0])];
|
|
1793
|
+
case 8:
|
|
1794
|
+
_c.sent();
|
|
1795
|
+
return [4 /*yield*/, createStep(nullJourney.id, nullRoot.id, testCloseReasons[1])];
|
|
1796
|
+
case 9:
|
|
1797
|
+
_c.sent();
|
|
1798
|
+
return [4 /*yield*/, createStep(nullJourney.id, nullRoot.id, testCloseReasons[2])];
|
|
1799
|
+
case 10:
|
|
1800
|
+
_c.sent();
|
|
1801
|
+
return [4 /*yield*/, createStep(journey.id, root.id)];
|
|
1802
|
+
case 11:
|
|
1803
|
+
_c.sent();
|
|
1804
|
+
return [4 /*yield*/, createStep(journey.id, root.id, testCloseReasons[0])];
|
|
1805
|
+
case 12:
|
|
1806
|
+
_c.sent();
|
|
1807
|
+
return [4 /*yield*/, createStep(journey.id, root.id, testCloseReasons[1])];
|
|
1808
|
+
case 13:
|
|
1809
|
+
_c.sent();
|
|
1810
|
+
return [4 /*yield*/, createStep(journey.id, root.id, testCloseReasons[2])];
|
|
1811
|
+
case 14:
|
|
1812
|
+
_c.sent();
|
|
1813
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { journeys: (_a = {}, _a[journey.id] = 'Added', _a) })];
|
|
1814
|
+
case 15:
|
|
1815
|
+
_c.sent();
|
|
1816
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduserWithTeam.id, { journeys: (_b = {}, _b[nullJourney.id] = 'Added (Null)', _b) })];
|
|
1817
|
+
case 16:
|
|
1818
|
+
_c.sent();
|
|
1819
|
+
return [4 /*yield*/, wait(undefined, 2000)]; // wait for tickets to be automatically created
|
|
1820
|
+
case 17:
|
|
1821
|
+
_c.sent(); // wait for tickets to be automatically created
|
|
1822
|
+
return [4 /*yield*/, async_test("Tickets automatically created", function () { return sdk.api.tickets.getSome(); }, { onResult: function (tickets) { return (tickets === null || tickets === void 0 ? void 0 : tickets.length) === 2; } })];
|
|
1823
|
+
case 18:
|
|
1824
|
+
_c.sent();
|
|
1825
|
+
return [4 /*yield*/, async_test("Ticket for enduser, default assignment, testCloseReasons", function () { return sdk.api.tickets.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (tickets) {
|
|
1826
|
+
var _a;
|
|
1827
|
+
return (tickets.length === 1
|
|
1828
|
+
&& ((_a = tickets[0].closeReasons) === null || _a === void 0 ? void 0 : _a.length) === 3
|
|
1829
|
+
&& tickets[0].owner === sdk.userInfo.id);
|
|
1830
|
+
} })];
|
|
1831
|
+
case 19:
|
|
1832
|
+
_c.sent();
|
|
1833
|
+
return [4 /*yield*/, sdk.api.tickets.getOne({ enduserId: enduser.id })];
|
|
1834
|
+
case 20:
|
|
1835
|
+
ticket = _c.sent();
|
|
1836
|
+
return [4 /*yield*/, async_test("Ticket for enduser, care team assignment, no reasons", function () { return sdk.api.tickets.getSome({ filter: { enduserId: enduserWithTeam.id } }); }, { onResult: function (tickets) {
|
|
1837
|
+
var _a;
|
|
1838
|
+
return tickets.length === 1
|
|
1839
|
+
&& ((_a = tickets[0].closeReasons) === null || _a === void 0 ? void 0 : _a.length) === 0
|
|
1840
|
+
&& tickets[0].owner === sdkNonAdmin.userInfo.id;
|
|
1841
|
+
}
|
|
1842
|
+
})];
|
|
1843
|
+
case 21:
|
|
1844
|
+
_c.sent();
|
|
1845
|
+
return [4 /*yield*/, sdk.api.tickets.getOne({ enduserId: enduserWithTeam.id })];
|
|
1846
|
+
case 22:
|
|
1847
|
+
ticketNull = _c.sent();
|
|
1848
|
+
return [4 /*yield*/, sdk.api.tickets.updateOne(ticket.id, { closedForReason: 'Maybe', closedAt: new Date() })];
|
|
1849
|
+
case 23:
|
|
1850
|
+
_c.sent();
|
|
1851
|
+
return [4 /*yield*/, sdk.api.tickets.updateOne(ticketNull.id, { closedAt: new Date() })];
|
|
1852
|
+
case 24:
|
|
1853
|
+
_c.sent();
|
|
1854
|
+
return [4 /*yield*/, wait(undefined, 250)]; // wait for actions to be automatically created
|
|
1855
|
+
case 25:
|
|
1856
|
+
_c.sent(); // wait for actions to be automatically created
|
|
1857
|
+
return [4 /*yield*/, async_test("Automated actions for handle ticket created", function () { return sdk.api.automated_actions.getSome(); }, { onResult: (function (actions) { return (actions === null || actions === void 0 ? void 0 : actions.length) === 4 // ticket creations + ticket completions = 2 + 2
|
|
1858
|
+
&& (!!actions.find(function (a) {
|
|
1859
|
+
return a.event.type === 'ticketCompleted'
|
|
1860
|
+
&& a.enduserId === enduser.id
|
|
1861
|
+
&& a.action.type === 'setEnduserStatus'
|
|
1862
|
+
&& a.action.info.status === 'Maybe';
|
|
1863
|
+
} // maybe branch
|
|
1864
|
+
))
|
|
1865
|
+
&& (!!actions.find(function (a) {
|
|
1866
|
+
return a.event.type === 'ticketCompleted'
|
|
1867
|
+
&& a.enduserId === enduserWithTeam.id
|
|
1868
|
+
&& a.action.type === 'setEnduserStatus'
|
|
1869
|
+
&& a.action.info.status === 'Null';
|
|
1870
|
+
} // null branch when completed without closedForReason
|
|
1871
|
+
)); }) })];
|
|
1872
|
+
case 26:
|
|
1873
|
+
_c.sent();
|
|
1874
|
+
return [4 /*yield*/, Promise.all([
|
|
1875
|
+
sdk.api.journeys.deleteOne(journey.id),
|
|
1876
|
+
sdk.api.journeys.deleteOne(nullJourney.id),
|
|
1877
|
+
sdk.api.endusers.deleteOne(enduser.id),
|
|
1878
|
+
sdk.api.endusers.deleteOne(enduserWithTeam.id),
|
|
1879
|
+
sdk.api.tickets.deleteOne(ticket.id),
|
|
1880
|
+
sdk.api.tickets.deleteOne(ticketNull.id),
|
|
1881
|
+
])];
|
|
1882
|
+
case 27:
|
|
1883
|
+
_c.sent();
|
|
1884
|
+
return [2 /*return*/];
|
|
1885
|
+
}
|
|
1886
|
+
});
|
|
1887
|
+
}); };
|
|
1888
|
+
var removeFromJourneyTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1889
|
+
var journey, journey2, enduser, enduser2, step, step2, createAction, numberOfActions, i;
|
|
1890
|
+
var _a;
|
|
1891
|
+
return __generator(this, function (_b) {
|
|
1892
|
+
switch (_b.label) {
|
|
1893
|
+
case 0:
|
|
1894
|
+
log_header("Remove from Journey");
|
|
1895
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'test journey' })];
|
|
1896
|
+
case 1:
|
|
1897
|
+
journey = _b.sent();
|
|
1898
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'other journey' })];
|
|
1899
|
+
case 2:
|
|
1900
|
+
journey2 = _b.sent();
|
|
1901
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'test@tellescope.com' })];
|
|
1902
|
+
case 3:
|
|
1903
|
+
enduser = _b.sent();
|
|
1904
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'test2@tellescope.com' })];
|
|
1905
|
+
case 4:
|
|
1906
|
+
enduser2 = _b.sent();
|
|
1907
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { journeys: (_a = {}, _a[journey.id] = 'Added', _a[journey2.id] = 'Added2', _a) })];
|
|
1908
|
+
case 5:
|
|
1909
|
+
_b.sent();
|
|
1910
|
+
return [4 /*yield*/, (sdk.api.automation_steps.createOne({
|
|
1911
|
+
journeyId: journey.id,
|
|
1912
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
1913
|
+
action: { type: 'setEnduserStatus', info: { status: 'Root' }, },
|
|
1914
|
+
}))];
|
|
1915
|
+
case 6:
|
|
1916
|
+
step = _b.sent();
|
|
1917
|
+
return [4 /*yield*/, (sdk.api.automation_steps.createOne({
|
|
1918
|
+
journeyId: journey2.id,
|
|
1919
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
1920
|
+
action: { type: 'setEnduserStatus', info: { status: 'Root' }, },
|
|
1921
|
+
}))];
|
|
1922
|
+
case 7:
|
|
1923
|
+
step2 = _b.sent();
|
|
1924
|
+
createAction = function (journeyId, step, enduserId) { return (sdk.api.automated_actions.createOne({
|
|
1925
|
+
journeyId: journeyId,
|
|
1926
|
+
automationStepId: step.id,
|
|
1927
|
+
cancelConditions: [],
|
|
1928
|
+
enduserId: enduserId !== null && enduserId !== void 0 ? enduserId : enduser.id,
|
|
1929
|
+
processAfter: Date.now() + 1000000,
|
|
1930
|
+
status: 'active',
|
|
1931
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
1932
|
+
action: { type: 'setEnduserStatus', info: { status: 'Test Status' }, },
|
|
1933
|
+
})); };
|
|
1934
|
+
numberOfActions = 4;
|
|
1935
|
+
i = 0;
|
|
1936
|
+
_b.label = 8;
|
|
1937
|
+
case 8:
|
|
1938
|
+
if (!(i < numberOfActions)) return [3 /*break*/, 13];
|
|
1939
|
+
return [4 /*yield*/, createAction(journey.id, step)];
|
|
1940
|
+
case 9:
|
|
1941
|
+
_b.sent();
|
|
1942
|
+
return [4 /*yield*/, createAction(journey2.id, step2)];
|
|
1943
|
+
case 10:
|
|
1944
|
+
_b.sent();
|
|
1945
|
+
return [4 /*yield*/, createAction(journey.id, step, enduser2.id)];
|
|
1946
|
+
case 11:
|
|
1947
|
+
_b.sent();
|
|
1948
|
+
_b.label = 12;
|
|
1949
|
+
case 12:
|
|
1950
|
+
i++;
|
|
1951
|
+
return [3 /*break*/, 8];
|
|
1952
|
+
case 13:
|
|
1953
|
+
// remove from journey, should set all statuses to cancelled
|
|
1954
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { journeys: {} }, { replaceObjectFields: true })];
|
|
1955
|
+
case 14:
|
|
1956
|
+
// remove from journey, should set all statuses to cancelled
|
|
1957
|
+
_b.sent();
|
|
1958
|
+
return [4 /*yield*/, wait(undefined, 250)];
|
|
1959
|
+
case 15:
|
|
1960
|
+
_b.sent();
|
|
1961
|
+
return [4 /*yield*/, async_test("Automated actions for handle ticket created", function () { return sdk.api.automated_actions.getSome(); }, { onResult: (function (actions) { return (
|
|
1962
|
+
// enduser removed from multiple journeys
|
|
1963
|
+
actions.filter(function (a) { return a.status === 'cancelled'; }).length === numberOfActions * 2
|
|
1964
|
+
// other enduser is unaffected
|
|
1965
|
+
&& actions.filter(function (a) { return a.status === 'active'; }).length === numberOfActions); }) })];
|
|
1966
|
+
case 16:
|
|
1967
|
+
_b.sent();
|
|
1968
|
+
return [4 /*yield*/, Promise.all([
|
|
1969
|
+
sdk.api.journeys.deleteOne(journey.id),
|
|
1970
|
+
sdk.api.journeys.deleteOne(journey2.id),
|
|
1971
|
+
sdk.api.endusers.deleteOne(enduser.id),
|
|
1972
|
+
sdk.api.endusers.deleteOne(enduser2.id),
|
|
1973
|
+
])];
|
|
1974
|
+
case 17:
|
|
1975
|
+
_b.sent();
|
|
1976
|
+
return [2 /*return*/];
|
|
1977
|
+
}
|
|
1978
|
+
});
|
|
1979
|
+
}); };
|
|
1612
1980
|
var automation_events_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1613
1981
|
return __generator(this, function (_a) {
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1982
|
+
switch (_a.label) {
|
|
1983
|
+
case 0:
|
|
1984
|
+
log_header("Automation Events");
|
|
1985
|
+
return [4 /*yield*/, formEventTests()];
|
|
1986
|
+
case 1:
|
|
1987
|
+
_a.sent();
|
|
1988
|
+
return [4 /*yield*/, ticketEventTests()];
|
|
1989
|
+
case 2:
|
|
1990
|
+
_a.sent();
|
|
1991
|
+
return [4 /*yield*/, removeFromJourneyTests()];
|
|
1992
|
+
case 3:
|
|
1993
|
+
_a.sent();
|
|
1994
|
+
return [2 /*return*/];
|
|
1995
|
+
}
|
|
1617
1996
|
});
|
|
1618
1997
|
}); };
|
|
1619
1998
|
var form_response_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1620
|
-
var stringResponse, stringIntakeField, stringTitle, enduser, form, accessCode, enduserWithUpdate, recordedResponse;
|
|
1999
|
+
var stringResponse, stringIntakeField, stringTitle, enduser, form, field, field2, accessCode, enduserWithUpdate, recordedResponse;
|
|
1621
2000
|
var _a, _b, _c;
|
|
1622
2001
|
return __generator(this, function (_d) {
|
|
1623
2002
|
switch (_d.label) {
|
|
@@ -1631,45 +2010,85 @@ var form_response_tests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
1631
2010
|
enduser = _d.sent();
|
|
1632
2011
|
return [4 /*yield*/, sdk.api.forms.createOne({
|
|
1633
2012
|
title: 'test form',
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
2013
|
+
})];
|
|
2014
|
+
case 2:
|
|
2015
|
+
form = _d.sent();
|
|
2016
|
+
assert(form.numFields === 0, 'numFields bad init', 'num fields on init');
|
|
2017
|
+
return [4 /*yield*/, sdk.api.form_fields.createOne({
|
|
2018
|
+
formId: form.id,
|
|
2019
|
+
title: stringTitle,
|
|
2020
|
+
description: 'Enter a string',
|
|
2021
|
+
type: 'string',
|
|
2022
|
+
isOptional: false,
|
|
2023
|
+
intakeField: stringIntakeField,
|
|
2024
|
+
previousFields: [{ type: 'root', info: {} }]
|
|
2025
|
+
})];
|
|
2026
|
+
case 3:
|
|
2027
|
+
field = _d.sent();
|
|
2028
|
+
return [4 /*yield*/, sdk.api.form_fields.createOne({
|
|
2029
|
+
formId: form.id,
|
|
2030
|
+
title: stringTitle,
|
|
2031
|
+
description: 'Enter a string',
|
|
2032
|
+
type: 'string',
|
|
2033
|
+
isOptional: false,
|
|
2034
|
+
intakeField: stringIntakeField,
|
|
2035
|
+
previousFields: [{ type: 'root', info: {} }]
|
|
2036
|
+
})];
|
|
2037
|
+
case 4:
|
|
2038
|
+
field2 = _d.sent();
|
|
2039
|
+
return [4 /*yield*/, wait(undefined, 250)];
|
|
2040
|
+
case 5:
|
|
2041
|
+
_d.sent();
|
|
2042
|
+
return [4 /*yield*/, async_test("numFields incremented on new field", function () { return sdk.api.forms.getOne(form.id); }, { onResult: function (f) { return f.numFields === 2; } })];
|
|
2043
|
+
case 6:
|
|
2044
|
+
_d.sent();
|
|
2045
|
+
return [4 /*yield*/, sdk.api.form_fields.deleteOne(field2.id)];
|
|
2046
|
+
case 7:
|
|
2047
|
+
_d.sent();
|
|
2048
|
+
return [4 /*yield*/, wait(undefined, 250)];
|
|
2049
|
+
case 8:
|
|
2050
|
+
_d.sent();
|
|
2051
|
+
return [4 /*yield*/, async_test("numFields decremented after delete", function () { return sdk.api.forms.getOne(form.id); }, { onResult: function (f) { return f.numFields === 1; } })
|
|
1642
2052
|
// await sdk.api.automation_steps.createOne({
|
|
1643
2053
|
// event: { type: "formResponse", info: { formId: form.id } },
|
|
1644
2054
|
// action: { type: 'sendWebhook', info: { message: 'test' } },
|
|
1645
2055
|
// })
|
|
1646
2056
|
];
|
|
1647
|
-
case
|
|
1648
|
-
|
|
2057
|
+
case 9:
|
|
2058
|
+
_d.sent();
|
|
1649
2059
|
return [4 /*yield*/, sdk.api.form_responses.prepare_form_response({ formId: form.id, enduserId: enduser.id })];
|
|
1650
|
-
case
|
|
2060
|
+
case 10:
|
|
1651
2061
|
accessCode = (_d.sent()).accessCode;
|
|
1652
|
-
return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: accessCode, responses: [
|
|
2062
|
+
return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: accessCode, responses: [
|
|
2063
|
+
{
|
|
2064
|
+
fieldTitle: 'doesnot matter',
|
|
2065
|
+
fieldId: field.id,
|
|
2066
|
+
answer: {
|
|
2067
|
+
type: 'string',
|
|
2068
|
+
value: stringResponse,
|
|
2069
|
+
},
|
|
2070
|
+
}
|
|
2071
|
+
] })
|
|
1653
2072
|
// const [triggeredAutomation] = await sdk.api.automated_actions.getSome()
|
|
1654
2073
|
];
|
|
1655
|
-
case
|
|
2074
|
+
case 11:
|
|
1656
2075
|
_d.sent();
|
|
1657
2076
|
return [4 /*yield*/, sdk.api.endusers.getOne(enduser.id)];
|
|
1658
|
-
case
|
|
2077
|
+
case 12:
|
|
1659
2078
|
enduserWithUpdate = _d.sent();
|
|
1660
2079
|
return [4 /*yield*/, sdk.api.form_responses.getOne({ accessCode: accessCode })
|
|
1661
2080
|
// assert(triggeredAutomation?.event?.type === 'formResponse', 'no form response event', 'form response event triggered')
|
|
1662
2081
|
];
|
|
1663
|
-
case
|
|
2082
|
+
case 13:
|
|
1664
2083
|
recordedResponse = _d.sent();
|
|
1665
2084
|
// assert(triggeredAutomation?.event?.type === 'formResponse', 'no form response event', 'form response event triggered')
|
|
1666
2085
|
assert(((_a = enduserWithUpdate === null || enduserWithUpdate === void 0 ? void 0 : enduserWithUpdate.fields) === null || _a === void 0 ? void 0 : _a[stringIntakeField]) === stringResponse, 'no enduser update', 'enduser updated');
|
|
1667
|
-
assert(((_b = recordedResponse === null || recordedResponse === void 0 ? void 0 : recordedResponse.responses) === null || _b === void 0 ? void 0 : _b.length) === 1 && ((_c = recordedResponse.responses[0]) === null || _c === void 0 ? void 0 : _c
|
|
2086
|
+
assert(((_b = recordedResponse === null || recordedResponse === void 0 ? void 0 : recordedResponse.responses) === null || _b === void 0 ? void 0 : _b.length) === 1 && ((_c = recordedResponse.responses[0]) === null || _c === void 0 ? void 0 : _c.answer.value) === stringResponse, 'response not recorded', 'response recorded');
|
|
1668
2087
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
|
|
1669
|
-
case
|
|
2088
|
+
case 14:
|
|
1670
2089
|
_d.sent();
|
|
1671
2090
|
return [4 /*yield*/, sdk.api.forms.deleteOne(form.id)];
|
|
1672
|
-
case
|
|
2091
|
+
case 15:
|
|
1673
2092
|
_d.sent();
|
|
1674
2093
|
return [2 /*return*/];
|
|
1675
2094
|
}
|
|
@@ -2193,6 +2612,98 @@ var enduser_redaction_tests = function () { return __awaiter(void 0, void 0, voi
|
|
|
2193
2612
|
}
|
|
2194
2613
|
});
|
|
2195
2614
|
}); };
|
|
2615
|
+
var public_form_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
2616
|
+
var journey, nonPublicForm, form, submitInfo, submitInfoNonPublic, field, testResponse, responseInfo, enduser;
|
|
2617
|
+
return __generator(this, function (_a) {
|
|
2618
|
+
switch (_a.label) {
|
|
2619
|
+
case 0:
|
|
2620
|
+
log_header("Public Form");
|
|
2621
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'test journey ' })];
|
|
2622
|
+
case 1:
|
|
2623
|
+
journey = _a.sent();
|
|
2624
|
+
return [4 /*yield*/, sdk.api.forms.createOne({
|
|
2625
|
+
title: 'test form',
|
|
2626
|
+
intakePhone: 'optional',
|
|
2627
|
+
})];
|
|
2628
|
+
case 2:
|
|
2629
|
+
nonPublicForm = _a.sent();
|
|
2630
|
+
return [4 /*yield*/, sdk.api.forms.createOne({
|
|
2631
|
+
title: 'test form',
|
|
2632
|
+
allowPublicURL: true,
|
|
2633
|
+
intakePhone: 'optional',
|
|
2634
|
+
})];
|
|
2635
|
+
case 3:
|
|
2636
|
+
form = _a.sent();
|
|
2637
|
+
submitInfo = {
|
|
2638
|
+
businessId: form.businessId,
|
|
2639
|
+
email: 'publicformtest@tellescope.com',
|
|
2640
|
+
formId: form.id,
|
|
2641
|
+
fname: 'sebastian',
|
|
2642
|
+
lname: 'coates',
|
|
2643
|
+
};
|
|
2644
|
+
submitInfoNonPublic = __assign(__assign({}, submitInfo), { formId: nonPublicForm.id });
|
|
2645
|
+
return [4 /*yield*/, async_test('non-public form blocked', function () { return enduserSDK.api.form_responses.session_for_public_form(submitInfoNonPublic); }, handleAnyError)];
|
|
2646
|
+
case 4:
|
|
2647
|
+
_a.sent();
|
|
2648
|
+
return [4 /*yield*/, async_test('no questions form blocked', function () { return enduserSDK.api.form_responses.session_for_public_form(submitInfo); }, handleAnyError)];
|
|
2649
|
+
case 5:
|
|
2650
|
+
_a.sent();
|
|
2651
|
+
return [4 /*yield*/, sdk.api.form_fields.createOne({
|
|
2652
|
+
formId: form.id,
|
|
2653
|
+
title: 'question',
|
|
2654
|
+
type: 'string',
|
|
2655
|
+
previousFields: [{ type: 'root', info: {} }]
|
|
2656
|
+
})];
|
|
2657
|
+
case 6:
|
|
2658
|
+
field = _a.sent();
|
|
2659
|
+
testResponse = {
|
|
2660
|
+
answer: {
|
|
2661
|
+
type: 'string',
|
|
2662
|
+
value: 'answer'
|
|
2663
|
+
},
|
|
2664
|
+
fieldId: field.id,
|
|
2665
|
+
fieldTitle: field.title,
|
|
2666
|
+
};
|
|
2667
|
+
return [4 /*yield*/, enduserSDK.api.form_responses.session_for_public_form(submitInfo)
|
|
2668
|
+
// verify enduser is actually upserted
|
|
2669
|
+
];
|
|
2670
|
+
case 7:
|
|
2671
|
+
responseInfo = _a.sent();
|
|
2672
|
+
return [4 /*yield*/, sdk.api.endusers.getOne({ email: 'publicformtest@tellescope.com' })
|
|
2673
|
+
// test case for existing enduser
|
|
2674
|
+
];
|
|
2675
|
+
case 8:
|
|
2676
|
+
enduser = _a.sent();
|
|
2677
|
+
// test case for existing enduser
|
|
2678
|
+
return [4 /*yield*/, enduserSDK.api.form_responses.session_for_public_form(submitInfo)];
|
|
2679
|
+
case 9:
|
|
2680
|
+
// test case for existing enduser
|
|
2681
|
+
_a.sent();
|
|
2682
|
+
enduserSDK.setAuthToken(responseInfo.authToken);
|
|
2683
|
+
return [4 /*yield*/, enduserSDK.refresh_session()
|
|
2684
|
+
// assert((enduserSDK.userInfo as any).allowedPaths.length === 3, 'allowed paths not preserved', 'allowed paths preserved after refresh')
|
|
2685
|
+
]; // should be allowed
|
|
2686
|
+
case 10:
|
|
2687
|
+
_a.sent(); // should be allowed
|
|
2688
|
+
// assert((enduserSDK.userInfo as any).allowedPaths.length === 3, 'allowed paths not preserved', 'allowed paths preserved after refresh')
|
|
2689
|
+
return [4 /*yield*/, async_test('enduser cannot use non-allowed path', function () { return enduserSDK.api.endusers.updateOne(enduserSDK.userInfo.id, { fields: { testFiedl: 'testValue' } }); }, handleAnyError)];
|
|
2690
|
+
case 11:
|
|
2691
|
+
// assert((enduserSDK.userInfo as any).allowedPaths.length === 3, 'allowed paths not preserved', 'allowed paths preserved after refresh')
|
|
2692
|
+
_a.sent();
|
|
2693
|
+
return [4 /*yield*/, async_test('enduser can submit public form', function () { return enduserSDK.api.form_responses.submit_form_response({ accessCode: responseInfo.accessCode, responses: [testResponse] }); }, passOnAnyResult)];
|
|
2694
|
+
case 12:
|
|
2695
|
+
_a.sent();
|
|
2696
|
+
return [4 /*yield*/, Promise.all([
|
|
2697
|
+
sdk.api.forms.deleteOne(form.id),
|
|
2698
|
+
sdk.api.journeys.deleteOne(journey.id),
|
|
2699
|
+
sdk.api.endusers.deleteOne(enduser.id),
|
|
2700
|
+
])];
|
|
2701
|
+
case 13:
|
|
2702
|
+
_a.sent();
|
|
2703
|
+
return [2 /*return*/];
|
|
2704
|
+
}
|
|
2705
|
+
});
|
|
2706
|
+
}); };
|
|
2196
2707
|
var NO_TEST = function () { };
|
|
2197
2708
|
var tests = {
|
|
2198
2709
|
chats: chat_tests,
|
|
@@ -2211,6 +2722,7 @@ var tests = {
|
|
|
2211
2722
|
meetings: meetings_tests,
|
|
2212
2723
|
notes: NO_TEST,
|
|
2213
2724
|
forms: NO_TEST,
|
|
2725
|
+
form_fields: NO_TEST,
|
|
2214
2726
|
form_responses: form_response_tests,
|
|
2215
2727
|
calendar_events: calendar_events_tests,
|
|
2216
2728
|
webhooks: NO_TEST,
|
|
@@ -2226,6 +2738,7 @@ var tests = {
|
|
|
2226
2738
|
managed_content_records: NO_TEST,
|
|
2227
2739
|
post_comments: NO_TEST,
|
|
2228
2740
|
post_likes: NO_TEST,
|
|
2741
|
+
organizations: NO_TEST,
|
|
2229
2742
|
};
|
|
2230
2743
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
2231
2744
|
var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
|
|
@@ -2236,7 +2749,7 @@ var tests = {
|
|
|
2236
2749
|
log_header("API");
|
|
2237
2750
|
_h.label = 1;
|
|
2238
2751
|
case 1:
|
|
2239
|
-
_h.trys.push([1,
|
|
2752
|
+
_h.trys.push([1, 16, , 17]);
|
|
2240
2753
|
return [4 /*yield*/, Promise.all([
|
|
2241
2754
|
sdk.authenticate(email, password),
|
|
2242
2755
|
sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
|
|
@@ -2249,51 +2762,59 @@ var tests = {
|
|
|
2249
2762
|
return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
|
|
2250
2763
|
case 4:
|
|
2251
2764
|
_h.sent(); // should come right after setup tests
|
|
2252
|
-
return [4 /*yield*/,
|
|
2765
|
+
return [4 /*yield*/, public_form_tests()];
|
|
2253
2766
|
case 5:
|
|
2254
2767
|
_h.sent();
|
|
2255
|
-
return [4 /*yield*/,
|
|
2768
|
+
return [4 /*yield*/, search_tests()];
|
|
2256
2769
|
case 6:
|
|
2257
2770
|
_h.sent();
|
|
2258
|
-
return [4 /*yield*/,
|
|
2771
|
+
return [4 /*yield*/, badInputTests()];
|
|
2259
2772
|
case 7:
|
|
2260
2773
|
_h.sent();
|
|
2261
|
-
return [4 /*yield*/,
|
|
2774
|
+
return [4 /*yield*/, filterTests()];
|
|
2262
2775
|
case 8:
|
|
2263
2776
|
_h.sent();
|
|
2264
|
-
return [4 /*yield*/,
|
|
2777
|
+
return [4 /*yield*/, updatesTests()];
|
|
2265
2778
|
case 9:
|
|
2266
2779
|
_h.sent();
|
|
2267
|
-
return [4 /*yield*/,
|
|
2780
|
+
return [4 /*yield*/, threadKeyTests()];
|
|
2268
2781
|
case 10:
|
|
2269
2782
|
_h.sent();
|
|
2270
|
-
return [4 /*yield*/,
|
|
2783
|
+
return [4 /*yield*/, enduserAccessTests()];
|
|
2271
2784
|
case 11:
|
|
2272
2785
|
_h.sent();
|
|
2273
|
-
return [4 /*yield*/,
|
|
2786
|
+
return [4 /*yield*/, generateEnduserAuthTests()];
|
|
2274
2787
|
case 12:
|
|
2275
2788
|
_h.sent();
|
|
2276
|
-
return [4 /*yield*/,
|
|
2789
|
+
return [4 /*yield*/, enduser_session_tests()];
|
|
2277
2790
|
case 13:
|
|
2278
2791
|
_h.sent();
|
|
2279
|
-
return [4 /*yield*/,
|
|
2792
|
+
return [4 /*yield*/, role_based_access_tests()];
|
|
2280
2793
|
case 14:
|
|
2281
2794
|
_h.sent();
|
|
2282
|
-
return [
|
|
2795
|
+
return [4 /*yield*/, enduser_redaction_tests()];
|
|
2283
2796
|
case 15:
|
|
2797
|
+
_h.sent();
|
|
2798
|
+
return [3 /*break*/, 17];
|
|
2799
|
+
case 16:
|
|
2284
2800
|
err_1 = _h.sent();
|
|
2285
2801
|
console.error("Failed during custom test");
|
|
2286
|
-
|
|
2802
|
+
if (err_1.message && err_1.info) {
|
|
2803
|
+
console.error(err_1.message, JSON.stringify(err_1.info, null, 2));
|
|
2804
|
+
}
|
|
2805
|
+
else {
|
|
2806
|
+
console.error(err_1);
|
|
2807
|
+
}
|
|
2287
2808
|
process.exit(1);
|
|
2288
|
-
return [3 /*break*/,
|
|
2289
|
-
case
|
|
2809
|
+
return [3 /*break*/, 17];
|
|
2810
|
+
case 17:
|
|
2290
2811
|
_a = [];
|
|
2291
2812
|
for (_b in schema)
|
|
2292
2813
|
_a.push(_b);
|
|
2293
2814
|
_i = 0;
|
|
2294
|
-
_h.label =
|
|
2295
|
-
case
|
|
2296
|
-
if (!(_i < _a.length)) return [3 /*break*/,
|
|
2815
|
+
_h.label = 18;
|
|
2816
|
+
case 18:
|
|
2817
|
+
if (!(_i < _a.length)) return [3 /*break*/, 21];
|
|
2297
2818
|
n = _a[_i];
|
|
2298
2819
|
returnValidation = (_g = (_f = schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
|
|
2299
2820
|
return [4 /*yield*/, run_generated_tests({
|
|
@@ -2304,38 +2825,38 @@ var tests = {
|
|
|
2304
2825
|
create: returnValidation // ModelFields<ClientModel>,
|
|
2305
2826
|
}
|
|
2306
2827
|
})];
|
|
2307
|
-
case 18:
|
|
2308
|
-
_h.sent();
|
|
2309
|
-
_h.label = 19;
|
|
2310
2828
|
case 19:
|
|
2311
|
-
|
|
2312
|
-
|
|
2829
|
+
_h.sent();
|
|
2830
|
+
_h.label = 20;
|
|
2313
2831
|
case 20:
|
|
2832
|
+
_i++;
|
|
2833
|
+
return [3 /*break*/, 18];
|
|
2834
|
+
case 21:
|
|
2314
2835
|
_c = [];
|
|
2315
2836
|
for (_d in tests)
|
|
2316
2837
|
_c.push(_d);
|
|
2317
2838
|
_e = 0;
|
|
2318
|
-
_h.label = 21;
|
|
2319
|
-
case 21:
|
|
2320
|
-
if (!(_e < _c.length)) return [3 /*break*/, 26];
|
|
2321
|
-
t = _c[_e];
|
|
2322
2839
|
_h.label = 22;
|
|
2323
2840
|
case 22:
|
|
2324
|
-
|
|
2325
|
-
|
|
2841
|
+
if (!(_e < _c.length)) return [3 /*break*/, 27];
|
|
2842
|
+
t = _c[_e];
|
|
2843
|
+
_h.label = 23;
|
|
2326
2844
|
case 23:
|
|
2327
|
-
_h.
|
|
2328
|
-
return [
|
|
2845
|
+
_h.trys.push([23, 25, , 26]);
|
|
2846
|
+
return [4 /*yield*/, tests[t]()];
|
|
2329
2847
|
case 24:
|
|
2848
|
+
_h.sent();
|
|
2849
|
+
return [3 /*break*/, 26];
|
|
2850
|
+
case 25:
|
|
2330
2851
|
err_2 = _h.sent();
|
|
2331
2852
|
console.error("Error running test:");
|
|
2332
2853
|
console.error(err_2);
|
|
2333
2854
|
process.exit(1);
|
|
2334
|
-
return [3 /*break*/,
|
|
2335
|
-
case 25:
|
|
2336
|
-
_e++;
|
|
2337
|
-
return [3 /*break*/, 21];
|
|
2855
|
+
return [3 /*break*/, 26];
|
|
2338
2856
|
case 26:
|
|
2857
|
+
_e++;
|
|
2858
|
+
return [3 /*break*/, 22];
|
|
2859
|
+
case 27:
|
|
2339
2860
|
process.exit();
|
|
2340
2861
|
return [2 /*return*/];
|
|
2341
2862
|
}
|