5a7a35c759
Prototype E2E encryption
63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import { MemoryKvPrimitives } from "../../plugos/lib/memory_kv_primitives.ts";
|
|
import { assert, assertEquals } from "../../test_deps.ts";
|
|
import { ChunkedKvStoreSpacePrimitives } from "./chunked_datastore_space_primitives.ts";
|
|
import { EncryptedSpacePrimitives } from "./encrypted_space_primitives.ts";
|
|
import { testSpacePrimitives } from "./space_primitives.test.ts";
|
|
|
|
Deno.test("Encrypted Space Primitives", async () => {
|
|
// Using an in-memory store for testing
|
|
const memoryKv = new MemoryKvPrimitives();
|
|
const spacePrimitives = new EncryptedSpacePrimitives(
|
|
new ChunkedKvStoreSpacePrimitives(
|
|
memoryKv,
|
|
1024 * 1024,
|
|
),
|
|
);
|
|
assertEquals(false, await spacePrimitives.init());
|
|
await spacePrimitives.setup("password");
|
|
assertEquals(await spacePrimitives.fetchFileList(), []);
|
|
await testSpacePrimitives(spacePrimitives);
|
|
|
|
// Let's try an incorrect password
|
|
try {
|
|
await spacePrimitives.login("wronk");
|
|
assert(false);
|
|
} catch (e: any) {
|
|
assertEquals(e.message, "Incorrect password");
|
|
}
|
|
|
|
// Now let's update the password
|
|
await spacePrimitives.updatePassword("password", "password2");
|
|
|
|
try {
|
|
await spacePrimitives.updatePassword("password", "password2");
|
|
assert(false);
|
|
} catch (e: any) {
|
|
assertEquals(e.message, "Incorrect password");
|
|
}
|
|
|
|
await spacePrimitives.writeFile(
|
|
"test.txt",
|
|
new TextEncoder().encode("Hello World"),
|
|
);
|
|
|
|
// Let's do this again with the new password
|
|
|
|
const spacePrimitives2 = new EncryptedSpacePrimitives(
|
|
new ChunkedKvStoreSpacePrimitives(
|
|
memoryKv,
|
|
1024 * 1024,
|
|
),
|
|
);
|
|
assertEquals(true, await spacePrimitives2.init());
|
|
await spacePrimitives2.login("password2");
|
|
assertEquals(
|
|
new TextDecoder().decode(
|
|
(await spacePrimitives2.readFile("test.txt")).data,
|
|
),
|
|
"Hello World",
|
|
);
|
|
await spacePrimitives2.deleteFile("test.txt");
|
|
await testSpacePrimitives(spacePrimitives2);
|
|
});
|