@tellescope/sdk 1.247.0 → 1.249.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.
- package/.env +3 -0
- package/lib/cjs/sdk.d.ts +7 -1
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +3 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/chats_analytics.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/chats_analytics.test.js +256 -0
- package/lib/cjs/tests/api_tests/chats_analytics.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/cross_org_api_key.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/cross_org_api_key.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/cross_org_api_key.test.js +748 -0
- package/lib/cjs/tests/api_tests/cross_org_api_key.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/date_string_validation.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/date_string_validation.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/date_string_validation.test.js +142 -0
- package/lib/cjs/tests/api_tests/date_string_validation.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/enduser_session_invalidation.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/enduser_session_invalidation.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/enduser_session_invalidation.test.js +667 -0
- package/lib/cjs/tests/api_tests/enduser_session_invalidation.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/eom_billing_codes.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/eom_billing_codes.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/eom_billing_codes.test.js +162 -0
- package/lib/cjs/tests/api_tests/eom_billing_codes.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/eom_procedure_codes.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/eom_procedure_codes.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/eom_procedure_codes.test.js +339 -0
- package/lib/cjs/tests/api_tests/eom_procedure_codes.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/field_redaction.test.d.ts +13 -0
- package/lib/cjs/tests/api_tests/field_redaction.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/field_redaction.test.js +818 -0
- package/lib/cjs/tests/api_tests/field_redaction.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js +429 -0
- package/lib/cjs/tests/api_tests/form_submitted_trigger.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/integrations_redacted.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/integrations_redacted.test.js +273 -0
- package/lib/cjs/tests/api_tests/integrations_redacted.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts +13 -0
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.js +385 -0
- package/lib/cjs/tests/api_tests/managed_content_file_access.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/openloop_webhooks.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/openloop_webhooks.test.js +108 -24
- package/lib/cjs/tests/api_tests/openloop_webhooks.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js +25 -2
- package/lib/cjs/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +310 -183
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +9 -3
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +3 -0
- package/lib/esm/sdk.js.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/chats_analytics.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/chats_analytics.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/chats_analytics.test.js +252 -0
- package/lib/esm/tests/api_tests/chats_analytics.test.js.map +1 -0
- package/lib/esm/tests/api_tests/cross_org_api_key.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/cross_org_api_key.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/cross_org_api_key.test.js +744 -0
- package/lib/esm/tests/api_tests/cross_org_api_key.test.js.map +1 -0
- package/lib/esm/tests/api_tests/date_string_validation.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/date_string_validation.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/date_string_validation.test.js +138 -0
- package/lib/esm/tests/api_tests/date_string_validation.test.js.map +1 -0
- package/lib/esm/tests/api_tests/enduser_session_invalidation.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/enduser_session_invalidation.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/enduser_session_invalidation.test.js +663 -0
- package/lib/esm/tests/api_tests/enduser_session_invalidation.test.js.map +1 -0
- package/lib/esm/tests/api_tests/eom_billing_codes.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/eom_billing_codes.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/eom_billing_codes.test.js +158 -0
- package/lib/esm/tests/api_tests/eom_billing_codes.test.js.map +1 -0
- package/lib/esm/tests/api_tests/eom_procedure_codes.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/eom_procedure_codes.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/eom_procedure_codes.test.js +335 -0
- package/lib/esm/tests/api_tests/eom_procedure_codes.test.js.map +1 -0
- package/lib/esm/tests/api_tests/field_redaction.test.d.ts +13 -0
- package/lib/esm/tests/api_tests/field_redaction.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/field_redaction.test.js +814 -0
- package/lib/esm/tests/api_tests/field_redaction.test.js.map +1 -0
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.js +425 -0
- package/lib/esm/tests/api_tests/form_submitted_trigger.test.js.map +1 -0
- package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/integrations_redacted.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/integrations_redacted.test.js +269 -0
- package/lib/esm/tests/api_tests/integrations_redacted.test.js.map +1 -0
- package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts +13 -0
- package/lib/esm/tests/api_tests/managed_content_file_access.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/managed_content_file_access.test.js +358 -0
- package/lib/esm/tests/api_tests/managed_content_file_access.test.js.map +1 -0
- package/lib/esm/tests/api_tests/openloop_webhooks.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/openloop_webhooks.test.js +108 -24
- package/lib/esm/tests/api_tests/openloop_webhooks.test.js.map +1 -1
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js +25 -2
- package/lib/esm/tests/api_tests/organization_settings_duplicates.test.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +310 -183
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/sdk.ts +14 -0
- package/src/tests/api_tests/chats_analytics.test.ts +182 -0
- package/src/tests/api_tests/cross_org_api_key.test.ts +665 -0
- package/src/tests/api_tests/date_string_validation.test.ts +107 -0
- package/src/tests/api_tests/enduser_session_invalidation.test.ts +361 -0
- package/src/tests/api_tests/eom_procedure_codes.test.ts +296 -0
- package/src/tests/api_tests/field_redaction.test.ts +669 -0
- package/src/tests/api_tests/form_started_trigger.test.ts +1 -1
- package/src/tests/api_tests/form_submitted_trigger.test.ts +281 -0
- package/src/tests/api_tests/integrations_redacted.test.ts +245 -0
- package/src/tests/api_tests/managed_content_file_access.test.ts +214 -0
- package/src/tests/api_tests/openloop_webhooks.test.ts +64 -0
- package/src/tests/api_tests/organization_settings_duplicates.test.ts +14 -0
- package/src/tests/tests.ts +95 -7
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1,358 @@
|
|
|
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 * as buffer from 'buffer';
|
|
50
|
+
import { Session, EnduserSession } from "../../sdk";
|
|
51
|
+
import { async_test, log_header, } from "@tellescope/testing";
|
|
52
|
+
import { setup_tests } from "../setup";
|
|
53
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
54
|
+
var businessId = '60398b1131a295e64f084ff6';
|
|
55
|
+
/**
|
|
56
|
+
* Tests for file_download_URL enduser access via managed content fallback.
|
|
57
|
+
*
|
|
58
|
+
* Verifies the backend fallback logic that allows endusers to access files
|
|
59
|
+
* attached to managed content records they have access to, even when the
|
|
60
|
+
* file itself does not have enduserId set or publicRead: true.
|
|
61
|
+
*/
|
|
62
|
+
export var managed_content_file_access_tests = function (_a) {
|
|
63
|
+
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
64
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
65
|
+
var contentRecordIds, assignmentIds, fileIds, testEnduserId, otherEnduserId, enduserSDK, otherEnduserSDK, uploadFile, testEnduser, otherEnduser, fileForAll_1, contentAll, fileForIndividual_1, contentIndividual, fileNoContent_1, fileWithEnduser_1, filePublic_1, _i, assignmentIds_1, assignmentId, _b, contentRecordIds_1, recordId, _c, fileIds_1, fileId, error_1;
|
|
66
|
+
return __generator(this, function (_d) {
|
|
67
|
+
switch (_d.label) {
|
|
68
|
+
case 0:
|
|
69
|
+
log_header("Managed Content File Access Tests");
|
|
70
|
+
contentRecordIds = [];
|
|
71
|
+
assignmentIds = [];
|
|
72
|
+
fileIds = [];
|
|
73
|
+
uploadFile = function (name, opts) {
|
|
74
|
+
if (opts === void 0) { opts = {}; }
|
|
75
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
76
|
+
var buff, _a, presignedUpload, file;
|
|
77
|
+
return __generator(this, function (_b) {
|
|
78
|
+
switch (_b.label) {
|
|
79
|
+
case 0:
|
|
80
|
+
buff = buffer.Buffer.from("test file content for ".concat(name));
|
|
81
|
+
return [4 /*yield*/, sdk.api.files.prepare_file_upload(__assign({ name: name, type: 'text/plain', size: buff.byteLength }, opts))];
|
|
82
|
+
case 1:
|
|
83
|
+
_a = _b.sent(), presignedUpload = _a.presignedUpload, file = _a.file;
|
|
84
|
+
return [4 /*yield*/, sdk.UPLOAD(presignedUpload, buff)];
|
|
85
|
+
case 2:
|
|
86
|
+
_b.sent();
|
|
87
|
+
return [4 /*yield*/, sdk.api.files.confirm_file_upload({ id: file.id })];
|
|
88
|
+
case 3:
|
|
89
|
+
_b.sent();
|
|
90
|
+
fileIds.push(file.id);
|
|
91
|
+
return [2 /*return*/, file];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
_d.label = 1;
|
|
97
|
+
case 1:
|
|
98
|
+
_d.trys.push([1, , 21, 41]);
|
|
99
|
+
console.log("Setting up test data...");
|
|
100
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({
|
|
101
|
+
email: "mcr_file_access_test_".concat(Date.now(), "@test.tellescope.com"),
|
|
102
|
+
})];
|
|
103
|
+
case 2:
|
|
104
|
+
testEnduser = _d.sent();
|
|
105
|
+
testEnduserId = testEnduser.id;
|
|
106
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: testEnduser.id, password: 'TestPassword123!' })];
|
|
107
|
+
case 3:
|
|
108
|
+
_d.sent();
|
|
109
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({
|
|
110
|
+
email: "mcr_file_access_other_".concat(Date.now(), "@test.tellescope.com"),
|
|
111
|
+
})];
|
|
112
|
+
case 4:
|
|
113
|
+
otherEnduser = _d.sent();
|
|
114
|
+
otherEnduserId = otherEnduser.id;
|
|
115
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: otherEnduser.id, password: 'TestPassword123!' })];
|
|
116
|
+
case 5:
|
|
117
|
+
_d.sent();
|
|
118
|
+
enduserSDK = new EnduserSession({ host: host, businessId: businessId });
|
|
119
|
+
return [4 /*yield*/, enduserSDK.authenticate(testEnduser.email, 'TestPassword123!')];
|
|
120
|
+
case 6:
|
|
121
|
+
_d.sent();
|
|
122
|
+
otherEnduserSDK = new EnduserSession({ host: host, businessId: businessId });
|
|
123
|
+
return [4 /*yield*/, otherEnduserSDK.authenticate(otherEnduser.email, 'TestPassword123!')
|
|
124
|
+
// ===== Test 1: File attached to assignmentType: 'All' content - enduser CAN access =====
|
|
125
|
+
];
|
|
126
|
+
case 7:
|
|
127
|
+
_d.sent();
|
|
128
|
+
return [4 /*yield*/, uploadFile('mcr-file-all.txt')];
|
|
129
|
+
case 8:
|
|
130
|
+
fileForAll_1 = _d.sent();
|
|
131
|
+
return [4 /*yield*/, sdk.api.managed_content_records.createOne({
|
|
132
|
+
title: 'MCR File Access - All',
|
|
133
|
+
htmlContent: '<p>All</p>',
|
|
134
|
+
textContent: 'All',
|
|
135
|
+
assignmentType: 'All',
|
|
136
|
+
attachments: [{ secureName: fileForAll_1.secureName, type: 'file', name: fileForAll_1.name }],
|
|
137
|
+
})];
|
|
138
|
+
case 9:
|
|
139
|
+
contentAll = _d.sent();
|
|
140
|
+
contentRecordIds.push(contentAll.id);
|
|
141
|
+
return [4 /*yield*/, async_test('staff-uploaded file in assignmentType:All content - enduser CAN access', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
142
|
+
var result;
|
|
143
|
+
return __generator(this, function (_a) {
|
|
144
|
+
switch (_a.label) {
|
|
145
|
+
case 0: return [4 /*yield*/, enduserSDK.api.files.file_download_URL({ secureName: fileForAll_1.secureName })];
|
|
146
|
+
case 1:
|
|
147
|
+
result = _a.sent();
|
|
148
|
+
return [2 /*return*/, !!(result === null || result === void 0 ? void 0 : result.downloadURL)];
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}); }, { onResult: function (r) { return r === true; } })
|
|
152
|
+
// ===== Test 2: File attached to Individual content for enduser A - enduser B CANNOT access =====
|
|
153
|
+
];
|
|
154
|
+
case 10:
|
|
155
|
+
_d.sent();
|
|
156
|
+
return [4 /*yield*/, uploadFile('mcr-file-individual.txt')];
|
|
157
|
+
case 11:
|
|
158
|
+
fileForIndividual_1 = _d.sent();
|
|
159
|
+
return [4 /*yield*/, sdk.api.managed_content_records.createOne({
|
|
160
|
+
title: 'MCR File Access - Individual',
|
|
161
|
+
htmlContent: '<p>Individual</p>',
|
|
162
|
+
textContent: 'Individual',
|
|
163
|
+
enduserId: testEnduser.id,
|
|
164
|
+
attachments: [{ secureName: fileForIndividual_1.secureName, type: 'file', name: fileForIndividual_1.name }],
|
|
165
|
+
})];
|
|
166
|
+
case 12:
|
|
167
|
+
contentIndividual = _d.sent();
|
|
168
|
+
contentRecordIds.push(contentIndividual.id);
|
|
169
|
+
return [4 /*yield*/, async_test('file attached to Individual content - assigned enduser CAN access', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
170
|
+
var result;
|
|
171
|
+
return __generator(this, function (_a) {
|
|
172
|
+
switch (_a.label) {
|
|
173
|
+
case 0: return [4 /*yield*/, enduserSDK.api.files.file_download_URL({ secureName: fileForIndividual_1.secureName })];
|
|
174
|
+
case 1:
|
|
175
|
+
result = _a.sent();
|
|
176
|
+
return [2 /*return*/, !!(result === null || result === void 0 ? void 0 : result.downloadURL)];
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}); }, { onResult: function (r) { return r === true; } })];
|
|
180
|
+
case 13:
|
|
181
|
+
_d.sent();
|
|
182
|
+
return [4 /*yield*/, async_test('file attached to Individual content - unassigned enduser CANNOT access', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
183
|
+
var err_1;
|
|
184
|
+
return __generator(this, function (_a) {
|
|
185
|
+
switch (_a.label) {
|
|
186
|
+
case 0:
|
|
187
|
+
_a.trys.push([0, 2, , 3]);
|
|
188
|
+
return [4 /*yield*/, otherEnduserSDK.api.files.file_download_URL({ secureName: fileForIndividual_1.secureName })];
|
|
189
|
+
case 1:
|
|
190
|
+
_a.sent();
|
|
191
|
+
return [2 /*return*/, false];
|
|
192
|
+
case 2:
|
|
193
|
+
err_1 = _a.sent();
|
|
194
|
+
return [2 /*return*/, true];
|
|
195
|
+
case 3: return [2 /*return*/];
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}); }, { onResult: function (r) { return r === true; } })
|
|
199
|
+
// ===== Test 3: File not attached to any managed content - enduser CANNOT access =====
|
|
200
|
+
];
|
|
201
|
+
case 14:
|
|
202
|
+
_d.sent();
|
|
203
|
+
return [4 /*yield*/, uploadFile('mcr-file-no-content.txt')];
|
|
204
|
+
case 15:
|
|
205
|
+
fileNoContent_1 = _d.sent();
|
|
206
|
+
return [4 /*yield*/, async_test('file not attached to any managed content - enduser CANNOT access', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
207
|
+
var err_2;
|
|
208
|
+
return __generator(this, function (_a) {
|
|
209
|
+
switch (_a.label) {
|
|
210
|
+
case 0:
|
|
211
|
+
_a.trys.push([0, 2, , 3]);
|
|
212
|
+
return [4 /*yield*/, enduserSDK.api.files.file_download_URL({ secureName: fileNoContent_1.secureName })];
|
|
213
|
+
case 1:
|
|
214
|
+
_a.sent();
|
|
215
|
+
return [2 /*return*/, false];
|
|
216
|
+
case 2:
|
|
217
|
+
err_2 = _a.sent();
|
|
218
|
+
return [2 /*return*/, true];
|
|
219
|
+
case 3: return [2 /*return*/];
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}); }, { onResult: function (r) { return r === true; } })
|
|
223
|
+
// ===== Test 4: File with enduserId set - existing behavior preserved =====
|
|
224
|
+
];
|
|
225
|
+
case 16:
|
|
226
|
+
_d.sent();
|
|
227
|
+
return [4 /*yield*/, uploadFile('mcr-file-with-enduser.txt', { enduserId: testEnduser.id })];
|
|
228
|
+
case 17:
|
|
229
|
+
fileWithEnduser_1 = _d.sent();
|
|
230
|
+
return [4 /*yield*/, async_test('file with enduserId set - enduser CAN access (no fallback needed)', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
231
|
+
var result;
|
|
232
|
+
return __generator(this, function (_a) {
|
|
233
|
+
switch (_a.label) {
|
|
234
|
+
case 0: return [4 /*yield*/, enduserSDK.api.files.file_download_URL({ secureName: fileWithEnduser_1.secureName })];
|
|
235
|
+
case 1:
|
|
236
|
+
result = _a.sent();
|
|
237
|
+
return [2 /*return*/, !!(result === null || result === void 0 ? void 0 : result.downloadURL)];
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}); }, { onResult: function (r) { return r === true; } })
|
|
241
|
+
// ===== Test 5: File with publicRead: true - existing behavior preserved =====
|
|
242
|
+
];
|
|
243
|
+
case 18:
|
|
244
|
+
_d.sent();
|
|
245
|
+
return [4 /*yield*/, uploadFile('mcr-file-public.txt', { publicRead: true })];
|
|
246
|
+
case 19:
|
|
247
|
+
filePublic_1 = _d.sent();
|
|
248
|
+
return [4 /*yield*/, async_test('file with publicRead - enduser CAN access', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
249
|
+
var result;
|
|
250
|
+
return __generator(this, function (_a) {
|
|
251
|
+
switch (_a.label) {
|
|
252
|
+
case 0: return [4 /*yield*/, enduserSDK.api.files.file_download_URL({ secureName: filePublic_1.secureName })];
|
|
253
|
+
case 1:
|
|
254
|
+
result = _a.sent();
|
|
255
|
+
return [2 /*return*/, !!(result === null || result === void 0 ? void 0 : result.downloadURL)];
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}); }, { onResult: function (r) { return r === true; } })];
|
|
259
|
+
case 20:
|
|
260
|
+
_d.sent();
|
|
261
|
+
console.log("All Managed Content File Access tests passed!");
|
|
262
|
+
return [3 /*break*/, 41];
|
|
263
|
+
case 21:
|
|
264
|
+
console.log("Cleaning up test data...");
|
|
265
|
+
_d.label = 22;
|
|
266
|
+
case 22:
|
|
267
|
+
_d.trys.push([22, 39, , 40]);
|
|
268
|
+
_i = 0, assignmentIds_1 = assignmentIds;
|
|
269
|
+
_d.label = 23;
|
|
270
|
+
case 23:
|
|
271
|
+
if (!(_i < assignmentIds_1.length)) return [3 /*break*/, 26];
|
|
272
|
+
assignmentId = assignmentIds_1[_i];
|
|
273
|
+
return [4 /*yield*/, sdk.api.managed_content_record_assignments.deleteOne(assignmentId).catch(function () { })];
|
|
274
|
+
case 24:
|
|
275
|
+
_d.sent();
|
|
276
|
+
_d.label = 25;
|
|
277
|
+
case 25:
|
|
278
|
+
_i++;
|
|
279
|
+
return [3 /*break*/, 23];
|
|
280
|
+
case 26:
|
|
281
|
+
_b = 0, contentRecordIds_1 = contentRecordIds;
|
|
282
|
+
_d.label = 27;
|
|
283
|
+
case 27:
|
|
284
|
+
if (!(_b < contentRecordIds_1.length)) return [3 /*break*/, 30];
|
|
285
|
+
recordId = contentRecordIds_1[_b];
|
|
286
|
+
return [4 /*yield*/, sdk.api.managed_content_records.deleteOne(recordId).catch(function () { })];
|
|
287
|
+
case 28:
|
|
288
|
+
_d.sent();
|
|
289
|
+
_d.label = 29;
|
|
290
|
+
case 29:
|
|
291
|
+
_b++;
|
|
292
|
+
return [3 /*break*/, 27];
|
|
293
|
+
case 30:
|
|
294
|
+
_c = 0, fileIds_1 = fileIds;
|
|
295
|
+
_d.label = 31;
|
|
296
|
+
case 31:
|
|
297
|
+
if (!(_c < fileIds_1.length)) return [3 /*break*/, 34];
|
|
298
|
+
fileId = fileIds_1[_c];
|
|
299
|
+
return [4 /*yield*/, sdk.api.files.deleteOne(fileId).catch(function () { })];
|
|
300
|
+
case 32:
|
|
301
|
+
_d.sent();
|
|
302
|
+
_d.label = 33;
|
|
303
|
+
case 33:
|
|
304
|
+
_c++;
|
|
305
|
+
return [3 /*break*/, 31];
|
|
306
|
+
case 34:
|
|
307
|
+
if (!testEnduserId) return [3 /*break*/, 36];
|
|
308
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(testEnduserId).catch(function () { })];
|
|
309
|
+
case 35:
|
|
310
|
+
_d.sent();
|
|
311
|
+
_d.label = 36;
|
|
312
|
+
case 36:
|
|
313
|
+
if (!otherEnduserId) return [3 /*break*/, 38];
|
|
314
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(otherEnduserId).catch(function () { })];
|
|
315
|
+
case 37:
|
|
316
|
+
_d.sent();
|
|
317
|
+
_d.label = 38;
|
|
318
|
+
case 38:
|
|
319
|
+
console.log("Cleanup completed");
|
|
320
|
+
return [3 /*break*/, 40];
|
|
321
|
+
case 39:
|
|
322
|
+
error_1 = _d.sent();
|
|
323
|
+
console.error('Cleanup error:', error_1);
|
|
324
|
+
return [3 /*break*/, 40];
|
|
325
|
+
case 40: return [7 /*endfinally*/];
|
|
326
|
+
case 41: return [2 /*return*/];
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
};
|
|
331
|
+
if (require.main === module) {
|
|
332
|
+
console.log("Using API URL: ".concat(host));
|
|
333
|
+
var sdk_1 = new Session({ host: host });
|
|
334
|
+
var sdkNonAdmin_1 = new Session({ host: host });
|
|
335
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
336
|
+
return __generator(this, function (_a) {
|
|
337
|
+
switch (_a.label) {
|
|
338
|
+
case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
|
|
339
|
+
case 1:
|
|
340
|
+
_a.sent();
|
|
341
|
+
return [4 /*yield*/, managed_content_file_access_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
342
|
+
case 2:
|
|
343
|
+
_a.sent();
|
|
344
|
+
return [2 /*return*/];
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
}); };
|
|
348
|
+
runTests()
|
|
349
|
+
.then(function () {
|
|
350
|
+
console.log("Managed content file access test suite completed successfully");
|
|
351
|
+
process.exit(0);
|
|
352
|
+
})
|
|
353
|
+
.catch(function (error) {
|
|
354
|
+
console.error("Managed content file access test suite failed:", error);
|
|
355
|
+
process.exit(1);
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=managed_content_file_access.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed_content_file_access.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/managed_content_file_access.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EACL,UAAU,EACV,UAAU,GACX,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,IAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,uBAAgC,CAAA;AACpE,IAAM,UAAU,GAAG,0BAA0B,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAO,EAA4D;QAA1D,GAAG,SAAA,EAAE,WAAW,iBAAA;;;;;;oBACxE,UAAU,CAAC,mCAAmC,CAAC,CAAA;oBAEzC,gBAAgB,GAAa,EAAE,CAAA;oBAC/B,aAAa,GAAa,EAAE,CAAA;oBAC5B,OAAO,GAAa,EAAE,CAAA;oBAMtB,UAAU,GAAG,UACjB,IAAY,EACZ,IAAuD;wBAAvD,qBAAA,EAAA,SAAuD;;;;;;wCAEjD,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAyB,IAAI,CAAE,CAAC,CAAA;wCAC9B,qBAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,YACvE,IAAI,MAAA,EACJ,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,IAAI,CAAC,UAAU,IAClB,IAAI,EACP,EAAA;;wCALI,KAA4B,SAKhC,EALM,eAAe,qBAAA,EAAE,IAAI,UAAA;wCAM7B,qBAAM,GAAG,CAAC,MAAM,CAAC,eAAsB,EAAE,IAAI,CAAC,EAAA;;wCAA9C,SAA8C,CAAA;wCAC9C,qBAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAA;;wCAAxD,SAAwD,CAAA;wCACxD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wCACrB,sBAAO,IAAI,EAAA;;;;qBACZ,CAAA;;;;oBAGC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;oBAElB,qBAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;4BACnD,KAAK,EAAE,+BAAwB,IAAI,CAAC,GAAG,EAAE,yBAAsB;yBAChE,CAAC,EAAA;;oBAFI,WAAW,GAAG,SAElB;oBACF,aAAa,GAAG,WAAW,CAAC,EAAE,CAAA;oBAC9B,qBAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAA;;oBAAzF,SAAyF,CAAA;oBAEpE,qBAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;4BACpD,KAAK,EAAE,gCAAyB,IAAI,CAAC,GAAG,EAAE,yBAAsB;yBACjE,CAAC,EAAA;;oBAFI,YAAY,GAAG,SAEnB;oBACF,cAAc,GAAG,YAAY,CAAC,EAAE,CAAA;oBAChC,qBAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAA;;oBAA1F,SAA0F,CAAA;oBAE1F,UAAU,GAAG,IAAI,cAAc,CAAC,EAAE,IAAI,MAAA,EAAE,UAAU,YAAA,EAAE,CAAC,CAAA;oBACrD,qBAAM,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,KAAM,EAAE,kBAAkB,CAAC,EAAA;;oBAArE,SAAqE,CAAA;oBAErE,eAAe,GAAG,IAAI,cAAc,CAAC,EAAE,IAAI,MAAA,EAAE,UAAU,YAAA,EAAE,CAAC,CAAA;oBAC1D,qBAAM,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,KAAM,EAAE,kBAAkB,CAAC;wBAE3E,0FAA0F;sBAFf;;oBAA3E,SAA2E,CAAA;oBAGxD,qBAAM,UAAU,CAAC,kBAAkB,CAAC,EAAA;;oBAAjD,eAAa,SAAoC;oBACpC,qBAAM,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC;4BACjE,KAAK,EAAE,uBAAuB;4BAC9B,WAAW,EAAE,YAAY;4BACzB,WAAW,EAAE,KAAK;4BAClB,cAAc,EAAE,KAAK;4BACrB,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,YAAU,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAU,CAAC,IAAI,EAAE,CAAC;yBAC1F,CAAC,EAAA;;oBANI,UAAU,GAAG,SAMjB;oBACF,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;oBAEpC,qBAAM,UAAU,CACd,wEAAwE,EACxE;;;;4CACiB,qBAAM,UAAW,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,YAAU,CAAC,UAAU,EAAE,CAAC,EAAA;;wCAA7F,MAAM,GAAG,SAAoF;wCACnG,sBAAO,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAA;;;6BAC7B,EACD,EAAE,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,EAAE,CAChC;wBAED,kGAAkG;sBAFjG;;oBAPD,SAOC,CAAA;oBAGyB,qBAAM,UAAU,CAAC,yBAAyB,CAAC,EAAA;;oBAA/D,sBAAoB,SAA2C;oBAC3C,qBAAM,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC;4BACxE,KAAK,EAAE,8BAA8B;4BACrC,WAAW,EAAE,mBAAmB;4BAChC,WAAW,EAAE,YAAY;4BACzB,SAAS,EAAE,WAAW,CAAC,EAAE;4BACzB,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,mBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAiB,CAAC,IAAI,EAAE,CAAC;yBACxG,CAAC,EAAA;;oBANI,iBAAiB,GAAG,SAMxB;oBACF,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;oBAE3C,qBAAM,UAAU,CACd,mEAAmE,EACnE;;;;4CACiB,qBAAM,UAAW,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,mBAAiB,CAAC,UAAU,EAAE,CAAC,EAAA;;wCAApG,MAAM,GAAG,SAA2F;wCAC1G,sBAAO,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAA;;;6BAC7B,EACD,EAAE,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,EAAE,CAChC,EAAA;;oBAPD,SAOC,CAAA;oBAED,qBAAM,UAAU,CACd,wEAAwE,EACxE;;;;;;wCAEI,qBAAM,eAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,mBAAiB,CAAC,UAAU,EAAE,CAAC,EAAA;;wCAAhG,SAAgG,CAAA;wCAChG,sBAAO,KAAK,EAAA;;;wCAEZ,sBAAO,IAAI,EAAA;;;;6BAEd,EACD,EAAE,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,EAAE,CAChC;wBAED,uFAAuF;sBAFtF;;oBAXD,SAWC,CAAA;oBAGqB,qBAAM,UAAU,CAAC,yBAAyB,CAAC,EAAA;;oBAA3D,kBAAgB,SAA2C;oBAEjE,qBAAM,UAAU,CACd,kEAAkE,EAClE;;;;;;wCAEI,qBAAM,UAAW,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,eAAa,CAAC,UAAU,EAAE,CAAC,EAAA;;wCAAvF,SAAuF,CAAA;wCACvF,sBAAO,KAAK,EAAA;;;wCAEZ,sBAAO,IAAI,EAAA;;;;6BAEd,EACD,EAAE,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,EAAE,CAChC;wBAED,4EAA4E;sBAF3E;;oBAXD,SAWC,CAAA;oBAGuB,qBAAM,UAAU,CAAC,2BAA2B,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,EAAA;;oBAA9F,oBAAkB,SAA4E;oBAEpG,qBAAM,UAAU,CACd,mEAAmE,EACnE;;;;4CACiB,qBAAM,UAAW,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,iBAAe,CAAC,UAAU,EAAE,CAAC,EAAA;;wCAAlG,MAAM,GAAG,SAAyF;wCACxG,sBAAO,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAA;;;6BAC7B,EACD,EAAE,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,EAAE,CAChC;wBAED,+EAA+E;sBAF9E;;oBAPD,SAOC,CAAA;oBAGkB,qBAAM,UAAU,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAA;;oBAA1E,eAAa,SAA6D;oBAEhF,qBAAM,UAAU,CACd,2CAA2C,EAC3C;;;;4CACiB,qBAAM,UAAW,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,YAAU,CAAC,UAAU,EAAE,CAAC,EAAA;;wCAA7F,MAAM,GAAG,SAAoF;wCACnG,sBAAO,CAAC,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAA;;;6BAC7B,EACD,EAAE,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,EAAE,CAChC,EAAA;;oBAPD,SAOC,CAAA;oBAED,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;;;oBAG5D,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;;;;0BAGG,EAAb,+BAAa;;;yBAAb,CAAA,2BAAa,CAAA;oBAA7B,YAAY;oBACrB,qBAAM,GAAG,CAAC,GAAG,CAAC,kCAAkC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,EAAA;;oBAAxF,SAAwF,CAAA;;;oBAD/D,IAAa,CAAA;;;0BAID,EAAhB,qCAAgB;;;yBAAhB,CAAA,8BAAgB,CAAA;oBAA5B,QAAQ;oBACjB,qBAAM,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,EAAA;;oBAAzE,SAAyE,CAAA;;;oBADpD,IAAgB,CAAA;;;0BAIX,EAAP,mBAAO;;;yBAAP,CAAA,qBAAO,CAAA;oBAAjB,MAAM;oBACf,qBAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,EAAA;;oBAArD,SAAqD,CAAA;;;oBADlC,IAAO,CAAA;;;yBAIxB,aAAa,EAAb,yBAAa;oBACf,qBAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,EAAA;;oBAA/D,SAA+D,CAAA;;;yBAE7D,cAAc,EAAd,yBAAc;oBAChB,qBAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,EAAA;;oBAAhE,SAAgE,CAAA;;;oBAGlE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;;;;oBAEhC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,OAAK,CAAC,CAAA;;;;;;;CAG3C,CAAA;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,yBAAkB,IAAI,CAAE,CAAC,CAAA;IACrC,IAAM,KAAG,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAA;IACjC,IAAM,aAAW,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAA;IAEzC,IAAM,QAAQ,GAAG;;;wBACf,qBAAM,WAAW,CAAC,KAAG,EAAE,aAAW,CAAC,EAAA;;oBAAnC,SAAmC,CAAA;oBACnC,qBAAM,iCAAiC,CAAC,EAAE,GAAG,OAAA,EAAE,WAAW,eAAA,EAAE,CAAC,EAAA;;oBAA7D,SAA6D,CAAA;;;;SAC9D,CAAA;IAED,QAAQ,EAAE;SACP,IAAI,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC;SACD,KAAK,CAAC,UAAC,KAAK;QACX,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;CACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openloop_webhooks.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/openloop_webhooks.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2EnC,eAAO,MAAM,uBAAuB;SAAuC,OAAO;iBAAe,OAAO;
|
|
1
|
+
{"version":3,"file":"openloop_webhooks.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/openloop_webhooks.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2EnC,eAAO,MAAM,uBAAuB;SAAuC,OAAO;iBAAe,OAAO;mBAknBvG,CAAA"}
|
|
@@ -113,7 +113,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
113
113
|
enduser2 = _b.sent();
|
|
114
114
|
_b.label = 3;
|
|
115
115
|
case 3:
|
|
116
|
-
_b.trys.push([3, ,
|
|
116
|
+
_b.trys.push([3, , 28, 31]);
|
|
117
117
|
// ===== SECTION A: V1 Validation =====
|
|
118
118
|
log_header("V1 Validation");
|
|
119
119
|
return [4 /*yield*/, async_test('V1: missing patientID returns 400', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -185,6 +185,33 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
185
185
|
});
|
|
186
186
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
187
187
|
case 6:
|
|
188
|
+
_b.sent();
|
|
189
|
+
return [4 /*yield*/, async_test('V1: order_confirmation maps program_code to protocol field', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
190
|
+
var orderNum, res, orders;
|
|
191
|
+
return __generator(this, function (_a) {
|
|
192
|
+
switch (_a.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
orderNum = "ol-conf-protocol-".concat(uid());
|
|
195
|
+
return [4 /*yield*/, postV1(makeV1Confirmation({
|
|
196
|
+
patientID: healthieId1,
|
|
197
|
+
orderNumber: orderNum,
|
|
198
|
+
program_code: 'Weight-Loss',
|
|
199
|
+
}))];
|
|
200
|
+
case 1:
|
|
201
|
+
res = _a.sent();
|
|
202
|
+
assert(res.status === 200, "Expected 200, got ".concat(res.status));
|
|
203
|
+
return [4 /*yield*/, sdk.api.enduser_orders.getSome({
|
|
204
|
+
filter: { source: 'OpenLoop', externalId: orderNum }
|
|
205
|
+
})];
|
|
206
|
+
case 2:
|
|
207
|
+
orders = _a.sent();
|
|
208
|
+
assert(orders.length === 1, "Expected 1 order, got ".concat(orders.length));
|
|
209
|
+
assert(orders[0].protocol === 'Weight-Loss', "protocol mismatch: ".concat(orders[0].protocol));
|
|
210
|
+
return [2 /*return*/, true];
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}); }, { onResult: function (r) { return r === true; } })];
|
|
214
|
+
case 7:
|
|
188
215
|
_b.sent();
|
|
189
216
|
return [4 /*yield*/, async_test('V1: order_confirmation idempotency - same order not duplicated', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
190
217
|
var res, orders;
|
|
@@ -212,7 +239,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
212
239
|
}
|
|
213
240
|
});
|
|
214
241
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
215
|
-
case
|
|
242
|
+
case 8:
|
|
216
243
|
_b.sent();
|
|
217
244
|
return [4 /*yield*/, async_test('V1: order_confirmation without sku_med falls back to pharmacy name', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
218
245
|
var orderNum, res, orders;
|
|
@@ -242,7 +269,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
242
269
|
}); }, { onResult: function (r) { return r === true; } })
|
|
243
270
|
// ===== SECTION C: V1 order_shipped =====
|
|
244
271
|
];
|
|
245
|
-
case
|
|
272
|
+
case 9:
|
|
246
273
|
_b.sent();
|
|
247
274
|
// ===== SECTION C: V1 order_shipped =====
|
|
248
275
|
log_header("V1 order_shipped");
|
|
@@ -285,7 +312,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
285
312
|
}
|
|
286
313
|
});
|
|
287
314
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
288
|
-
case
|
|
315
|
+
case 10:
|
|
289
316
|
_b.sent();
|
|
290
317
|
return [4 /*yield*/, async_test('V1: order_shipped updates title and sku when provided', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
291
318
|
var res, orders, order;
|
|
@@ -315,7 +342,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
315
342
|
}
|
|
316
343
|
});
|
|
317
344
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
318
|
-
case
|
|
345
|
+
case 11:
|
|
319
346
|
_b.sent();
|
|
320
347
|
return [4 /*yield*/, async_test('V1: order_shipped creates new order if none exists', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
321
348
|
var newOrderNum, res, orders, order;
|
|
@@ -351,7 +378,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
351
378
|
}
|
|
352
379
|
});
|
|
353
380
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
354
|
-
case
|
|
381
|
+
case 12:
|
|
355
382
|
_b.sent();
|
|
356
383
|
return [4 /*yield*/, async_test('V1: order_shipped can re-ship with updated tracking', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
357
384
|
var reshipOrderNum, res, orders;
|
|
@@ -394,10 +421,40 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
394
421
|
return [2 /*return*/, true];
|
|
395
422
|
}
|
|
396
423
|
});
|
|
424
|
+
}); }, { onResult: function (r) { return r === true; } })];
|
|
425
|
+
case 13:
|
|
426
|
+
_b.sent();
|
|
427
|
+
return [4 /*yield*/, async_test('V1: order_shipped maps program_code to protocol field', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
428
|
+
var orderNum, res, orders;
|
|
429
|
+
return __generator(this, function (_a) {
|
|
430
|
+
switch (_a.label) {
|
|
431
|
+
case 0:
|
|
432
|
+
orderNum = "ol-ship-protocol-".concat(uid());
|
|
433
|
+
return [4 /*yield*/, postV1(makeV1Confirmation({ patientID: healthieId1, orderNumber: orderNum }))];
|
|
434
|
+
case 1:
|
|
435
|
+
_a.sent();
|
|
436
|
+
return [4 /*yield*/, postV1(makeV1Shipped({
|
|
437
|
+
patientID: healthieId1,
|
|
438
|
+
orderNumber: orderNum,
|
|
439
|
+
program_code: 'Diabetes',
|
|
440
|
+
}))];
|
|
441
|
+
case 2:
|
|
442
|
+
res = _a.sent();
|
|
443
|
+
assert(res.status === 200, "Expected 200, got ".concat(res.status));
|
|
444
|
+
return [4 /*yield*/, sdk.api.enduser_orders.getSome({
|
|
445
|
+
filter: { source: 'OpenLoop', externalId: orderNum }
|
|
446
|
+
})];
|
|
447
|
+
case 3:
|
|
448
|
+
orders = _a.sent();
|
|
449
|
+
assert(orders.length === 1, "Expected 1 order, got ".concat(orders.length));
|
|
450
|
+
assert(orders[0].protocol === 'Diabetes', "protocol mismatch: ".concat(orders[0].protocol));
|
|
451
|
+
return [2 /*return*/, true];
|
|
452
|
+
}
|
|
453
|
+
});
|
|
397
454
|
}); }, { onResult: function (r) { return r === true; } })
|
|
398
455
|
// ===== SECTION D: V1 enduserId Isolation =====
|
|
399
456
|
];
|
|
400
|
-
case
|
|
457
|
+
case 14:
|
|
401
458
|
_b.sent();
|
|
402
459
|
// ===== SECTION D: V1 enduserId Isolation =====
|
|
403
460
|
log_header("V1 enduserId Isolation");
|
|
@@ -436,7 +493,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
436
493
|
}); }, { onResult: function (r) { return r === true; } })
|
|
437
494
|
// ===== SECTION E: V2 Validation =====
|
|
438
495
|
];
|
|
439
|
-
case
|
|
496
|
+
case 15:
|
|
440
497
|
_b.sent();
|
|
441
498
|
// ===== SECTION E: V2 Validation =====
|
|
442
499
|
log_header("V2 Validation");
|
|
@@ -454,7 +511,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
454
511
|
}
|
|
455
512
|
});
|
|
456
513
|
}); }, { onResult: function (s) { return s === 400; } })];
|
|
457
|
-
case
|
|
514
|
+
case 16:
|
|
458
515
|
_b.sent();
|
|
459
516
|
return [4 /*yield*/, async_test('V2: invalid eventType returns 400', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
460
517
|
var res;
|
|
@@ -467,7 +524,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
467
524
|
}
|
|
468
525
|
});
|
|
469
526
|
}); }, { onResult: function (s) { return s === 400; } })];
|
|
470
|
-
case
|
|
527
|
+
case 17:
|
|
471
528
|
_b.sent();
|
|
472
529
|
return [4 /*yield*/, async_test('V2: unknown patient returns 404', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
473
530
|
var res;
|
|
@@ -482,7 +539,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
482
539
|
}); }, { onResult: function (s) { return s === 404; } })
|
|
483
540
|
// ===== SECTION F: V2 Order Lifecycle =====
|
|
484
541
|
];
|
|
485
|
-
case
|
|
542
|
+
case 18:
|
|
486
543
|
_b.sent();
|
|
487
544
|
// ===== SECTION F: V2 Order Lifecycle =====
|
|
488
545
|
log_header("V2 Order Lifecycle");
|
|
@@ -517,7 +574,34 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
517
574
|
}
|
|
518
575
|
});
|
|
519
576
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
520
|
-
case
|
|
577
|
+
case 19:
|
|
578
|
+
_b.sent();
|
|
579
|
+
return [4 /*yield*/, async_test('V2: prescription-created maps program_code to protocol field', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
580
|
+
var orderNum, res, orders;
|
|
581
|
+
return __generator(this, function (_a) {
|
|
582
|
+
switch (_a.label) {
|
|
583
|
+
case 0:
|
|
584
|
+
orderNum = "v2-protocol-".concat(uid());
|
|
585
|
+
return [4 /*yield*/, postV2(makeV2Payload('prescription-created', {
|
|
586
|
+
id: orderNum,
|
|
587
|
+
patientId: healthieId1,
|
|
588
|
+
program_code: 'GLP-1',
|
|
589
|
+
}))];
|
|
590
|
+
case 1:
|
|
591
|
+
res = _a.sent();
|
|
592
|
+
assert(res.status === 200, "Expected 200, got ".concat(res.status));
|
|
593
|
+
return [4 /*yield*/, sdk.api.enduser_orders.getSome({
|
|
594
|
+
filter: { source: 'OpenLoop', externalId: orderNum }
|
|
595
|
+
})];
|
|
596
|
+
case 2:
|
|
597
|
+
orders = _a.sent();
|
|
598
|
+
assert(orders.length === 1, "Expected 1 order, got ".concat(orders.length));
|
|
599
|
+
assert(orders[0].protocol === 'GLP-1', "protocol mismatch: ".concat(orders[0].protocol));
|
|
600
|
+
return [2 /*return*/, true];
|
|
601
|
+
}
|
|
602
|
+
});
|
|
603
|
+
}); }, { onResult: function (r) { return r === true; } })];
|
|
604
|
+
case 20:
|
|
521
605
|
_b.sent();
|
|
522
606
|
return [4 /*yield*/, async_test('V2: prescription-shipped updates with carrier and tracking', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
523
607
|
var res, orders, order;
|
|
@@ -550,7 +634,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
550
634
|
}
|
|
551
635
|
});
|
|
552
636
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
553
|
-
case
|
|
637
|
+
case 21:
|
|
554
638
|
_b.sent();
|
|
555
639
|
v2CancelId_1 = "v2-cancel-".concat(uid());
|
|
556
640
|
return [4 /*yield*/, async_test('V2: prescription-cancelled sets cancelledDate and reason', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -591,7 +675,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
591
675
|
}
|
|
592
676
|
});
|
|
593
677
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
594
|
-
case
|
|
678
|
+
case 22:
|
|
595
679
|
_b.sent();
|
|
596
680
|
v2RefundId_1 = "v2-refund-".concat(uid());
|
|
597
681
|
return [4 /*yield*/, async_test('V2: prescription-refunded sets status', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -625,7 +709,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
625
709
|
}); }, { onResult: function (r) { return r === true; } })
|
|
626
710
|
// ===== SECTION G: V2 Idempotency & Isolation =====
|
|
627
711
|
];
|
|
628
|
-
case
|
|
712
|
+
case 23:
|
|
629
713
|
_b.sent();
|
|
630
714
|
// ===== SECTION G: V2 Idempotency & Isolation =====
|
|
631
715
|
log_header("V2 Idempotency & Isolation");
|
|
@@ -657,7 +741,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
657
741
|
}
|
|
658
742
|
});
|
|
659
743
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
660
|
-
case
|
|
744
|
+
case 24:
|
|
661
745
|
_b.sent();
|
|
662
746
|
return [4 /*yield*/, async_test('V2: same id for different patients creates separate orders', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
663
747
|
var sharedV2Id, res1, res2, orders, enduserIds, expected;
|
|
@@ -694,7 +778,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
694
778
|
}); }, { onResult: function (r) { return r === true; } })
|
|
695
779
|
// ===== SECTION H: V2 Full Lifecycle =====
|
|
696
780
|
];
|
|
697
|
-
case
|
|
781
|
+
case 25:
|
|
698
782
|
_b.sent();
|
|
699
783
|
// ===== SECTION H: V2 Full Lifecycle =====
|
|
700
784
|
log_header("V2 Full Lifecycle");
|
|
@@ -738,7 +822,7 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
738
822
|
}); }, { onResult: function (r) { return r === true; } })
|
|
739
823
|
// ===== SECTION I: V2 Undefined Field Handling =====
|
|
740
824
|
];
|
|
741
|
-
case
|
|
825
|
+
case 26:
|
|
742
826
|
_b.sent();
|
|
743
827
|
// ===== SECTION I: V2 Undefined Field Handling =====
|
|
744
828
|
log_header("V2 Undefined Field Handling");
|
|
@@ -782,18 +866,18 @@ export var openloop_webhooks_tests = function (_a) {
|
|
|
782
866
|
}
|
|
783
867
|
});
|
|
784
868
|
}); }, { onResult: function (r) { return r === true; } })];
|
|
785
|
-
case
|
|
869
|
+
case 27:
|
|
786
870
|
_b.sent();
|
|
787
871
|
console.log("All OpenLoop webhook tests passed!");
|
|
788
|
-
return [3 /*break*/,
|
|
789
|
-
case
|
|
790
|
-
case
|
|
872
|
+
return [3 /*break*/, 31];
|
|
873
|
+
case 28: return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser1.id).catch(console.error)];
|
|
874
|
+
case 29:
|
|
791
875
|
_b.sent();
|
|
792
876
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser2.id).catch(console.error)];
|
|
793
|
-
case
|
|
877
|
+
case 30:
|
|
794
878
|
_b.sent();
|
|
795
879
|
return [7 /*endfinally*/];
|
|
796
|
-
case
|
|
880
|
+
case 31: return [2 /*return*/];
|
|
797
881
|
}
|
|
798
882
|
});
|
|
799
883
|
});
|