@tellescope/sdk 1.242.9 → 1.243.0

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 (64) hide show
  1. package/lib/cjs/enduser.d.ts +20 -0
  2. package/lib/cjs/enduser.d.ts.map +1 -1
  3. package/lib/cjs/sdk.d.ts +45 -0
  4. package/lib/cjs/sdk.d.ts.map +1 -1
  5. package/lib/cjs/sdk.js +2 -0
  6. package/lib/cjs/sdk.js.map +1 -1
  7. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts +6 -0
  8. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -0
  9. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js +169 -0
  10. package/lib/cjs/tests/api_tests/concurrent_build_threads.test.js.map +1 -0
  11. package/lib/cjs/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  12. package/lib/cjs/tests/api_tests/custom_aggregation.test.js +109 -7
  13. package/lib/cjs/tests/api_tests/custom_aggregation.test.js.map +1 -1
  14. package/lib/cjs/tests/api_tests/custom_dashboards.test.d.ts +6 -0
  15. package/lib/cjs/tests/api_tests/custom_dashboards.test.d.ts.map +1 -0
  16. package/lib/cjs/tests/api_tests/custom_dashboards.test.js +304 -0
  17. package/lib/cjs/tests/api_tests/custom_dashboards.test.js.map +1 -0
  18. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.d.ts.map +1 -1
  19. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.js +655 -139
  20. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.js.map +1 -1
  21. package/lib/cjs/tests/api_tests/no_access_permission_checks.test.d.ts +20 -0
  22. package/lib/cjs/tests/api_tests/no_access_permission_checks.test.d.ts.map +1 -0
  23. package/lib/cjs/tests/api_tests/no_access_permission_checks.test.js +481 -0
  24. package/lib/cjs/tests/api_tests/no_access_permission_checks.test.js.map +1 -0
  25. package/lib/cjs/tests/tests.d.ts.map +1 -1
  26. package/lib/cjs/tests/tests.js +125 -112
  27. package/lib/cjs/tests/tests.js.map +1 -1
  28. package/lib/esm/enduser.d.ts +20 -0
  29. package/lib/esm/enduser.d.ts.map +1 -1
  30. package/lib/esm/sdk.d.ts +45 -0
  31. package/lib/esm/sdk.d.ts.map +1 -1
  32. package/lib/esm/sdk.js +2 -0
  33. package/lib/esm/sdk.js.map +1 -1
  34. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts +6 -0
  35. package/lib/esm/tests/api_tests/concurrent_build_threads.test.d.ts.map +1 -0
  36. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js +165 -0
  37. package/lib/esm/tests/api_tests/concurrent_build_threads.test.js.map +1 -0
  38. package/lib/esm/tests/api_tests/custom_aggregation.test.d.ts.map +1 -1
  39. package/lib/esm/tests/api_tests/custom_aggregation.test.js +110 -8
  40. package/lib/esm/tests/api_tests/custom_aggregation.test.js.map +1 -1
  41. package/lib/esm/tests/api_tests/custom_dashboards.test.d.ts +6 -0
  42. package/lib/esm/tests/api_tests/custom_dashboards.test.d.ts.map +1 -0
  43. package/lib/esm/tests/api_tests/custom_dashboards.test.js +300 -0
  44. package/lib/esm/tests/api_tests/custom_dashboards.test.js.map +1 -0
  45. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.d.ts.map +1 -1
  46. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.js +655 -139
  47. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.js.map +1 -1
  48. package/lib/esm/tests/api_tests/no_access_permission_checks.test.d.ts +20 -0
  49. package/lib/esm/tests/api_tests/no_access_permission_checks.test.d.ts.map +1 -0
  50. package/lib/esm/tests/api_tests/no_access_permission_checks.test.js +477 -0
  51. package/lib/esm/tests/api_tests/no_access_permission_checks.test.js.map +1 -0
  52. package/lib/esm/tests/tests.d.ts.map +1 -1
  53. package/lib/esm/tests/tests.js +125 -112
  54. package/lib/esm/tests/tests.js.map +1 -1
  55. package/lib/tsconfig.tsbuildinfo +1 -1
  56. package/package.json +10 -10
  57. package/src/sdk.ts +9 -1
  58. package/src/tests/api_tests/concurrent_build_threads.test.ts +103 -0
  59. package/src/tests/api_tests/custom_aggregation.test.ts +74 -0
  60. package/src/tests/api_tests/custom_dashboards.test.ts +258 -0
  61. package/src/tests/api_tests/inbox_thread_assignment_updates.test.ts +431 -1
  62. package/src/tests/api_tests/no_access_permission_checks.test.ts +365 -0
  63. package/src/tests/tests.ts +8 -1
  64. package/test_generated.pdf +0 -0
