@tellescope/sdk 1.251.0 → 1.252.1

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 (131) hide show
  1. package/lib/cjs/tests/api_tests/calendar_canvas_coding_clear.test.d.ts +6 -0
  2. package/lib/cjs/tests/api_tests/calendar_canvas_coding_clear.test.d.ts.map +1 -0
  3. package/lib/cjs/tests/api_tests/calendar_canvas_coding_clear.test.js +139 -0
  4. package/lib/cjs/tests/api_tests/calendar_canvas_coding_clear.test.js.map +1 -0
  5. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts +6 -0
  6. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -0
  7. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js +337 -0
  8. package/lib/cjs/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -0
  9. package/lib/cjs/tests/api_tests/enduser_login_rate_limits.test.d.ts +6 -0
  10. package/lib/cjs/tests/api_tests/enduser_login_rate_limits.test.d.ts.map +1 -0
  11. package/lib/cjs/tests/api_tests/enduser_login_rate_limits.test.js +287 -0
  12. package/lib/cjs/tests/api_tests/enduser_login_rate_limits.test.js.map +1 -0
  13. package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  14. package/lib/cjs/tests/api_tests/integrations_redacted.test.js +30 -20
  15. package/lib/cjs/tests/api_tests/integrations_redacted.test.js.map +1 -1
  16. package/lib/cjs/tests/api_tests/push_forms_to_portal_group_completion.test.d.ts.map +1 -1
  17. package/lib/cjs/tests/api_tests/push_forms_to_portal_group_completion.test.js +234 -198
  18. package/lib/cjs/tests/api_tests/push_forms_to_portal_group_completion.test.js.map +1 -1
  19. package/lib/cjs/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.d.ts +28 -0
  20. package/lib/cjs/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.d.ts.map +1 -0
  21. package/lib/cjs/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.js +349 -0
  22. package/lib/cjs/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.js.map +1 -0
  23. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts +28 -0
  24. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts.map +1 -0
  25. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js +247 -0
  26. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js.map +1 -0
  27. package/lib/cjs/tests/api_tests/security/F-0007-invite-user-enumeration.test.d.ts +29 -0
  28. package/lib/cjs/tests/api_tests/security/F-0007-invite-user-enumeration.test.d.ts.map +1 -0
  29. package/lib/cjs/tests/api_tests/security/F-0007-invite-user-enumeration.test.js +278 -0
  30. package/lib/cjs/tests/api_tests/security/F-0007-invite-user-enumeration.test.js.map +1 -0
  31. package/lib/cjs/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.d.ts +24 -0
  32. package/lib/cjs/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.d.ts.map +1 -0
  33. package/lib/cjs/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.js +201 -0
  34. package/lib/cjs/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.js.map +1 -0
  35. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html.test.d.ts +2 -0
  36. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html.test.d.ts.map +1 -0
  37. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html.test.js +148 -0
  38. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html.test.js.map +1 -0
  39. package/lib/cjs/tests/api_tests/security/F-0016-prototype-pollution.test.d.ts +2 -0
  40. package/lib/cjs/tests/api_tests/security/F-0016-prototype-pollution.test.d.ts.map +1 -0
  41. package/lib/cjs/tests/api_tests/security/F-0016-prototype-pollution.test.js +88 -0
  42. package/lib/cjs/tests/api_tests/security/F-0016-prototype-pollution.test.js.map +1 -0
  43. package/lib/cjs/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.d.ts +32 -0
  44. package/lib/cjs/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.d.ts.map +1 -0
  45. package/lib/cjs/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.js +237 -0
  46. package/lib/cjs/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.js.map +1 -0
  47. package/lib/cjs/tests/api_tests/security/F-0076-self-admin-role-assignment.test.d.ts +38 -0
  48. package/lib/cjs/tests/api_tests/security/F-0076-self-admin-role-assignment.test.d.ts.map +1 -0
  49. package/lib/cjs/tests/api_tests/security/F-0076-self-admin-role-assignment.test.js +222 -0
  50. package/lib/cjs/tests/api_tests/security/F-0076-self-admin-role-assignment.test.js.map +1 -0
  51. package/lib/cjs/tests/api_tests/user_portal_settings.test.d.ts +6 -0
  52. package/lib/cjs/tests/api_tests/user_portal_settings.test.d.ts.map +1 -0
  53. package/lib/cjs/tests/api_tests/user_portal_settings.test.js +301 -0
  54. package/lib/cjs/tests/api_tests/user_portal_settings.test.js.map +1 -0
  55. package/lib/cjs/tests/tests.d.ts.map +1 -1
  56. package/lib/cjs/tests/tests.js +198 -151
  57. package/lib/cjs/tests/tests.js.map +1 -1
  58. package/lib/esm/tests/api_tests/calendar_canvas_coding_clear.test.d.ts +6 -0
  59. package/lib/esm/tests/api_tests/calendar_canvas_coding_clear.test.d.ts.map +1 -0
  60. package/lib/esm/tests/api_tests/calendar_canvas_coding_clear.test.js +135 -0
  61. package/lib/esm/tests/api_tests/calendar_canvas_coding_clear.test.js.map +1 -0
  62. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts +6 -0
  63. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.d.ts.map +1 -0
  64. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js +333 -0
  65. package/lib/esm/tests/api_tests/calendar_event_webhook_template.test.js.map +1 -0
  66. package/lib/esm/tests/api_tests/enduser_login_rate_limits.test.d.ts +6 -0
  67. package/lib/esm/tests/api_tests/enduser_login_rate_limits.test.d.ts.map +1 -0
  68. package/lib/esm/tests/api_tests/enduser_login_rate_limits.test.js +280 -0
  69. package/lib/esm/tests/api_tests/enduser_login_rate_limits.test.js.map +1 -0
  70. package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts.map +1 -1
  71. package/lib/esm/tests/api_tests/integrations_redacted.test.js +30 -20
  72. package/lib/esm/tests/api_tests/integrations_redacted.test.js.map +1 -1
  73. package/lib/esm/tests/api_tests/push_forms_to_portal_group_completion.test.d.ts.map +1 -1
  74. package/lib/esm/tests/api_tests/push_forms_to_portal_group_completion.test.js +235 -199
  75. package/lib/esm/tests/api_tests/push_forms_to_portal_group_completion.test.js.map +1 -1
  76. package/lib/esm/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.d.ts +28 -0
  77. package/lib/esm/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.d.ts.map +1 -0
  78. package/lib/esm/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.js +345 -0
  79. package/lib/esm/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.js.map +1 -0
  80. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts +28 -0
  81. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts.map +1 -0
  82. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js +243 -0
  83. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js.map +1 -0
  84. package/lib/esm/tests/api_tests/security/F-0007-invite-user-enumeration.test.d.ts +29 -0
  85. package/lib/esm/tests/api_tests/security/F-0007-invite-user-enumeration.test.d.ts.map +1 -0
  86. package/lib/esm/tests/api_tests/security/F-0007-invite-user-enumeration.test.js +271 -0
  87. package/lib/esm/tests/api_tests/security/F-0007-invite-user-enumeration.test.js.map +1 -0
  88. package/lib/esm/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.d.ts +24 -0
  89. package/lib/esm/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.d.ts.map +1 -0
  90. package/lib/esm/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.js +194 -0
  91. package/lib/esm/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.js.map +1 -0
  92. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html.test.d.ts +2 -0
  93. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html.test.d.ts.map +1 -0
  94. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html.test.js +144 -0
  95. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html.test.js.map +1 -0
  96. package/lib/esm/tests/api_tests/security/F-0016-prototype-pollution.test.d.ts +2 -0
  97. package/lib/esm/tests/api_tests/security/F-0016-prototype-pollution.test.d.ts.map +1 -0
  98. package/lib/esm/tests/api_tests/security/F-0016-prototype-pollution.test.js +84 -0
  99. package/lib/esm/tests/api_tests/security/F-0016-prototype-pollution.test.js.map +1 -0
  100. package/lib/esm/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.d.ts +32 -0
  101. package/lib/esm/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.d.ts.map +1 -0
  102. package/lib/esm/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.js +233 -0
  103. package/lib/esm/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.js.map +1 -0
  104. package/lib/esm/tests/api_tests/security/F-0076-self-admin-role-assignment.test.d.ts +38 -0
  105. package/lib/esm/tests/api_tests/security/F-0076-self-admin-role-assignment.test.d.ts.map +1 -0
  106. package/lib/esm/tests/api_tests/security/F-0076-self-admin-role-assignment.test.js +218 -0
  107. package/lib/esm/tests/api_tests/security/F-0076-self-admin-role-assignment.test.js.map +1 -0
  108. package/lib/esm/tests/api_tests/user_portal_settings.test.d.ts +6 -0
  109. package/lib/esm/tests/api_tests/user_portal_settings.test.d.ts.map +1 -0
  110. package/lib/esm/tests/api_tests/user_portal_settings.test.js +297 -0
  111. package/lib/esm/tests/api_tests/user_portal_settings.test.js.map +1 -0
  112. package/lib/esm/tests/tests.d.ts.map +1 -1
  113. package/lib/esm/tests/tests.js +198 -151
  114. package/lib/esm/tests/tests.js.map +1 -1
  115. package/lib/tsconfig.tsbuildinfo +1 -1
  116. package/package.json +10 -10
  117. package/src/tests/api_tests/calendar_event_webhook_template.test.ts +204 -0
  118. package/src/tests/api_tests/enduser_login_rate_limits.test.ts +178 -0
  119. package/src/tests/api_tests/integrations_redacted.test.ts +8 -0
  120. package/src/tests/api_tests/push_forms_to_portal_group_completion.test.ts +113 -88
  121. package/src/tests/api_tests/security/F-0001-data-sync-redaction-bypass.test.ts +236 -0
  122. package/src/tests/api_tests/security/F-0005-ai-conversations-rbac.test.ts +154 -0
  123. package/src/tests/api_tests/security/F-0007-invite-user-enumeration.test.ts +198 -0
  124. package/src/tests/api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test.ts +130 -0
  125. package/src/tests/api_tests/security/F-0013-sanitize-user-html.test.ts +109 -0
  126. package/src/tests/api_tests/security/F-0016-prototype-pollution.test.ts +50 -0
  127. package/src/tests/api_tests/security/F-0053-cascade-role-rename-cross-tenant.test.ts +161 -0
  128. package/src/tests/api_tests/security/F-0076-self-admin-role-assignment.test.ts +165 -0
  129. package/src/tests/api_tests/user_portal_settings.test.ts +217 -0
  130. package/src/tests/tests.ts +25 -2
  131. package/test_generated.pdf +0 -0
