Files
overlord/Overlord-Server/src/fileTransfers.test.ts
T

61 lines
1.9 KiB
TypeScript
Raw Normal View History

2026-03-05 00:04:26 -06:00
import { describe, expect, test } from "bun:test";
import { coerceUploadData, normalizeFileUploadPayload } from "./fileTransfers";
function toBase64(bytes: Uint8Array): string {
let binary = "";
for (let i = 0; i < bytes.length; i += 1) {
binary += String.fromCharCode(bytes[i]);
}
return btoa(binary);
}
describe("fileTransfers", () => {
test("coerceUploadData handles Uint8Array", () => {
const input = new Uint8Array([1, 2, 3]);
const out = coerceUploadData(input);
expect(out).not.toBeNull();
expect(Array.from(out || [])).toEqual([1, 2, 3]);
});
test("coerceUploadData handles ArrayBuffer", () => {
const input = new Uint8Array([4, 5, 6]).buffer;
const out = coerceUploadData(input);
expect(out).not.toBeNull();
expect(Array.from(out || [])).toEqual([4, 5, 6]);
});
test("coerceUploadData handles base64 string", () => {
const bytes = new Uint8Array([7, 8, 9]);
const input = toBase64(bytes);
const out = coerceUploadData(input);
expect(out).not.toBeNull();
expect(Array.from(out || [])).toEqual([7, 8, 9]);
});
test("coerceUploadData rejects invalid data", () => {
expect(coerceUploadData(123)).toBeNull();
});
test("normalizeFileUploadPayload fills defaults", () => {
const payload = {
path: "/tmp/file.txt",
data: new Uint8Array([1, 2, 3]),
offset: 10,
total: 30,
transferId: "t-1",
};
const out = normalizeFileUploadPayload(payload);
expect(out).not.toBeNull();
expect(out?.path).toBe("/tmp/file.txt");
expect(out?.offset).toBe(10);
expect(out?.total).toBe(30);
expect(out?.transferId).toBe("t-1");
expect(Array.from(out?.data || [])).toEqual([1, 2, 3]);
});
test("normalizeFileUploadPayload rejects missing data", () => {
const out = normalizeFileUploadPayload({ path: "/tmp/file.txt" });
expect(out).toBeNull();
});
});