@tellescope/sdk 1.255.8 → 1.255.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/enduser.d.ts +1 -0
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/sdk.d.ts +3 -2
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_limits.test.js +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_limits.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js +166 -0
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/enduser_cross_access_isolation.test.js +8 -8
- package/lib/cjs/tests/api_tests/enduser_cross_access_isolation.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.js +483 -0
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.js +324 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.js.map +1 -0
- package/lib/cjs/tests/setup.d.ts +11 -1
- package/lib/cjs/tests/setup.d.ts.map +1 -1
- package/lib/cjs/tests/setup.js +19 -1
- package/lib/cjs/tests/setup.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +207 -192
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +2 -2
- package/lib/esm/tests/api_tests/calendar_event_limits.test.js +2 -2
- package/lib/esm/tests/api_tests/calendar_event_limits.test.js.map +1 -1
- package/lib/esm/tests/api_tests/custom_dashboards.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/custom_dashboards.test.js +259 -33
- package/lib/esm/tests/api_tests/custom_dashboards.test.js.map +1 -1
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js +162 -0
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -0
- package/lib/esm/tests/api_tests/enduser_cross_access_isolation.test.js +9 -9
- package/lib/esm/tests/api_tests/enduser_cross_access_isolation.test.js.map +1 -1
- package/lib/esm/tests/api_tests/medication_added_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/medication_added_trigger.test.js +206 -136
- package/lib/esm/tests/api_tests/medication_added_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/nutrition_tracking.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/nutrition_tracking.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/nutrition_tracking.test.js +479 -0
- package/lib/esm/tests/api_tests/nutrition_tracking.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts +10 -0
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js +184 -41
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js.map +1 -1
- package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/webhook_error_handling.test.js +317 -0
- package/lib/esm/tests/api_tests/webhook_error_handling.test.js.map +1 -0
- package/lib/esm/tests/setup.d.ts +11 -1
- package/lib/esm/tests/setup.d.ts.map +1 -1
- package/lib/esm/tests/setup.js +17 -0
- package/lib/esm/tests/setup.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +233 -206
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/tests/api_tests/calendar_event_limits.test.ts +2 -2
- package/src/tests/api_tests/dont_sync_to_elation_form_submission.test.ts +91 -0
- package/src/tests/api_tests/enduser_cross_access_isolation.test.ts +6 -6
- package/src/tests/api_tests/nutrition_tracking.test.ts +425 -0
- package/src/tests/api_tests/webhook_error_handling.test.ts +190 -0
- package/src/tests/setup.ts +13 -0
- package/src/tests/tests.ts +29 -18
- package/test_generated.pdf +0 -0
|
@@ -68,6 +68,16 @@ var _a = [process.env.NON_ADMIN_EMAIL, process.env.NON_ADMIN_PASSWORD], nonAdmin
|
|
|
68
68
|
* 2. Assigns the role to the non-admin user.
|
|
69
69
|
* 3. Calls each endpoint as the non-admin.
|
|
70
70
|
* 4. Asserts each endpoint returns a 403-equivalent error (not 200).
|
|
71
|
+
* 5. Positive case: a role granting ai_conversations create (read/update denied) must pass
|
|
72
|
+
* the send_message gate — generating a NEW conversation requires only create access.
|
|
73
|
+
* 6. But the same role must still 403 when passing a conversationId: continuing an existing
|
|
74
|
+
* conversation reads its stored history (returned in the response) and appends to it,
|
|
75
|
+
* so it requires read + update access in addition to create.
|
|
76
|
+
* 7. Default-provider-permissions role (ai_conversations = Assigned): send_message must not
|
|
77
|
+
* 500. Regression: the post-generation $push previously ran through the caller's
|
|
78
|
+
* access-scoped DB, where "Assigned" filters can't match the just-created conversation,
|
|
79
|
+
* returning null and crashing the handler (Cannot read properties of null '_id') after
|
|
80
|
+
* credits were consumed. bedrock.ts now persists via tenant-scoped org-wide queries.
|
|
71
81
|
*
|
|
72
82
|
* Pre-fix:
|
|
73
83
|
* - send_message: 200 (or some downstream error from Bedrock) — NOT 403. Test fails.
|
|
@@ -78,22 +88,24 @@ var _a = [process.env.NON_ADMIN_EMAIL, process.env.NON_ADMIN_PASSWORD], nonAdmin
|
|
|
78
88
|
export var ai_conversations_rbac_tests = function (_a) {
|
|
79
89
|
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
80
90
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
81
|
-
var roleName, rbapId, originalRoles, rbap, _b, _c, _d;
|
|
82
|
-
return __generator(this, function (
|
|
83
|
-
switch (
|
|
91
|
+
var roleName, grantRoleName, assignedRoleName, rbapId, grantRbapId, assignedRbapId, originalRoles, rbap, grantRbap, assignedRbap, _b, _c, _d, _e, _f;
|
|
92
|
+
return __generator(this, function (_g) {
|
|
93
|
+
switch (_g.label) {
|
|
84
94
|
case 0:
|
|
85
95
|
log_header("F-0005: ai_conversations RBAC bypass regression");
|
|
86
96
|
roleName = "f0005-ai-conversations-no-access-".concat(Date.now());
|
|
97
|
+
grantRoleName = "f0005-ai-conversations-create-granted-".concat(Date.now());
|
|
98
|
+
assignedRoleName = "f0005-ai-conversations-assigned-default-".concat(Date.now());
|
|
87
99
|
originalRoles = sdkNonAdmin.userInfo.roles;
|
|
88
|
-
|
|
100
|
+
_g.label = 1;
|
|
89
101
|
case 1:
|
|
90
|
-
|
|
102
|
+
_g.trys.push([1, , 19, 40]);
|
|
91
103
|
return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
|
|
92
104
|
role: roleName,
|
|
93
105
|
permissions: __assign(__assign({}, PROVIDER_PERMISSIONS), { ai_conversations: { create: null, read: null, update: null, delete: null }, endusers: { create: null, read: null, update: null, delete: null } }),
|
|
94
106
|
})];
|
|
95
107
|
case 2:
|
|
96
|
-
rbap =
|
|
108
|
+
rbap = _g.sent();
|
|
97
109
|
rbapId = rbap.id;
|
|
98
110
|
// 2. Assign the role to the non-admin user and re-authenticate so the new
|
|
99
111
|
// session reflects the role's denied permissions.
|
|
@@ -101,16 +113,16 @@ export var ai_conversations_rbac_tests = function (_a) {
|
|
|
101
113
|
case 3:
|
|
102
114
|
// 2. Assign the role to the non-admin user and re-authenticate so the new
|
|
103
115
|
// session reflects the role's denied permissions.
|
|
104
|
-
|
|
116
|
+
_g.sent();
|
|
105
117
|
return [4 /*yield*/, wait(undefined, 1500)];
|
|
106
118
|
case 4:
|
|
107
|
-
|
|
119
|
+
_g.sent();
|
|
108
120
|
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
|
|
109
121
|
// 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
|
|
110
122
|
// fails downstream in Bedrock without 403). Post-fix: throws before any work.
|
|
111
123
|
];
|
|
112
124
|
case 5:
|
|
113
|
-
|
|
125
|
+
_g.sent();
|
|
114
126
|
// 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
|
|
115
127
|
// fails downstream in Bedrock without 403). Post-fix: throws before any work.
|
|
116
128
|
return [4 /*yield*/, async_test("F-0005: ai_conversations.send_message must throw 403 when role denies ai_conversations", function () { return sdkNonAdmin.api.ai_conversations.send_message({
|
|
@@ -135,7 +147,7 @@ export var ai_conversations_rbac_tests = function (_a) {
|
|
|
135
147
|
case 6:
|
|
136
148
|
// 3a. send_message must throw 403 (or equivalent access error). Pre-fix: succeeds (or
|
|
137
149
|
// fails downstream in Bedrock without 403). Post-fix: throws before any work.
|
|
138
|
-
|
|
150
|
+
_g.sent();
|
|
139
151
|
// 3b. generate_ai_decision must throw 403 BEFORE the early res.json({}) response.
|
|
140
152
|
// Pre-fix: handler responds 200 with {} immediately and processes in background.
|
|
141
153
|
// Post-fix: handler throws 403 before res.json({}).
|
|
@@ -154,60 +166,191 @@ export var ai_conversations_rbac_tests = function (_a) {
|
|
|
154
166
|
return status === 403 || status === 401
|
|
155
167
|
|| msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
|
|
156
168
|
},
|
|
157
|
-
})
|
|
169
|
+
})
|
|
170
|
+
// 4. Positive case: granting only ai_conversations create must pass the RBAC gate.
|
|
171
|
+
// send_message may still fail downstream (e.g. 400 "Organization has not set up credits"),
|
|
172
|
+
// but it must NOT be an access-denial error.
|
|
173
|
+
];
|
|
158
174
|
case 7:
|
|
159
175
|
// 3b. generate_ai_decision must throw 403 BEFORE the early res.json({}) response.
|
|
160
176
|
// Pre-fix: handler responds 200 with {} immediately and processes in background.
|
|
161
177
|
// Post-fix: handler throws 403 before res.json({}).
|
|
162
|
-
|
|
163
|
-
return [
|
|
178
|
+
_g.sent();
|
|
179
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
|
|
180
|
+
role: grantRoleName,
|
|
181
|
+
permissions: __assign(__assign({}, PROVIDER_PERMISSIONS), { ai_conversations: { create: 'All', read: null, update: null, delete: null } }),
|
|
182
|
+
})];
|
|
164
183
|
case 8:
|
|
165
|
-
|
|
166
|
-
|
|
184
|
+
grantRbap = _g.sent();
|
|
185
|
+
grantRbapId = grantRbap.id;
|
|
186
|
+
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [grantRoleName] }, { replaceObjectFields: true })];
|
|
167
187
|
case 9:
|
|
168
|
-
|
|
169
|
-
return [
|
|
188
|
+
_g.sent();
|
|
189
|
+
return [4 /*yield*/, wait(undefined, 1500)];
|
|
170
190
|
case 10:
|
|
171
|
-
|
|
172
|
-
return [
|
|
191
|
+
_g.sent();
|
|
192
|
+
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
|
|
173
193
|
case 11:
|
|
174
|
-
|
|
175
|
-
|
|
194
|
+
_g.sent();
|
|
195
|
+
return [4 /*yield*/, async_test("F-0005: ai_conversations.send_message must NOT be access-denied when role grants create", function () { return sdkNonAdmin.api.ai_conversations.send_message({
|
|
196
|
+
message: 'F-0005 positive-case test',
|
|
197
|
+
type: 'Test',
|
|
198
|
+
maxTokens: 1,
|
|
199
|
+
})
|
|
200
|
+
.then(function () { return 'allowed'; })
|
|
201
|
+
.catch(function (e) {
|
|
202
|
+
var _a, _b;
|
|
203
|
+
var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
|
|
204
|
+
var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
|
|
205
|
+
if (status === 403 || status === 401
|
|
206
|
+
|| msg.includes('access') || msg.includes('permission') || msg.includes('forbidden')) {
|
|
207
|
+
throw e; // access denial — the gate incorrectly blocked a create-granted role
|
|
208
|
+
}
|
|
209
|
+
return 'allowed'; // downstream (e.g. credits) error is fine — the gate passed
|
|
210
|
+
}); }, { onResult: function (r) { return r === 'allowed'; } })
|
|
211
|
+
// 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
|
|
212
|
+
// existing conversation — send_message with conversationId returns the full stored history
|
|
213
|
+
// and appends to it. Fake id is fine: the access check must fire before any lookup.
|
|
214
|
+
];
|
|
176
215
|
case 12:
|
|
177
|
-
|
|
178
|
-
|
|
216
|
+
_g.sent();
|
|
217
|
+
// 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
|
|
218
|
+
// existing conversation — send_message with conversationId returns the full stored history
|
|
219
|
+
// and appends to it. Fake id is fine: the access check must fire before any lookup.
|
|
220
|
+
return [4 /*yield*/, async_test("F-0005: ai_conversations.send_message with conversationId must 403 when role denies read/update", function () { return sdkNonAdmin.api.ai_conversations.send_message({
|
|
221
|
+
message: 'F-0005 conversationId bypass test',
|
|
222
|
+
type: 'Test',
|
|
223
|
+
maxTokens: 1,
|
|
224
|
+
conversationId: new ObjectId().toHexString(),
|
|
225
|
+
}); }, {
|
|
226
|
+
shouldError: true,
|
|
227
|
+
onError: function (e) {
|
|
228
|
+
var _a, _b;
|
|
229
|
+
var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
|
|
230
|
+
var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
|
|
231
|
+
return status === 403 || status === 401
|
|
232
|
+
|| msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
|
|
233
|
+
},
|
|
234
|
+
})
|
|
235
|
+
// 6. Regression: a role with default provider permissions (ai_conversations = Assigned)
|
|
236
|
+
// must be able to generate a new conversation without a 500. Previously the
|
|
237
|
+
// post-generation $push ran through the access-scoped DB, matched nothing under
|
|
238
|
+
// "Assigned", and crashed the handler with "Cannot read properties of null ('_id')".
|
|
239
|
+
];
|
|
179
240
|
case 13:
|
|
180
|
-
|
|
181
|
-
|
|
241
|
+
// 5. The create-granted (read/update-denied) role must still be blocked from CONTINUING an
|
|
242
|
+
// existing conversation — send_message with conversationId returns the full stored history
|
|
243
|
+
// and appends to it. Fake id is fine: the access check must fire before any lookup.
|
|
244
|
+
_g.sent();
|
|
245
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
|
|
246
|
+
role: assignedRoleName,
|
|
247
|
+
permissions: __assign({}, PROVIDER_PERMISSIONS),
|
|
248
|
+
})];
|
|
182
249
|
case 14:
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
250
|
+
assignedRbap = _g.sent();
|
|
251
|
+
assignedRbapId = assignedRbap.id;
|
|
252
|
+
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [assignedRoleName] }, { replaceObjectFields: true })];
|
|
253
|
+
case 15:
|
|
254
|
+
_g.sent();
|
|
255
|
+
return [4 /*yield*/, wait(undefined, 1500)];
|
|
256
|
+
case 16:
|
|
257
|
+
_g.sent();
|
|
258
|
+
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
|
|
259
|
+
case 17:
|
|
260
|
+
_g.sent();
|
|
261
|
+
return [4 /*yield*/, async_test("F-0005: ai_conversations.send_message must not 500 for Assigned-access (default provider) role", function () { return sdkNonAdmin.api.ai_conversations.send_message({
|
|
262
|
+
message: 'F-0005 assigned-access regression test',
|
|
263
|
+
type: 'Test',
|
|
264
|
+
maxTokens: 1,
|
|
265
|
+
})
|
|
266
|
+
.then(function () { return 'ok'; })
|
|
267
|
+
.catch(function (e) {
|
|
268
|
+
var _a, _b;
|
|
269
|
+
var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
|
|
270
|
+
var status = (_b = e === null || e === void 0 ? void 0 : e.status) !== null && _b !== void 0 ? _b : e === null || e === void 0 ? void 0 : e.code;
|
|
271
|
+
if (status === 500 || msg.includes('internal error') || msg.includes('cannot read properties')) {
|
|
272
|
+
throw e; // the null-update crash — regression
|
|
273
|
+
}
|
|
274
|
+
if (status === 403 || status === 401
|
|
275
|
+
|| msg.includes('access') || msg.includes('permission') || msg.includes('forbidden')) {
|
|
276
|
+
throw e; // Assigned access must pass the RBAC gate
|
|
277
|
+
}
|
|
278
|
+
return 'ok'; // downstream (e.g. credits) error is fine
|
|
279
|
+
}); }, { onResult: function (r) { return r === 'ok'; } })];
|
|
280
|
+
case 18:
|
|
281
|
+
_g.sent();
|
|
282
|
+
return [3 /*break*/, 40];
|
|
283
|
+
case 19:
|
|
284
|
+
_g.trys.push([19, 21, , 22]);
|
|
285
|
+
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: originalRoles !== null && originalRoles !== void 0 ? originalRoles : [] }, { replaceObjectFields: true })];
|
|
286
|
+
case 20:
|
|
287
|
+
_g.sent();
|
|
288
|
+
return [3 /*break*/, 22];
|
|
289
|
+
case 21:
|
|
290
|
+
_b = _g.sent();
|
|
291
|
+
return [3 /*break*/, 22];
|
|
292
|
+
case 22:
|
|
293
|
+
if (!rbapId) return [3 /*break*/, 26];
|
|
294
|
+
_g.label = 23;
|
|
295
|
+
case 23:
|
|
296
|
+
_g.trys.push([23, 25, , 26]);
|
|
297
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(rbapId)];
|
|
298
|
+
case 24:
|
|
299
|
+
_g.sent();
|
|
300
|
+
return [3 /*break*/, 26];
|
|
301
|
+
case 25:
|
|
302
|
+
_c = _g.sent();
|
|
303
|
+
return [3 /*break*/, 26];
|
|
304
|
+
case 26:
|
|
305
|
+
if (!grantRbapId) return [3 /*break*/, 30];
|
|
306
|
+
_g.label = 27;
|
|
307
|
+
case 27:
|
|
308
|
+
_g.trys.push([27, 29, , 30]);
|
|
309
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(grantRbapId)];
|
|
310
|
+
case 28:
|
|
311
|
+
_g.sent();
|
|
312
|
+
return [3 /*break*/, 30];
|
|
313
|
+
case 29:
|
|
314
|
+
_d = _g.sent();
|
|
315
|
+
return [3 /*break*/, 30];
|
|
316
|
+
case 30:
|
|
317
|
+
if (!assignedRbapId) return [3 /*break*/, 34];
|
|
318
|
+
_g.label = 31;
|
|
319
|
+
case 31:
|
|
320
|
+
_g.trys.push([31, 33, , 34]);
|
|
321
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(assignedRbapId)];
|
|
322
|
+
case 32:
|
|
323
|
+
_g.sent();
|
|
324
|
+
return [3 /*break*/, 34];
|
|
325
|
+
case 33:
|
|
326
|
+
_e = _g.sent();
|
|
327
|
+
return [3 /*break*/, 34];
|
|
328
|
+
case 34:
|
|
186
329
|
// Re-authenticate the non-admin to drop the no-access role from their JWT
|
|
187
330
|
// before subsequent tests run.
|
|
188
331
|
// Role restore above re-triggers deauthenticate_user; wait > 1s so the freshly minted
|
|
189
332
|
// token's (second-floored) iat lands after the deauth timestamp and isn't permanently
|
|
190
333
|
// rejected by is_logged_in's iat-slack check. Matches the in-test re-auth above.
|
|
191
334
|
return [4 /*yield*/, wait(undefined, 1500)];
|
|
192
|
-
case
|
|
335
|
+
case 35:
|
|
193
336
|
// Re-authenticate the non-admin to drop the no-access role from their JWT
|
|
194
337
|
// before subsequent tests run.
|
|
195
338
|
// Role restore above re-triggers deauthenticate_user; wait > 1s so the freshly minted
|
|
196
339
|
// token's (second-floored) iat lands after the deauth timestamp and isn't permanently
|
|
197
340
|
// rejected by is_logged_in's iat-slack check. Matches the in-test re-auth above.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
case
|
|
201
|
-
|
|
341
|
+
_g.sent();
|
|
342
|
+
_g.label = 36;
|
|
343
|
+
case 36:
|
|
344
|
+
_g.trys.push([36, 38, , 39]);
|
|
202
345
|
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
|
|
203
|
-
case
|
|
204
|
-
|
|
205
|
-
return [3 /*break*/,
|
|
206
|
-
case
|
|
207
|
-
|
|
208
|
-
return [3 /*break*/,
|
|
209
|
-
case
|
|
210
|
-
case
|
|
346
|
+
case 37:
|
|
347
|
+
_g.sent();
|
|
348
|
+
return [3 /*break*/, 39];
|
|
349
|
+
case 38:
|
|
350
|
+
_f = _g.sent();
|
|
351
|
+
return [3 /*break*/, 39];
|
|
352
|
+
case 39: return [7 /*endfinally*/];
|
|
353
|
+
case 40: return [2 /*return*/];
|
|
211
354
|
}
|
|
212
355
|
});
|
|
213
356
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"F-0005-ai-conversations-rbac.test.js","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/F-0005-ai-conversations-rbac.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACL,UAAU,EACV,UAAU,EACV,IAAI,GACL,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,IAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,uBAAgC,CAAA;AAC9D,IAAA,KAAoC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAhG,aAAa,QAAA,EAAE,gBAAgB,QAAiE,CAAA;AAEvG
|
|
1
|
+
{"version":3,"file":"F-0005-ai-conversations-rbac.test.js","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/F-0005-ai-conversations-rbac.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACL,UAAU,EACV,UAAU,EACV,IAAI,GACL,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,IAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,uBAAgC,CAAA;AAC9D,IAAA,KAAoC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAhG,aAAa,QAAA,EAAE,gBAAgB,QAAiE,CAAA;AAEvG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,IAAM,2BAA2B,GAAG,UAAO,EAA6D;QAA3D,GAAG,SAAA,EAAE,WAAW,iBAAA;;;;;;oBAClE,UAAU,CAAC,iDAAiD,CAAC,CAAA;oBAEvD,QAAQ,GAAG,2CAAoC,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA;oBAC3D,aAAa,GAAG,gDAAyC,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA;oBACrE,gBAAgB,GAAG,kDAA2C,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA;oBAI1E,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAA;;;;oBAMjC,qBAAM,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,SAAS,CAAC;4BACjE,IAAI,EAAE,QAAQ;4BACd,WAAW,wBACN,oBAAoB,KACvB,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAC1E,QAAQ,EAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAC3E;yBACF,CAAC,EAAA;;oBAPI,IAAI,GAAG,SAOX;oBACF,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;oBAEhB,0EAA0E;oBAC1E,qDAAqD;oBACrD,qBAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAC3B,WAAW,CAAC,QAAQ,CAAC,EAAE,EACvB,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EACrB,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,EAAA;;oBAND,0EAA0E;oBAC1E,qDAAqD;oBACrD,SAIC,CAAA;oBACD,qBAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAA;;oBAA3B,SAA2B,CAAA;oBAC3B,qBAAM,WAAW,CAAC,YAAY,CAAC,aAAc,EAAE,gBAAiB,CAAC;wBAEjE,sFAAsF;wBACtF,kFAAkF;sBAHjB;;oBAAjE,SAAiE,CAAA;oBAEjE,sFAAsF;oBACtF,kFAAkF;oBAClF,qBAAM,UAAU,CACd,wFAAwF,EACxF,cAAM,OAAA,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC;4BAClD,OAAO,EAAE,wBAAwB;4BACjC,IAAI,EAAE,MAAM;yBACN,CAAC,EAHH,CAGG,EACT;4BACE,WAAW,EAAE,IAAI;4BACjB,OAAO,EAAE,UAAC,CAAM;;gCACd,4EAA4E;gCAC5E,sDAAsD;gCACtD,IAAM,GAAG,GAAG,CAAC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;gCAC5C,IAAM,MAAM,GAAG,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAA;gCACnC,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;uCAClC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;4BACxF,CAAC;yBACF,CACF;wBAED,kFAAkF;wBAClF,qFAAqF;wBACrF,wDAAwD;sBAJvD;;oBAnBD,sFAAsF;oBACtF,kFAAkF;oBAClF,SAiBC,CAAA;oBAED,kFAAkF;oBAClF,qFAAqF;oBACrF,wDAAwD;oBACxD,qBAAM,UAAU,CACd,yGAAyG,EACzG,cAAM,OAAA,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;4BAC1D,SAAS,EAAE,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE;4BACvC,gBAAgB,EAAE,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE;4BAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;4BACvB,MAAM,EAAE,wBAAwB;4BAChC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAa,6DAA6D;yBACxG,CAAC,EANH,CAMG,EACT;4BACE,WAAW,EAAE,IAAI;4BACjB,OAAO,EAAE,UAAC,CAAM;;gCACd,IAAM,GAAG,GAAG,CAAC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;gCAC5C,IAAM,MAAM,GAAG,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAA;gCACnC,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;uCAClC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;4BACxF,CAAC;yBACF,CACF;wBAED,mFAAmF;wBACnF,8FAA8F;wBAC9F,gDAAgD;sBAJ/C;;oBArBD,kFAAkF;oBAClF,qFAAqF;oBACrF,wDAAwD;oBACxD,SAkBC,CAAA;oBAKiB,qBAAM,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,SAAS,CAAC;4BACtE,IAAI,EAAE,aAAa;4BACnB,WAAW,wBACN,oBAAoB,KACvB,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAC5E;yBACF,CAAC,EAAA;;oBANI,SAAS,GAAG,SAMhB;oBACF,WAAW,GAAG,SAAS,CAAC,EAAE,CAAA;oBAE1B,qBAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAC3B,WAAW,CAAC,QAAQ,CAAC,EAAE,EACvB,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,EAC1B,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,EAAA;;oBAJD,SAIC,CAAA;oBACD,qBAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAA;;oBAA3B,SAA2B,CAAA;oBAC3B,qBAAM,WAAW,CAAC,YAAY,CAAC,aAAc,EAAE,gBAAiB,CAAC,EAAA;;oBAAjE,SAAiE,CAAA;oBAEjE,qBAAM,UAAU,CACd,yFAAyF,EACzF,cAAM,OAAA,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC;4BAClD,OAAO,EAAE,2BAA2B;4BACpC,IAAI,EAAE,MAAM;4BACZ,SAAS,EAAE,CAAC;yBACN,CAAC;6BACN,IAAI,CAAC,cAAM,OAAA,SAAkB,EAAlB,CAAkB,CAAC;6BAC9B,KAAK,CAAC,UAAC,CAAM;;4BACZ,IAAM,GAAG,GAAG,CAAC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;4BAC5C,IAAM,MAAM,GAAG,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAA;4BACnC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;mCAC/B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gCACtF,MAAM,CAAC,CAAA,CAAC,qEAAqE;6BAC9E;4BACD,OAAO,SAAkB,CAAA,CAAC,4DAA4D;wBACxF,CAAC,CAAC,EAdE,CAcF,EACJ,EAAE,QAAQ,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,SAAS,EAAf,CAAe,EAAE,CACnC;wBAED,2FAA2F;wBAC3F,8FAA8F;wBAC9F,uFAAuF;sBAJtF;;oBAlBD,SAkBC,CAAA;oBAED,2FAA2F;oBAC3F,8FAA8F;oBAC9F,uFAAuF;oBACvF,qBAAM,UAAU,CACd,iGAAiG,EACjG,cAAM,OAAA,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC;4BAClD,OAAO,EAAE,mCAAmC;4BAC5C,IAAI,EAAE,MAAM;4BACZ,SAAS,EAAE,CAAC;4BACZ,cAAc,EAAE,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE;yBACtC,CAAC,EALH,CAKG,EACT;4BACE,WAAW,EAAE,IAAI;4BACjB,OAAO,EAAE,UAAC,CAAM;;gCACd,IAAM,GAAG,GAAG,CAAC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;gCAC5C,IAAM,MAAM,GAAG,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAA;gCACnC,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;uCAClC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;4BACxF,CAAC;yBACF,CACF;wBAED,wFAAwF;wBACxF,+EAA+E;wBAC/E,mFAAmF;wBACnF,wFAAwF;sBALvF;;oBApBD,2FAA2F;oBAC3F,8FAA8F;oBAC9F,uFAAuF;oBACvF,SAiBC,CAAA;oBAMoB,qBAAM,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,SAAS,CAAC;4BACzE,IAAI,EAAE,gBAAgB;4BACtB,WAAW,eAAO,oBAAoB,CAAE;yBACzC,CAAC,EAAA;;oBAHI,YAAY,GAAG,SAGnB;oBACF,cAAc,GAAG,YAAY,CAAC,EAAE,CAAA;oBAEhC,qBAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAC3B,WAAW,CAAC,QAAQ,CAAC,EAAE,EACvB,EAAE,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAC7B,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,EAAA;;oBAJD,SAIC,CAAA;oBACD,qBAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAA;;oBAA3B,SAA2B,CAAA;oBAC3B,qBAAM,WAAW,CAAC,YAAY,CAAC,aAAc,EAAE,gBAAiB,CAAC,EAAA;;oBAAjE,SAAiE,CAAA;oBAEjE,qBAAM,UAAU,CACd,gGAAgG,EAChG,cAAM,OAAA,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC;4BAClD,OAAO,EAAE,wCAAwC;4BACjD,IAAI,EAAE,MAAM;4BACZ,SAAS,EAAE,CAAC;yBACN,CAAC;6BACN,IAAI,CAAC,cAAM,OAAA,IAAa,EAAb,CAAa,CAAC;6BACzB,KAAK,CAAC,UAAC,CAAM;;4BACZ,IAAM,GAAG,GAAG,CAAC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;4BAC5C,IAAM,MAAM,GAAG,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAA;4BACnC,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;gCAC9F,MAAM,CAAC,CAAA,CAAC,qCAAqC;6BAC9C;4BACD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;mCAC/B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gCACtF,MAAM,CAAC,CAAA,CAAC,0CAA0C;6BACnD;4BACD,OAAO,IAAa,CAAA,CAAC,0CAA0C;wBACjE,CAAC,CAAC,EAjBE,CAiBF,EACJ,EAAE,QAAQ,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,EAAE,CAC9B,EAAA;;oBArBD,SAqBC,CAAA;;;;oBAIC,qBAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAC3B,WAAW,CAAC,QAAQ,CAAC,EAAE,EACvB,EAAE,KAAK,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,EAAE,EAC9B,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,EAAA;;oBAJD,SAIC,CAAA;;;;;;yBAEC,MAAM,EAAN,yBAAM;;;;oBACF,qBAAM,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAA;;oBAA7D,SAA6D,CAAA;;;;;;yBAEjE,WAAW,EAAX,yBAAW;;;;oBACP,qBAAM,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,SAAS,CAAC,WAAW,CAAC,EAAA;;oBAAlE,SAAkE,CAAA;;;;;;yBAEtE,cAAc,EAAd,yBAAc;;;;oBACV,qBAAM,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,SAAS,CAAC,cAAc,CAAC,EAAA;;oBAArE,SAAqE,CAAA;;;;;;gBAE7E,0EAA0E;gBAC1E,+BAA+B;gBAC/B,sFAAsF;gBACtF,sFAAsF;gBACtF,iFAAiF;gBACjF,qBAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAA;;oBAL3B,0EAA0E;oBAC1E,+BAA+B;oBAC/B,sFAAsF;oBACtF,sFAAsF;oBACtF,iFAAiF;oBACjF,SAA2B,CAAA;;;;oBACrB,qBAAM,WAAW,CAAC,YAAY,CAAC,aAAc,EAAE,gBAAiB,CAAC,EAAA;;oBAAjE,SAAiE,CAAA;;;;;;;;;;CAE1E,CAAA;AAED,6CAA6C;AAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,sCAAqB,IAAI,CAAE,CAAC,CAAA;IACxC,IAAM,KAAG,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAA;IACjC,IAAM,aAAW,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAA;IAEzC,IAAM,QAAQ,GAAG;;;wBACf,qBAAM,WAAW,CAAC,KAAG,EAAE,aAAW,CAAC,EAAA;;oBAAnC,SAAmC,CAAA;oBACnC,qBAAM,2BAA2B,CAAC,EAAE,GAAG,OAAA,EAAE,WAAW,eAAA,EAAE,CAAC,EAAA;;oBAAvD,SAAuD,CAAA;;;;SACxD,CAAA;IAED,QAAQ,EAAE;SACP,IAAI,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAA;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC;SACD,KAAK,CAAC,UAAC,KAAK;QACX,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAA;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook_error_handling.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/webhook_error_handling.test.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiDnC,eAAO,MAAM,4BAA4B;SAAwC,OAAO;iBAAe,OAAO;mBA+G7G,CAAA"}
|