import { describe, it, expect } from "vitest"; import { createRemoteApp } from "@inspector/core/mcp/remote/node/server.js"; describe("createRemoteApp GET /api/config", () => { it("includes sandboxUrl in response when option is set", async () => { const sandboxUrl = "http://localhost:9123/sandbox"; const { app } = createRemoteApp({ dangerouslyOmitAuth: true, allowedOrigins: ["http://127.0.0.1:6274"], sandboxUrl, initialConfig: { defaultEnvironment: {} }, }); const res = await app.request(new Request("http://test/api/config")); expect(res.status).toBe(200); const data = (await res.json()) as { sandboxUrl?: string }; expect(data.sandboxUrl).toBe(sandboxUrl); }); it("omits sandboxUrl when option is not set", async () => { const { app } = createRemoteApp({ dangerouslyOmitAuth: true, allowedOrigins: ["http://127.0.0.1:6274"], initialConfig: { defaultEnvironment: {} }, }); const res = await app.request(new Request("http://test/api/config")); expect(res.status).toBe(200); const data = (await res.json()) as { sandboxUrl?: string }; expect(data).not.toHaveProperty("sandboxUrl"); }); it("uses initialConfig when provided instead of env", async () => { const { app } = createRemoteApp({ dangerouslyOmitAuth: true, allowedOrigins: ["http://127.0.0.1:6274"], initialConfig: { defaultCommand: "my-server", defaultArgs: ["--foo"], defaultTransport: "stdio", defaultCwd: "/tmp", defaultEnvironment: { PATH: "/usr/bin" }, }, }); const res = await app.request(new Request("http://test/api/config")); expect(res.status).toBe(200); const data = (await res.json()) as { defaultCommand?: string; defaultArgs?: string[]; defaultTransport?: string; defaultCwd?: string; defaultEnvironment?: Record; }; expect(data.defaultCommand).toBe("my-server"); expect(data.defaultArgs).toEqual(["--foo"]); expect(data.defaultTransport).toBe("stdio"); expect(data.defaultCwd).toBe("/tmp"); expect(data.defaultEnvironment).toEqual({ PATH: "/usr/bin" }); }); it("reports writable:true by default and writable:false when set", async () => { const writableApp = createRemoteApp({ dangerouslyOmitAuth: true, initialConfig: { defaultEnvironment: {} }, }).app; const writableRes = await writableApp.request( new Request("http://test/api/config"), ); expect( ((await writableRes.json()) as { writable?: boolean }).writable, ).toBe(true); const readOnlyApp = createRemoteApp({ dangerouslyOmitAuth: true, writable: false, initialConfig: { defaultEnvironment: {} }, }).app; const readOnlyRes = await readOnlyApp.request( new Request("http://test/api/config"), ); expect( ((await readOnlyRes.json()) as { writable?: boolean }).writable, ).toBe(false); }); });