Files
archy/tests/apps/blossom/upload-policy.test.ts

21 lines
1.5 KiB
TypeScript

import { DEFAULT_UPLOAD_BYTES, MAX_UPLOAD_BYTES, uploadLimit } from '../../../docker/blossom/upload-policy.ts';
import { patchUploadWorker } from '../../../docker/blossom/upload-worker-patch.ts';
function assert(ok: boolean) { if (!ok) throw new Error('Assertion failed'); }
function refuses(action: () => unknown) { let refused = false; try { action(); } catch { refused = true; } assert(refused); }
Deno.test('general default remains 16 MiB; explicit decimal limits only up to wizard 2 GiB maximum', () => {
assert(uploadLimit(undefined) === DEFAULT_UPLOAD_BYTES);
for (const size of [1, DEFAULT_UPLOAD_BYTES, DEFAULT_UPLOAD_BYTES + 1, MAX_UPLOAD_BYTES]) assert(uploadLimit(String(size)) === size);
});
Deno.test('malformed, empty, fractional and excessive limits fail closed', () => {
for (const value of ['', '0', '-1', '+1', '01', '1.0', '2e9', 'NaN', 'Infinity', ' 16777216', '16777216 ', '2147483649', '9007199254740991']) refuses(() => uploadLimit(value));
});
Deno.test('pinned worker transform is single-use and refuses changed integration', () => {
const source = Deno.readTextFileSync('/app/src/workers/upload-worker.ts');
const result = patchUploadWorker(source);
assert(!result.includes('stream.tee()'));
assert(result.includes('await output.write(chunk.subarray(offset))'));
assert(result.includes('Upload write made no progress'));
refuses(() => patchUploadWorker(result));
refuses(() => patchUploadWorker(source.replace('const [s1, s2]', 'const [first, second]')));
});