@tellescope/sdk 1.255.5 → 1.255.7
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/tests/api_tests/healthie_multi_integration.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/healthie_multi_integration.test.js +66 -37
- package/lib/cjs/tests/api_tests/healthie_multi_integration.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js +250 -0
- package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts +36 -0
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js +203 -0
- package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js.map +1 -0
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +174 -166
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +2 -2
- package/lib/esm/tests/api_tests/healthie_multi_integration.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/healthie_multi_integration.test.js +67 -38
- package/lib/esm/tests/api_tests/healthie_multi_integration.test.js.map +1 -1
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js +223 -0
- package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts +36 -0
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js +196 -0
- package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js.map +1 -0
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +174 -166
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/tests/api_tests/healthie_multi_integration.test.ts +56 -15
- package/src/tests/api_tests/journey_delete_cancels_actions.test.ts +152 -0
- package/src/tests/api_tests/security/register_business_id_injection.test.ts +140 -0
- package/src/tests/tests.ts +4 -0
- package/test_generated.pdf +0 -0
package/lib/esm/sdk.d.ts
CHANGED
|
@@ -4187,6 +4187,7 @@ export declare class Session extends SessionManager {
|
|
|
4187
4187
|
exp: number;
|
|
4188
4188
|
allowedPaths?: string[] | undefined;
|
|
4189
4189
|
requiresMFA?: boolean | undefined;
|
|
4190
|
+
users?: number | undefined;
|
|
4190
4191
|
inbox_threads?: number | undefined;
|
|
4191
4192
|
ai_conversations?: number | undefined;
|
|
4192
4193
|
waitlists?: number | undefined;
|
|
@@ -4233,7 +4234,6 @@ export declare class Session extends SessionManager {
|
|
|
4233
4234
|
sms_messages?: number | undefined;
|
|
4234
4235
|
chat_rooms?: number | undefined;
|
|
4235
4236
|
chats?: number | undefined;
|
|
4236
|
-
users?: number | undefined;
|
|
4237
4237
|
templates?: number | undefined;
|
|
4238
4238
|
files?: number | undefined;
|
|
4239
4239
|
tickets?: number | undefined;
|
|
@@ -4349,6 +4349,7 @@ export declare class Session extends SessionManager {
|
|
|
4349
4349
|
exp: number;
|
|
4350
4350
|
allowedPaths?: string[] | undefined;
|
|
4351
4351
|
requiresMFA?: boolean | undefined;
|
|
4352
|
+
users?: number | undefined;
|
|
4352
4353
|
inbox_threads?: number | undefined;
|
|
4353
4354
|
ai_conversations?: number | undefined;
|
|
4354
4355
|
waitlists?: number | undefined;
|
|
@@ -4395,7 +4396,6 @@ export declare class Session extends SessionManager {
|
|
|
4395
4396
|
sms_messages?: number | undefined;
|
|
4396
4397
|
chat_rooms?: number | undefined;
|
|
4397
4398
|
chats?: number | undefined;
|
|
4398
|
-
users?: number | undefined;
|
|
4399
4399
|
templates?: number | undefined;
|
|
4400
4400
|
files?: number | undefined;
|
|
4401
4401
|
tickets?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healthie_multi_integration.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/healthie_multi_integration.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"healthie_multi_integration.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/healthie_multi_integration.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBnC,eAAO,MAAM,gCAAgC;SAAwC,OAAO;iBAAe,OAAO;mBAqPjH,CAAA"}
|
|
@@ -1,3 +1,14 @@
|
|
|
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
|
+
};
|
|
1
12
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
13
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
14
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -37,7 +48,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
48
|
require('source-map-support').install();
|
|
38
49
|
import axios from "axios";
|
|
39
50
|
import { Session } from "../../sdk";
|
|
40
|
-
import { async_test, log_header, wait, } from "@tellescope/testing";
|
|
51
|
+
import { assert, async_test, log_header, wait, } from "@tellescope/testing";
|
|
52
|
+
import { evaluate_conditional_logic_for_enduser_fields } from "@tellescope/utilities";
|
|
41
53
|
import { setup_tests } from "../setup";
|
|
42
54
|
import { BUILT_INS_FOR_SET_FIELDS, HEALTHIE_TITLE } from "@tellescope/constants";
|
|
43
55
|
var host = process.env.API_URL || 'http://localhost:8080';
|
|
@@ -46,7 +58,7 @@ var FORMSORT_TEST_KEY = '9d4f9dff00f60df2690a16da2cb848f289b447614ad9bef850e54af
|
|
|
46
58
|
export var healthie_multi_integration_tests = function (_a) {
|
|
47
59
|
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
48
60
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
49
|
-
var businessId, primaryIntegrationId, taggedIntegrationId, enduserId, formsortEnduserId, formId, primary, tagged, enduser, form_1, formsortEmail_1, postToFormsort, _i, _b, id;
|
|
61
|
+
var businessId, primaryIntegrationId, taggedIntegrationId, enduserId, formsortEnduserId, formId, conditionPlaceholders, taggedForConditions, untaggedForConditions, primary, tagged, enduser, form_1, formsortEmail_1, postToFormsort, _i, _b, id;
|
|
50
62
|
return __generator(this, function (_c) {
|
|
51
63
|
switch (_c.label) {
|
|
52
64
|
case 0:
|
|
@@ -65,6 +77,19 @@ export var healthie_multi_integration_tests = function (_a) {
|
|
|
65
77
|
throw new Error("healthieIntegrationId missing from BUILT_INS_FOR_SET_FIELDS");
|
|
66
78
|
}
|
|
67
79
|
console.log("✅ healthieIntegrationId exposed in BUILT_INS_FOR_SET_FIELDS");
|
|
80
|
+
conditionPlaceholders = {
|
|
81
|
+
businessId: '', creator: '', hashedPassword: '', lastActive: '', lastLogout: '', updatedAt: new Date(),
|
|
82
|
+
};
|
|
83
|
+
taggedForConditions = __assign(__assign({}, conditionPlaceholders), { healthieIntegrationId: TAG });
|
|
84
|
+
untaggedForConditions = __assign({}, conditionPlaceholders);
|
|
85
|
+
assert(evaluate_conditional_logic_for_enduser_fields(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: TAG } }] }), 'Conditional logic error', 'healthieIntegrationId equality matches a tagged patient');
|
|
86
|
+
assert(!evaluate_conditional_logic_for_enduser_fields(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: 'other-clinic' } }] }), 'Conditional logic error', 'healthieIntegrationId equality rejects a different id');
|
|
87
|
+
assert(!evaluate_conditional_logic_for_enduser_fields(untaggedForConditions, { $and: [{ condition: { healthieIntegrationId: TAG } }] }), 'Conditional logic error', 'healthieIntegrationId equality rejects an unset (primary) patient');
|
|
88
|
+
assert(evaluate_conditional_logic_for_enduser_fields(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $isSet: true } } }] }), 'Conditional logic error', 'healthieIntegrationId $isSet matches a tagged patient');
|
|
89
|
+
assert(evaluate_conditional_logic_for_enduser_fields(untaggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $isNotSet: true } } }] }), 'Conditional logic error', 'healthieIntegrationId $isNotSet matches an unset (primary) patient');
|
|
90
|
+
assert(!evaluate_conditional_logic_for_enduser_fields(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $ne: TAG } } }] }), 'Conditional logic error', 'healthieIntegrationId $ne rejects the matching tag');
|
|
91
|
+
assert(evaluate_conditional_logic_for_enduser_fields(untaggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $ne: TAG } } }] }), 'Conditional logic error', 'healthieIntegrationId $ne matches an unset (primary) patient');
|
|
92
|
+
console.log("✅ healthieIntegrationId evaluates in conditional logic (equality, $isSet/$isNotSet, $ne)");
|
|
68
93
|
return [4 /*yield*/, sdk.api.integrations.createOne({
|
|
69
94
|
title: HEALTHIE_TITLE,
|
|
70
95
|
disableEnduserAutoSync: true,
|
|
@@ -103,76 +128,85 @@ export var healthie_multi_integration_tests = function (_a) {
|
|
|
103
128
|
case 5:
|
|
104
129
|
_c.sent();
|
|
105
130
|
return [4 /*yield*/, async_test("primary integration unaffected by tagged settings update", function () { return sdk.api.integrations.getOne(primaryIntegrationId); }, { onResult: function (i) { return !i.pushAddedTags; } })
|
|
106
|
-
// ──
|
|
131
|
+
// ── Invalid API key surfaces as an actionable 400 (fake key → Healthie rejects the request) ──
|
|
107
132
|
];
|
|
108
133
|
case 6:
|
|
134
|
+
_c.sent();
|
|
135
|
+
// ── Invalid API key surfaces as an actionable 400 (fake key → Healthie rejects the request) ──
|
|
136
|
+
return [4 /*yield*/, async_test("proxy_read webhooks with an invalid API key returns a clear error", function () { return sdk.api.integrations.proxy_read({
|
|
137
|
+
integration: HEALTHIE_TITLE, type: 'webhooks', healthieIntegrationId: TAG,
|
|
138
|
+
}); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('API Key is Invalid'); } })
|
|
139
|
+
// ── Organization.healthieIntegrationIds pushed by create side effect ──
|
|
140
|
+
];
|
|
141
|
+
case 7:
|
|
142
|
+
// ── Invalid API key surfaces as an actionable 400 (fake key → Healthie rejects the request) ──
|
|
109
143
|
_c.sent();
|
|
110
144
|
// ── Organization.healthieIntegrationIds pushed by create side effect ──
|
|
111
145
|
return [4 /*yield*/, wait(undefined, 2000)]; // side effects are async
|
|
112
|
-
case
|
|
146
|
+
case 8:
|
|
113
147
|
// ── Organization.healthieIntegrationIds pushed by create side effect ──
|
|
114
148
|
_c.sent(); // side effects are async
|
|
115
149
|
return [4 /*yield*/, async_test("organization.healthieIntegrationIds includes tag after create", function () { return sdk.api.organizations.getOne(businessId); }, { onResult: function (o) { var _a; return !!((_a = o.healthieIntegrationIds) === null || _a === void 0 ? void 0 : _a.includes(TAG)); } })
|
|
116
150
|
// ── Inbound webhook resolution (help page proves the integration lookup without network) ──
|
|
117
151
|
];
|
|
118
|
-
case
|
|
152
|
+
case 9:
|
|
119
153
|
_c.sent();
|
|
120
154
|
// ── Inbound webhook resolution (help page proves the integration lookup without network) ──
|
|
121
155
|
return [4 /*yield*/, async_test("webhook help page resolves primary (sandbox) without query param", function () { return axios.get("".concat(host, "/v1/webhooks/healthie/").concat(businessId)); }, { onResult: function (r) { return typeof r.data === 'string' && r.data.startsWith('Sandbox'); } })];
|
|
122
|
-
case
|
|
156
|
+
case 10:
|
|
123
157
|
// ── Inbound webhook resolution (help page proves the integration lookup without network) ──
|
|
124
158
|
_c.sent();
|
|
125
159
|
return [4 /*yield*/, async_test("webhook help page resolves tagged (production) integration via healthieIntegrationId param", function () { return axios.get("".concat(host, "/v1/webhooks/healthie/").concat(businessId, "?healthieIntegrationId=").concat(TAG)); }, { onResult: function (r) { return typeof r.data === 'string' && r.data.startsWith('Production'); } })];
|
|
126
|
-
case
|
|
160
|
+
case 11:
|
|
127
161
|
_c.sent();
|
|
128
162
|
return [4 /*yield*/, async_test("webhook help page rejects unknown healthieIntegrationId", function () { return axios.get("".concat(host, "/v1/webhooks/healthie/").concat(businessId, "?healthieIntegrationId=not-a-real-id")); }, { shouldError: true, onError: function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.response) === null || _a === void 0 ? void 0 : _a.status) === 400; } })
|
|
129
163
|
// ── Enduser field + one-org-per-patient lock (relationship constraint) ──
|
|
130
164
|
];
|
|
131
|
-
case
|
|
165
|
+
case 12:
|
|
132
166
|
_c.sent();
|
|
133
167
|
return [4 /*yield*/, sdk.api.endusers.createOne({
|
|
134
168
|
email: 'multi-healthie-test@tellescope.com',
|
|
135
169
|
healthieIntegrationId: TAG,
|
|
136
170
|
})];
|
|
137
|
-
case
|
|
171
|
+
case 13:
|
|
138
172
|
enduser = _c.sent();
|
|
139
173
|
enduserId = enduser.id;
|
|
140
174
|
if (enduser.healthieIntegrationId !== TAG) {
|
|
141
175
|
throw new Error("healthieIntegrationId not persisted on enduser create");
|
|
142
176
|
}
|
|
143
177
|
return [4 /*yield*/, async_test("healthieIntegrationId freely changeable while unlinked", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: '' }); }, { onResult: function (e) { return !e.healthieIntegrationId; } })];
|
|
144
|
-
case
|
|
178
|
+
case 14:
|
|
145
179
|
_c.sent();
|
|
146
180
|
return [4 /*yield*/, async_test("healthieIntegrationId re-set while unlinked", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: TAG }); }, { onResult: function (e) { return e.healthieIntegrationId === TAG; } })
|
|
147
181
|
// link the patient to Healthie (reference with a Healthie patient id)
|
|
148
182
|
];
|
|
149
|
-
case 14:
|
|
150
|
-
_c.sent();
|
|
151
|
-
// link the patient to Healthie (reference with a Healthie patient id)
|
|
152
|
-
return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [{ type: HEALTHIE_TITLE, id: '12345' }] }, { replaceObjectFields: true })];
|
|
153
183
|
case 15:
|
|
154
|
-
// link the patient to Healthie (reference with a Healthie patient id)
|
|
155
184
|
_c.sent();
|
|
156
|
-
|
|
185
|
+
// link the patient to Healthie (reference with a Healthie patient id)
|
|
186
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [{ type: HEALTHIE_TITLE, id: '12345' }] }, { replaceObjectFields: true })
|
|
187
|
+
// no lock: linked patients stay editable so customers can self-serve fix or migrate them
|
|
188
|
+
];
|
|
157
189
|
case 16:
|
|
190
|
+
// link the patient to Healthie (reference with a Healthie patient id)
|
|
158
191
|
_c.sent();
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
];
|
|
192
|
+
// no lock: linked patients stay editable so customers can self-serve fix or migrate them
|
|
193
|
+
return [4 /*yield*/, async_test("healthieIntegrationId changeable while linked (self-serve fix/migrate)", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: 'somewhere-else' }); }, { onResult: function (e) { return e.healthieIntegrationId === 'somewhere-else'; } })];
|
|
162
194
|
case 17:
|
|
195
|
+
// no lock: linked patients stay editable so customers can self-serve fix or migrate them
|
|
163
196
|
_c.sent();
|
|
164
|
-
|
|
165
|
-
return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [] }, { replaceObjectFields: true })];
|
|
197
|
+
return [4 /*yield*/, async_test("healthieIntegrationId revertible while linked", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: TAG }); }, { onResult: function (e) { return e.healthieIntegrationId === TAG; } })];
|
|
166
198
|
case 18:
|
|
167
|
-
// unlink → changeable again
|
|
168
199
|
_c.sent();
|
|
169
|
-
return [4 /*yield*/,
|
|
200
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [] }, { replaceObjectFields: true })];
|
|
201
|
+
case 19:
|
|
202
|
+
_c.sent();
|
|
203
|
+
return [4 /*yield*/, async_test("healthieIntegrationId clearable", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: '' }); }, { onResult: function (e) { return !e.healthieIntegrationId; } })
|
|
170
204
|
// ── Formsort mapping ──
|
|
171
205
|
];
|
|
172
|
-
case
|
|
206
|
+
case 20:
|
|
173
207
|
_c.sent();
|
|
174
208
|
return [4 /*yield*/, sdk.api.forms.createOne({ title: "Multi Healthie FormSort" })];
|
|
175
|
-
case
|
|
209
|
+
case 21:
|
|
176
210
|
form_1 = _c.sent();
|
|
177
211
|
formId = form_1.id;
|
|
178
212
|
formsortEmail_1 = 'multi-healthie-formsort@tellescope.com';
|
|
@@ -185,37 +219,32 @@ export var healthie_multi_integration_tests = function (_a) {
|
|
|
185
219
|
{ key: 'email', value: formsortEmail_1 },
|
|
186
220
|
{ key: 'healthieIntegrationId', value: TAG },
|
|
187
221
|
], "multi-healthie-1")];
|
|
188
|
-
case
|
|
222
|
+
case 22:
|
|
189
223
|
_c.sent();
|
|
190
224
|
return [4 /*yield*/, async_test("formsort sets healthieIntegrationId on unlinked enduser", function () { return sdk.api.endusers.getSome({ filter: { email: formsortEmail_1 } }); }, { onResult: function (es) {
|
|
191
225
|
var e = es.find(function (e) { return e.email === formsortEmail_1; });
|
|
192
226
|
formsortEnduserId = (e === null || e === void 0 ? void 0 : e.id) || '';
|
|
193
227
|
return (e === null || e === void 0 ? void 0 : e.healthieIntegrationId) === TAG;
|
|
194
228
|
} })
|
|
195
|
-
//
|
|
229
|
+
// linked endusers are re-routable via formsort too (self-serve fix/migrate)
|
|
196
230
|
];
|
|
197
|
-
case
|
|
231
|
+
case 23:
|
|
198
232
|
_c.sent();
|
|
199
|
-
//
|
|
233
|
+
// linked endusers are re-routable via formsort too (self-serve fix/migrate)
|
|
200
234
|
return [4 /*yield*/, sdk.api.endusers.updateOne(formsortEnduserId, { references: [{ type: HEALTHIE_TITLE, id: '6789' }] }, { replaceObjectFields: true })];
|
|
201
|
-
case
|
|
202
|
-
//
|
|
235
|
+
case 24:
|
|
236
|
+
// linked endusers are re-routable via formsort too (self-serve fix/migrate)
|
|
203
237
|
_c.sent();
|
|
204
238
|
return [4 /*yield*/, postToFormsort([
|
|
205
239
|
{ key: 'email', value: formsortEmail_1 },
|
|
206
240
|
{ key: 'healthieIntegrationId', value: 'somewhere-else' },
|
|
207
241
|
], "multi-healthie-2")];
|
|
208
|
-
case 24:
|
|
209
|
-
_c.sent();
|
|
210
|
-
return [4 /*yield*/, wait(undefined, 1000)];
|
|
211
242
|
case 25:
|
|
212
243
|
_c.sent();
|
|
213
|
-
return [4 /*yield*/,
|
|
244
|
+
return [4 /*yield*/, wait(undefined, 1000)];
|
|
214
245
|
case 26:
|
|
215
246
|
_c.sent();
|
|
216
|
-
return [4 /*yield*/, async_test("formsort
|
|
217
|
-
return e.title === "Healthie Integration Change Blocked" && e.enduserId === formsortEnduserId;
|
|
218
|
-
}); } })
|
|
247
|
+
return [4 /*yield*/, async_test("formsort updates healthieIntegrationId on a linked enduser", function () { return sdk.api.endusers.getOne(formsortEnduserId); }, { onResult: function (e) { return e.healthieIntegrationId === 'somewhere-else'; } })
|
|
219
248
|
// ── Removing the primary must not affect the tagged integration; org list recomputes on delete ──
|
|
220
249
|
];
|
|
221
250
|
case 27:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healthie_multi_integration.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/healthie_multi_integration.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"healthie_multi_integration.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/healthie_multi_integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey_delete_cancels_actions.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/journey_delete_cancels_actions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,eAAO,MAAM,oCAAoC;SAAuC,OAAO;iBAAe,OAAO;mBAmGpH,CAAA"}
|
|
@@ -0,0 +1,223 @@
|
|
|
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
|
+
import { Session } from '../../sdk';
|
|
38
|
+
import { log_header, wait } from "@tellescope/testing";
|
|
39
|
+
import { AUTOMATED_ACTION_CANCEL_REASONS } from "@tellescope/constants";
|
|
40
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
41
|
+
export var journey_delete_cancels_actions_tests = function (_a) {
|
|
42
|
+
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
43
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
44
|
+
var journeyId, enduserId, stepId, journey, step, enduser_1, activeAction_1, finishedAction_1, before, expectedReason_1, finishedAfter;
|
|
45
|
+
return __generator(this, function (_b) {
|
|
46
|
+
switch (_b.label) {
|
|
47
|
+
case 0:
|
|
48
|
+
log_header("Journey Delete Cancels Pending Actions Tests");
|
|
49
|
+
_b.label = 1;
|
|
50
|
+
case 1:
|
|
51
|
+
_b.trys.push([1, , 11, 13]);
|
|
52
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: "Cascade Cancel Journey " + Date.now() })];
|
|
53
|
+
case 2:
|
|
54
|
+
journey = _b.sent();
|
|
55
|
+
journeyId = journey.id;
|
|
56
|
+
return [4 /*yield*/, sdk.api.automation_steps.createOne({
|
|
57
|
+
journeyId: journey.id,
|
|
58
|
+
action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
|
|
59
|
+
events: [{ type: 'onJourneyStart', info: {} }],
|
|
60
|
+
})];
|
|
61
|
+
case 3:
|
|
62
|
+
step = _b.sent();
|
|
63
|
+
stepId = step.id;
|
|
64
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({
|
|
65
|
+
fname: 'Cascade',
|
|
66
|
+
lname: 'Cancel',
|
|
67
|
+
email: 'test-cascade-cancel-' + Date.now() + '@example.com',
|
|
68
|
+
})];
|
|
69
|
+
case 4:
|
|
70
|
+
enduser_1 = _b.sent();
|
|
71
|
+
enduserId = enduser_1.id;
|
|
72
|
+
return [4 /*yield*/, sdk.api.automated_actions.createOne({
|
|
73
|
+
journeyId: journey.id,
|
|
74
|
+
automationStepId: step.id,
|
|
75
|
+
enduserId: enduser_1.id,
|
|
76
|
+
processAfter: Date.now() + 1000000,
|
|
77
|
+
status: 'active',
|
|
78
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
79
|
+
action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
|
|
80
|
+
})
|
|
81
|
+
// Create a finished action to confirm it is left untouched by the cascade
|
|
82
|
+
];
|
|
83
|
+
case 5:
|
|
84
|
+
activeAction_1 = _b.sent();
|
|
85
|
+
return [4 /*yield*/, sdk.api.automated_actions.createOne({
|
|
86
|
+
journeyId: journey.id,
|
|
87
|
+
automationStepId: step.id,
|
|
88
|
+
enduserId: enduser_1.id,
|
|
89
|
+
processAfter: Date.now() + 1000000,
|
|
90
|
+
status: 'finished',
|
|
91
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
92
|
+
action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
|
|
93
|
+
})
|
|
94
|
+
// Assert the action starts active
|
|
95
|
+
];
|
|
96
|
+
case 6:
|
|
97
|
+
finishedAction_1 = _b.sent();
|
|
98
|
+
return [4 /*yield*/, sdk.api.automated_actions.getOne(activeAction_1.id)];
|
|
99
|
+
case 7:
|
|
100
|
+
before = _b.sent();
|
|
101
|
+
if (before.status !== 'active') {
|
|
102
|
+
throw new Error("Expected action to start 'active', got '".concat(before.status, "'"));
|
|
103
|
+
}
|
|
104
|
+
console.log("✓ Action is active before journey deletion");
|
|
105
|
+
// Delete the journey — this should cascade cancel the pending action
|
|
106
|
+
return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id)];
|
|
107
|
+
case 8:
|
|
108
|
+
// Delete the journey — this should cascade cancel the pending action
|
|
109
|
+
_b.sent();
|
|
110
|
+
journeyId = undefined; // already deleted, skip in cleanup
|
|
111
|
+
expectedReason_1 = AUTOMATED_ACTION_CANCEL_REASONS.indexOf('Journey Deleted');
|
|
112
|
+
return [4 /*yield*/, pollForResults(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
113
|
+
var actions, active, finished;
|
|
114
|
+
return __generator(this, function (_a) {
|
|
115
|
+
switch (_a.label) {
|
|
116
|
+
case 0: return [4 /*yield*/, sdk.api.automated_actions.getSome({ filter: { enduserId: enduser_1.id } })];
|
|
117
|
+
case 1:
|
|
118
|
+
actions = _a.sent();
|
|
119
|
+
active = actions.find(function (a) { return a.id === activeAction_1.id; });
|
|
120
|
+
finished = actions.find(function (a) { return a.id === finishedAction_1.id; });
|
|
121
|
+
return [2 /*return*/, { active: active, finished: finished }];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}); }, function (_a) {
|
|
125
|
+
var active = _a.active;
|
|
126
|
+
return ((active === null || active === void 0 ? void 0 : active.status) === 'cancelled'
|
|
127
|
+
&& (active === null || active === void 0 ? void 0 : active.cancelReason) === expectedReason_1
|
|
128
|
+
&& (active === null || active === void 0 ? void 0 : active.cancelledBy) === sdk.userInfo.id);
|
|
129
|
+
}, 'Active action should be cancelled with Journey Deleted reason and cancelledBy after journey deletion')];
|
|
130
|
+
case 9:
|
|
131
|
+
_b.sent();
|
|
132
|
+
console.log("✓ Active action cancelled with Journey Deleted reason and cancelledBy set to deleting user");
|
|
133
|
+
return [4 /*yield*/, sdk.api.automated_actions.getOne(finishedAction_1.id)];
|
|
134
|
+
case 10:
|
|
135
|
+
finishedAfter = _b.sent();
|
|
136
|
+
if (finishedAfter.status !== 'finished') {
|
|
137
|
+
throw new Error("Expected finished action to remain 'finished', got '".concat(finishedAfter.status, "'"));
|
|
138
|
+
}
|
|
139
|
+
console.log("✓ Finished action left untouched");
|
|
140
|
+
console.log("✅ Journey Delete Cancels Pending Actions tests completed successfully");
|
|
141
|
+
return [3 /*break*/, 13];
|
|
142
|
+
case 11:
|
|
143
|
+
// Cleanup — journey is already deleted if the flow completed
|
|
144
|
+
return [4 /*yield*/, Promise.all([
|
|
145
|
+
enduserId ? sdk.api.endusers.deleteOne(enduserId).catch(function () { }) : undefined,
|
|
146
|
+
stepId ? sdk.api.automation_steps.deleteOne(stepId).catch(function () { }) : undefined,
|
|
147
|
+
journeyId ? sdk.api.journeys.deleteOne(journeyId).catch(function () { }) : undefined,
|
|
148
|
+
])];
|
|
149
|
+
case 12:
|
|
150
|
+
// Cleanup — journey is already deleted if the flow completed
|
|
151
|
+
_b.sent();
|
|
152
|
+
return [7 /*endfinally*/];
|
|
153
|
+
case 13: return [2 /*return*/];
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
var pollForResults = function (fetchFn, evaluateFn, description, intervalMs, maxIterations) {
|
|
159
|
+
if (intervalMs === void 0) { intervalMs = 500; }
|
|
160
|
+
if (maxIterations === void 0) { maxIterations = 30; }
|
|
161
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
162
|
+
var lastResult, i;
|
|
163
|
+
return __generator(this, function (_a) {
|
|
164
|
+
switch (_a.label) {
|
|
165
|
+
case 0:
|
|
166
|
+
i = 0;
|
|
167
|
+
_a.label = 1;
|
|
168
|
+
case 1:
|
|
169
|
+
if (!(i < maxIterations)) return [3 /*break*/, 5];
|
|
170
|
+
return [4 /*yield*/, wait(undefined, intervalMs)];
|
|
171
|
+
case 2:
|
|
172
|
+
_a.sent();
|
|
173
|
+
return [4 /*yield*/, fetchFn()];
|
|
174
|
+
case 3:
|
|
175
|
+
lastResult = _a.sent();
|
|
176
|
+
if (evaluateFn(lastResult)) {
|
|
177
|
+
console.log("\u2713 ".concat(description, " - completed after ").concat((i + 1) * intervalMs, "ms"));
|
|
178
|
+
return [2 /*return*/];
|
|
179
|
+
}
|
|
180
|
+
_a.label = 4;
|
|
181
|
+
case 4:
|
|
182
|
+
i++;
|
|
183
|
+
return [3 /*break*/, 1];
|
|
184
|
+
case 5:
|
|
185
|
+
console.log('Final polling result:', lastResult);
|
|
186
|
+
throw new Error("Polling timeout: ".concat(description, " - waited ").concat(maxIterations * intervalMs, "ms"));
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
// Allow running this test file independently
|
|
192
|
+
if (require.main === module) {
|
|
193
|
+
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
194
|
+
var sdk_1 = new Session({ host: host });
|
|
195
|
+
var sdkNonAdmin_1 = new Session({ host: host });
|
|
196
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
197
|
+
var setup_tests;
|
|
198
|
+
return __generator(this, function (_a) {
|
|
199
|
+
switch (_a.label) {
|
|
200
|
+
case 0: return [4 /*yield*/, import("../setup")];
|
|
201
|
+
case 1:
|
|
202
|
+
setup_tests = (_a.sent()).setup_tests;
|
|
203
|
+
return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
|
|
204
|
+
case 2:
|
|
205
|
+
_a.sent();
|
|
206
|
+
return [4 /*yield*/, journey_delete_cancels_actions_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
207
|
+
case 3:
|
|
208
|
+
_a.sent();
|
|
209
|
+
return [2 /*return*/];
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}); };
|
|
213
|
+
runTests()
|
|
214
|
+
.then(function () {
|
|
215
|
+
console.log("✅ Journey Delete Cancels Pending Actions test suite completed successfully");
|
|
216
|
+
process.exit(0);
|
|
217
|
+
})
|
|
218
|
+
.catch(function (error) {
|
|
219
|
+
console.error("❌ Journey Delete Cancels Pending Actions test suite failed:", error);
|
|
220
|
+
process.exit(1);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=journey_delete_cancels_actions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey_delete_cancels_actions.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/journey_delete_cancels_actions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Session } from "../../../sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Reproduction + regression test for the reported vulnerability:
|
|
4
|
+
*
|
|
5
|
+
* A @wearehackerone.com email "joined" a customer's organization without being invited, and
|
|
6
|
+
* duplicate user records existed for that email — each bound to a different businessId.
|
|
7
|
+
*
|
|
8
|
+
* Root cause: the public `POST /v1/users/register` endpoint. `addPublicEndpoint` accepts an
|
|
9
|
+
* OPTIONAL, caller-supplied `businessId` (routing.ts) and bakes it into the handler's DB. The
|
|
10
|
+
* register handler's only duplicate guard (`DB.users.findOne({ email })`) is therefore scoped to
|
|
11
|
+
* whatever org the caller named, and the subsequent `DB.users.insertOne(...)` stamps that
|
|
12
|
+
* caller-supplied businessId onto a new `accountType: 'Business'` user — bypassing the
|
|
13
|
+
* globalUnique: ['email'] enforcement that only runs in the generic create route.
|
|
14
|
+
*
|
|
15
|
+
* The "victim org" here is the test admin's own org (sdk.userInfo.businessId): an org the
|
|
16
|
+
* anonymous caller was never invited to. The admin is used purely to OBSERVE whether an
|
|
17
|
+
* uninvited user record materialized inside their org (getOne({ email }) is org-scoped and
|
|
18
|
+
* throws when the email is absent from the caller's tenant).
|
|
19
|
+
*
|
|
20
|
+
* Expected results:
|
|
21
|
+
* - VULNERABLE code: the assertions FAIL — the planted user appears inside the victim org,
|
|
22
|
+
* proving the exploit ("EXPLOIT CONFIRMED" in the failure message).
|
|
23
|
+
* - FIXED code: register ignores the caller-supplied businessId (self-signups are created
|
|
24
|
+
* org-less and duplicates are rejected globally), so nothing appears in the victim org and
|
|
25
|
+
* the assertions PASS.
|
|
26
|
+
*
|
|
27
|
+
* Uses unique emails per run (Date.now()) so re-runs never collide on the platform-wide unique
|
|
28
|
+
* email constraint. NOTE: on the FIXED path these registrations create org-less user records
|
|
29
|
+
* that an org-scoped admin cannot delete — harmless residue (unique emails), inherent to the
|
|
30
|
+
* legitimate "root register, no org" signup behavior.
|
|
31
|
+
*/
|
|
32
|
+
export declare const register_business_id_injection_tests: ({ sdk }: {
|
|
33
|
+
sdk: Session;
|
|
34
|
+
sdkNonAdmin: Session;
|
|
35
|
+
}) => Promise<void>;
|
|
36
|
+
//# sourceMappingURL=register_business_id_injection.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register_business_id_injection.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/register_business_id_injection.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAsBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,oCAAoC;SAA2B,OAAO;iBAAe,OAAO;mBA+DxG,CAAA"}
|