@@ -0,0 +1,217 @@
1
+ require('source-map-support').install();
2
+
3
+ import { Session, EnduserSession } from "../../sdk"
4
+ import {
5
+ assert,
6
+ async_test,
7
+ handleAnyError,
8
+ log_header,
9
+ } from "@tellescope/testing"
10
+ import { setup_tests } from "../setup"
11
+
12
+ const host = process.env.API_URL || 'http://localhost:8080' as const
13
+ const businessId = '60398b1131a295e64f084ff6'
14
+
15
+ // Main test function that can be called independently
16
+ export const user_portal_settings_tests = async ({ sdk, sdkNonAdmin }: { sdk: Session, sdkNonAdmin: Session }) => {
17
+ log_header("User portalSettings Tests")
18
+
19
+ // Operate on a throwaway user so we never mutate existing users' records.
20
+ const testUser = await sdk.api.users.createOne({
21
+ email: `portal_settings_test_${Date.now()}@test.tellescope.com`,
22
+ })
23
+
24
+ // throwaway enduser used to confirm enduser-visibility of portalSettings
25
+ let testEnduserId: string | undefined
26
+ let enduserSDK: EnduserSession | undefined
27
+
28
+ try {
29
+ // ===== Valid: string values =====
30
+ await async_test(
31
+ 'portalSettings - string values accepted',
32
+ async () => {
33
+ await sdk.api.users.updateOne(testUser.id, { portalSettings: { theme: 'dark' } }, { replaceObjectFields: true })
34
+ const updated = await sdk.api.users.getOne(testUser.id)
35
+ return updated.portalSettings?.theme
36
+ },
37
+ { onResult: (r) => r === 'dark' }
38
+ )
39
+
40
+ // ===== Valid: boolean values + round-trip as real booleans =====
41
+ await async_test(
42
+ 'portalSettings - boolean values accepted and round-trip as booleans',
43
+ async () => {
44
+ await sdk.api.users.updateOne(
45
+ testUser.id,
46
+ { portalSettings: { showNameInSecureMessaging: true, showAvatar: false } },
47
+ { replaceObjectFields: true }
48
+ )
49
+ const updated = await sdk.api.users.getOne(testUser.id)
50
+ return updated.portalSettings
51
+ },
52
+ {
53
+ onResult: (r) =>
54
+ r?.showNameInSecureMessaging === true &&
55
+ r?.showAvatar === false &&
56
+ // assert real booleans, not coerced strings
57
+ typeof r?.showNameInSecureMessaging === 'boolean' &&
58
+ typeof r?.showAvatar === 'boolean',
59
+ }
60
+ )
61
+
62
+ // ===== Valid: mixed string + boolean values, strings stay strings =====
63
+ await async_test(
64
+ 'portalSettings - mixed string and boolean values',
65
+ async () => {
66
+ await sdk.api.users.updateOne(
67
+ testUser.id,
68
+ { portalSettings: { theme: 'light', showAvatar: true } },
69
+ { replaceObjectFields: true }
70
+ )
71
+ const updated = await sdk.api.users.getOne(testUser.id)
72
+ return updated.portalSettings
73
+ },
74
+ {
75
+ onResult: (r) =>
76
+ r?.theme === 'light' &&
77
+ typeof r?.theme === 'string' &&
78
+ r?.showAvatar === true &&
79
+ typeof r?.showAvatar === 'boolean',
80
+ }
81
+ )
82
+
83
+ // ===== Valid: empty object (zero-iteration loop passes) =====
84
+ await async_test(
85
+ 'portalSettings - empty object accepted',
86
+ async () => {
87
+ await sdk.api.users.updateOne(testUser.id, { portalSettings: {} }, { replaceObjectFields: true })
88
+ const updated = await sdk.api.users.getOne(testUser.id)
89
+ return updated.portalSettings
90
+ },
91
+ { onResult: (r) => !!r && typeof r === 'object' && Object.keys(r).length === 0 }
92
+ )
93
+
94
+ // ===== Invalid: value string > 250 chars =====
95
+ await async_test(
96
+ 'portalSettings - value string > 250 chars rejected',
97
+ () => sdk.api.users.updateOne(
98
+ testUser.id,
99
+ { portalSettings: { tooLong: 'a'.repeat(251) } },
100
+ { replaceObjectFields: true }
101
+ ),
102
+ handleAnyError
103
+ )
104
+
105
+ // ===== Invalid: key > 250 chars =====
106
+ await async_test(
107
+ 'portalSettings - key > 250 chars rejected',
108
+ () => sdk.api.users.updateOne(
109
+ testUser.id,
110
+ { portalSettings: { ['a'.repeat(251)]: 'x' } },
111
+ { replaceObjectFields: true }
112
+ ),
113
+ handleAnyError
114
+ )
115
+
116
+ // ===== Invalid: nested object value (disallowed type) =====
117
+ await async_test(
118
+ 'portalSettings - nested object value rejected',
119
+ () => sdk.api.users.updateOne(
120
+ testUser.id,
121
+ { portalSettings: { k: { nested: 1 } as any } },
122
+ { replaceObjectFields: true }
123
+ ),
124
+ handleAnyError
125
+ )
126
+
127
+ // ===== Invalid: array value (disallowed type) =====
128
+ await async_test(
129
+ 'portalSettings - array value rejected',
130
+ () => sdk.api.users.updateOne(
131
+ testUser.id,
132
+ { portalSettings: { k: [1, 2] as any } },
133
+ { replaceObjectFields: true }
134
+ ),
135
+ handleAnyError
136
+ )
137
+
138
+ // ===== Number value (secondary): orValidator tries boolean then string;
139
+ // stringValidator250's escapeString throws on non-strings, so a number is
140
+ // rejected by both branches => API validation error. =====
141
+ await async_test(
142
+ 'portalSettings - number value rejected',
143
+ () => sdk.api.users.updateOne(
144
+ testUser.id,
145
+ { portalSettings: { k: 1 as any } },
146
+ { replaceObjectFields: true }
147
+ ),
148
+ handleAnyError
149
+ )
150
+
151
+ // ===== Enduser visibility: portalSettings readable by endusers, un-redacted =====
152
+ await async_test(
153
+ 'portalSettings - readable by enduser (un-redacted)',
154
+ async () => {
155
+ // set a known value on the throwaway user
156
+ await sdk.api.users.updateOne(
157
+ testUser.id,
158
+ { portalSettings: { showNameInSecureMessaging: true, theme: 'dark' } },
159
+ { replaceObjectFields: true }
160
+ )
161
+
162
+ // create + authenticate a throwaway enduser to read as a patient
163
+ const testEnduser = await sdk.api.endusers.createOne({
164
+ email: `portal_settings_enduser_${Date.now()}@test.tellescope.com`,
165
+ })
166
+ testEnduserId = testEnduser.id
167
+ await sdk.api.endusers.set_password({ id: testEnduser.id, password: 'TestPassword123!' })
168
+
169
+ enduserSDK = new EnduserSession({ host, businessId })
170
+ await enduserSDK.authenticate(testEnduser.email!, 'TestPassword123!')
171
+
172
+ const asEnduser = await enduserSDK.api.users.getOne(testUser.id)
173
+ return asEnduser.portalSettings
174
+ },
175
+ {
176
+ onResult: (r) =>
177
+ // field is present and un-redacted for endusers
178
+ r?.showNameInSecureMessaging === true && r?.theme === 'dark',
179
+ }
180
+ )
181
+
182
+ console.log("✅ All User portalSettings tests passed!")
183
+ } finally {
184
+ try {
185
+ if (enduserSDK) {
186
+ await enduserSDK.api.endusers.logout().catch(() => {})
187
+ }
188
+ if (testEnduserId) {
189
+ await sdk.api.endusers.deleteOne(testEnduserId)
190
+ }
191
+ } finally {
192
+ await sdk.api.users.deleteOne(testUser.id)
193
+ }
194
+ }
195
+ }
196
+
197
+ // Allow running this test file independently
198
+ if (require.main === module) {
199
+ console.log(`🌐 Using API URL: ${host}`)
200
+ const sdk = new Session({ host })
201
+ const sdkNonAdmin = new Session({ host })
202
+
203
+ const runTests = async () => {
204
+ await setup_tests(sdk, sdkNonAdmin)
205
+ await user_portal_settings_tests({ sdk, sdkNonAdmin })
206
+ }
207
+
208
+ runTests()
209
+ .then(() => {
210
+ console.log("✅ User portalSettings test suite completed successfully")
211
+ process.exit(0)
212
+ })
213
+ .catch((error) => {
214
+ console.error("❌ User portalSettings test suite failed:", error)
215
+ process.exit(1)
216
+ })
217
+ }
@@ -36,6 +36,7 @@ import {
36
36
 
37
37
  import { Session, APIQuery, EnduserSession } from "../sdk"
38
38
  import { enduser_observations_acknowledge_tests } from "./api_tests/enduser_observations_acknowledge.test"
39
+ import { user_portal_settings_tests } from "./api_tests/user_portal_settings.test"
39
40
  import { integrations_redacted_tests } from "./api_tests/integrations_redacted.test"
40
41
  import { get_some_projection_tests } from "./api_tests/get_some_projection.test"
41
42
  import { mdb_sort_tests } from "./api_tests/mdb_sort.test"
@@ -76,6 +77,7 @@ import {
76
77
  import fs from "fs"
77
78
  import { load_inbox_data_tests } from "./api_tests/load_inbox_data.test";
78
79
  import { enduser_login_tests } from "./api_tests/enduser_login.test";
80
+ import { enduser_login_rate_limits_tests } from "./api_tests/enduser_login_rate_limits.test";
79
81
  import { eom_procedure_codes_tests } from "./api_tests/eom_procedure_codes.test";
80
82
  import { cross_org_api_key_tests } from "./api_tests/cross_org_api_key.test";
81
83
  import { custom_dashboards_tests } from "./api_tests/custom_dashboards.test";
@@ -88,6 +90,14 @@ import { custom_aggregation_tests } from "./api_tests/custom_aggregation.test";
88
90
  import { chats_analytics_tests } from "./api_tests/chats_analytics.test";
89
91
  import { no_access_permission_checks_tests } from "./api_tests/no_access_permission_checks.test";
90
92
  import { field_redaction_tests } from "./api_tests/field_redaction.test";
93
+ import { data_sync_redaction_bypass_tests } from "./api_tests/security/F-0001-data-sync-redaction-bypass.test";
94
+ import { ai_conversations_rbac_tests } from "./api_tests/security/F-0005-ai-conversations-rbac.test";
95
+ import { cascade_role_rename_cross_tenant_tests } from "./api_tests/security/F-0053-cascade-role-rename-cross-tenant.test";
96
+ import { self_admin_role_assignment_tests } from "./api_tests/security/F-0076-self-admin-role-assignment.test";
97
+ import { invite_user_enumeration_tests } from "./api_tests/security/F-0007-invite-user-enumeration.test";
98
+ import { handle_incoming_communication_cross_tenant_tests } from "./api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test";
99
+ import { sanitize_user_html_xss_tests } from "./api_tests/security/F-0013-sanitize-user-html.test";
100
+ import { prototype_pollution_tests } from "./api_tests/security/F-0016-prototype-pollution.test";
91
101
  import { bulk_assignment_tests } from "./api_tests/bulk_assignment.test";
92
102
  import { managed_content_enduser_access_tests } from "./api_tests/managed_content_enduser_access.test";
93
103
  import { managed_content_file_access_tests } from "./api_tests/managed_content_file_access.test";
@@ -109,6 +119,7 @@ import { set_fields_order_templates_tests } from "./api_tests/set_fields_order_t
109
119
  import { date_string_validation_tests } from "./api_tests/date_string_validation.test";
110
120
  import { enduser_session_invalidation_tests } from "./api_tests/enduser_session_invalidation.test";
111
121
  import { enduser_cross_access_isolation_tests } from "./api_tests/enduser_cross_access_isolation.test";
122
+ import { calendar_event_webhook_template_tests } from "./api_tests/calendar_event_webhook_template.test";
112
123
 
113
124
  const UniquenessViolationMessage = 'Uniqueness Violation'
114
125
 
@@ -5092,6 +5103,7 @@ const trigger_events_api_tests = async () => {
5092
5103
  const automation_trigger_tests = async () => {
5093
5104
  log_header("Automation Trigger Tests")
5094
5105
 
5106
+ await push_forms_to_portal_group_completion_tests({ sdk, sdkNonAdmin })
5095
5107
  await order_status_equals_tests()
5096
5108
  await set_fields_order_templates_tests({ sdk, sdkNonAdmin })
5097
5109
  await medication_added_trigger_tests({ sdk, sdkNonAdmin })
@@ -5102,7 +5114,6 @@ const automation_trigger_tests = async () => {
5102
5114
  await form_response_set_fields_trigger_tests()
5103
5115
  await form_response_set_fields_journey_tests()
5104
5116
  await appointment_completed_trigger_tests({ sdk, sdkNonAdmin })
5105
- await push_forms_to_portal_group_completion_tests({ sdk, sdkNonAdmin })
5106
5117
  await trigger_events_api_tests()
5107
5118
  await fields_changed_tests()
5108
5119
  await field_equals_trigger_tests()
@@ -14321,10 +14332,21 @@ const ip_address_form_tests = async () => {
14321
14332
  await replace_form_field_template_values_tests()
14322
14333
  await mfa_tests()
14323
14334
  await setup_tests(sdk, sdkNonAdmin)
14335
+ await invite_user_enumeration_tests({ sdk, sdkNonAdmin })
14336
+ await handle_incoming_communication_cross_tenant_tests({ sdk, sdkNonAdmin })
14337
+ await calendar_event_webhook_template_tests({ sdk, sdkNonAdmin })
14338
+ await outbound_chat_sent_trigger_tests({ sdk })
14339
+ await enduser_login_rate_limits_tests({ sdk, sdkNonAdmin })
14340
+ await data_sync_redaction_bypass_tests({ sdk, sdkNonAdmin })
14341
+ await ai_conversations_rbac_tests({ sdk, sdkNonAdmin })
14342
+ await cascade_role_rename_cross_tenant_tests({ sdk, sdkNonAdmin })
14343
+ await self_admin_role_assignment_tests({ sdk, sdkNonAdmin })
14344
+ await sanitize_user_html_xss_tests()
14345
+ await prototype_pollution_tests()
14346
+ await automation_trigger_tests()
14324
14347
  await account_switcher_tests({ sdk, sdkNonAdmin })
14325
14348
  await enduser_login_tests({ sdk, sdkNonAdmin })
14326
14349
  await outbound_chat_sent_trigger_tests({ sdk })
14327
- await automation_trigger_tests()
14328
14350
  await enduser_cross_access_isolation_tests({ sdk, sdkNonAdmin })
14329
14351
  await eom_procedure_codes_tests({ sdk, sdkNonAdmin })
14330
14352
  await cross_org_api_key_tests({ sdk, sdkNonAdmin })
@@ -14376,6 +14398,7 @@ const ip_address_form_tests = async () => {
14376
14398
  await inbox_threads_loading_tests()
14377
14399
  await load_inbox_data_tests({ sdk, sdkNonAdmin })
14378
14400
  await enduser_observations_acknowledge_tests({ sdk, sdkNonAdmin })
14401
+ await user_portal_settings_tests({ sdk, sdkNonAdmin })
14379
14402
  await create_user_notifications_trigger_tests({ sdk })
14380
14403
  await group_mms_active_tests()
14381
14404
  await auto_reply_tests()
Binary file