9f082c83a9
Backend refactor
70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import { assert, assertEquals } from "../../test_deps.ts";
|
|
import { SpacePrimitives } from "./space_primitives.ts";
|
|
|
|
export async function testSpacePrimitives(spacePrimitives: SpacePrimitives) {
|
|
const files = await spacePrimitives.fetchFileList();
|
|
assertEquals(files, []);
|
|
// Write text file
|
|
const fileMeta = await spacePrimitives.writeFile(
|
|
"test.txt",
|
|
stringToBytes("Hello World"),
|
|
false,
|
|
{
|
|
name: "test.txt",
|
|
perm: "rw",
|
|
created: 10,
|
|
contentType: "text/plain",
|
|
lastModified: 20,
|
|
size: 11,
|
|
},
|
|
);
|
|
|
|
const { data: retrievedData, meta: retrievedMeta } = await spacePrimitives
|
|
.readFile("test.txt");
|
|
|
|
assertEquals(retrievedData, stringToBytes("Hello World"));
|
|
// Check that the meta data is persisted
|
|
assertEquals(retrievedMeta.lastModified, 20);
|
|
|
|
const fbContent = (await spacePrimitives.readFile("test.txt"))
|
|
.data;
|
|
assertEquals(new TextDecoder().decode(fbContent), "Hello World");
|
|
|
|
assertEquals(await spacePrimitives.fetchFileList(), [fileMeta]);
|
|
const buf = new Uint8Array(1024 * 1024);
|
|
buf.set([1, 2, 3, 4, 5]);
|
|
// Write binary file
|
|
await spacePrimitives.writeFile("test.bin", buf);
|
|
const fMeta = await spacePrimitives.getFileMeta("test.bin");
|
|
assertEquals(fMeta.size, 1024 * 1024);
|
|
assertEquals((await spacePrimitives.fetchFileList()).length, 2);
|
|
// console.log(spacePrimitives);
|
|
|
|
await spacePrimitives.deleteFile("test.bin");
|
|
assertEquals(await spacePrimitives.fetchFileList(), [fileMeta]);
|
|
|
|
// Clean up
|
|
await spacePrimitives.deleteFile("test.txt");
|
|
assertEquals(await spacePrimitives.fetchFileList(), []);
|
|
|
|
// Test weird file names
|
|
await spacePrimitives.writeFile("test+'s.txt", stringToBytes("Hello world!"));
|
|
assertEquals(
|
|
stringToBytes("Hello world!"),
|
|
(await spacePrimitives.readFile("test+'s.txt")).data,
|
|
);
|
|
await spacePrimitives.deleteFile("test+'s.txt");
|
|
|
|
// Check deletion of weird file file name
|
|
try {
|
|
await spacePrimitives.getFileMeta("test+'s.txt");
|
|
assert(false);
|
|
} catch (e: any) {
|
|
assertEquals(e.message, "Not found");
|
|
}
|
|
}
|
|
|
|
function stringToBytes(str: string): Uint8Array {
|
|
return new TextEncoder().encode(str);
|
|
}
|