Files
pleno-vue/tests/unit/vite-api-proxy.spec.js

55 lines
1.9 KiB
JavaScript

import { describe, expect, it } from "vitest";
import { createApiProxyOptions } from "../../vite.config.js";
describe("Vite API proxy", () => {
it("forwards local /api requests to the remote stable API by default", () => {
const options = createApiProxyOptions({});
expect(options.target).toBe("https://api-v2.truckwash.io");
expect(options.changeOrigin).toBe(true);
expect(options.secure).toBe(true);
expect(options.rewrite("/api/ping")).toBe("/master/api/ping");
expect(options.rewrite("/api/release/runtime")).toBe("/master/api/release/runtime");
expect(options.rewrite("/api")).toBe("/master/api");
});
it("allows a local PHP API override", () => {
const options = createApiProxyOptions({
VITE_API_PROXY_TARGET: "http://localhost",
});
expect(options.target).toBe("http://localhost");
expect(options.rewrite("/api/ping")).toBe("/ping");
});
it("allows overriding the remote gateway base path", () => {
const options = createApiProxyOptions({
VITE_API_PROXY_BASE_PATH: "/canary/api",
});
expect(options.target).toBe("https://api-v2.truckwash.io");
expect(options.rewrite("/api/ping")).toBe("/canary/api/ping");
expect(options.rewrite("/api")).toBe("/canary/api");
});
it("allows disabling TLS verification for explicitly trusted local gateways", () => {
const options = createApiProxyOptions({
VITE_API_PROXY_TARGET: "https://local-api.test",
VITE_API_PROXY_SECURE: "false",
});
expect(options.target).toBe("https://local-api.test");
expect(options.secure).toBe(false);
});
it("allows disabling prefix stripping for compatible local gateways", () => {
const options = createApiProxyOptions({
VITE_API_PROXY_TARGET: "http://localhost",
VITE_API_PROXY_STRIP_PREFIX: "false",
});
expect(options.target).toBe("http://localhost");
expect(options.rewrite).toBeUndefined();
});
});