Files
diegosouzapw--omniroute/tests/unit/db-import-max-size-4719.test.ts
2026-07-13 13:39:12 +08:00

35 lines
1.5 KiB
TypeScript

// #4719 — DB backup import failed for databases larger than the hard-coded 100 MB cap.
// Real databases bloat (a 156 MB file VACUUMs down to 5 MB) but still couldn't be
// re-imported. The cap is now operator-tunable via OMNIROUTE_DB_IMPORT_MAX_MB, with the
// historical 100 MB as default and a 4 GB ceiling for invalid/hostile values.
import test from "node:test";
import assert from "node:assert/strict";
const { resolveMaxUploadSizeBytes } = await import(
"../../src/app/api/db-backups/import/route.ts"
);
const MB = 1024 * 1024;
test("defaults to 100 MB when env is unset (#4719)", () => {
assert.equal(resolveMaxUploadSizeBytes({}), 100 * MB);
});
test("honors OMNIROUTE_DB_IMPORT_MAX_MB (#4719)", () => {
assert.equal(resolveMaxUploadSizeBytes({ OMNIROUTE_DB_IMPORT_MAX_MB: "256" }), 256 * MB);
});
test("clamps absurd values to the 4 GB ceiling (#4719)", () => {
assert.equal(resolveMaxUploadSizeBytes({ OMNIROUTE_DB_IMPORT_MAX_MB: "999999" }), 4096 * MB);
});
test("falls back to default for invalid / out-of-range values (#4719)", () => {
assert.equal(resolveMaxUploadSizeBytes({ OMNIROUTE_DB_IMPORT_MAX_MB: "abc" }), 100 * MB);
assert.equal(resolveMaxUploadSizeBytes({ OMNIROUTE_DB_IMPORT_MAX_MB: "0" }), 100 * MB);
assert.equal(resolveMaxUploadSizeBytes({ OMNIROUTE_DB_IMPORT_MAX_MB: "-5" }), 100 * MB);
});
test("floors fractional MB values (#4719)", () => {
assert.equal(resolveMaxUploadSizeBytes({ OMNIROUTE_DB_IMPORT_MAX_MB: "150.9" }), 150 * MB);
});