@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.
Files changed (36) hide show
  1. package/lib/cjs/tests/api_tests/healthie_multi_integration.test.d.ts.map +1 -1
  2. package/lib/cjs/tests/api_tests/healthie_multi_integration.test.js +66 -37
  3. package/lib/cjs/tests/api_tests/healthie_multi_integration.test.js.map +1 -1
  4. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -0
  5. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -0
  6. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js +250 -0
  7. package/lib/cjs/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -0
  8. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts +36 -0
  9. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -0
  10. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js +203 -0
  11. package/lib/cjs/tests/api_tests/security/register_business_id_injection.test.js.map +1 -0
  12. package/lib/cjs/tests/tests.d.ts.map +1 -1
  13. package/lib/cjs/tests/tests.js +174 -166
  14. package/lib/cjs/tests/tests.js.map +1 -1
  15. package/lib/esm/sdk.d.ts +2 -2
  16. package/lib/esm/tests/api_tests/healthie_multi_integration.test.d.ts.map +1 -1
  17. package/lib/esm/tests/api_tests/healthie_multi_integration.test.js +67 -38
  18. package/lib/esm/tests/api_tests/healthie_multi_integration.test.js.map +1 -1
  19. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts +6 -0
  20. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.d.ts.map +1 -0
  21. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js +223 -0
  22. package/lib/esm/tests/api_tests/journey_delete_cancels_actions.test.js.map +1 -0
  23. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts +36 -0
  24. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.d.ts.map +1 -0
  25. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js +196 -0
  26. package/lib/esm/tests/api_tests/security/register_business_id_injection.test.js.map +1 -0
  27. package/lib/esm/tests/tests.d.ts.map +1 -1
  28. package/lib/esm/tests/tests.js +174 -166
  29. package/lib/esm/tests/tests.js.map +1 -1
  30. package/lib/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +6 -6
  32. package/src/tests/api_tests/healthie_multi_integration.test.ts +56 -15
  33. package/src/tests/api_tests/journey_delete_cancels_actions.test.ts +152 -0
  34. package/src/tests/api_tests/security/register_business_id_injection.test.ts +140 -0
  35. package/src/tests/tests.ts +4 -0
  36. package/test_generated.pdf +0 -0
@@ -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;AAcnC,eAAO,MAAM,gCAAgC;SAAwC,OAAO;iBAAe,OAAO;mBA8MjH,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,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -44,6 +55,7 @@ require('source-map-support').install();
44
55
  var axios_1 = __importDefault(require("axios"));
45
56
  var sdk_1 = require("../../sdk");
46
57
  var testing_1 = require("@tellescope/testing");
58
+ var utilities_1 = require("@tellescope/utilities");
47
59
  var setup_1 = require("../setup");
48
60
  var constants_1 = require("@tellescope/constants");
49
61
  var host = process.env.API_URL || 'http://localhost:8080';
