@tellescope/sdk 1.255.13 → 1.255.14
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/sdk.d.ts +1 -0
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +1 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts +14 -0
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js +172 -0
- package/lib/cjs/tests/api_tests/calendar_event_references_update.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js +179 -0
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js +237 -0
- package/lib/cjs/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/send_message_model.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/send_message_model.test.js.map +1 -0
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +144 -132
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +1 -0
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +1 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts +14 -0
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.js +168 -0
- package/lib/esm/tests/api_tests/calendar_event_references_update.test.js.map +1 -0
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js +175 -0
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -0
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js +233 -0
- package/lib/esm/tests/api_tests/phone_tree_enduser_condition.test.js.map +1 -0
- package/lib/esm/tests/api_tests/send_message_model.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/send_message_model.test.js.map +1 -0
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +144 -132
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/sdk.ts +4 -0
- package/src/tests/api_tests/calendar_event_references_update.test.ts +108 -0
- package/src/tests/api_tests/phone_calls_cold_transfer.test.ts +113 -0
- package/src/tests/api_tests/phone_tree_enduser_condition.test.ts +174 -0
- package/src/tests/tests.ts +6 -0
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
require('source-map-support').install();
|
|
38
|
+
import { Session, EnduserSession } from "../../sdk";
|
|
39
|
+
import { async_test, log_header, } from "@tellescope/testing";
|
|
40
|
+
import { setup_tests, authenticate_enduser_via_token } from "../setup";
|
|
41
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
42
|
+
var businessId = '60398b1131a295e64f084ff6';
|
|
43
|
+
/**
|
|
44
|
+
* CU-86e2dvrn9: calendar_events.references switched from updatesDisabled to
|
|
45
|
+
* enduserUpdatesDisabled (schema.ts), mirroring the Enduser references behavior:
|
|
46
|
+
* - staff / API-key sessions may update references (e.g. to set or clear
|
|
47
|
+
* external appointment IDs like stale Elation references)
|
|
48
|
+
* - enduser (patient) sessions remain blocked — required because endusers DO
|
|
49
|
+
* have update access on calendar_events they attend (for cancelling)
|
|
50
|
+
*/
|
|
51
|
+
export var calendar_event_references_update_tests = function (_a) {
|
|
52
|
+
var sdk = _a.sdk;
|
|
53
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
54
|
+
var enduserId, eventId, enduser, event_1, enduserSDK_1, staffReferences_1, _b, _c;
|
|
55
|
+
return __generator(this, function (_d) {
|
|
56
|
+
switch (_d.label) {
|
|
57
|
+
case 0:
|
|
58
|
+
log_header("Calendar Event References Update (enduserUpdatesDisabled)");
|
|
59
|
+
_d.label = 1;
|
|
60
|
+
case 1:
|
|
61
|
+
_d.trys.push([1, , 10, 19]);
|
|
62
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({
|
|
63
|
+
email: "references-update-".concat(Date.now(), "@example.com"),
|
|
64
|
+
fname: 'References',
|
|
65
|
+
lname: 'UpdateTest',
|
|
66
|
+
})];
|
|
67
|
+
case 2:
|
|
68
|
+
enduser = _d.sent();
|
|
69
|
+
enduserId = enduser.id;
|
|
70
|
+
return [4 /*yield*/, sdk.api.calendar_events.createOne({
|
|
71
|
+
title: "References Update Test Event",
|
|
72
|
+
durationInMinutes: 30,
|
|
73
|
+
startTimeInMS: Date.now(),
|
|
74
|
+
attendees: [{ id: enduser.id, type: 'enduser' }],
|
|
75
|
+
})];
|
|
76
|
+
case 3:
|
|
77
|
+
event_1 = _d.sent();
|
|
78
|
+
eventId = event_1.id;
|
|
79
|
+
enduserSDK_1 = new EnduserSession({ host: host, businessId: businessId });
|
|
80
|
+
return [4 /*yield*/, authenticate_enduser_via_token(sdk, enduserSDK_1, { id: enduser.id })
|
|
81
|
+
// ---- Staff/API session can update references ----
|
|
82
|
+
];
|
|
83
|
+
case 4:
|
|
84
|
+
_d.sent();
|
|
85
|
+
staffReferences_1 = [{ type: 'Elation', id: 'elation-appointment-123' }];
|
|
86
|
+
return [4 /*yield*/, async_test('staff can update calendar_events.references', function () { return sdk.api.calendar_events.updateOne(event_1.id, { references: staffReferences_1 }); }, { onResult: function (e) { var _a; return ((_a = e.references) === null || _a === void 0 ? void 0 : _a.length) === 1 && e.references[0].type === 'Elation' && e.references[0].id === 'elation-appointment-123'; } })];
|
|
87
|
+
case 5:
|
|
88
|
+
_d.sent();
|
|
89
|
+
return [4 /*yield*/, async_test('staff references update persisted', function () { return sdk.api.calendar_events.getOne(event_1.id); }, { onResult: function (e) { var _a; return ((_a = e.references) === null || _a === void 0 ? void 0 : _a.length) === 1 && e.references[0].type === 'Elation' && e.references[0].id === 'elation-appointment-123'; } })
|
|
90
|
+
// ---- Enduser session (attendee with update access) is still blocked on references ----
|
|
91
|
+
];
|
|
92
|
+
case 6:
|
|
93
|
+
_d.sent();
|
|
94
|
+
// ---- Enduser session (attendee with update access) is still blocked on references ----
|
|
95
|
+
return [4 /*yield*/, async_test('enduser cannot update calendar_events.references', function () { return enduserSDK_1.api.calendar_events.updateOne(event_1.id, { references: [{ type: 'Attacker', id: 'attacker-reference' }] }); }, { shouldError: true, onError: function (e) { return e.message === "references cannot be updated by endusers"; } })];
|
|
96
|
+
case 7:
|
|
97
|
+
// ---- Enduser session (attendee with update access) is still blocked on references ----
|
|
98
|
+
_d.sent();
|
|
99
|
+
return [4 /*yield*/, async_test('rejected enduser references update did not persist', function () { return sdk.api.calendar_events.getOne(event_1.id); }, { onResult: function (e) { var _a; return ((_a = e.references) === null || _a === void 0 ? void 0 : _a.length) === 1 && e.references[0].type === 'Elation' && e.references[0].id === 'elation-appointment-123'; } })
|
|
100
|
+
// ---- Positive control: the guard is field-scoped — enduser can still cancel the event ----
|
|
101
|
+
];
|
|
102
|
+
case 8:
|
|
103
|
+
_d.sent();
|
|
104
|
+
// ---- Positive control: the guard is field-scoped — enduser can still cancel the event ----
|
|
105
|
+
return [4 /*yield*/, async_test('enduser can still perform allowed update (cancelledAt)', function () { return enduserSDK_1.api.calendar_events.updateOne(event_1.id, { cancelledAt: new Date() }); }, { onResult: function (e) { return !!e.cancelledAt; } })];
|
|
106
|
+
case 9:
|
|
107
|
+
// ---- Positive control: the guard is field-scoped — enduser can still cancel the event ----
|
|
108
|
+
_d.sent();
|
|
109
|
+
return [3 /*break*/, 19];
|
|
110
|
+
case 10:
|
|
111
|
+
if (!eventId) return [3 /*break*/, 14];
|
|
112
|
+
_d.label = 11;
|
|
113
|
+
case 11:
|
|
114
|
+
_d.trys.push([11, 13, , 14]);
|
|
115
|
+
return [4 /*yield*/, sdk.api.calendar_events.deleteOne(eventId)];
|
|
116
|
+
case 12:
|
|
117
|
+
_d.sent();
|
|
118
|
+
return [3 /*break*/, 14];
|
|
119
|
+
case 13:
|
|
120
|
+
_b = _d.sent();
|
|
121
|
+
return [3 /*break*/, 14];
|
|
122
|
+
case 14:
|
|
123
|
+
if (!enduserId) return [3 /*break*/, 18];
|
|
124
|
+
_d.label = 15;
|
|
125
|
+
case 15:
|
|
126
|
+
_d.trys.push([15, 17, , 18]);
|
|
127
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduserId)];
|
|
128
|
+
case 16:
|
|
129
|
+
_d.sent();
|
|
130
|
+
return [3 /*break*/, 18];
|
|
131
|
+
case 17:
|
|
132
|
+
_c = _d.sent();
|
|
133
|
+
return [3 /*break*/, 18];
|
|
134
|
+
case 18: return [7 /*endfinally*/];
|
|
135
|
+
case 19: return [2 /*return*/];
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
// Allow running this test file independently
|
|
141
|
+
if (require.main === module) {
|
|
142
|
+
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
143
|
+
var sdk_1 = new Session({ host: host });
|
|
144
|
+
var sdkNonAdmin_1 = new Session({ host: host });
|
|
145
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
146
|
+
return __generator(this, function (_a) {
|
|
147
|
+
switch (_a.label) {
|
|
148
|
+
case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
|
|
149
|
+
case 1:
|
|
150
|
+
_a.sent();
|
|
151
|
+
return [4 /*yield*/, calendar_event_references_update_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
152
|
+
case 2:
|
|
153
|
+
_a.sent();
|
|
154
|
+
return [2 /*return*/];
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}); };
|
|
158
|
+
runTests()
|
|
159
|
+
.then(function () {
|
|
160
|
+
console.log("✅ Calendar event references update test suite completed successfully");
|
|
161
|
+
process.exit(0);
|
|
162
|
+
})
|
|
163
|
+
.catch(function (error) {
|
|
164
|
+
console.error("❌ Calendar event references update test suite failed:", error);
|
|
165
|
+
process.exit(1);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=calendar_event_references_update.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar_event_references_update.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/calendar_event_references_update.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone_calls_cold_transfer.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/phone_calls_cold_transfer.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,eAAO,MAAM,+BAA+B;SAAwC,OAAO;iBAAe,OAAO;mBA0EhH,CAAA"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
38
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
39
|
+
if (ar || !(i in from)) {
|
|
40
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
41
|
+
ar[i] = from[i];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
|
+
};
|
|
46
|
+
require('source-map-support').install();
|
|
47
|
+
import { Session } from "../../sdk";
|
|
48
|
+
import { async_test, handleAnyError, log_header, } from "@tellescope/testing";
|
|
49
|
+
import { setup_tests } from "../setup";
|
|
50
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
51
|
+
var NONEXISTENT_MONGO_ID = '60398b1131a295e64f084fff';
|
|
52
|
+
// Validation-path tests for the cold transfer endpoint. All assertions below hit
|
|
53
|
+
// validations that run before any Twilio access, so no Twilio config is needed.
|
|
54
|
+
export var phone_calls_cold_transfer_tests = function (_a) {
|
|
55
|
+
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
56
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
57
|
+
var enduser, targetUsers, inboundCall_1, outboundCall_1, disabledTargetUser_1;
|
|
58
|
+
return __generator(this, function (_b) {
|
|
59
|
+
switch (_b.label) {
|
|
60
|
+
case 0:
|
|
61
|
+
log_header("Phone Calls Cold Transfer Tests");
|
|
62
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'Cold', lname: 'Transfer' })];
|
|
63
|
+
case 1:
|
|
64
|
+
enduser = _b.sent();
|
|
65
|
+
targetUsers = [];
|
|
66
|
+
_b.label = 2;
|
|
67
|
+
case 2:
|
|
68
|
+
_b.trys.push([2, , 12, 14]);
|
|
69
|
+
return [4 /*yield*/, sdk.api.phone_calls.createOne({
|
|
70
|
+
enduserId: enduser.id,
|
|
71
|
+
inbound: true,
|
|
72
|
+
externalId: 'CAcoldtransfertestinbound000000001',
|
|
73
|
+
from: '+15550001111',
|
|
74
|
+
to: '+15550002222',
|
|
75
|
+
userId: sdk.userInfo.id,
|
|
76
|
+
})];
|
|
77
|
+
case 3:
|
|
78
|
+
inboundCall_1 = _b.sent();
|
|
79
|
+
return [4 /*yield*/, sdk.api.phone_calls.createOne({
|
|
80
|
+
enduserId: enduser.id,
|
|
81
|
+
inbound: false,
|
|
82
|
+
externalId: 'CAcoldtransfertestoutbound00000001',
|
|
83
|
+
from: '+15550002222',
|
|
84
|
+
to: '+15550001111',
|
|
85
|
+
userId: sdk.userInfo.id,
|
|
86
|
+
})
|
|
87
|
+
// throwaway target users (never modify existing users' roles)
|
|
88
|
+
];
|
|
89
|
+
case 4:
|
|
90
|
+
outboundCall_1 = _b.sent();
|
|
91
|
+
return [4 /*yield*/, sdk.api.users.createOne({
|
|
92
|
+
email: 'cold.transfer.disabled@tellescope.com',
|
|
93
|
+
verifiedEmail: true,
|
|
94
|
+
notificationEmailsDisabled: true,
|
|
95
|
+
disableIncomingPhoneCalls: true,
|
|
96
|
+
})];
|
|
97
|
+
case 5:
|
|
98
|
+
disabledTargetUser_1 = _b.sent();
|
|
99
|
+
targetUsers.push(disabledTargetUser_1);
|
|
100
|
+
return [4 /*yield*/, async_test("cold_transfer: cannot transfer to yourself", function () { return sdk.api.phone_calls.cold_transfer({ callSid: inboundCall_1.externalId, targetUserId: sdk.userInfo.id }); }, { shouldError: true, onError: function (e) { return e.message === "Cannot transfer a call to yourself"; } })];
|
|
101
|
+
case 6:
|
|
102
|
+
_b.sent();
|
|
103
|
+
return [4 /*yield*/, async_test("cold_transfer: bogus callSid rejected", function () { return sdk.api.phone_calls.cold_transfer({ callSid: 'CAdoesnotexist0000000000000000000', targetUserId: disabledTargetUser_1.id }); }, { shouldError: true, onError: function (e) { return e.message === "Call not found"; } })];
|
|
104
|
+
case 7:
|
|
105
|
+
_b.sent();
|
|
106
|
+
return [4 /*yield*/, async_test("cold_transfer: outbound calls rejected", function () { return sdk.api.phone_calls.cold_transfer({ callSid: outboundCall_1.externalId, targetUserId: disabledTargetUser_1.id }); }, { shouldError: true, onError: function (e) { return e.message === "Only inbound calls can be transferred"; } })
|
|
107
|
+
// conferenceId is not settable via the public API (only set internally by conference webhooks),
|
|
108
|
+
// so the "Conference calls cannot be transferred" branch is covered by manual E2E testing only
|
|
109
|
+
];
|
|
110
|
+
case 8:
|
|
111
|
+
_b.sent();
|
|
112
|
+
// conferenceId is not settable via the public API (only set internally by conference webhooks),
|
|
113
|
+
// so the "Conference calls cannot be transferred" branch is covered by manual E2E testing only
|
|
114
|
+
return [4 /*yield*/, async_test("cold_transfer: nonexistent target user rejected", function () { return sdk.api.phone_calls.cold_transfer({ callSid: inboundCall_1.externalId, targetUserId: NONEXISTENT_MONGO_ID }); }, { shouldError: true, onError: function (e) { return e.message === "Target user not found"; } })];
|
|
115
|
+
case 9:
|
|
116
|
+
// conferenceId is not settable via the public API (only set internally by conference webhooks),
|
|
117
|
+
// so the "Conference calls cannot be transferred" branch is covered by manual E2E testing only
|
|
118
|
+
_b.sent();
|
|
119
|
+
return [4 /*yield*/, async_test("cold_transfer: target user with incoming calls disabled rejected", function () { return sdk.api.phone_calls.cold_transfer({ callSid: inboundCall_1.externalId, targetUserId: disabledTargetUser_1.id }); }, { shouldError: true, onError: function (e) { return e.message === "Target user has incoming calls disabled"; } })
|
|
120
|
+
// non-admin either can't see the call (Call not found) or is stopped by a later
|
|
121
|
+
// validation (target has incoming calls disabled) — errors on every path
|
|
122
|
+
];
|
|
123
|
+
case 10:
|
|
124
|
+
_b.sent();
|
|
125
|
+
// non-admin either can't see the call (Call not found) or is stopped by a later
|
|
126
|
+
// validation (target has incoming calls disabled) — errors on every path
|
|
127
|
+
return [4 /*yield*/, async_test("cold_transfer: non-admin cannot transfer an inaccessible call", function () { return sdkNonAdmin.api.phone_calls.cold_transfer({ callSid: inboundCall_1.externalId, targetUserId: disabledTargetUser_1.id }); }, handleAnyError)];
|
|
128
|
+
case 11:
|
|
129
|
+
// non-admin either can't see the call (Call not found) or is stopped by a later
|
|
130
|
+
// validation (target has incoming calls disabled) — errors on every path
|
|
131
|
+
_b.sent();
|
|
132
|
+
return [3 /*break*/, 14];
|
|
133
|
+
case 12:
|
|
134
|
+
// deleting the enduser cascades deletion of its phone_calls records
|
|
135
|
+
return [4 /*yield*/, Promise.all(__spreadArray([
|
|
136
|
+
sdk.api.endusers.deleteOne(enduser.id)
|
|
137
|
+
], targetUsers.map(function (u) { return sdk.api.users.deleteOne(u.id); }), true)).catch(console.error)];
|
|
138
|
+
case 13:
|
|
139
|
+
// deleting the enduser cascades deletion of its phone_calls records
|
|
140
|
+
_b.sent();
|
|
141
|
+
return [7 /*endfinally*/];
|
|
142
|
+
case 14: return [2 /*return*/];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
// Allow running this test file independently
|
|
148
|
+
if (require.main === module) {
|
|
149
|
+
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
150
|
+
var sdk_1 = new Session({ host: host });
|
|
151
|
+
var sdkNonAdmin_1 = new Session({ host: host });
|
|
152
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
153
|
+
return __generator(this, function (_a) {
|
|
154
|
+
switch (_a.label) {
|
|
155
|
+
case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
|
|
156
|
+
case 1:
|
|
157
|
+
_a.sent();
|
|
158
|
+
return [4 /*yield*/, phone_calls_cold_transfer_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
159
|
+
case 2:
|
|
160
|
+
_a.sent();
|
|
161
|
+
return [2 /*return*/];
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}); };
|
|
165
|
+
runTests()
|
|
166
|
+
.then(function () {
|
|
167
|
+
console.log("✅ Phone calls cold transfer test suite completed successfully");
|
|
168
|
+
process.exit(0);
|
|
169
|
+
})
|
|
170
|
+
.catch(function (error) {
|
|
171
|
+
console.error("❌ Phone calls cold transfer test suite failed:", error);
|
|
172
|
+
process.exit(1);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=phone_calls_cold_transfer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone_calls_cold_transfer.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/phone_calls_cold_transfer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone_tree_enduser_condition.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/phone_tree_enduser_condition.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmDnC,eAAO,MAAM,kCAAkC;SAAwC,OAAO;iBAAe,OAAO;mBAkGnH,CAAA"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
require('source-map-support').install();
|
|
49
|
+
import { Session } from "../../sdk";
|
|
50
|
+
import { assert, async_test, handleAnyError, log_header, } from "@tellescope/testing";
|
|
51
|
+
import { setup_tests } from "../setup";
|
|
52
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
53
|
+
var SPLIT_NODE_ID = 'enduser-condition-split-node';
|
|
54
|
+
var VIP_NODE_ID = 'vip-play-message-node';
|
|
55
|
+
var ELSE_NODE_ID = 'else-play-message-node';
|
|
56
|
+
var valid_condition_split_nodes = [
|
|
57
|
+
{
|
|
58
|
+
id: SPLIT_NODE_ID,
|
|
59
|
+
action: {
|
|
60
|
+
type: 'Enduser Condition Split',
|
|
61
|
+
info: {
|
|
62
|
+
branches: [
|
|
63
|
+
{ name: 'VIP', enduserCondition: { $and: [{ condition: { tags: 'VIP' } }] } },
|
|
64
|
+
{ name: 'Everyone Else' }, // no condition — catch-all
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
events: [{ type: 'Start', parentId: SPLIT_NODE_ID, info: {} }],
|
|
69
|
+
flowchartUI: { x: 0, y: 0 },
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: VIP_NODE_ID,
|
|
73
|
+
action: {
|
|
74
|
+
type: 'Play Message',
|
|
75
|
+
info: { playback: { type: 'Say', info: { script: 'Welcome, VIP caller' } } },
|
|
76
|
+
},
|
|
77
|
+
events: [{ type: 'On Condition Branch', parentId: SPLIT_NODE_ID, info: { branch: 'VIP' } }],
|
|
78
|
+
flowchartUI: { x: -100, y: 100 },
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: ELSE_NODE_ID,
|
|
82
|
+
action: {
|
|
83
|
+
type: 'Play Message',
|
|
84
|
+
info: { playback: { type: 'Say', info: { script: 'Welcome' } } },
|
|
85
|
+
},
|
|
86
|
+
events: [{ type: 'On Condition Branch', parentId: SPLIT_NODE_ID, info: { branch: 'Everyone Else' } }],
|
|
87
|
+
flowchartUI: { x: 100, y: 100 },
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
export var phone_tree_enduser_condition_tests = function (_a) {
|
|
91
|
+
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
92
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
93
|
+
var treeIds, tree, loaded, loadedSplit, conditionalSplitTree, _i, treeIds_1, id;
|
|
94
|
+
return __generator(this, function (_b) {
|
|
95
|
+
switch (_b.label) {
|
|
96
|
+
case 0:
|
|
97
|
+
log_header("Phone Tree Enduser Condition Split Tests");
|
|
98
|
+
treeIds = [];
|
|
99
|
+
_b.label = 1;
|
|
100
|
+
case 1:
|
|
101
|
+
_b.trys.push([1, , 8, 13]);
|
|
102
|
+
return [4 /*yield*/, sdk.api.phone_trees.createOne({
|
|
103
|
+
number: '+15005550006',
|
|
104
|
+
isActive: false,
|
|
105
|
+
nodes: valid_condition_split_nodes,
|
|
106
|
+
})];
|
|
107
|
+
case 2:
|
|
108
|
+
tree = _b.sent();
|
|
109
|
+
treeIds.push(tree.id);
|
|
110
|
+
assert(!!tree.id, 'failed to create tree with Enduser Condition Split', 'create tree with Enduser Condition Split');
|
|
111
|
+
return [4 /*yield*/, sdk.api.phone_trees.getOne(tree.id)];
|
|
112
|
+
case 3:
|
|
113
|
+
loaded = _b.sent();
|
|
114
|
+
loadedSplit = loaded.nodes.find(function (n) { return n.action.type === 'Enduser Condition Split'; });
|
|
115
|
+
assert((loadedSplit === null || loadedSplit === void 0 ? void 0 : loadedSplit.action.type) === 'Enduser Condition Split'
|
|
116
|
+
&& loadedSplit.action.info.branches.length === 2
|
|
117
|
+
&& loadedSplit.action.info.branches[0].name === 'VIP'
|
|
118
|
+
&& !!loadedSplit.action.info.branches[0].enduserCondition
|
|
119
|
+
&& loadedSplit.action.info.branches[1].enduserCondition === undefined, 'branches did not round-trip', 'branches (conditions + catch-all) round-trip on read');
|
|
120
|
+
return [4 /*yield*/, sdk.api.phone_trees.createOne({
|
|
121
|
+
number: '+15005550006',
|
|
122
|
+
isActive: false,
|
|
123
|
+
nodes: [{
|
|
124
|
+
id: 'conditional-split-node',
|
|
125
|
+
// timezone + weeklyAvailabilities included to match the webapp's default Conditional Split shape
|
|
126
|
+
action: { type: 'Conditional Split', info: { timezone: 'US/Eastern', weeklyAvailabilities: [], hasCareTeam: true } },
|
|
127
|
+
events: [{ type: 'Start', parentId: 'conditional-split-node', info: {} }],
|
|
128
|
+
flowchartUI: { x: 0, y: 0 },
|
|
129
|
+
}],
|
|
130
|
+
})];
|
|
131
|
+
case 4:
|
|
132
|
+
conditionalSplitTree = _b.sent();
|
|
133
|
+
treeIds.push(conditionalSplitTree.id);
|
|
134
|
+
assert(!!conditionalSplitTree.id, 'failed to create Conditional Split tree', 'existing Conditional Split still saves (regression)');
|
|
135
|
+
// invalid: enduserCondition must be an object
|
|
136
|
+
return [4 /*yield*/, async_test("non-object enduserCondition is rejected", function () { return sdk.api.phone_trees.createOne({
|
|
137
|
+
number: '+15005550006',
|
|
138
|
+
isActive: false,
|
|
139
|
+
nodes: [{
|
|
140
|
+
id: SPLIT_NODE_ID,
|
|
141
|
+
action: {
|
|
142
|
+
type: 'Enduser Condition Split',
|
|
143
|
+
info: { branches: [{ name: 'Bad', enduserCondition: "not-an-object" }] },
|
|
144
|
+
},
|
|
145
|
+
events: [{ type: 'Start', parentId: SPLIT_NODE_ID, info: {} }],
|
|
146
|
+
flowchartUI: { x: 0, y: 0 },
|
|
147
|
+
}],
|
|
148
|
+
}).then(function (t) { treeIds.push(t.id); return t; }); }, // cleanup if it unexpectedly passes
|
|
149
|
+
handleAnyError)
|
|
150
|
+
// invalid: branches must include a name
|
|
151
|
+
];
|
|
152
|
+
case 5:
|
|
153
|
+
// invalid: enduserCondition must be an object
|
|
154
|
+
_b.sent();
|
|
155
|
+
// invalid: branches must include a name
|
|
156
|
+
return [4 /*yield*/, async_test("branch without a name is rejected", function () { return sdk.api.phone_trees.createOne({
|
|
157
|
+
number: '+15005550006',
|
|
158
|
+
isActive: false,
|
|
159
|
+
nodes: [{
|
|
160
|
+
id: SPLIT_NODE_ID,
|
|
161
|
+
action: {
|
|
162
|
+
type: 'Enduser Condition Split',
|
|
163
|
+
info: { branches: [{ enduserCondition: {} }] },
|
|
164
|
+
},
|
|
165
|
+
events: [{ type: 'Start', parentId: SPLIT_NODE_ID, info: {} }],
|
|
166
|
+
flowchartUI: { x: 0, y: 0 },
|
|
167
|
+
}],
|
|
168
|
+
}).then(function (t) { treeIds.push(t.id); return t; }); }, handleAnyError)
|
|
169
|
+
// invalid: On Condition Branch events must include a branch value
|
|
170
|
+
];
|
|
171
|
+
case 6:
|
|
172
|
+
// invalid: branches must include a name
|
|
173
|
+
_b.sent();
|
|
174
|
+
// invalid: On Condition Branch events must include a branch value
|
|
175
|
+
return [4 /*yield*/, async_test("On Condition Branch event without branch is rejected", function () { return sdk.api.phone_trees.createOne({
|
|
176
|
+
number: '+15005550006',
|
|
177
|
+
isActive: false,
|
|
178
|
+
nodes: valid_condition_split_nodes.map(function (n) { return (n.id !== VIP_NODE_ID
|
|
179
|
+
? n
|
|
180
|
+
: __assign(__assign({}, n), { events: [{ type: 'On Condition Branch', parentId: SPLIT_NODE_ID, info: {} }] })); }),
|
|
181
|
+
}).then(function (t) { treeIds.push(t.id); return t; }); }, handleAnyError)];
|
|
182
|
+
case 7:
|
|
183
|
+
// invalid: On Condition Branch events must include a branch value
|
|
184
|
+
_b.sent();
|
|
185
|
+
return [3 /*break*/, 13];
|
|
186
|
+
case 8:
|
|
187
|
+
_i = 0, treeIds_1 = treeIds;
|
|
188
|
+
_b.label = 9;
|
|
189
|
+
case 9:
|
|
190
|
+
if (!(_i < treeIds_1.length)) return [3 /*break*/, 12];
|
|
191
|
+
id = treeIds_1[_i];
|
|
192
|
+
return [4 /*yield*/, sdk.api.phone_trees.deleteOne(id).catch(console.error)];
|
|
193
|
+
case 10:
|
|
194
|
+
_b.sent();
|
|
195
|
+
_b.label = 11;
|
|
196
|
+
case 11:
|
|
197
|
+
_i++;
|
|
198
|
+
return [3 /*break*/, 9];
|
|
199
|
+
case 12: return [7 /*endfinally*/];
|
|
200
|
+
case 13: return [2 /*return*/];
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
// Allow running this test file independently
|
|
206
|
+
if (require.main === module) {
|
|
207
|
+
console.log("Using API URL: ".concat(host));
|
|
208
|
+
var sdk_1 = new Session({ host: host });
|
|
209
|
+
var sdkNonAdmin_1 = new Session({ host: host });
|
|
210
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
211
|
+
return __generator(this, function (_a) {
|
|
212
|
+
switch (_a.label) {
|
|
213
|
+
case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
|
|
214
|
+
case 1:
|
|
215
|
+
_a.sent();
|
|
216
|
+
return [4 /*yield*/, phone_tree_enduser_condition_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
217
|
+
case 2:
|
|
218
|
+
_a.sent();
|
|
219
|
+
return [2 /*return*/];
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}); };
|
|
223
|
+
runTests()
|
|
224
|
+
.then(function () {
|
|
225
|
+
console.log("✅ Phone tree enduser condition test suite completed successfully");
|
|
226
|
+
process.exit(0);
|
|
227
|
+
})
|
|
228
|
+
.catch(function (error) {
|
|
229
|
+
console.error("❌ Phone tree enduser condition test suite failed:", error);
|
|
230
|
+
process.exit(1);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=phone_tree_enduser_condition.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone_tree_enduser_condition.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/phone_tree_enduser_condition.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send_message_model.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/send_message_model.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,eAAO,MAAM,wBAAwB;SAA2B,OAAO;;mBA4FtE,CAAA"}
|