@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
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;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,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
- // ── Organization.healthieIntegrationIds pushed by create side effect ──
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 7:
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 8:
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 9:
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 10:
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 11:
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 12:
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 13:
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
- return [4 /*yield*/, 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'); } })];
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
- return [4 /*yield*/, 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; } })
160
- // unlink changeable again
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
- // unlink changeable again
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*/, async_test("healthieIntegrationId changeable again after unlinking", function () { return sdk.api.endusers.updateOne(enduserId, { healthieIntegrationId: '' }); }, { onResult: function (e) { return !e.healthieIntegrationId; } })
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 19:
206
+ case 20:
173
207
  _c.sent();
174
208
  return [4 /*yield*/, sdk.api.forms.createOne({ title: "Multi Healthie FormSort" })];
175
- case 20:
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 21:
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
- // link the formsort enduser, then attempt a relink via formsort field change must be dropped
229
+ // linked endusers are re-routable via formsort too (self-serve fix/migrate)
196
230
  ];
197
- case 22:
231
+ case 23:
198
232
  _c.sent();
199
- // link the formsort enduser, then attempt a relink via formsort field change must be dropped
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 23:
202
- // link the formsort enduser, then attempt a relink via formsort field change must be dropped
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*/, async_test("formsort relink attempt on linked enduser is dropped", function () { return sdk.api.endusers.getOne(formsortEnduserId); }, { onResult: function (e) { return e.healthieIntegrationId === TAG; } })];
244
+ return [4 /*yield*/, wait(undefined, 1000)];
214
245
  case 26:
215
246
  _c.sent();
216
- return [4 /*yield*/, 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) {
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,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,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"}