@@ -52,7 +64,7 @@ var FORMSORT_TEST_KEY = '9d4f9dff00f60df2690a16da2cb848f289b447614ad9bef850e54af
52
64
  var healthie_multi_integration_tests = function (_a) {
53
65
  var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
54
66
  return __awaiter(void 0, void 0, void 0, function () {
55
- var businessId, primaryIntegrationId, taggedIntegrationId, enduserId, formsortEnduserId, formId, primary, tagged, enduser, form_1, formsortEmail_1, postToFormsort, _i, _b, id;
67
+ var businessId, primaryIntegrationId, taggedIntegrationId, enduserId, formsortEnduserId, formId, conditionPlaceholders, taggedForConditions, untaggedForConditions, primary, tagged, enduser, form_1, formsortEmail_1, postToFormsort, _i, _b, id;
56
68
  return __generator(this, function (_c) {
57
69
  switch (_c.label) {
58
70
  case 0:
@@ -71,6 +83,19 @@ var healthie_multi_integration_tests = function (_a) {
71
83
  throw new Error("healthieIntegrationId missing from BUILT_INS_FOR_SET_FIELDS");
72
84
  }
73
85
  console.log("✅ healthieIntegrationId exposed in BUILT_INS_FOR_SET_FIELDS");
86
+ conditionPlaceholders = {
87
+ businessId: '', creator: '', hashedPassword: '', lastActive: '', lastLogout: '', updatedAt: new Date(),
88
+ };
89
+ taggedForConditions = __assign(__assign({}, conditionPlaceholders), { healthieIntegrationId: TAG });
90
+ untaggedForConditions = __assign({}, conditionPlaceholders);
91
+ (0, testing_1.assert)((0, utilities_1.evaluate_conditional_logic_for_enduser_fields)(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: TAG } }] }), 'Conditional logic error', 'healthieIntegrationId equality matches a tagged patient');
92
+ (0, testing_1.assert)(!(0, utilities_1.evaluate_conditional_logic_for_enduser_fields)(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: 'other-clinic' } }] }), 'Conditional logic error', 'healthieIntegrationId equality rejects a different id');
93
+ (0, testing_1.assert)(!(0, utilities_1.evaluate_conditional_logic_for_enduser_fields)(untaggedForConditions, { $and: [{ condition: { healthieIntegrationId: TAG } }] }), 'Conditional logic error', 'healthieIntegrationId equality rejects an unset (primary) patient');
94
+ (0, testing_1.assert)((0, utilities_1.evaluate_conditional_logic_for_enduser_fields)(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $isSet: true } } }] }), 'Conditional logic error', 'healthieIntegrationId $isSet matches a tagged patient');
95
+ (0, testing_1.assert)((0, utilities_1.evaluate_conditional_logic_for_enduser_fields)(untaggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $isNotSet: true } } }] }), 'Conditional logic error', 'healthieIntegrationId $isNotSet matches an unset (primary) patient');
96
+ (0, testing_1.assert)(!(0, utilities_1.evaluate_conditional_logic_for_enduser_fields)(taggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $ne: TAG } } }] }), 'Conditional logic error', 'healthieIntegrationId $ne rejects the matching tag');
97
+ (0, testing_1.assert)((0, utilities_1.evaluate_conditional_logic_for_enduser_fields)(untaggedForConditions, { $and: [{ condition: { healthieIntegrationId: { $ne: TAG } } }] }), 'Conditional logic error', 'healthieIntegrationId $ne matches an unset (primary) patient');
98
+ console.log("✅ healthieIntegrationId evaluates in conditional logic (equality, $isSet/$isNotSet, $ne)");
74
99
  return [4 /*yield*/, sdk.api.integrations.createOne({
75
100
  title: constants_1.HEALTHIE_TITLE,
76
101
  disableEnduserAutoSync: true,
@@ -109,76 +134,85 @@ var healthie_multi_integration_tests = function (_a) {
109
134
  case 5:
110
135
  _c.sent();
111
136
  return [4 /*yield*/, (0, testing_1.async_test)("primary integration unaffected by tagged settings update", function () { return sdk.api.integrations.getOne(primaryIntegrationId); }, { onResult: function (i) { return !i.pushAddedTags; } })
112
- // ── Organization.healthieIntegrationIds pushed by create side effect ──
137
+ // ── Invalid API key surfaces as an actionable 400 (fake key → Healthie rejects the request) ──
113
138
  ];
114
139
  case 6:
140
+ _c.sent();
141
+ // ── Invalid API key surfaces as an actionable 400 (fake key → Healthie rejects the request) ──
142
+ return [4 /*yield*/, (0, testing_1.async_test)("proxy_read webhooks with an invalid API key returns a clear error", function () { return sdk.api.integrations.proxy_read({
143
+ integration: constants_1.HEALTHIE_TITLE, type: 'webhooks', healthieIntegrationId: TAG,
144
+ }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('API Key is Invalid'); } })
145
+ // ── Organization.healthieIntegrationIds pushed by create side effect ──
146
+ ];
147
+ case 7:
148
+ // ── Invalid API key surfaces as an actionable 400 (fake key → Healthie rejects the request) ──
115
149
  _c.sent();
116
150
  // ── Organization.healthieIntegrationIds pushed by create side effect ──
117
151
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 2000)]; // side effects are async
118
- case 7:
152
+ case 8:
119
153
  // ── Organization.healthieIntegrationIds pushed by create side effect ──
120
154
  _c.sent(); // side effects are async
121
155
  return [4 /*yield*/, (0, testing_1.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)); } })
122
156
  // ── Inbound webhook resolution (help page proves the integration lookup without network) ──
123
157
  ];
124
- case 8:
158
+ case 9:
125
159
  _c.sent();
126
160
  // ── Inbound webhook resolution (help page proves the integration lookup without network) ──
127
161
  return [4 /*yield*/, (0, testing_1.async_test)("webhook help page resolves primary (sandbox) without query param", function () { return axios_1.default.get("".concat(host, "/v1/webhooks/healthie/").concat(businessId)); }, { onResult: function (r) { return typeof r.data === 'string' && r.data.startsWith('Sandbox'); } })];
