@tellescope/sdk 1.255.19 → 1.256.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js +224 -0
- package/lib/cjs/tests/api_tests/beluga_trigger_refill.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/custom_dashboards.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/custom_dashboards.test.js +99 -8
- package/lib/cjs/tests/api_tests/custom_dashboards.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/default_summary_journey.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/default_summary_journey.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js +278 -0
- package/lib/cjs/tests/api_tests/file_download_unicode_names.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 +212 -33
- package/lib/cjs/tests/api_tests/openloop_webhooks.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js +85 -9
- package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts +2 -0
- package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js +242 -0
- package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts +29 -0
- package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js +443 -0
- package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts +35 -0
- package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js +231 -0
- package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js +524 -294
- package/lib/cjs/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/start_ai_conversation.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/start_ai_conversation.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/start_ai_conversation.test.js +351 -0
- package/lib/cjs/tests/api_tests/start_ai_conversation.test.js.map +1 -0
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +477 -260
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js +220 -0
- package/lib/esm/tests/api_tests/beluga_trigger_refill.test.js.map +1 -0
- package/lib/esm/tests/api_tests/custom_dashboards.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/custom_dashboards.test.js +99 -8
- package/lib/esm/tests/api_tests/custom_dashboards.test.js.map +1 -1
- package/lib/esm/tests/api_tests/default_summary_journey.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/default_summary_journey.test.js.map +1 -0
- package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/file_download_unicode_names.test.js +248 -0
- package/lib/esm/tests/api_tests/file_download_unicode_names.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 +213 -34
- package/lib/esm/tests/api_tests/openloop_webhooks.test.js.map +1 -1
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js +85 -9
- package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts +2 -0
- package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js +238 -0
- package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts +29 -0
- package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js +436 -0
- package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts +35 -0
- package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js +224 -0
- package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js +524 -294
- package/lib/esm/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js.map +1 -1
- package/lib/esm/tests/api_tests/start_ai_conversation.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/start_ai_conversation.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/start_ai_conversation.test.js +347 -0
- package/lib/esm/tests/api_tests/start_ai_conversation.test.js.map +1 -0
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +477 -260
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/tests/api_tests/beluga_trigger_refill.test.ts +152 -0
- package/src/tests/api_tests/custom_dashboards.test.ts +92 -0
- package/src/tests/api_tests/file_download_unicode_names.test.ts +223 -0
- package/src/tests/api_tests/openloop_webhooks.test.ts +138 -0
- package/src/tests/api_tests/phone_calls_cold_transfer.test.ts +54 -0
- package/src/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.ts +215 -0
- package/src/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.ts +292 -0
- package/src/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.ts +179 -0
- package/src/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.ts +215 -0
- package/src/tests/api_tests/start_ai_conversation.test.ts +256 -0
- package/src/tests/tests.ts +220 -1
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
+
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;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.file_download_unicode_names_tests = void 0;
|
|
66
|
+
require('source-map-support').install();
|
|
67
|
+
var axios_1 = __importDefault(require("axios"));
|
|
68
|
+
var buffer = __importStar(require("buffer"));
|
|
69
|
+
var sdk_1 = require("../../sdk");
|
|
70
|
+
var testing_1 = require("@tellescope/testing");
|
|
71
|
+
var setup_1 = require("../setup");
|
|
72
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
73
|
+
/**
|
|
74
|
+
* A presigned download URL signs response-content-disposition, which S3 validates: it rejects any
|
|
75
|
+
* value containing a character above U+00FF with 400 InvalidArgument "Header value cannot be
|
|
76
|
+
* represented using ISO-8859-1", and one with unbalanced quoting with "open quoted span". Because
|
|
77
|
+
* the parameter is part of the signature it cannot be repaired after the fact, so before the fix a
|
|
78
|
+
* file named with an em dash or a decomposed accent got a 200 from our API and a permanent 400 from
|
|
79
|
+
* S3 on every fetch.
|
|
80
|
+
*
|
|
81
|
+
* This test is the end-to-end check: it uploads files with those names and actually fetches the
|
|
82
|
+
* returned URL, which is the only thing that exercises S3's validation.
|
|
83
|
+
*/
|
|
84
|
+
// Built from code points rather than written out, so that this file stays pure ASCII and so that a
|
|
85
|
+
// combining accent (which renders as a mark on the preceding character) is unambiguous in source.
|
|
86
|
+
var c = function (n) { return String.fromCharCode(n); };
|
|
87
|
+
var EM_DASH = c(0x2014);
|
|
88
|
+
var EN_DASH = c(0x2013);
|
|
89
|
+
var RIGHT_SINGLE_Q = c(0x2019);
|
|
90
|
+
var COMBINING_ACUTE = c(0x0301);
|
|
91
|
+
var CJK_BAO_GAO = c(0x62a5) + c(0x544a);
|
|
92
|
+
var IS_ASCII_ONLY = /^[\x20-\x7e]*$/;
|
|
93
|
+
// The first three are the real filenames from the bug report.
|
|
94
|
+
var TEST_NAMES = [
|
|
95
|
+
{
|
|
96
|
+
name: "First Aid Classes Information".concat(EM_DASH, "NWLI.pdf"),
|
|
97
|
+
label: 'em dash (U+2014)',
|
|
98
|
+
expectExtValue: true,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "CHA".concat(RIGHT_SINGLE_Q, "s Waitlist Portal ").concat(EN_DASH, " Apply.pdf"),
|
|
102
|
+
label: 'right single quote (U+2019) and en dash (U+2013)',
|
|
103
|
+
expectExtValue: true,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "Ren".concat('e' + COMBINING_ACUTE, " Test .pdf"),
|
|
107
|
+
label: 'decomposed accent (e + U+0301)',
|
|
108
|
+
expectExtValue: true,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "He said \"hi\".pdf",
|
|
112
|
+
label: 'a double quote, which S3 rejects as an open quoted span',
|
|
113
|
+
expectExtValue: true,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "".concat(CJK_BAO_GAO, ".pdf"),
|
|
117
|
+
label: 'an entirely non-ASCII name, so the fallback cannot come from the name',
|
|
118
|
+
expectExtValue: true,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: "plain ascii control.pdf",
|
|
122
|
+
label: 'control: a plain ASCII name that always worked',
|
|
123
|
+
expectExtValue: true, // the space means filename* is emitted, carrying the real spaces
|
|
124
|
+
},
|
|
125
|
+
];
|
|
126
|
+
var file_download_unicode_names_tests = function (_a) {
|
|
127
|
+
var sdk = _a.sdk;
|
|
128
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
129
|
+
var fileIds, uploadFile, fetchURL, _i, TEST_NAMES_1, _b, name_1, label, expectExtValue, _c, file, contents, _d, downloadURL, returnedName, response, disposition, _e, cacheFile, cacheContents, asAttachment, inBrowser, _f, _g, _h, variant, downloadURL, response, repeated, _j, fileIds_1, id;
|
|
130
|
+
var _k, _l, _m;
|
|
131
|
+
return __generator(this, function (_o) {
|
|
132
|
+
switch (_o.label) {
|
|
133
|
+
case 0:
|
|
134
|
+
(0, testing_1.log_header)("File Download URL with Unicode Filenames");
|
|
135
|
+
fileIds = [];
|
|
136
|
+
uploadFile = function (name) { return __awaiter(void 0, void 0, void 0, function () {
|
|
137
|
+
var buff, _a, presignedUpload, file;
|
|
138
|
+
return __generator(this, function (_b) {
|
|
139
|
+
switch (_b.label) {
|
|
140
|
+
case 0:
|
|
141
|
+
buff = buffer.Buffer.from("test file content for ".concat(JSON.stringify(name)));
|
|
142
|
+
return [4 /*yield*/, sdk.api.files.prepare_file_upload({
|
|
143
|
+
name: name,
|
|
144
|
+
type: 'application/pdf',
|
|
145
|
+
size: buff.byteLength,
|
|
146
|
+
})];
|
|
147
|
+
case 1:
|
|
148
|
+
_a = _b.sent(), presignedUpload = _a.presignedUpload, file = _a.file;
|
|
149
|
+
return [4 /*yield*/, sdk.UPLOAD(presignedUpload, buff)];
|
|
150
|
+
case 2:
|
|
151
|
+
_b.sent();
|
|
152
|
+
return [4 /*yield*/, sdk.api.files.confirm_file_upload({ id: file.id })];
|
|
153
|
+
case 3:
|
|
154
|
+
_b.sent();
|
|
155
|
+
fileIds.push(file.id);
|
|
156
|
+
return [2 /*return*/, { file: file, contents: buff }];
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}); };
|
|
160
|
+
fetchURL = function (url) { return axios_1.default.get(url, {
|
|
161
|
+
responseType: 'arraybuffer',
|
|
162
|
+
validateStatus: function () { return true; },
|
|
163
|
+
}); };
|
|
164
|
+
_o.label = 1;
|
|
165
|
+
case 1:
|
|
166
|
+
_o.trys.push([1, , 16, 21]);
|
|
167
|
+
_i = 0, TEST_NAMES_1 = TEST_NAMES;
|
|
168
|
+
_o.label = 2;
|
|
169
|
+
case 2:
|
|
170
|
+
if (!(_i < TEST_NAMES_1.length)) return [3 /*break*/, 7];
|
|
171
|
+
_b = TEST_NAMES_1[_i], name_1 = _b.name, label = _b.label, expectExtValue = _b.expectExtValue;
|
|
172
|
+
return [4 /*yield*/, uploadFile(name_1)];
|
|
173
|
+
case 3:
|
|
174
|
+
_c = _o.sent(), file = _c.file, contents = _c.contents;
|
|
175
|
+
return [4 /*yield*/, sdk.api.files.file_download_URL({
|
|
176
|
+
secureName: file.secureName,
|
|
177
|
+
})];
|
|
178
|
+
case 4:
|
|
179
|
+
_d = _o.sent(), downloadURL = _d.downloadURL, returnedName = _d.name;
|
|
180
|
+
(0, testing_1.assert)(returnedName === name_1, "endpoint returned \"".concat(returnedName, "\" instead of the stored name for ").concat(label), "stored name round-trips for ".concat(label));
|
|
181
|
+
return [4 /*yield*/, fetchURL(downloadURL)
|
|
182
|
+
// the bug: our API returned 200, S3 returned 400 on every fetch of the URL it gave us
|
|
183
|
+
];
|
|
184
|
+
case 5:
|
|
185
|
+
response = _o.sent();
|
|
186
|
+
// the bug: our API returned 200, S3 returned 400 on every fetch of the URL it gave us
|
|
187
|
+
(0, testing_1.assert)(response.status === 200, "S3 returned ".concat(response.status, " for ").concat(label, ": ").concat(buffer.Buffer.from((_k = response.data) !== null && _k !== void 0 ? _k : '').toString().slice(0, 400)), "S3 returns 200 for ".concat(label));
|
|
188
|
+
(0, testing_1.assert)(buffer.Buffer.from(response.data).toString() === contents.toString(), "downloaded bytes did not match for ".concat(label), "downloaded bytes match for ".concat(label));
|
|
189
|
+
disposition = ((_l = response.headers['content-disposition']) !== null && _l !== void 0 ? _l : '');
|
|
190
|
+
(0, testing_1.assert)(IS_ASCII_ONLY.test(disposition), "Content-Disposition was not ASCII-only for ".concat(label, ": ").concat(disposition), "Content-Disposition is ASCII-only for ".concat(label));
|
|
191
|
+
(0, testing_1.assert)(disposition.startsWith('attachment;'), "expected an attachment disposition for ".concat(label, ", got: ").concat(disposition), "disposition is attachment for ".concat(label));
|
|
192
|
+
(0, testing_1.assert)(expectExtValue === disposition.includes("filename*=UTF-8''"), "filename* presence was wrong for ".concat(label, ": ").concat(disposition), "filename* ".concat(expectExtValue ? 'present' : 'absent', " for ").concat(label));
|
|
193
|
+
_o.label = 6;
|
|
194
|
+
case 6:
|
|
195
|
+
_i++;
|
|
196
|
+
return [3 /*break*/, 2];
|
|
197
|
+
case 7: return [4 /*yield*/, uploadFile("Cache Test".concat(EM_DASH, "Both Variants.pdf"))];
|
|
198
|
+
case 8:
|
|
199
|
+
_e = _o.sent(), cacheFile = _e.file, cacheContents = _e.contents;
|
|
200
|
+
return [4 /*yield*/, sdk.api.files.file_download_URL({ secureName: cacheFile.secureName })];
|
|
201
|
+
case 9:
|
|
202
|
+
asAttachment = _o.sent();
|
|
203
|
+
return [4 /*yield*/, sdk.api.files.file_download_URL({
|
|
204
|
+
secureName: cacheFile.secureName,
|
|
205
|
+
preferInBrowser: true,
|
|
206
|
+
})];
|
|
207
|
+
case 10:
|
|
208
|
+
inBrowser = _o.sent();
|
|
209
|
+
(0, testing_1.assert)(asAttachment.downloadURL !== inBrowser.downloadURL, 'preferInBrowser returned the cached attachment URL, so the cache key ignores it', 'preferInBrowser is cached separately from the attachment URL');
|
|
210
|
+
(0, testing_1.assert)(asAttachment.downloadURL.includes('response-content-disposition'), 'the default URL was signed without a content disposition', 'the default URL signs a content disposition');
|
|
211
|
+
(0, testing_1.assert)(!inBrowser.downloadURL.includes('response-content-disposition'), 'the preferInBrowser URL was signed with a content disposition', 'the preferInBrowser URL omits the content disposition');
|
|
212
|
+
_f = 0, _g = [['attachment', asAttachment], ['inBrowser', inBrowser]];
|
|
213
|
+
_o.label = 11;
|
|
214
|
+
case 11:
|
|
215
|
+
if (!(_f < _g.length)) return [3 /*break*/, 14];
|
|
216
|
+
_h = _g[_f], variant = _h[0], downloadURL = _h[1].downloadURL;
|
|
217
|
+
return [4 /*yield*/, fetchURL(downloadURL)];
|
|
218
|
+
case 12:
|
|
219
|
+
response = _o.sent();
|
|
220
|
+
(0, testing_1.assert)(response.status === 200, "S3 returned ".concat(response.status, " for the ").concat(variant, " URL: ").concat(buffer.Buffer.from((_m = response.data) !== null && _m !== void 0 ? _m : '').toString().slice(0, 400)), "S3 returns 200 for the ".concat(variant, " URL"));
|
|
221
|
+
(0, testing_1.assert)(buffer.Buffer.from(response.data).toString() === cacheContents.toString(), "downloaded bytes did not match for the ".concat(variant, " URL"), "downloaded bytes match for the ".concat(variant, " URL"));
|
|
222
|
+
_o.label = 13;
|
|
223
|
+
case 13:
|
|
224
|
+
_f++;
|
|
225
|
+
return [3 /*break*/, 11];
|
|
226
|
+
case 14: return [4 /*yield*/, sdk.api.files.file_download_URL({ secureName: cacheFile.secureName })];
|
|
227
|
+
case 15:
|
|
228
|
+
repeated = _o.sent();
|
|
229
|
+
(0, testing_1.assert)(repeated.downloadURL === asAttachment.downloadURL, 'an identical repeat request did not hit the cache', 'an identical repeat request hits the cache');
|
|
230
|
+
return [3 /*break*/, 21];
|
|
231
|
+
case 16:
|
|
232
|
+
_j = 0, fileIds_1 = fileIds;
|
|
233
|
+
_o.label = 17;
|
|
234
|
+
case 17:
|
|
235
|
+
if (!(_j < fileIds_1.length)) return [3 /*break*/, 20];
|
|
236
|
+
id = fileIds_1[_j];
|
|
237
|
+
return [4 /*yield*/, sdk.api.files.deleteOne(id).catch(function () { })];
|
|
238
|
+
case 18:
|
|
239
|
+
_o.sent();
|
|
240
|
+
_o.label = 19;
|
|
241
|
+
case 19:
|
|
242
|
+
_j++;
|
|
243
|
+
return [3 /*break*/, 17];
|
|
244
|
+
case 20: return [7 /*endfinally*/];
|
|
245
|
+
case 21: return [2 /*return*/];
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
};
|
|
250
|
+
exports.file_download_unicode_names_tests = file_download_unicode_names_tests;
|
|
251
|
+
if (require.main === module) {
|
|
252
|
+
console.log("Using API URL: ".concat(host));
|
|
253
|
+
var sdk_2 = new sdk_1.Session({ host: host });
|
|
254
|
+
var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
|
|
255
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
256
|
+
return __generator(this, function (_a) {
|
|
257
|
+
switch (_a.label) {
|
|
258
|
+
case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
|
|
259
|
+
case 1:
|
|
260
|
+
_a.sent();
|
|
261
|
+
return [4 /*yield*/, (0, exports.file_download_unicode_names_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
262
|
+
case 2:
|
|
263
|
+
_a.sent();
|
|
264
|
+
return [2 /*return*/];
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}); };
|
|
268
|
+
runTests()
|
|
269
|
+
.then(function () {
|
|
270
|
+
console.log("File download unicode names test suite completed successfully");
|
|
271
|
+
process.exit(0);
|
|
272
|
+
})
|
|
273
|
+
.catch(function (error) {
|
|
274
|
+
console.error("File download unicode names test suite failed:", error);
|
|
275
|
+
process.exit(1);
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=file_download_unicode_names.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file_download_unicode_names.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/file_download_unicode_names.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;AA4EnC,eAAO,MAAM,uBAAuB;SAAuC,OAAO;iBAAe,OAAO;mBA2vBvG,CAAA"}
|