CI / config (push) Canceled after 0s
CI / test-frontend (push) Canceled after 0s
CI / test-rust (push) Canceled after 0s
CI / test-e2e (push) Canceled after 0s
CI / test-e2e-release (push) Canceled after 0s
CI / build (push) Canceled after 0s
CI / release (push) Canceled after 0s
CI / docker (push) Canceled after 0s
CI / docker-website (push) Canceled after 0s
补齐普通用户自助账号、中文设置与快捷键提示,修复大型扩展安装和移动端弹窗,并按服务器能力限制不兼容扩展。 Co-Authored-By: Codex <noreply@anthropic.com>
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
import { describe, expect, test, vi } from "vitest";
|
|
import { spaceReadSyscalls, spaceWriteSyscalls } from "./space.ts";
|
|
|
|
function callback(mapping: ReturnType<typeof spaceReadSyscalls>, name: string) {
|
|
const entry = mapping[name];
|
|
return typeof entry === "function" ? entry : entry.callback;
|
|
}
|
|
|
|
describe("Base64 file syscalls", () => {
|
|
test("reads binary files as Base64 across the plug boundary", async () => {
|
|
const client = {
|
|
space: {
|
|
spacePrimitives: {
|
|
readFile: vi.fn(async () => ({
|
|
data: new Uint8Array([0, 1, 2, 255]),
|
|
meta: {},
|
|
})),
|
|
},
|
|
},
|
|
} as any;
|
|
|
|
const read = callback(spaceReadSyscalls(client), "space.readFileBase64");
|
|
await expect(read({}, "plug.js")).resolves.toBe("AAEC/w==");
|
|
});
|
|
|
|
test("decodes Base64 only after reaching the main thread", async () => {
|
|
const writeFile = vi.fn(async (_name: string, _data: Uint8Array) => ({}));
|
|
const client = {
|
|
space: { spacePrimitives: { writeFile } },
|
|
} as any;
|
|
|
|
const write = callback(spaceWriteSyscalls(client), "space.writeFileBase64");
|
|
await write({}, "plug.js", "AAEC/w==");
|
|
|
|
expect(writeFile).toHaveBeenCalledOnce();
|
|
expect(writeFile.mock.calls[0][0]).toBe("plug.js");
|
|
expect(writeFile.mock.calls[0][1]).toEqual(new Uint8Array([0, 1, 2, 255]));
|
|
});
|
|
|
|
test("rejects non-string Base64 payloads before writing", async () => {
|
|
const writeFile = vi.fn(async (_name: string, _data: Uint8Array) => ({}));
|
|
const client = {
|
|
space: { spacePrimitives: { writeFile } },
|
|
} as any;
|
|
const write = callback(spaceWriteSyscalls(client), "space.writeFileBase64");
|
|
|
|
expect(() => write({}, "plug.js", undefined)).toThrow(
|
|
"Base64 file data must be a string",
|
|
);
|
|
expect(writeFile).not.toHaveBeenCalled();
|
|
});
|
|
});
|