@tellescope/sdk 1.256.7 → 1.256.8
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/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js +293 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +132 -47
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +26 -22
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +1 -0
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/sdk.d.ts +3 -2
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/session.d.ts +1 -0
- package/lib/esm/session.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js +289 -0
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +132 -47
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +26 -22
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/tests/api_tests/group_event_attendee_self_update.test.ts +161 -0
- package/src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.ts +66 -6
- package/src/tests/tests.ts +2 -0
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group_event_attendee_self_update.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/group_event_attendee_self_update.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAA;AAWnD,eAAO,MAAM,sCAAsC;SAA2B,OAAO;iBAAe,OAAO;mBA6H1G,CAAA"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.group_event_attendee_self_update_tests = void 0;
|
|
49
|
+
require('source-map-support').install();
|
|
50
|
+
var sdk_1 = require("../../sdk");
|
|
51
|
+
var testing_1 = require("@tellescope/testing");
|
|
52
|
+
var setup_1 = require("../setup");
|
|
53
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
54
|
+
// An enduser attendee can PATCH a calendar_event (needed to self-cancel out of a group event), and
|
|
55
|
+
// attendeeStatuses / cancelledGroupAttendees are attendee-keyed arrays that drive per-attendee
|
|
56
|
+
// automation triggers (handle_attendee_status_change_triggers + event-wide completion). The
|
|
57
|
+
// calendar_events relationship constraint must let an enduser touch ONLY their own id's entry, so a
|
|
58
|
+
// patient cannot fire or suppress a co-attendee's Appointment triggers by patching the shared event.
|
|
59
|
+
var group_event_attendee_self_update_tests = function (_a) {
|
|
60
|
+
var sdk = _a.sdk;
|
|
61
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
62
|
+
var createdEnduserIds, createdEventIds, createEnduser, enduserSession, createGroupEvent, attacker_1, victim_1, attackerSDK_1, e1_1, e2_1, e3_1, e4_1, e5_1, e6_1, e7_1, e7ForAttacker_1, e8_1, _i, createdEventIds_1, id, _1, _b, createdEnduserIds_1, id, _2;
|
|
63
|
+
return __generator(this, function (_c) {
|
|
64
|
+
switch (_c.label) {
|
|
65
|
+
case 0:
|
|
66
|
+
(0, testing_1.log_header)("Group Event Attendee Self-Update Constraint");
|
|
67
|
+
createdEnduserIds = [];
|
|
68
|
+
createdEventIds = [];
|
|
69
|
+
createEnduser = function (label) { return __awaiter(void 0, void 0, void 0, function () {
|
|
70
|
+
var e;
|
|
71
|
+
return __generator(this, function (_a) {
|
|
72
|
+
switch (_a.label) {
|
|
73
|
+
case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: "attendee_self_update_".concat(label, "_").concat(Date.now(), "@test.tellescope.com") })];
|
|
74
|
+
case 1:
|
|
75
|
+
e = _a.sent();
|
|
76
|
+
createdEnduserIds.push(e.id);
|
|
77
|
+
return [2 /*return*/, e];
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}); };
|
|
81
|
+
enduserSession = function (id) { return __awaiter(void 0, void 0, void 0, function () {
|
|
82
|
+
var _a, authToken, enduser;
|
|
83
|
+
return __generator(this, function (_b) {
|
|
84
|
+
switch (_b.label) {
|
|
85
|
+
case 0: return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: id })];
|
|
86
|
+
case 1:
|
|
87
|
+
_a = _b.sent(), authToken = _a.authToken, enduser = _a.enduser;
|
|
88
|
+
return [2 /*return*/, new sdk_1.EnduserSession({ host: host, authToken: authToken, enduser: enduser, businessId: sdk.userInfo.businessId })];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}); };
|
|
92
|
+
createGroupEvent = function (attendeeIds) { return __awaiter(void 0, void 0, void 0, function () {
|
|
93
|
+
var event;
|
|
94
|
+
return __generator(this, function (_a) {
|
|
95
|
+
switch (_a.label) {
|
|
96
|
+
case 0: return [4 /*yield*/, sdk.api.calendar_events.createOne({
|
|
97
|
+
title: 'Attendee Self-Update Test',
|
|
98
|
+
durationInMinutes: 30,
|
|
99
|
+
startTimeInMS: Date.now() + Math.floor(Math.random() * 100000),
|
|
100
|
+
attendees: attendeeIds.map(function (id) { return ({ type: 'enduser', id: id }); }),
|
|
101
|
+
})];
|
|
102
|
+
case 1:
|
|
103
|
+
event = _a.sent();
|
|
104
|
+
createdEventIds.push(event.id);
|
|
105
|
+
return [2 /*return*/, event];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}); };
|
|
109
|
+
_c.label = 1;
|
|
110
|
+
case 1:
|
|
111
|
+
_c.trys.push([1, , 25, 38]);
|
|
112
|
+
return [4 /*yield*/, createEnduser('self')];
|
|
113
|
+
case 2:
|
|
114
|
+
attacker_1 = _c.sent();
|
|
115
|
+
return [4 /*yield*/, createEnduser('other')];
|
|
116
|
+
case 3:
|
|
117
|
+
victim_1 = _c.sent();
|
|
118
|
+
return [4 /*yield*/, enduserSession(attacker_1.id)
|
|
119
|
+
// ---- ALLOWED: self-cancel out of a fresh group event (the portal self-cancel path) ----
|
|
120
|
+
];
|
|
121
|
+
case 4:
|
|
122
|
+
attackerSDK_1 = _c.sent();
|
|
123
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
124
|
+
case 5:
|
|
125
|
+
e1_1 = _c.sent();
|
|
126
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may add their OWN cancelledGroupAttendees entry (self-cancel)", function () { return attackerSDK_1.api.calendar_events.updateOne(e1_1.id, {
|
|
127
|
+
cancelledGroupAttendees: [{ id: attacker_1.id, at: new Date() }],
|
|
128
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)
|
|
129
|
+
// ---- ALLOWED: set own attendeeStatuses entry ----
|
|
130
|
+
];
|
|
131
|
+
case 6:
|
|
132
|
+
_c.sent();
|
|
133
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
134
|
+
case 7:
|
|
135
|
+
e2_1 = _c.sent();
|
|
136
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may set their OWN attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e2_1.id, {
|
|
137
|
+
attendeeStatuses: [{ id: attacker_1.id, at: new Date(), status: 'Cancelled' }],
|
|
138
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)
|
|
139
|
+
// ---- REJECTED: set a co-attendee's attendeeStatuses (would fire that patient's triggers) ----
|
|
140
|
+
];
|
|
141
|
+
case 8:
|
|
142
|
+
_c.sent();
|
|
143
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
144
|
+
case 9:
|
|
145
|
+
e3_1 = _c.sent();
|
|
146
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT set a co-attendee's attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e3_1.id, {
|
|
147
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'No-showed' }],
|
|
148
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
149
|
+
// ---- REJECTED: set a co-attendee's cancelledGroupAttendees entry ----
|
|
150
|
+
];
|
|
151
|
+
case 10:
|
|
152
|
+
_c.sent();
|
|
153
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
154
|
+
case 11:
|
|
155
|
+
e4_1 = _c.sent();
|
|
156
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT set a co-attendee's cancelledGroupAttendees entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e4_1.id, {
|
|
157
|
+
cancelledGroupAttendees: [{ id: victim_1.id, at: new Date() }],
|
|
158
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
159
|
+
// ---- REJECTED: drop a co-attendee's existing entry (would suppress their completion trigger) ----
|
|
160
|
+
];
|
|
161
|
+
case 12:
|
|
162
|
+
_c.sent();
|
|
163
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
164
|
+
case 13:
|
|
165
|
+
e5_1 = _c.sent();
|
|
166
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(e5_1.id, {
|
|
167
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'Completed' }],
|
|
168
|
+
}, { replaceObjectFields: true })];
|
|
169
|
+
case 14:
|
|
170
|
+
_c.sent();
|
|
171
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT remove a co-attendee's existing attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e5_1.id, {
|
|
172
|
+
attendeeStatuses: [{ id: attacker_1.id, at: new Date(), status: 'Cancelled' }], // silently drops victim's entry
|
|
173
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
174
|
+
// ---- REJECTED: modify a co-attendee's existing entry ----
|
|
175
|
+
];
|
|
176
|
+
case 15:
|
|
177
|
+
_c.sent();
|
|
178
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
179
|
+
case 16:
|
|
180
|
+
e6_1 = _c.sent();
|
|
181
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(e6_1.id, {
|
|
182
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'Completed' }],
|
|
183
|
+
}, { replaceObjectFields: true })];
|
|
184
|
+
case 17:
|
|
185
|
+
_c.sent();
|
|
186
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT modify a co-attendee's existing attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e6_1.id, {
|
|
187
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'No-showed' }],
|
|
188
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
189
|
+
// ---- ALLOWED: self-cancel while PRESERVING a co-attendee's existing entry (realistic group self-cancel) ----
|
|
190
|
+
];
|
|
191
|
+
case 18:
|
|
192
|
+
_c.sent();
|
|
193
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
194
|
+
case 19:
|
|
195
|
+
e7_1 = _c.sent();
|
|
196
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(e7_1.id, {
|
|
197
|
+
cancelledGroupAttendees: [{ id: victim_1.id, at: new Date() }],
|
|
198
|
+
}, { replaceObjectFields: true })];
|
|
199
|
+
case 20:
|
|
200
|
+
_c.sent();
|
|
201
|
+
return [4 /*yield*/, attackerSDK_1.api.calendar_events.getOne(e7_1.id)];
|
|
202
|
+
case 21:
|
|
203
|
+
e7ForAttacker_1 = _c.sent();
|
|
204
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may self-cancel while preserving a co-attendee's existing entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e7_1.id, {
|
|
205
|
+
cancelledGroupAttendees: __spreadArray(__spreadArray([], (e7ForAttacker_1.cancelledGroupAttendees || []), true), [{ id: attacker_1.id, at: new Date() }], false),
|
|
206
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)
|
|
207
|
+
// ---- ALLOWED (baseline): staff may set any attendee's status (constraint is enduser-only) ----
|
|
208
|
+
];
|
|
209
|
+
case 22:
|
|
210
|
+
_c.sent();
|
|
211
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
212
|
+
case 23:
|
|
213
|
+
e8_1 = _c.sent();
|
|
214
|
+
return [4 /*yield*/, (0, testing_1.async_test)("staff may set any attendee's status", function () { return sdk.api.calendar_events.updateOne(e8_1.id, {
|
|
215
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'No-showed' }],
|
|
216
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)];
|
|
217
|
+
case 24:
|
|
218
|
+
_c.sent();
|
|
219
|
+
return [3 /*break*/, 38];
|
|
220
|
+
case 25:
|
|
221
|
+
_i = 0, createdEventIds_1 = createdEventIds;
|
|
222
|
+
_c.label = 26;
|
|
223
|
+
case 26:
|
|
224
|
+
if (!(_i < createdEventIds_1.length)) return [3 /*break*/, 31];
|
|
225
|
+
id = createdEventIds_1[_i];
|
|
226
|
+
_c.label = 27;
|
|
227
|
+
case 27:
|
|
228
|
+
_c.trys.push([27, 29, , 30]);
|
|
229
|
+
return [4 /*yield*/, sdk.api.calendar_events.deleteOne(id)];
|
|
230
|
+
case 28:
|
|
231
|
+
_c.sent();
|
|
232
|
+
return [3 /*break*/, 30];
|
|
233
|
+
case 29:
|
|
234
|
+
_1 = _c.sent();
|
|
235
|
+
return [3 /*break*/, 30];
|
|
236
|
+
case 30:
|
|
237
|
+
_i++;
|
|
238
|
+
return [3 /*break*/, 26];
|
|
239
|
+
case 31:
|
|
240
|
+
_b = 0, createdEnduserIds_1 = createdEnduserIds;
|
|
241
|
+
_c.label = 32;
|
|
242
|
+
case 32:
|
|
243
|
+
if (!(_b < createdEnduserIds_1.length)) return [3 /*break*/, 37];
|
|
244
|
+
id = createdEnduserIds_1[_b];
|
|
245
|
+
_c.label = 33;
|
|
246
|
+
case 33:
|
|
247
|
+
_c.trys.push([33, 35, , 36]);
|
|
248
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(id)];
|
|
249
|
+
case 34:
|
|
250
|
+
_c.sent();
|
|
251
|
+
return [3 /*break*/, 36];
|
|
252
|
+
case 35:
|
|
253
|
+
_2 = _c.sent();
|
|
254
|
+
return [3 /*break*/, 36];
|
|
255
|
+
case 36:
|
|
256
|
+
_b++;
|
|
257
|
+
return [3 /*break*/, 32];
|
|
258
|
+
case 37: return [7 /*endfinally*/];
|
|
259
|
+
case 38: return [2 /*return*/];
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
exports.group_event_attendee_self_update_tests = group_event_attendee_self_update_tests;
|
|
265
|
+
// Allow running this test file independently
|
|
266
|
+
if (require.main === module) {
|
|
267
|
+
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
268
|
+
var sdk_2 = new sdk_1.Session({ host: host });
|
|
269
|
+
var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
|
|
270
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
271
|
+
return __generator(this, function (_a) {
|
|
272
|
+
switch (_a.label) {
|
|
273
|
+
case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
|
|
274
|
+
case 1:
|
|
275
|
+
_a.sent();
|
|
276
|
+
return [4 /*yield*/, (0, exports.group_event_attendee_self_update_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
277
|
+
case 2:
|
|
278
|
+
_a.sent();
|
|
279
|
+
return [2 /*return*/];
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
}); };
|
|
283
|
+
runTests()
|
|
284
|
+
.then(function () {
|
|
285
|
+
console.log("✅ Group event attendee self-update constraint tests completed successfully");
|
|
286
|
+
process.exit(0);
|
|
287
|
+
})
|
|
288
|
+
.catch(function (error) {
|
|
289
|
+
console.error("❌ Group event attendee self-update constraint tests failed:", error);
|
|
290
|
+
process.exit(1);
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=group_event_attendee_self_update.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group_event_attendee_self_update.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/group_event_attendee_self_update.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"F-0006-develop-health-benefit-verification-rbac.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAYtC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,8CAA8C;SAAwC,OAAO;iBAAe,OAAO;
|
|
1
|
+
{"version":3,"file":"F-0006-develop-health-benefit-verification-rbac.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAYtC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,8CAA8C;SAAwC,OAAO;iBAAe,OAAO;mBA6I/H,CAAA"}
|
package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js
CHANGED
|
@@ -84,22 +84,22 @@ var _a = [process.env.NON_ADMIN_EMAIL, process.env.NON_ADMIN_PASSWORD], nonAdmin
|
|
|
84
84
|
var develop_health_benefit_verification_rbac_tests = function (_a) {
|
|
85
85
|
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
86
86
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
87
|
-
var roleName, rbapId, originalRoles, rbap, _b, _c, _d;
|
|
88
|
-
return __generator(this, function (
|
|
89
|
-
switch (
|
|
87
|
+
var roleName, rbapId, originalRoles, rbap, providerRoleName, providerRbapId, providerRbap, _b, _c, _d, _e, _f, _g;
|
|
88
|
+
return __generator(this, function (_h) {
|
|
89
|
+
switch (_h.label) {
|
|
90
90
|
case 0:
|
|
91
91
|
(0, testing_1.log_header)("F-0006: develop_health benefit verification RBAC regression");
|
|
92
92
|
roleName = "f0006-develop-health-no-access-".concat(Date.now());
|
|
93
93
|
originalRoles = sdkNonAdmin.userInfo.roles;
|
|
94
|
-
|
|
94
|
+
_h.label = 1;
|
|
95
95
|
case 1:
|
|
96
|
-
|
|
96
|
+
_h.trys.push([1, , 27, 40]);
|
|
97
97
|
return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
|
|
98
98
|
role: roleName,
|
|
99
99
|
permissions: __assign(__assign({}, constants_1.PROVIDER_PERMISSIONS), { endusers: { create: null, read: null, update: null, delete: null }, enduser_eligibility_results: { create: null, read: null, update: null, delete: null } }),
|
|
100
100
|
})];
|
|
101
101
|
case 2:
|
|
102
|
-
rbap =
|
|
102
|
+
rbap = _h.sent();
|
|
103
103
|
rbapId = rbap.id;
|
|
104
104
|
// 2. Assign the role to the non-admin user and re-authenticate so the new
|
|
105
105
|
// session reflects the role's denied permissions.
|
|
@@ -107,17 +107,17 @@ var develop_health_benefit_verification_rbac_tests = function (_a) {
|
|
|
107
107
|
case 3:
|
|
108
108
|
// 2. Assign the role to the non-admin user and re-authenticate so the new
|
|
109
109
|
// session reflects the role's denied permissions.
|
|
110
|
-
|
|
110
|
+
_h.sent();
|
|
111
111
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
|
|
112
112
|
case 4:
|
|
113
|
-
|
|
113
|
+
_h.sent();
|
|
114
114
|
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)
|
|
115
115
|
// 3. develop_health_run_benefit_verification must throw 403 BEFORE any enduser lookup.
|
|
116
116
|
// Pre-fix: proceeds to DB.endusers.findById and either 400s on validation (fake id) or
|
|
117
117
|
// succeeds and forwards PHI to Develop Health (real id) — never a 403.
|
|
118
118
|
];
|
|
119
119
|
case 5:
|
|
120
|
-
|
|
120
|
+
_h.sent();
|
|
121
121
|
// 3. develop_health_run_benefit_verification must throw 403 BEFORE any enduser lookup.
|
|
122
122
|
// Pre-fix: proceeds to DB.endusers.findById and either 400s on validation (fake id) or
|
|
123
123
|
// succeeds and forwards PHI to Develop Health (real id) — never a 403.
|
|
@@ -133,67 +133,152 @@ var develop_health_benefit_verification_rbac_tests = function (_a) {
|
|
|
133
133
|
}); }, {
|
|
134
134
|
shouldError: true,
|
|
135
135
|
onError: function (e) {
|
|
136
|
-
var _a
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
//
|
|
136
|
+
var _a;
|
|
137
|
+
// Match the gate's exact message. The SDK error surfaces { message, info } (no top-level
|
|
138
|
+
// status/code), so we key on the message rather than the HTTP status. This is deliberately
|
|
139
|
+
// specific: a lapsed subscription ("Your subscription has expired") or an expired token
|
|
140
|
+
// ("Unauthenticated") also errors BEFORE the handler runs, but neither contains this string,
|
|
141
|
+
// so the test can't false-pass without the gate executing. Also reject the pre-fix
|
|
142
|
+
// downstream messages, which would indicate the access check never fired.
|
|
140
143
|
var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
|
|
141
|
-
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;
|
|
142
144
|
if (msg.includes('integration not found') || msg.includes('enduser is required')
|
|
143
145
|
|| msg.includes('organization') || msg.includes('provider')) {
|
|
144
146
|
return false; // reached past the access gate — regression
|
|
145
147
|
}
|
|
146
|
-
return
|
|
147
|
-
|| msg.includes('access') || msg.includes('permission') || msg.includes('forbidden');
|
|
148
|
+
return msg.includes('access to this resource');
|
|
148
149
|
},
|
|
149
|
-
})
|
|
150
|
+
})
|
|
151
|
+
// 4. POSITIVE case: a provider role WITH enduser access must PASS the gate and reach the
|
|
152
|
+
// integration stage (this test org has no Develop Health integration, so it 400s with
|
|
153
|
+
// "Integration not found"). This guards against the gate over-blocking legitimate users —
|
|
154
|
+
// the failure mode a future tightening (e.g. gating on 'All') would introduce.
|
|
155
|
+
];
|
|
150
156
|
case 6:
|
|
151
157
|
// 3. develop_health_run_benefit_verification must throw 403 BEFORE any enduser lookup.
|
|
152
158
|
// Pre-fix: proceeds to DB.endusers.findById and either 400s on validation (fake id) or
|
|
153
159
|
// succeeds and forwards PHI to Develop Health (real id) — never a 403.
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
_h.sent();
|
|
161
|
+
providerRoleName = "f0006-develop-health-provider-".concat(Date.now());
|
|
162
|
+
providerRbapId = void 0;
|
|
163
|
+
_h.label = 7;
|
|
156
164
|
case 7:
|
|
157
|
-
|
|
158
|
-
return [4 /*yield*/, sdk.api.
|
|
165
|
+
_h.trys.push([7, , 13, 26]);
|
|
166
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
|
|
167
|
+
role: providerRoleName,
|
|
168
|
+
permissions: __assign({}, constants_1.PROVIDER_PERMISSIONS), // endusers read/create non-null, eligibility create non-null
|
|
169
|
+
})];
|
|
159
170
|
case 8:
|
|
160
|
-
|
|
161
|
-
|
|
171
|
+
providerRbap = _h.sent();
|
|
172
|
+
providerRbapId = providerRbap.id;
|
|
173
|
+
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: [providerRoleName] }, { replaceObjectFields: true })];
|
|
162
174
|
case 9:
|
|
163
|
-
|
|
164
|
-
return [
|
|
175
|
+
_h.sent();
|
|
176
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
|
|
165
177
|
case 10:
|
|
166
|
-
|
|
167
|
-
|
|
178
|
+
_h.sent();
|
|
179
|
+
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
|
|
168
180
|
case 11:
|
|
169
|
-
|
|
170
|
-
return [4 /*yield*/,
|
|
181
|
+
_h.sent();
|
|
182
|
+
return [4 /*yield*/, (0, testing_1.async_test)("F-0006: a provider role with enduser access passes the gate (reaches 'Integration not found', not 403)", function () { return sdkNonAdmin.api.enduser_eligibility_results.develop_health_run_benefit_verification({
|
|
183
|
+
enduserId: new bson_1.ObjectId().toHexString(),
|
|
184
|
+
providerUserId: new bson_1.ObjectId().toHexString(),
|
|
185
|
+
insuranceType: 'primary',
|
|
186
|
+
diagnoses: [],
|
|
187
|
+
drugs: [{ name: 'Test Drug', dosage: '10mg', quantity: 1 }],
|
|
188
|
+
drug_history: { currently_taking_drugs: [], previously_taken_drugs: [] },
|
|
189
|
+
}); }, {
|
|
190
|
+
shouldError: true,
|
|
191
|
+
onError: function (e) {
|
|
192
|
+
var _a;
|
|
193
|
+
var msg = ((_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
|
|
194
|
+
// Must NOT be the access-denial message (that would mean the gate wrongly blocked a
|
|
195
|
+
// provider). Reaching "Integration not found" (or org/provider validation) proves the
|
|
196
|
+
// gate passed and the read-scoped enduser load did not over-restrict a legitimate role.
|
|
197
|
+
if (msg.includes('access to this resource'))
|
|
198
|
+
return false;
|
|
199
|
+
return msg.includes('integration not found') || msg.includes('organization') || msg.includes('provider');
|
|
200
|
+
},
|
|
201
|
+
})];
|
|
171
202
|
case 12:
|
|
172
|
-
|
|
173
|
-
return [3 /*break*/,
|
|
203
|
+
_h.sent();
|
|
204
|
+
return [3 /*break*/, 26];
|
|
174
205
|
case 13:
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
case 14:
|
|
206
|
+
if (!providerRbapId) return [3 /*break*/, 25];
|
|
207
|
+
_h.label = 14;
|
|
208
|
+
case 14:
|
|
209
|
+
_h.trys.push([14, 16, , 17]);
|
|
210
|
+
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: originalRoles !== null && originalRoles !== void 0 ? originalRoles : [] }, { replaceObjectFields: true })];
|
|
211
|
+
case 15:
|
|
212
|
+
_h.sent();
|
|
213
|
+
return [3 /*break*/, 17];
|
|
214
|
+
case 16:
|
|
215
|
+
_b = _h.sent();
|
|
216
|
+
return [3 /*break*/, 17];
|
|
217
|
+
case 17:
|
|
218
|
+
_h.trys.push([17, 19, , 20]);
|
|
219
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(providerRbapId)];
|
|
220
|
+
case 18:
|
|
221
|
+
_h.sent();
|
|
222
|
+
return [3 /*break*/, 20];
|
|
223
|
+
case 19:
|
|
224
|
+
_c = _h.sent();
|
|
225
|
+
return [3 /*break*/, 20];
|
|
226
|
+
case 20: return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
|
|
227
|
+
case 21:
|
|
228
|
+
_h.sent();
|
|
229
|
+
_h.label = 22;
|
|
230
|
+
case 22:
|
|
231
|
+
_h.trys.push([22, 24, , 25]);
|
|
232
|
+
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
|
|
233
|
+
case 23:
|
|
234
|
+
_h.sent();
|
|
235
|
+
return [3 /*break*/, 25];
|
|
236
|
+
case 24:
|
|
237
|
+
_d = _h.sent();
|
|
238
|
+
return [3 /*break*/, 25];
|
|
239
|
+
case 25: return [7 /*endfinally*/];
|
|
240
|
+
case 26: return [3 /*break*/, 40];
|
|
241
|
+
case 27:
|
|
242
|
+
_h.trys.push([27, 29, , 30]);
|
|
243
|
+
return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { roles: originalRoles !== null && originalRoles !== void 0 ? originalRoles : [] }, { replaceObjectFields: true })];
|
|
244
|
+
case 28:
|
|
245
|
+
_h.sent();
|
|
246
|
+
return [3 /*break*/, 30];
|
|
247
|
+
case 29:
|
|
248
|
+
_e = _h.sent();
|
|
249
|
+
return [3 /*break*/, 30];
|
|
250
|
+
case 30:
|
|
251
|
+
if (!rbapId) return [3 /*break*/, 34];
|
|
252
|
+
_h.label = 31;
|
|
253
|
+
case 31:
|
|
254
|
+
_h.trys.push([31, 33, , 34]);
|
|
255
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(rbapId)];
|
|
256
|
+
case 32:
|
|
257
|
+
_h.sent();
|
|
258
|
+
return [3 /*break*/, 34];
|
|
259
|
+
case 33:
|
|
260
|
+
_f = _h.sent();
|
|
261
|
+
return [3 /*break*/, 34];
|
|
262
|
+
case 34:
|
|
178
263
|
// Re-authenticate the non-admin to drop the no-access role from their JWT
|
|
179
264
|
// before subsequent tests run.
|
|
180
265
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)];
|
|
181
|
-
case
|
|
266
|
+
case 35:
|
|
182
267
|
// Re-authenticate the non-admin to drop the no-access role from their JWT
|
|
183
268
|
// before subsequent tests run.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
case
|
|
187
|
-
|
|
269
|
+
_h.sent();
|
|
270
|
+
_h.label = 36;
|
|
271
|
+
case 36:
|
|
272
|
+
_h.trys.push([36, 38, , 39]);
|
|
188
273
|
return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)];
|
|
189
|
-
case
|
|
190
|
-
|
|
191
|
-
return [3 /*break*/,
|
|
192
|
-
case
|
|
193
|
-
|
|
194
|
-
return [3 /*break*/,
|
|
195
|
-
case
|
|
196
|
-
case
|
|
274
|
+
case 37:
|
|
275
|
+
_h.sent();
|
|
276
|
+
return [3 /*break*/, 39];
|
|
277
|
+
case 38:
|
|
278
|
+
_g = _h.sent();
|
|
279
|
+
return [3 /*break*/, 39];
|
|
280
|
+
case 39: return [7 /*endfinally*/];
|
|
281
|
+
case 40: return [2 /*return*/];
|
|
197
282
|
}
|
|
198
283
|
});
|
|
199
284
|
});
|
package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"F-0006-develop-health-benefit-verification-rbac.test.js","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;AAExC,6BAA+B;AAC/B,oCAAsC;AACtC,+CAI4B;AAC5B,qCAAyC;AACzC,mDAA4D;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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,IAAM,8CAA8C,GAAG,UAAO,EAA6D;QAA3D,GAAG,SAAA,EAAE,WAAW,iBAAA;;;;;;oBACrF,IAAA,oBAAU,EAAC,6DAA6D,CAAC,CAAA;oBAEnE,QAAQ,GAAG,yCAAkC,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA;oBAEzD,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAA;;;;oBAOjC,qBAAM,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,SAAS,CAAC;4BACjE,IAAI,EAAE,QAAQ;4BACd,WAAW,wBACN,gCAAoB,KACvB,QAAQ,EAAuB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EACvF,2BAA2B,EAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GACxF;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,IAAA,cAAI,EAAC,SAAS,EAAE,IAAI,CAAC,EAAA;;oBAA3B,SAA2B,CAAA;oBAC3B,qBAAM,WAAW,CAAC,YAAY,CAAC,aAAc,EAAE,gBAAiB,CAAC;wBAEjE,uFAAuF;wBACvF,0FAA0F;wBAC1F,0EAA0E;sBAJT;;oBAAjE,SAAiE,CAAA;oBAEjE,uFAAuF;oBACvF,0FAA0F;oBAC1F,0EAA0E;oBAC1E,qBAAM,IAAA,oBAAU,EACd,kJAAkJ,EAClJ,cAAM,OAAA,WAAW,CAAC,GAAG,CAAC,2BAA2B,CAAC,uCAAuC,CAAC;4BACxF,SAAS,EAAE,IAAI,eAAQ,EAAE,CAAC,WAAW,EAAE;4BACvC,cAAc,EAAE,IAAI,eAAQ,EAAE,CAAC,WAAW,EAAE;4BAC5C,aAAa,EAAE,SAAS;4BACxB,SAAS,EAAE,EAAE;4BACb,uFAAuF;4BACvF,4EAA4E;4BAC5E,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;4BAC3D,YAAY,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE;yBAClE,CAAC,EATH,CASG,EACT;4BACE,WAAW,EAAE,IAAI;4BACjB,OAAO,EAAE,UAAC,CAAM;;gCACd,
|
|
1
|
+
{"version":3,"file":"F-0006-develop-health-benefit-verification-rbac.test.js","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.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":"
|
|
1
|
+
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AAu2EA,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;AAy1FD,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAotBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBAiqBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAqlDD,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,mCA8C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBA+b1B,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"}
|