@@ -0,0 +1,477 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ require('source-map-support').install();
49
+ import { Session } from "../../sdk";
50
+ import { async_test, log_header, wait, } from "@tellescope/testing";
51
+ import { setup_tests } from "../setup";
52
+ import { PROVIDER_PERMISSIONS } from "@tellescope/constants";
53
+ var host = process.env.API_URL || 'http://localhost:8080';
54
+ var _a = [process.env.NON_ADMIN_EMAIL, process.env.NON_ADMIN_PASSWORD], nonAdminEmail = _a[0], nonAdminPassword = _a[1];
55
+ /**
56
+ * Security tests for endpoints with noAccessPermissions: true
57
+ *
58
+ * These tests verify that endpoints which bypass the standard middleware access check
59
+ * still properly enforce NO_ACCESS restrictions in their handlers.
60
+ *
61
+ * Test approach:
62
+ * 1. Create a role with NO_ACCESS (null) for a specific model
63
+ * 2. Assign that role to a non-admin user
64
+ * 3. Attempt to call the endpoint
65
+ * 4. Verify whether access is properly denied
66
+ *
67
+ * If a test shows data is returned when it shouldn't be, that endpoint needs a fix.
68
+ */
69
+ export var no_access_permission_checks_tests = function (_a) {
70
+ var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
71
+ return __awaiter(void 0, void 0, void 0, function () {
72
+ var testEnduser, noAccessTestRole, rbap, originalRoles, templatesOnlyRole, rbapTemplatesOnly, testJourney, waitlistEntry_1, assignedEnduserRole, rbapAssigned, resultAssigned_1;
73
+ return __generator(this, function (_b) {
74
+ switch (_b.label) {
75
+ case 0:
76
+ log_header("NO_ACCESS Permission Checks Tests");
77
+ return [4 /*yield*/, sdk.api.endusers.createOne({
78
+ fname: 'NoAccessTest',
79
+ lname: 'User',
80
+ email: 'no-access-test@example.com',
81
+ })
82
+ // Create a role with NO_ACCESS to multiple models we want to test
83
+ ];
84
+ case 1:
85
+ testEnduser = _b.sent();
86
+ noAccessTestRole = 'no-access-test-role';
87
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
88
+ role: noAccessTestRole,
89
+ permissions: __assign(__assign({}, PROVIDER_PERMISSIONS), {
90
+ // Set NO_ACCESS for models we want to test
91
+ endusers: {
92
+ create: null,
93
+ read: null,
94
+ update: null,
95
+ delete: null,
96
+ }, inbox_threads: {
97
+ create: null,
98
+ read: null,
99
+ update: null,
100
+ delete: null,
101
+ }, templates: {
102
+ create: null,
103
+ read: null,
104
+ update: null,
105
+ delete: null,
106
+ }, waitlists: {
107
+ create: null,
108
+ read: null,
109
+ update: null,
110
+ delete: null,
111
+ }, background_errors: {
112
+ create: null,
113
+ read: null,
114
+ update: null,
115
+ delete: null,
116
+ } }),
117
+ })
118
+ // Save original role to restore later
119
+ ];
120
+ case 2:
121
+ rbap = _b.sent();
122
+ originalRoles = sdkNonAdmin.userInfo.roles;
123
+ _b.label = 3;
124
+ case 3:
125
+ _b.trys.push([3, , 46, 52]);
126
+ // Assign the restricted role to non-admin user
127
+ return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [noAccessTestRole] }, { replaceObjectFields: true })];
128
+ case 4:
129
+ // Assign the restricted role to non-admin user
130
+ _b.sent();
131
+ return [4 /*yield*/, wait(undefined, 1500)]; // wait for role change to propagate
132
+ case 5:
133
+ _b.sent(); // wait for role change to propagate
134
+ return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
135
+ // ========================================
136
+ // Test 1: /bulk-actions/read (HIGH PRIORITY)
137
+ // ========================================
138
+ ];
139
+ case 6:
140
+ _b.sent();
141
+ // ========================================
142
+ // Test 1: /bulk-actions/read (HIGH PRIORITY)
143
+ // ========================================
144
+ log_header("Test 1: /bulk-actions/read with NO_ACCESS to endusers");
145
+ return [4 /*yield*/, async_test("bulk_load - should block NO_ACCESS user from reading endusers", function () { return sdkNonAdmin.bulk_load({
146
+ load: [{ model: 'endusers', options: { limit: 10 } }]
147
+ }); }, {
148
+ // If this returns records, it's a vulnerability
149
+ // If it returns empty records or errors, it's safe
150
+ onResult: function (r) {
151
+ var enduserResult = r.results[0];
152
+ if (enduserResult === null) {
153
+ console.log(" ✅ SAFE: bulk_load returned null for NO_ACCESS model");
154
+ return true;
155
+ }
156
+ if (enduserResult.records.length === 0) {
157
+ console.log(" ✅ SAFE: bulk_load returned empty records for NO_ACCESS model");
158
+ return true;
159
+ }
160
+ console.log(" \u274C VULNERABILITY: bulk_load returned ".concat(enduserResult.records.length, " records when user has NO_ACCESS!"));
161
+ return false;
162
+ }
163
+ })
164
+ // ========================================
165
+ // Test 2: inbox_threads/build_threads
166
+ // ========================================
167
+ ];
168
+ case 7:
169
+ _b.sent();
170
+ // ========================================
171
+ // Test 2: inbox_threads/build_threads
172
+ // ========================================
173
+ log_header("Test 2: inbox_threads/build_threads with NO_ACCESS");
174
+ return [4 /*yield*/, async_test("build_threads - should block NO_ACCESS user", function () { return sdkNonAdmin.api.inbox_threads.build_threads({
175
+ from: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
176
+ to: new Date(),
177
+ }); }, { shouldError: true, onError: function (e) { return e.message === "You do not have access to this resource"; } })
178
+ // ========================================
179
+ // Test 2b: inbox_threads/load_threads with NO_ACCESS
180
+ // ========================================
181
+ ];
182
+ case 8:
183
+ _b.sent();
184
+ // ========================================
185
+ // Test 2b: inbox_threads/load_threads with NO_ACCESS
186
+ // ========================================
187
+ log_header("Test 2b: load_threads with NO_ACCESS");
188
+ return [4 /*yield*/, async_test("load_threads - should block NO_ACCESS user", function () { return sdkNonAdmin.api.inbox_threads.load_threads({ limit: 10 }); }, { shouldError: true, onError: function (e) { return e.message === "You do not have access to this resource"; } })
189
+ // ========================================
190
+ // Test 3a: get_templated_message - NO_ACCESS to templates
191
+ // ========================================
192
+ ];
193
+ case 9:
194
+ _b.sent();
195
+ // ========================================
196
+ // Test 3a: get_templated_message - NO_ACCESS to templates
197
+ // ========================================
198
+ log_header("Test 3a: get_templated_message (templates NO_ACCESS)");
199
+ return [4 /*yield*/, async_test("get_templated_message - should block user with NO_ACCESS to templates", function () { return sdkNonAdmin.api.templates.get_templated_message({
200
+ message: "Hello {{enduser.fname}}!",
201
+ userId: sdkNonAdmin.userInfo.id,
202
+ enduserId: testEnduser.id,
203
+ channel: 'Email',
204
+ }); }, { shouldError: true, onError: function (e) { return e.message === "You do not have access to this resource"; } })
205
+ // ========================================
206
+ // Test 3b: get_templated_message - NO_ACCESS to endusers (PHI leak prevention)
207
+ // ========================================
208
+ ];
209
+ case 10:
210
+ _b.sent();
211
+ // ========================================
212
+ // Test 3b: get_templated_message - NO_ACCESS to endusers (PHI leak prevention)
213
+ // ========================================
214
+ log_header("Test 3b: get_templated_message (endusers NO_ACCESS)");
215
+ templatesOnlyRole = 'templates-only-test-role';
216
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
217
+ role: templatesOnlyRole,
218
+ permissions: __assign(__assign({}, PROVIDER_PERMISSIONS), {
219
+ // Allow templates access
220
+ templates: {
221
+ create: 'All',
222
+ read: 'All',
223
+ update: 'All',
224
+ delete: 'All',
225
+ },
226
+ // But NO_ACCESS to endusers
227
+ endusers: {
228
+ create: null,
229
+ read: null,
230
+ update: null,
231
+ delete: null,
232
+ } }),
233
+ })];
234
+ case 11:
235
+ rbapTemplatesOnly = _b.sent();
236
+ _b.label = 12;
237
+ case 12:
238
+ _b.trys.push([12, , 17, 22]);
239
+ // Temporarily assign the templates-only role
240
+ return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [templatesOnlyRole] }, { replaceObjectFields: true })];
241
+ case 13:
242
+ // Temporarily assign the templates-only role
243
+ _b.sent();
244
+ return [4 /*yield*/, wait(undefined, 1500)];
245
+ case 14:
246
+ _b.sent();
247
+ return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
248
+ case 15:
249
+ _b.sent();
250
+ return [4 /*yield*/, async_test("get_templated_message - should block user with NO_ACCESS to endusers (prevents PHI leak)", function () { return sdkNonAdmin.api.templates.get_templated_message({
251
+ message: "Hello {{enduser.fname}} {{enduser.lname}} {{enduser.email}}!",
252
+ userId: sdkNonAdmin.userInfo.id,
253
+ enduserId: testEnduser.id,
254
+ channel: 'Email',
255
+ }); }, { shouldError: true, onError: function (e) { return e.message === "You do not have access to this resource"; } })];
256
+ case 16:
257
+ _b.sent();
258
+ return [3 /*break*/, 22];
259
+ case 17:
260
+ // Restore the original test role
261
+ return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [noAccessTestRole] }, { replaceObjectFields: true })];
262
+ case 18:
263
+ // Restore the original test role
264
+ _b.sent();
265
+ return [4 /*yield*/, wait(undefined, 1000)];
266
+ case 19:
267
+ _b.sent();
268
+ return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
269
+ // Cleanup the templates-only role
270
+ ];
271
+ case 20:
272
+ _b.sent();
273
+ // Cleanup the templates-only role
274
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(rbapTemplatesOnly.id)];
275
+ case 21:
276
+ // Cleanup the templates-only role
277
+ _b.sent();
278
+ return [7 /*endfinally*/];
279
+ case 22:
280
+ // ========================================
281
+ // Test 4: waitlists/grant_access_from_waitlist
282
+ // ========================================
283
+ log_header("Test 4: waitlists/grant_access_from_waitlist with NO_ACCESS");
284
+ return [4 /*yield*/, sdk.api.journeys.createOne({
285
+ title: 'Waitlist Test Journey',
286
+ })];
287
+ case 23:
288
+ testJourney = _b.sent();
289
+ return [4 /*yield*/, sdk.api.waitlists.createOne({
290
+ title: 'Test Waitlist',
291
+ journeyId: testJourney.id,
292
+ enduserIds: [],
293
+ })];
294
+ case 24:
295
+ waitlistEntry_1 = _b.sent();
296
+ _b.label = 25;
297
+ case 25:
298
+ _b.trys.push([25, , 27, 30]);
299
+ return [4 /*yield*/, async_test("grant_access_from_waitlist - should block NO_ACCESS user", function () { return sdkNonAdmin.api.waitlists.grant_access_from_waitlist({
300
+ id: waitlistEntry_1.id,
301
+ count: 1,
302
+ }); }, { shouldError: true, onError: function (e) { return e.message === "You do not have access to this resource"; } })];
303
+ case 26:
304
+ _b.sent();
305
+ return [3 /*break*/, 30];
306
+ case 27:
307
+ // Cleanup
308
+ return [4 /*yield*/, sdk.api.waitlists.deleteOne(waitlistEntry_1.id)];
309
+ case 28:
310
+ // Cleanup
311
+ _b.sent();
312
+ return [4 /*yield*/, sdk.api.journeys.deleteOne(testJourney.id)];
313
+ case 29:
314
+ _b.sent();
315
+ return [7 /*endfinally*/];
316
+ case 30:
317
+ // ========================================
318
+ // Test 5: background_errors/mark_read
319
+ // ========================================
320
+ log_header("Test 5: background_errors/mark_read with NO_ACCESS");
321
+ return [4 /*yield*/, async_test("mark_read (background_errors) - should block NO_ACCESS user", function () { return sdkNonAdmin.api.background_errors.mark_read({}); }, { shouldError: true, onError: function (e) { return e.message === "You do not have access to this resource"; } })
322
+ // ========================================
323
+ // Test 6: load_threads searchKeywords redaction
324
+ // ========================================
325
+ ];
326
+ case 31:
327
+ _b.sent();
328
+ // ========================================
329
+ // Test 6: load_threads searchKeywords redaction
330
+ // ========================================
331
+ log_header("Test 6: load_threads searchKeywords redaction");
332
+ assignedEnduserRole = 'assigned-enduser-test-role';
333
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
334
+ role: assignedEnduserRole,
335
+ permissions: __assign(__assign({}, PROVIDER_PERMISSIONS), { endusers: { create: 'All', read: 'Assigned', update: 'Assigned', delete: 'Assigned' }, emails: { create: 'All', read: 'All', update: 'All', delete: 'All' }, sms_messages: { create: 'All', read: 'All', update: 'All', delete: 'All' }, inbox_threads: { create: 'All', read: 'All', update: 'All', delete: 'All' } }),
336
+ })];
337
+ case 32:
338
+ rbapAssigned = _b.sent();
339
+ _b.label = 33;
340
+ case 33:
341
+ _b.trys.push([33, , 39, 44]);
342
+ return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [assignedEnduserRole] }, { replaceObjectFields: true })];
343
+ case 34:
344
+ _b.sent();
345
+ return [4 /*yield*/, wait(undefined, 1500)];
346
+ case 35:
347
+ _b.sent();
348
+ return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
349
+ // Load threads and verify searchKeywords is redacted for Assigned enduser access
350
+ ];
351
+ case 36:
352
+ _b.sent();
353
+ return [4 /*yield*/, sdkNonAdmin.api.inbox_threads.load_threads({ limit: 10 })];
354
+ case 37:
355
+ resultAssigned_1 = _b.sent();
356
+ return [4 /*yield*/, async_test("load_threads - searchKeywords redacted for Assigned enduser access", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
357
+ return [2 /*return*/, resultAssigned_1];
358
+ }); }); }, {
359
+ onResult: function (r) {
360
+ // All threads should have searchKeywords undefined/missing
361
+ var allRedacted = r.threads.every(function (t) { return t.searchKeywords === undefined; });
362
+ if (!allRedacted) {
363
+ console.log(" ❌ VULNERABILITY: searchKeywords visible to user with Assigned enduser access!");
364
+ }
365
+ else {
366
+ console.log(" ✅ SAFE: searchKeywords properly redacted");
367
+ }
368
+ return allRedacted;
369
+ }
370
+ })];
371
+ case 38:
372
+ _b.sent();
373
+ return [3 /*break*/, 44];
374
+ case 39:
375
+ // Restore the original test role
376
+ return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [noAccessTestRole] }, { replaceObjectFields: true })];
377
+ case 40:
378
+ // Restore the original test role
379
+ _b.sent();
380
+ return [4 /*yield*/, wait(undefined, 1000)];
381
+ case 41:
382
+ _b.sent();
383
+ return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
384
+ // Cleanup the assigned role
385
+ ];
386
+ case 42:
387
+ _b.sent();
388
+ // Cleanup the assigned role
389
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(rbapAssigned.id)];
390
+ case 43:
391
+ // Cleanup the assigned role
392
+ _b.sent();
393
+ return [7 /*endfinally*/];
394
+ case 44:
395
+ // Test that admin/full access users CAN see searchKeywords
396
+ return [4 /*yield*/, async_test("load_threads - searchKeywords visible for admin/full enduser access", function () { return sdk.api.inbox_threads.load_threads({ limit: 10 }); }, {
397
+ onResult: function (r) {
398
+ // Skip check if no threads exist (can't verify without data)
399
+ if (r.threads.length === 0) {
400
+ console.log(" ⏭️ SKIPPED: No threads exist to verify searchKeywords visibility");
401
+ return true;
402
+ }
403
+ // At least some threads should have searchKeywords
404
+ var hasSearchKeywords = r.threads.some(function (t) { return t.searchKeywords !== undefined; });
405
+ if (hasSearchKeywords) {
406
+ console.log(" ✅ Admin can see searchKeywords");
407
+ }
408
+ else {
409
+ console.log(" ⚠️ No searchKeywords found on threads (may not have been built yet)");
410
+ }
411
+ return true; // Don't fail if keywords don't exist yet
412
+ }
413
+ })];
414
+ case 45:
415
+ // Test that admin/full access users CAN see searchKeywords
416
+ _b.sent();
417
+ console.log("\n" + "=".repeat(60));
418
+ console.log("NO_ACCESS Permission Checks Tests Complete");
419
+ console.log("=".repeat(60));
420
+ return [3 /*break*/, 52];
421
+ case 46:
422
+ // Restore original role
423
+ return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: originalRoles }, { replaceObjectFields: true })];
424
+ case 47:
425
+ // Restore original role
426
+ _b.sent();
427
+ return [4 /*yield*/, wait(undefined, 1000)];
428
+ case 48:
429
+ _b.sent();
430
+ return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
431
+ // Cleanup
432
+ ];
433
+ case 49:
434
+ _b.sent();
435
+ // Cleanup
436
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(rbap.id)];
437
+ case 50:
438
+ // Cleanup
439
+ _b.sent();
440
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(testEnduser.id)];
441
+ case 51:
442
+ _b.sent();
443
+ return [7 /*endfinally*/];
444
+ case 52: return [2 /*return*/];
445
+ }
446
+ });
447
+ });
448
+ };
449
+ // Allow running this test file independently
450
+ if (require.main === module) {
451
+ console.log("\uD83C\uDF10 Using API URL: ".concat(host));
452
+ var sdk_1 = new Session({ host: host });
453
+ var sdkNonAdmin_1 = new Session({ host: host });
454
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
455
+ return __generator(this, function (_a) {
456
+ switch (_a.label) {
457
+ case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
458
+ case 1:
459
+ _a.sent();
460
+ return [4 /*yield*/, no_access_permission_checks_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
461
+ case 2:
462
+ _a.sent();
463
+ return [2 /*return*/];
464
+ }
465
+ });
466
+ }); };
467
+ runTests()
468
+ .then(function () {
469
+ console.log("✅ NO_ACCESS permission checks test suite completed successfully");
470
+ process.exit(0);
471
+ })
472
+ .catch(function (error) {
473
+ console.error("❌ NO_ACCESS permission checks test suite failed:", error);
474
+ process.exit(1);
475
+ });
476
+ }
477
+ //# sourceMappingURL=no_access_permission_checks.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no_access_permission_checks.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/no_access_permission_checks.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AAqvEA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AA8qED,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAgnBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBAylBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAm7CD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA2C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBAyZ1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA2wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAwC5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AAwvEA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AA8qED,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAgnBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBAylBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAm7CD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA2C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBAyZ1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA4wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAwC5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}