128
- case 9:
162
+ case 10:
129
163
  // ── Inbound webhook resolution (help page proves the integration lookup without network) ──
130
164
  _c.sent();
131
165
  return [4 /*yield*/, (0, testing_1.async_test)("webhook help page resolves tagged (production) integration via healthieIntegrationId param", function () { return axios_1.default.get("".concat(host, "/v1/webhooks/healthie/").concat(businessId, "?healthieIntegrationId=").concat(TAG)); }, { onResult: function (r) { return typeof r.data === 'string' && r.data.startsWith('Production'); } })];
132
- case 10:
166
+ case 11:
133
167
  _c.sent();
134
168
  return [4 /*yield*/, (0, testing_1.async_test)("webhook help page rejects unknown healthieIntegrationId", function () { return axios_1.default.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; } })
135
169
  // ── Enduser field + one-org-per-patient lock (relationship constraint) ──
136
170
  ];
137
- case 11:
171
+ case 12:
138
172
  _c.sent();
139
173
  return [4 /*yield*/, sdk.api.endusers.createOne({
140
174
  email: 'multi-healthie-test@tellescope.com',
141
175
  healthieIntegrationId: TAG,
142
176
  })];
143
- case 12:
177
+ case 13:
144
178
  enduser = _c.sent();
145
179
  enduserId = enduser.id;
146
180
  if (enduser.healthieIntegrationId !== TAG) {
147
181
  throw new Error("healthieIntegrationId not persisted on enduser create");
148
182
  }
149
183
  return [4 /*yield*/, (0, testing_1.async_test)("healthieIntegrationId freely changeable while unlinked", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: '' }); }, { onResult: function (e) { return !e.healthieIntegrationId; } })];
150
- case 13:
184
+ case 14:
151
185
  _c.sent();
152
186
  return [4 /*yield*/, (0, testing_1.async_test)("healthieIntegrationId re-set while unlinked", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: TAG }); }, { onResult: function (e) { return e.healthieIntegrationId === TAG; } })
153
187
  // link the patient to Healthie (reference with a Healthie patient id)
154
188
  ];
155
- case 14:
156
- _c.sent();
157
- // link the patient to Healthie (reference with a Healthie patient id)
158
- return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [{ type: constants_1.HEALTHIE_TITLE, id: '12345' }] }, { replaceObjectFields: true })];
159
189
  case 15:
160
- // link the patient to Healthie (reference with a Healthie patient id)
161
190
  _c.sent();
162
- return [4 /*yield*/, (0, testing_1.async_test)("healthieIntegrationId locked once a Healthie patient ID exists", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: 'somewhere-else' }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || (e === null || e === void 0 ? void 0 : e.toString()) || '').includes('healthieIntegrationId'); } })];
191
+ // link the patient to Healthie (reference with a Healthie patient id)
192
+ return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [{ type: constants_1.HEALTHIE_TITLE, id: '12345' }] }, { replaceObjectFields: true })
193
+ // no lock: linked patients stay editable so customers can self-serve fix or migrate them
194
+ ];
163
195
  case 16:
196
+ // link the patient to Healthie (reference with a Healthie patient id)
164
197
  _c.sent();
165
- return [4 /*yield*/, (0, testing_1.async_test)("no-op write of the same value still allowed while locked", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: TAG }); }, { onResult: function (e) { return e.healthieIntegrationId === TAG; } })
166
- // unlink changeable again
167
- ];
198
+ // no lock: linked patients stay editable so customers can self-serve fix or migrate them
199
+ return [4 /*yield*/, (0, testing_1.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'; } })];
168
200
  case 17:
201
+ // no lock: linked patients stay editable so customers can self-serve fix or migrate them
169
202
  _c.sent();
170
- // unlink changeable again
171
- return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [] }, { replaceObjectFields: true })];
203
+ return [4 /*yield*/, (0, testing_1.async_test)("healthieIntegrationId revertible while linked", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: TAG }); }, { onResult: function (e) { return e.healthieIntegrationId === TAG; } })];
172
204
  case 18:
173
- // unlink → changeable again
174
205
  _c.sent();
175
- return [4 /*yield*/, (0, testing_1.async_test)("healthieIntegrationId changeable again after unlinking", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: '' }); }, { onResult: function (e) { return !e.healthieIntegrationId; } })
206
+ return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { references: [] }, { replaceObjectFields: true })];
207
+ case 19:
208
+ _c.sent();
209
+ return [4 /*yield*/, (0, testing_1.async_test)("healthieIntegrationId clearable", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: '' }); }, { onResult: function (e) { return !e.healthieIntegrationId; } })
176
210
  // ── Formsort mapping ──
