



















@@ -17,17 +17,19 @@ const configMocks = vi.hoisted(() => ({
1717browser: {},
1818nodeHost: { browserProxy: { enabled: true, allowProfiles: [] as string[] } },
1919})),
20+sourceConfig: null as Record<string, unknown> | null,
2021}));
21222223const browserConfigMocks = vi.hoisted(() => ({
23-resolveBrowserConfig: vi.fn(() => ({
24+resolveBrowserConfig: vi.fn((browser?: { defaultProfile?: string }) => ({
2425enabled: true,
25-defaultProfile: "openclaw",
26+defaultProfile: browser?.defaultProfile ?? "openclaw",
2627})),
2728}));
28292930vi.mock("../sdk-config.js", () => ({
3031getRuntimeConfig: configMocks.loadConfig,
32+getRuntimeConfigSourceSnapshot: () => configMocks.sourceConfig,
3133loadConfig: configMocks.loadConfig,
3234}));
3335@@ -150,6 +152,7 @@ describe("runBrowserProxyCommand", () => {
150152}));
151153controlServiceMocks.createBrowserControlContext.mockReset().mockReturnValue({ control: true });
152154controlServiceMocks.startBrowserControlServiceFromConfig.mockReset().mockResolvedValue(true);
155+configMocks.sourceConfig = null;
153156configMocks.loadConfig.mockReset().mockReturnValue({
154157browser: {},
155158nodeHost: { browserProxy: { enabled: true, allowProfiles: [] as string[] } },
@@ -304,6 +307,41 @@ describe("runBrowserProxyCommand", () => {
304307expect(dispatcherMocks.dispatch).not.toHaveBeenCalled();
305308});
306309310+it("uses the browser source snapshot for proxy default-profile decisions", async () => {
311+configMocks.loadConfig.mockReturnValue({
312+browser: { defaultProfile: "openclaw" },
313+nodeHost: { browserProxy: { enabled: true, allowProfiles: ["work"] } },
314+});
315+configMocks.sourceConfig = {
316+browser: { defaultProfile: "work" },
317+nodeHost: { browserProxy: { enabled: true, allowProfiles: ["work"] } },
318+};
319+browserConfigMocks.resolveBrowserConfig.mockImplementation(
320+(browser?: { defaultProfile?: string }) => ({
321+enabled: true,
322+defaultProfile: browser?.defaultProfile ?? "openclaw",
323+}),
324+);
325+dispatcherMocks.dispatch.mockResolvedValue({
326+status: 200,
327+body: { ok: true },
328+});
329+330+await runBrowserProxyCommand(
331+JSON.stringify({
332+method: "GET",
333+path: "/snapshot",
334+timeoutMs: 50,
335+}),
336+);
337+338+expect(dispatcherMocks.dispatch).toHaveBeenCalledWith(
339+expect.objectContaining({
340+path: "/snapshot",
341+}),
342+);
343+});
344+307345it("rejects unauthorized body.profile when allowProfiles is configured", async () => {
308346configMocks.loadConfig.mockReturnValue({
309347browser: {},
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。