fix: send plugin form uploads to the plugin's route (Support#1406, Support#1420)

This commit is contained in:
LukeGus committed 2026-10-07 16:50:51 -05:00
1 parent db8305e393
commit f783e6d51d
2 files changed
+29 -3

No files matched your search

+4 -1
View File
@@ -61,7 +61,10 @@ export function createPluginApi(pluginId: string): AxiosInstance {
property === "options" ||
property === "post" ||
property === "put" ||
property === "patch"
property === "patch" ||
property === "postForm" ||
property === "putForm" ||
property === "patchForm"
) {
return (url: string, ...rest: unknown[]) =>
(value as (...args: unknown[]) => unknown).call(
+25 -2
View File
@@ -1,15 +1,22 @@
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
const state = vi.hoisted(() => ({ electron: false }));
const axiosMethods = vi.hoisted(() => ({
get: vi.fn(),
postForm: vi.fn(),
}));
vi.mock("@/main-axios", () => ({
authApi: { defaults: { baseURL: "http://server:8080/" } },
authApi: {
defaults: { baseURL: "http://server:8080/" },
...axiosMethods,
},
createRemoteOriginApiInstance: vi.fn(),
}));
vi.mock("@/lib/electron", () => ({ isElectron: () => state.electron }));
vi.mock("@/lib/device-id", () => ({ getDeviceId: () => "device-1" }));
import { pluginFetch } from "@/lib/plugin-transport";
import { createPluginApi, pluginFetch } from "@/lib/plugin-transport";
const fetchMock = vi.fn(async () => new Response("ok"));
@@ -61,3 +68,19 @@ describe("pluginFetch", () => {
expect(headers.get("authorization")).toBe("Bearer token-1");
});
});
describe("createPluginApi", () => {
it("puts the plugin's mount point in front of request and form paths", () => {
const api = createPluginApi("file-manager");
const form = new FormData();
api.get("/listFiles");
api.postForm("uploadFileStream", form);
expect(axiosMethods.get).toHaveBeenCalledWith(
"/plugin-api/file-manager/listFiles",
);
expect(axiosMethods.postForm).toHaveBeenCalledWith(
"/plugin-api/file-manager/uploadFileStream",
form,
);
});
});