177
211
  ];
178
- case 19:
212
+ case 20:
179
213
  _c.sent();
180
214
  return [4 /*yield*/, sdk.api.forms.createOne({ title: "Multi Healthie FormSort" })];
181
- case 20:
215
+ case 21:
182
216
  form_1 = _c.sent();
183
217
  formId = form_1.id;
184
218
  formsortEmail_1 = 'multi-healthie-formsort@tellescope.com';
@@ -191,37 +225,32 @@ var healthie_multi_integration_tests = function (_a) {
191
225
  { key: 'email', value: formsortEmail_1 },
192
226
  { key: 'healthieIntegrationId', value: TAG },
193
227
  ], "multi-healthie-1")];
194
- case 21:
228
+ case 22:
195
229
  _c.sent();
196
230
  return [4 /*yield*/, (0, testing_1.async_test)("formsort sets healthieIntegrationId on unlinked enduser", function () { return sdk.api.endusers.getSome({ filter: { email: formsortEmail_1 } }); }, { onResult: function (es) {
197
231
  var e = es.find(function (e) { return e.email === formsortEmail_1; });
198
232
  formsortEnduserId = (e === null || e === void 0 ? void 0 : e.id) || '';
199
233
  return (e === null || e === void 0 ? void 0 : e.healthieIntegrationId) === TAG;
200
234
  } })
201
- // link the formsort enduser, then attempt a relink via formsort field change must be dropped
235
+ // linked endusers are re-routable via formsort too (self-serve fix/migrate)
202
236
  ];
203
- case 22:
237
+ case 23:
204
238
  _c.sent();
205
- // link the formsort enduser, then attempt a relink via formsort field change must be dropped
239
+ // linked endusers are re-routable via formsort too (self-serve fix/migrate)
206
240
  return [4 /*yield*/, sdk.api.endusers.updateOne(formsortEnduserId, { references: [{ type: constants_1.HEALTHIE_TITLE, id: '6789' }] }, { replaceObjectFields: true })];
207
- case 23:
208
- // link the formsort enduser, then attempt a relink via formsort field change must be dropped
241
+ case 24:
242
+ // linked endusers are re-routable via formsort too (self-serve fix/migrate)
209
243
  _c.sent();
210
244
  return [4 /*yield*/, postToFormsort([
211
245
  { key: 'email', value: formsortEmail_1 },
212
246
  { key: 'healthieIntegrationId', value: 'somewhere-else' },
213
247
  ], "multi-healthie-2")];
214
- case 24:
215
- _c.sent();
216
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
217
248
  case 25:
218
249
  _c.sent();
219
- return [4 /*yield*/, (0, testing_1.async_test)("formsort relink attempt on linked enduser is dropped", function () { return sdk.api.endusers.getOne(formsortEnduserId); }, { onResult: function (e) { return e.healthieIntegrationId === TAG; } })];
250
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
220
251
  case 26:
221
252
  _c.sent();
