@tellescope/sdk 1.255.17 → 1.255.18
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/scoped_api_keys.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/scoped_api_keys.test.js +206 -106
- package/lib/cjs/tests/api_tests/scoped_api_keys.test.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/scoped_api_keys.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/scoped_api_keys.test.js +206 -106
- package/lib/esm/tests/api_tests/scoped_api_keys.test.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/tests/api_tests/scoped_api_keys.test.ts +82 -0
- package/test_generated.pdf +0 -0
|
@@ -45,16 +45,16 @@ var TEST_EMAIL = "scoped-api-keys@tellescope.com";
|
|
|
45
45
|
export var scoped_api_keys_tests = function (_a) {
|
|
46
46
|
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
47
47
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
48
|
-
var form, buildUrl, bodyFor, keyIds, formResponseIds, throwawayUserId, throwawayRoleId, scoped_1, headerResult, pathResult, apiKeysRole, throwawayUser,
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
return __generator(this, function (
|
|
52
|
-
switch (
|
|
48
|
+
var form, buildUrl, bodyFor, keyIds, formResponseIds, fileIds, throwawayUserId, throwawayRoleId, scoped_1, headerResult, pathResult, scopedSession_1, uploadedFile_1, blockedFileEndpoints, _i, blockedFileEndpoints_1, _b, label, call, apiKeysRole, throwawayUser, _c, otherSdk_1, _d, nonAdminKey, unscoped_1, unscopedKeyValue_1, apiKeys, _e, keyIds_1, id, _f, formResponseIds_1, id, _g, fileIds_1, id, enduser, err_1;
|
|
49
|
+
var _h;
|
|
50
|
+
var _j, _k, _l, _m;
|
|
51
|
+
return __generator(this, function (_o) {
|
|
52
|
+
switch (_o.label) {
|
|
53
53
|
case 0:
|
|
54
54
|
log_header("Scoped API Keys (form-ingestion)");
|
|
55
55
|
return [4 /*yield*/, sdk.api.forms.createOne({ title: "Scoped API Key Test Form" })];
|
|
56
56
|
case 1:
|
|
57
|
-
form =
|
|
57
|
+
form = _o.sent();
|
|
58
58
|
buildUrl = function (pathSegment) {
|
|
59
59
|
var url = new URL("".concat(host, "/v1/webhooks/form-ingestion/").concat(pathSegment));
|
|
60
60
|
url.searchParams.set('formId', form.id);
|
|
@@ -68,12 +68,13 @@ export var scoped_api_keys_tests = function (_a) {
|
|
|
68
68
|
}); };
|
|
69
69
|
keyIds = [];
|
|
70
70
|
formResponseIds = [];
|
|
71
|
-
|
|
71
|
+
fileIds = [];
|
|
72
|
+
_o.label = 2;
|
|
72
73
|
case 2:
|
|
73
|
-
|
|
74
|
+
_o.trys.push([2, , 37, 59]);
|
|
74
75
|
return [4 /*yield*/, sdk.api.api_keys.createOne({ scopes: [FORM_INGESTION_API_KEY_SCOPE] })];
|
|
75
76
|
case 3:
|
|
76
|
-
scoped_1 =
|
|
77
|
+
scoped_1 = _o.sent();
|
|
77
78
|
keyIds.push(scoped_1.id);
|
|
78
79
|
assert(!!scoped_1.id && !!scoped_1.key, "scoped key create returned no id/key", "admin creates a form-ingestion-scoped key");
|
|
79
80
|
// record reflects the scope for its creator (CREATOR_ONLY_ACCESS read)
|
|
@@ -84,7 +85,7 @@ export var scoped_api_keys_tests = function (_a) {
|
|
|
84
85
|
];
|
|
85
86
|
case 4:
|
|
86
87
|
// record reflects the scope for its creator (CREATOR_ONLY_ACCESS read)
|
|
87
|
-
|
|
88
|
+
_o.sent();
|
|
88
89
|
// =============================================
|
|
89
90
|
// (b) Scoped key is rejected on all general /v1 auth
|
|
90
91
|
// =============================================
|
|
@@ -95,10 +96,10 @@ export var scoped_api_keys_tests = function (_a) {
|
|
|
95
96
|
// =============================================
|
|
96
97
|
// (b) Scoped key is rejected on all general /v1 auth
|
|
97
98
|
// =============================================
|
|
98
|
-
|
|
99
|
+
_o.sent();
|
|
99
100
|
return [4 /*yield*/, async_test("scoped key rejected on GET /v1/endusers", function () { return axios.get("".concat(host, "/v1/endusers"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }, { shouldError: true, onError: function (e) { var _a; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401; } })];
|
|
100
101
|
case 6:
|
|
101
|
-
|
|
102
|
+
_o.sent();
|
|
102
103
|
return [4 /*yield*/, async_test("scoped key rejected on cross-org targeting (x-tellescope-organization)", function () { return axios.get("".concat(host, "/v1/endusers"), {
|
|
103
104
|
headers: {
|
|
104
105
|
Authorization: "API_KEY ".concat(scoped_1.key),
|
|
@@ -110,76 +111,111 @@ export var scoped_api_keys_tests = function (_a) {
|
|
|
110
111
|
// =============================================
|
|
111
112
|
];
|
|
112
113
|
case 7:
|
|
113
|
-
|
|
114
|
+
_o.sent();
|
|
114
115
|
return [4 /*yield*/, axios.post(buildUrl('key-in-header'), bodyFor("scoped-1"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } })];
|
|
115
116
|
case 8:
|
|
116
|
-
headerResult =
|
|
117
|
-
assert(headerResult.status === 200 && !!((
|
|
118
|
-
if ((
|
|
117
|
+
headerResult = _o.sent();
|
|
118
|
+
assert(headerResult.status === 200 && !!((_j = headerResult.data) === null || _j === void 0 ? void 0 : _j.formResponseId), "scoped key header auth failed: ".concat(headerResult.status, " ").concat(JSON.stringify(headerResult.data)), "scoped key authenticates the form-ingestion webhook via header");
|
|
119
|
+
if ((_k = headerResult.data) === null || _k === void 0 ? void 0 : _k.formResponseId)
|
|
119
120
|
formResponseIds.push(headerResult.data.formResponseId);
|
|
120
121
|
return [4 /*yield*/, axios.post(buildUrl(scoped_1.key), bodyFor("scoped-2"))];
|
|
121
122
|
case 9:
|
|
122
|
-
pathResult =
|
|
123
|
-
assert(pathResult.status === 200 && !!((
|
|
124
|
-
if ((
|
|
123
|
+
pathResult = _o.sent();
|
|
124
|
+
assert(pathResult.status === 200 && !!((_l = pathResult.data) === null || _l === void 0 ? void 0 : _l.formResponseId), "scoped key path auth failed: ".concat(pathResult.status, " ").concat(JSON.stringify(pathResult.data)), "scoped key authenticates the form-ingestion webhook via path segment");
|
|
125
|
+
if ((_m = pathResult.data) === null || _m === void 0 ? void 0 : _m.formResponseId)
|
|
125
126
|
formResponseIds.push(pathResult.data.formResponseId);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
scopedSession_1 = new Session({ host: host, apiKey: scoped_1.key });
|
|
128
|
+
return [4 /*yield*/, scopedSession_1.api.files.prepare_file_upload({
|
|
129
|
+
name: 'scoped-intake-file.txt', size: 12, type: 'text/plain',
|
|
129
130
|
})];
|
|
130
131
|
case 10:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
uploadedFile_1 = (_o.sent()).file;
|
|
133
|
+
assert(!!(uploadedFile_1 === null || uploadedFile_1 === void 0 ? void 0 : uploadedFile_1.id), "scoped key prepare_file_upload returned no file", "scoped key can call POST /prepare-file-upload");
|
|
134
|
+
if (uploadedFile_1 === null || uploadedFile_1 === void 0 ? void 0 : uploadedFile_1.id)
|
|
135
|
+
fileIds.push(uploadedFile_1.id);
|
|
136
|
+
return [4 /*yield*/, async_test("scoped key can call POST /files/confirm-upload", function () { return scopedSession_1.api.files.confirm_file_upload({ id: uploadedFile_1.id }); }, { onResult: function () { return true; } })
|
|
137
|
+
// ...but is blocked from EVERY other endpoint in the files domain — proving the two allowed paths are the
|
|
138
|
+
// ONLY files access, and that the '/files/confirm-upload' allow-prefix does not open the '/files/*' namespace.
|
|
139
|
+
];
|
|
134
140
|
case 11:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
141
|
+
_o.sent();
|
|
142
|
+
blockedFileEndpoints = [
|
|
143
|
+
['GET /v1/files (readMany)', function () { return axios.get("".concat(host, "/v1/files"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }],
|
|
144
|
+
['GET /v1/file/:id (read one)', function () { return axios.get("".concat(host, "/v1/file/000000000000000000000000"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }],
|
|
145
|
+
['DELETE /v1/file/:id (destructive)', function () { return axios.delete("".concat(host, "/v1/file/000000000000000000000000"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }],
|
|
146
|
+
['POST /v1/files/send-fax (/files/* sibling)', function () { return axios.post("".concat(host, "/v1/files/send-fax"), {}, { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }],
|
|
147
|
+
['POST /v1/files/ocr (/files/* sibling)', function () { return axios.post("".concat(host, "/v1/files/ocr"), {}, { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }],
|
|
148
|
+
['POST /v1/files/push (/files/* sibling)', function () { return axios.post("".concat(host, "/v1/files/push"), {}, { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }],
|
|
149
|
+
];
|
|
150
|
+
_i = 0, blockedFileEndpoints_1 = blockedFileEndpoints;
|
|
151
|
+
_o.label = 12;
|
|
138
152
|
case 12:
|
|
139
|
-
|
|
140
|
-
|
|
153
|
+
if (!(_i < blockedFileEndpoints_1.length)) return [3 /*break*/, 15];
|
|
154
|
+
_b = blockedFileEndpoints_1[_i], label = _b[0], call = _b[1];
|
|
155
|
+
return [4 /*yield*/, async_test("scoped key blocked on ".concat(label), call, { shouldError: true, onError: function (e) { var _a, _b; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401 || ((_b = e.response) === null || _b === void 0 ? void 0 : _b.status) === 403; } })];
|
|
141
156
|
case 13:
|
|
142
|
-
|
|
157
|
+
_o.sent();
|
|
158
|
+
_o.label = 14;
|
|
159
|
+
case 14:
|
|
160
|
+
_i++;
|
|
161
|
+
return [3 /*break*/, 12];
|
|
162
|
+
case 15: return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
|
|
163
|
+
role: 'scoped-api-keys-test-role',
|
|
164
|
+
permissions: { api_keys: { create: 'All', read: 'All', update: 'All', delete: 'All' } },
|
|
165
|
+
})];
|
|
166
|
+
case 16:
|
|
167
|
+
apiKeysRole = _o.sent();
|
|
168
|
+
throwawayRoleId = apiKeysRole.id;
|
|
169
|
+
return [4 /*yield*/, sdk.api.users.getOne({ email: 'scoped.api.keys.user@tellescope.com' }).catch(function () { return null; })];
|
|
170
|
+
case 17:
|
|
171
|
+
_c = (_o.sent());
|
|
172
|
+
if (_c) return [3 /*break*/, 19];
|
|
173
|
+
return [4 /*yield*/, sdk.api.users.createOne({ email: 'scoped.api.keys.user@tellescope.com', notificationEmailsDisabled: true, verifiedEmail: true })];
|
|
174
|
+
case 18:
|
|
175
|
+
_c = (_o.sent());
|
|
176
|
+
_o.label = 19;
|
|
177
|
+
case 19:
|
|
178
|
+
throwawayUser = _c;
|
|
143
179
|
throwawayUserId = throwawayUser.id;
|
|
144
180
|
return [4 /*yield*/, sdk.api.users.updateOne(throwawayUser.id, { roles: [apiKeysRole.role] }, { replaceObjectFields: true })];
|
|
145
|
-
case
|
|
146
|
-
|
|
181
|
+
case 20:
|
|
182
|
+
_o.sent();
|
|
147
183
|
return [4 /*yield*/, wait(undefined, 2000)]; // wait for the role change to propagate before authenticating
|
|
148
|
-
case
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
184
|
+
case 21:
|
|
185
|
+
_o.sent(); // wait for the role change to propagate before authenticating
|
|
186
|
+
_d = Session.bind;
|
|
187
|
+
_h = {
|
|
152
188
|
host: host
|
|
153
189
|
};
|
|
154
190
|
return [4 /*yield*/, sdk.api.users.generate_auth_token({ id: throwawayUser.id })];
|
|
155
|
-
case
|
|
156
|
-
otherSdk_1 = new (
|
|
157
|
-
|
|
191
|
+
case 22:
|
|
192
|
+
otherSdk_1 = new (_d.apply(Session, [void 0, (_h.authToken = (_o.sent()).authToken,
|
|
193
|
+
_h)]))();
|
|
158
194
|
return [4 /*yield*/, async_test("non-admin cannot create a scoped key (401)", function () { return otherSdk_1.api.api_keys.createOne({ scopes: [FORM_INGESTION_API_KEY_SCOPE] }); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.statusCode) === 401 || /admin/i.test((e === null || e === void 0 ? void 0 : e.message) || ''); } })
|
|
159
195
|
// ...but CAN still create an unscoped key; an empty scopes list is rejected by validation (fail closed)
|
|
160
196
|
];
|
|
161
|
-
case
|
|
162
|
-
|
|
197
|
+
case 23:
|
|
198
|
+
_o.sent();
|
|
163
199
|
return [4 /*yield*/, otherSdk_1.api.api_keys.createOne({})];
|
|
164
|
-
case
|
|
165
|
-
nonAdminKey =
|
|
200
|
+
case 24:
|
|
201
|
+
nonAdminKey = _o.sent();
|
|
166
202
|
return [4 /*yield*/, async_test("empty scopes list rejected by validation", function () { return otherSdk_1.api.api_keys.createOne({ scopes: [] }); }, { shouldError: true, onError: function (e) { return (e === null || e === void 0 ? void 0 : e.statusCode) === 400 || /empty|not valid|invalid/i.test((e === null || e === void 0 ? void 0 : e.message) || ''); } })
|
|
167
203
|
// creator-only cleanup for the throwaway user's key before the user is deleted
|
|
168
204
|
];
|
|
169
|
-
case
|
|
170
|
-
|
|
205
|
+
case 25:
|
|
206
|
+
_o.sent();
|
|
171
207
|
// creator-only cleanup for the throwaway user's key before the user is deleted
|
|
172
208
|
return [4 /*yield*/, otherSdk_1.api.api_keys.deleteOne(nonAdminKey.id).catch(function () { })
|
|
173
209
|
// =============================================
|
|
174
210
|
// (e) Unscoped keys are unchanged (no regression)
|
|
175
211
|
// =============================================
|
|
176
212
|
];
|
|
177
|
-
case
|
|
213
|
+
case 26:
|
|
178
214
|
// creator-only cleanup for the throwaway user's key before the user is deleted
|
|
179
|
-
|
|
215
|
+
_o.sent();
|
|
180
216
|
return [4 /*yield*/, sdk.api.api_keys.createOne({})];
|
|
181
|
-
case
|
|
182
|
-
unscoped_1 =
|
|
217
|
+
case 27:
|
|
218
|
+
unscoped_1 = _o.sent();
|
|
183
219
|
unscopedKeyValue_1 = unscoped_1.key;
|
|
184
220
|
keyIds.push(unscoped_1.id);
|
|
185
221
|
return [4 /*yield*/, async_test("unscoped key still authenticates general /v1", function () { return new Session({ host: host, apiKey: unscopedKeyValue_1 }).test_authenticated(); }, { onResult: function (r) { return !!r; } })
|
|
@@ -187,8 +223,8 @@ export var scoped_api_keys_tests = function (_a) {
|
|
|
187
223
|
// webhook's hex lookup never matches — only legacy plaintext keys and hex-stored scoped keys work there.
|
|
188
224
|
// (Legacy-key webhook auth is covered by formsort_header_auth.test.ts.)
|
|
189
225
|
];
|
|
190
|
-
case
|
|
191
|
-
|
|
226
|
+
case 28:
|
|
227
|
+
_o.sent();
|
|
192
228
|
// Frozen pre-existing behavior: unscoped /v1-created keys store a utf8-encoded hashedKey, which the
|
|
193
229
|
// webhook's hex lookup never matches — only legacy plaintext keys and hex-stored scoped keys work there.
|
|
194
230
|
// (Legacy-key webhook auth is covered by formsort_header_auth.test.ts.)
|
|
@@ -197,81 +233,145 @@ export var scoped_api_keys_tests = function (_a) {
|
|
|
197
233
|
// (f) Admin org-wide list includes scopes (and still never leaks secrets)
|
|
198
234
|
// =============================================
|
|
199
235
|
];
|
|
200
|
-
case
|
|
236
|
+
case 29:
|
|
201
237
|
// Frozen pre-existing behavior: unscoped /v1-created keys store a utf8-encoded hashedKey, which the
|
|
202
238
|
// webhook's hex lookup never matches — only legacy plaintext keys and hex-stored scoped keys work there.
|
|
203
239
|
// (Legacy-key webhook auth is covered by formsort_header_auth.test.ts.)
|
|
204
|
-
|
|
240
|
+
_o.sent();
|
|
205
241
|
return [4 /*yield*/, sdk.api.api_keys.get_organization_api_keys()];
|
|
206
|
-
case
|
|
207
|
-
apiKeys = (
|
|
242
|
+
case 30:
|
|
243
|
+
apiKeys = (_o.sent()).apiKeys;
|
|
208
244
|
assert(!!apiKeys.find(function (k) { return k.id === scoped_1.id && JSON.stringify(k.scopes) === JSON.stringify([FORM_INGESTION_API_KEY_SCOPE]); }), "org list did not report scopes on the scoped key", "get_organization_api_keys reports scopes on scoped keys");
|
|
209
245
|
assert(!!apiKeys.find(function (k) { return k.id === unscoped_1.id && k.scopes === undefined; }), "org list reported scopes on an unscoped key", "get_organization_api_keys omits scopes on unscoped keys");
|
|
210
246
|
assert(apiKeys.every(function (k) { return k.key === undefined && k.hashedKey === undefined; }), "org list leaked key material", "get_organization_api_keys still never returns key/hashedKey");
|
|
211
247
|
// =============================================
|
|
212
|
-
//
|
|
248
|
+
// (g) Legacy non-/v1 funnel (app.js requireLoginAndAccess → is_logged_in_API_key with NO requestPath).
|
|
249
|
+
// Proves scoped keys fail closed on every non-/v1 caller (also stands in for the Medplum webhook path),
|
|
250
|
+
// and that unscoped keys still authenticate the legacy funnel after this work.
|
|
251
|
+
// NOTE: the legacy middleware reads the key from ?apiKey= / body only (never the Authorization header).
|
|
213
252
|
// =============================================
|
|
214
|
-
return [4 /*yield*/, async_test("
|
|
215
|
-
case
|
|
253
|
+
return [4 /*yield*/, async_test("unscoped key authenticates a legacy non-/v1 route", function () { return axios.get("".concat(host, "/API-keys-for-user?apiKey=").concat(encodeURIComponent(unscopedKeyValue_1))); }, { onResult: function (r) { return r.status === 200; } })];
|
|
254
|
+
case 31:
|
|
216
255
|
// =============================================
|
|
217
|
-
//
|
|
256
|
+
// (g) Legacy non-/v1 funnel (app.js requireLoginAndAccess → is_logged_in_API_key with NO requestPath).
|
|
257
|
+
// Proves scoped keys fail closed on every non-/v1 caller (also stands in for the Medplum webhook path),
|
|
258
|
+
// and that unscoped keys still authenticate the legacy funnel after this work.
|
|
259
|
+
// NOTE: the legacy middleware reads the key from ?apiKey= / body only (never the Authorization header).
|
|
218
260
|
// =============================================
|
|
219
|
-
|
|
220
|
-
return [
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
if (!(_i < keyIds_1.length)) return [3 /*break*/, 30];
|
|
226
|
-
id = keyIds_1[_i];
|
|
227
|
-
return [4 /*yield*/, sdk.api.api_keys.deleteOne(id).catch(function () { })];
|
|
228
|
-
case 28:
|
|
229
|
-
_k.sent();
|
|
230
|
-
_k.label = 29;
|
|
231
|
-
case 29:
|
|
232
|
-
_i++;
|
|
233
|
-
return [3 /*break*/, 27];
|
|
234
|
-
case 30:
|
|
235
|
-
_d = 0, formResponseIds_1 = formResponseIds;
|
|
236
|
-
_k.label = 31;
|
|
237
|
-
case 31:
|
|
238
|
-
if (!(_d < formResponseIds_1.length)) return [3 /*break*/, 34];
|
|
239
|
-
id = formResponseIds_1[_d];
|
|
240
|
-
return [4 /*yield*/, sdk.api.form_responses.deleteOne(id).catch(function () { })];
|
|
261
|
+
_o.sent();
|
|
262
|
+
return [4 /*yield*/, async_test("scoped key rejected on a legacy non-/v1 route (fail closed, no requestPath)", function () { return axios.get("".concat(host, "/API-keys-for-user?apiKey=").concat(encodeURIComponent(scoped_1.key))); }, { shouldError: true, onError: function (e) { var _a; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401; } })
|
|
263
|
+
// =============================================
|
|
264
|
+
// (h) Data-egress adjacency: the scope's allowed paths must NOT leak to the file DOWNLOAD endpoint.
|
|
265
|
+
// =============================================
|
|
266
|
+
];
|
|
241
267
|
case 32:
|
|
242
|
-
|
|
243
|
-
|
|
268
|
+
_o.sent();
|
|
269
|
+
// =============================================
|
|
270
|
+
// (h) Data-egress adjacency: the scope's allowed paths must NOT leak to the file DOWNLOAD endpoint.
|
|
271
|
+
// =============================================
|
|
272
|
+
return [4 /*yield*/, async_test("scoped key cannot call file_download_URL (no PHI egress)", function () { return axios.get("".concat(host, "/v1/file-download-URL?secureName=nonexistent"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }, { shouldError: true, onError: function (e) { var _a, _b; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401 || ((_b = e.response) === null || _b === void 0 ? void 0 : _b.status) === 403; } })
|
|
273
|
+
// =============================================
|
|
274
|
+
// (i) Transport independence: the scope gate applies whether the key is in the header or the ?apiKey= query.
|
|
275
|
+
// =============================================
|
|
276
|
+
];
|
|
244
277
|
case 33:
|
|
245
|
-
|
|
246
|
-
|
|
278
|
+
// =============================================
|
|
279
|
+
// (h) Data-egress adjacency: the scope's allowed paths must NOT leak to the file DOWNLOAD endpoint.
|
|
280
|
+
// =============================================
|
|
281
|
+
_o.sent();
|
|
282
|
+
// =============================================
|
|
283
|
+
// (i) Transport independence: the scope gate applies whether the key is in the header or the ?apiKey= query.
|
|
284
|
+
// =============================================
|
|
285
|
+
return [4 /*yield*/, async_test("scoped key via ?apiKey= query param still rejected on a disallowed /v1 endpoint", function () { return axios.get("".concat(host, "/v1/endusers?apiKey=").concat(encodeURIComponent(scoped_1.key))); }, { shouldError: true, onError: function (e) { var _a, _b; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401 || ((_b = e.response) === null || _b === void 0 ? void 0 : _b.status) === 403; } })];
|
|
247
286
|
case 34:
|
|
248
|
-
|
|
249
|
-
|
|
287
|
+
// =============================================
|
|
288
|
+
// (i) Transport independence: the scope gate applies whether the key is in the header or the ?apiKey= query.
|
|
289
|
+
// =============================================
|
|
290
|
+
_o.sent();
|
|
291
|
+
return [4 /*yield*/, async_test("unscoped key via ?apiKey= query param still authenticates /v1 (regression)", function () { return axios.get("".concat(host, "/v1/test-authenticated?apiKey=").concat(encodeURIComponent(unscopedKeyValue_1))); }, { onResult: function (r) { return r.status === 200; } })
|
|
292
|
+
// =============================================
|
|
293
|
+
// Validation: unknown scope values are rejected
|
|
294
|
+
// =============================================
|
|
295
|
+
];
|
|
250
296
|
case 35:
|
|
251
|
-
|
|
252
|
-
|
|
297
|
+
_o.sent();
|
|
298
|
+
// =============================================
|
|
299
|
+
// Validation: unknown scope values are rejected
|
|
300
|
+
// =============================================
|
|
301
|
+
return [4 /*yield*/, async_test("unknown scope value rejected by validation", function () { return sdk.api.api_keys.createOne({ scopes: ['not-a-real-scope'] }); }, { shouldError: true, onError: function (e) { return (e === null || e === void 0 ? void 0 : e.statusCode) === 400 || /must match|not valid|invalid/i.test((e === null || e === void 0 ? void 0 : e.message) || ''); } })];
|
|
253
302
|
case 36:
|
|
254
|
-
|
|
255
|
-
|
|
303
|
+
// =============================================
|
|
304
|
+
// Validation: unknown scope values are rejected
|
|
305
|
+
// =============================================
|
|
306
|
+
_o.sent();
|
|
307
|
+
return [3 /*break*/, 59];
|
|
256
308
|
case 37:
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
case 38:
|
|
309
|
+
_e = 0, keyIds_1 = keyIds;
|
|
310
|
+
_o.label = 38;
|
|
311
|
+
case 38:
|
|
312
|
+
if (!(_e < keyIds_1.length)) return [3 /*break*/, 41];
|
|
313
|
+
id = keyIds_1[_e];
|
|
314
|
+
return [4 /*yield*/, sdk.api.api_keys.deleteOne(id).catch(function () { })];
|
|
260
315
|
case 39:
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
return [4 /*yield*/, sdk.api.users.deleteOne(throwawayUserId).catch(function () { })];
|
|
316
|
+
_o.sent();
|
|
317
|
+
_o.label = 40;
|
|
264
318
|
case 40:
|
|
265
|
-
|
|
266
|
-
|
|
319
|
+
_e++;
|
|
320
|
+
return [3 /*break*/, 38];
|
|
267
321
|
case 41:
|
|
268
|
-
|
|
269
|
-
|
|
322
|
+
_f = 0, formResponseIds_1 = formResponseIds;
|
|
323
|
+
_o.label = 42;
|
|
270
324
|
case 42:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
case
|
|
325
|
+
if (!(_f < formResponseIds_1.length)) return [3 /*break*/, 45];
|
|
326
|
+
id = formResponseIds_1[_f];
|
|
327
|
+
return [4 /*yield*/, sdk.api.form_responses.deleteOne(id).catch(function () { })];
|
|
328
|
+
case 43:
|
|
329
|
+
_o.sent();
|
|
330
|
+
_o.label = 44;
|
|
331
|
+
case 44:
|
|
332
|
+
_f++;
|
|
333
|
+
return [3 /*break*/, 42];
|
|
334
|
+
case 45:
|
|
335
|
+
_g = 0, fileIds_1 = fileIds;
|
|
336
|
+
_o.label = 46;
|
|
337
|
+
case 46:
|
|
338
|
+
if (!(_g < fileIds_1.length)) return [3 /*break*/, 49];
|
|
339
|
+
id = fileIds_1[_g];
|
|
340
|
+
return [4 /*yield*/, sdk.api.files.deleteOne(id).catch(function () { })];
|
|
341
|
+
case 47:
|
|
342
|
+
_o.sent();
|
|
343
|
+
_o.label = 48;
|
|
344
|
+
case 48:
|
|
345
|
+
_g++;
|
|
346
|
+
return [3 /*break*/, 46];
|
|
347
|
+
case 49:
|
|
348
|
+
_o.trys.push([49, 52, , 53]);
|
|
349
|
+
return [4 /*yield*/, sdk.api.endusers.getOne({ email: TEST_EMAIL })];
|
|
350
|
+
case 50:
|
|
351
|
+
enduser = _o.sent();
|
|
352
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
|
|
353
|
+
case 51:
|
|
354
|
+
_o.sent();
|
|
355
|
+
return [3 /*break*/, 53];
|
|
356
|
+
case 52:
|
|
357
|
+
err_1 = _o.sent();
|
|
358
|
+
return [3 /*break*/, 53];
|
|
359
|
+
case 53: return [4 /*yield*/, sdk.api.forms.deleteOne(form.id).catch(function () { })];
|
|
360
|
+
case 54:
|
|
361
|
+
_o.sent();
|
|
362
|
+
if (!throwawayUserId) return [3 /*break*/, 56];
|
|
363
|
+
return [4 /*yield*/, sdk.api.users.deleteOne(throwawayUserId).catch(function () { })];
|
|
364
|
+
case 55:
|
|
365
|
+
_o.sent();
|
|
366
|
+
_o.label = 56;
|
|
367
|
+
case 56:
|
|
368
|
+
if (!throwawayRoleId) return [3 /*break*/, 58];
|
|
369
|
+
return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(throwawayRoleId).catch(function () { })];
|
|
370
|
+
case 57:
|
|
371
|
+
_o.sent();
|
|
372
|
+
_o.label = 58;
|
|
373
|
+
case 58: return [7 /*endfinally*/];
|
|
374
|
+
case 59: return [2 /*return*/];
|
|
275
375
|
}
|
|
276
376
|
});
|
|
277
377
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped_api_keys.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/scoped_api_keys.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scoped_api_keys.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/scoped_api_keys.test.ts"],"names":[],"mappings":"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"}
|