222
- return [4 /*yield*/, (0, testing_1.async_test)("formsort relink attempt logs a customer-visible background error", function () { return sdk.api.background_errors.getSome(); }, { onResult: function (errors) { return errors.some(function (e) {
223
- return e.title === "Healthie Integration Change Blocked" && e.enduserId === formsortEnduserId;
224
- }); } })
253
+ return [4 /*yield*/, (0, testing_1.async_test)("formsort updates healthieIntegrationId on a linked enduser", function () { return sdk.api.endusers.getOne(formsortEnduserId); }, { onResult: function (e) { return e.healthieIntegrationId === 'somewhere-else'; } })
225
254
  // ── Removing the primary must not affect the tagged integration; org list recomputes on delete ──
226
255
  ];
227
256
  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,6 @@
1
+ import { Session } from '../../sdk';
2
+ export declare const journey_delete_cancels_actions_tests: ({ sdk, sdkNonAdmin }: {
3
+ sdk: Session;
4
+ sdkNonAdmin: Session;
5
+ }) => Promise<void>;
6
+ //# sourceMappingURL=journey_delete_cancels_actions.test.d.ts.map
@@ -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,250 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ 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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ Object.defineProperty(exports, "__esModule", { value: true });
62
+ exports.journey_delete_cancels_actions_tests = void 0;
63
+ var sdk_1 = require("../../sdk");
64
+ var testing_1 = require("@tellescope/testing");
65
+ var constants_1 = require("@tellescope/constants");
66
+ var host = process.env.API_URL || 'http://localhost:8080';
67
+ var journey_delete_cancels_actions_tests = function (_a) {
68
+ var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
69
+ return __awaiter(void 0, void 0, void 0, function () {
70
+ var journeyId, enduserId, stepId, journey, step, enduser_1, activeAction_1, finishedAction_1, before, expectedReason_1, finishedAfter;
71
+ return __generator(this, function (_b) {
72
+ switch (_b.label) {
73
+ case 0:
74
+ (0, testing_1.log_header)("Journey Delete Cancels Pending Actions Tests");
75
+ _b.label = 1;
76
+ case 1:
77
+ _b.trys.push([1, , 11, 13]);
78
+ return [4 /*yield*/, sdk.api.journeys.createOne({ title: "Cascade Cancel Journey " + Date.now() })];
79
+ case 2:
80
+ journey = _b.sent();
81
+ journeyId = journey.id;
82
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
83
+ journeyId: journey.id,
84
+ action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
85
+ events: [{ type: 'onJourneyStart', info: {} }],
86
+ })];
87
+ case 3:
88
+ step = _b.sent();
89
+ stepId = step.id;
90
+ return [4 /*yield*/, sdk.api.endusers.createOne({
91
+ fname: 'Cascade',
92
+ lname: 'Cancel',
93
+ email: 'test-cascade-cancel-' + Date.now() + '@example.com',
94
+ })];
95
+ case 4:
96
+ enduser_1 = _b.sent();
97
+ enduserId = enduser_1.id;
98
+ return [4 /*yield*/, sdk.api.automated_actions.createOne({
99
+ journeyId: journey.id,
100
+ automationStepId: step.id,
101
+ enduserId: enduser_1.id,
102
+ processAfter: Date.now() + 1000000,
103
+ status: 'active',
104
+ event: { type: 'onJourneyStart', info: {} },
105
+ action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
106
+ })
107
+ // Create a finished action to confirm it is left untouched by the cascade
108
+ ];
109
+ case 5:
110
+ activeAction_1 = _b.sent();
111
+ return [4 /*yield*/, sdk.api.automated_actions.createOne({
112
+ journeyId: journey.id,
113
+ automationStepId: step.id,
114
+ enduserId: enduser_1.id,
115
+ processAfter: Date.now() + 1000000,
116
+ status: 'finished',
117
+ event: { type: 'onJourneyStart', info: {} },
118
+ action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
119
+ })
120
+ // Assert the action starts active
121
+ ];
122
+ case 6:
123
+ finishedAction_1 = _b.sent();
124
+ return [4 /*yield*/, sdk.api.automated_actions.getOne(activeAction_1.id)];
125
+ case 7:
126
+ before = _b.sent();
127
+ if (before.status !== 'active') {
128
+ throw new Error("Expected action to start 'active', got '".concat(before.status, "'"));
129
+ }
130
+ console.log("✓ Action is active before journey deletion");
131
+ // Delete the journey — this should cascade cancel the pending action
132
+ return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id)];
133
+ case 8:
134
+ // Delete the journey — this should cascade cancel the pending action
135
+ _b.sent();
136
+ journeyId = undefined; // already deleted, skip in cleanup
137
+ expectedReason_1 = constants_1.AUTOMATED_ACTION_CANCEL_REASONS.indexOf('Journey Deleted');
138
+ return [4 /*yield*/, pollForResults(function () { return __awaiter(void 0, void 0, void 0, function () {
139
+ var actions, active, finished;
140
+ return __generator(this, function (_a) {
141
+ switch (_a.label) {
142
+ case 0: return [4 /*yield*/, sdk.api.automated_actions.getSome({ filter: { enduserId: enduser_1.id } })];
143
+ case 1:
144
+ actions = _a.sent();
145
+ active = actions.find(function (a) { return a.id === activeAction_1.id; });
146
+ finished = actions.find(function (a) { return a.id === finishedAction_1.id; });
147
+ return [2 /*return*/, { active: active, finished: finished }];
148
+ }
149
+ });
150
+ }); }, function (_a) {
151
+ var active = _a.active;
152
+ return ((active === null || active === void 0 ? void 0 : active.status) === 'cancelled'
153
+ && (active === null || active === void 0 ? void 0 : active.cancelReason) === expectedReason_1
154
+ && (active === null || active === void 0 ? void 0 : active.cancelledBy) === sdk.userInfo.id);
155
+ }, 'Active action should be cancelled with Journey Deleted reason and cancelledBy after journey deletion')];
156
+ case 9:
157
+ _b.sent();
158
+ console.log("✓ Active action cancelled with Journey Deleted reason and cancelledBy set to deleting user");
159
+ return [4 /*yield*/, sdk.api.automated_actions.getOne(finishedAction_1.id)];
160
+ case 10:
161
+ finishedAfter = _b.sent();
162
+ if (finishedAfter.status !== 'finished') {
163
+ throw new Error("Expected finished action to remain 'finished', got '".concat(finishedAfter.status, "'"));
164
+ }
165
+ console.log("✓ Finished action left untouched");
166
+ console.log("✅ Journey Delete Cancels Pending Actions tests completed successfully");
167
+ return [3 /*break*/, 13];
168
+ case 11:
169
+ // Cleanup — journey is already deleted if the flow completed
170
+ return [4 /*yield*/, Promise.all([
171
+ enduserId ? sdk.api.endusers.deleteOne(enduserId).catch(function () { }) : undefined,
172
+ stepId ? sdk.api.automation_steps.deleteOne(stepId).catch(function () { }) : undefined,
173
+ journeyId ? sdk.api.journeys.deleteOne(journeyId).catch(function () { }) : undefined,
174
+ ])];
175
+ case 12:
176
+ // Cleanup — journey is already deleted if the flow completed
177
+ _b.sent();
178
+ return [7 /*endfinally*/];
179
+ case 13: return [2 /*return*/];
180
+ }
181
+ });
182
+ });
183
+ };
184
+ exports.journey_delete_cancels_actions_tests = journey_delete_cancels_actions_tests;
185
+ var pollForResults = function (fetchFn, evaluateFn, description, intervalMs, maxIterations) {
186
+ if (intervalMs === void 0) { intervalMs = 500; }
187
+ if (maxIterations === void 0) { maxIterations = 30; }
188
+ return __awaiter(void 0, void 0, void 0, function () {
189
+ var lastResult, i;
190
+ return __generator(this, function (_a) {
191
+ switch (_a.label) {
192
+ case 0:
193
+ i = 0;
194
+ _a.label = 1;
195
+ case 1:
196
+ if (!(i < maxIterations)) return [3 /*break*/, 5];
197
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, intervalMs)];
198
+ case 2:
199
+ _a.sent();
200
+ return [4 /*yield*/, fetchFn()];
201
+ case 3:
202
+ lastResult = _a.sent();
203
+ if (evaluateFn(lastResult)) {
204
+ console.log("\u2713 ".concat(description, " - completed after ").concat((i + 1) * intervalMs, "ms"));
205
+ return [2 /*return*/];
206
+ }
207
+ _a.label = 4;
208
+ case 4:
209
+ i++;
210
+ return [3 /*break*/, 1];
211
+ case 5:
212
+ console.log('Final polling result:', lastResult);
213
+ throw new Error("Polling timeout: ".concat(description, " - waited ").concat(maxIterations * intervalMs, "ms"));
214
+ }
215
+ });
216
+ });
217
+ };
218
+ // Allow running this test file independently
219
+ if (require.main === module) {
220
+ console.log("\uD83C\uDF10 Using API URL: ".concat(host));
221
+ var sdk_2 = new sdk_1.Session({ host: host });
222
+ var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
223
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
224
+ var setup_tests;
225
+ return __generator(this, function (_a) {
226
+ switch (_a.label) {
227
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("../setup")); })];
228
+ case 1:
229
+ setup_tests = (_a.sent()).setup_tests;
230
+ return [4 /*yield*/, setup_tests(sdk_2, sdkNonAdmin_1)];
231
+ case 2:
232
+ _a.sent();
233
+ return [4 /*yield*/, (0, exports.journey_delete_cancels_actions_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
234
+ case 3:
235
+ _a.sent();
236
+ return [2 /*return*/];
237
+ }
238
+ });
239
+ }); };
240
+ runTests()
241
+ .then(function () {
242
+ console.log("✅ Journey Delete Cancels Pending Actions test suite completed successfully");
243
+ process.exit(0);
244
+ })
245
+ .catch(function (error) {
246
+ console.error("❌ Journey Delete Cancels Pending Actions test suite failed:", error);
247
+ process.exit(1);
248
+ });
249
+ }
250
+ //# 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"}