diff --git a/src/agents/tools/web-tools.enabled-defaults.test.ts b/src/agents/tools/web-tools.enabled-defaults.test.ts index b49d69da8..979a161d2 100644 --- a/src/agents/tools/web-tools.enabled-defaults.test.ts +++ b/src/agents/tools/web-tools.enabled-defaults.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from "vitest"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { createWebFetchTool, createWebSearchTool } from "./web-tools.js"; @@ -21,3 +21,71 @@ describe("web tools defaults", () => { expect(tool?.name).toBe("web_search"); }); }); + +describe("web_search country and language parameters", () => { + const priorFetch = global.fetch; + + beforeEach(() => { + vi.stubEnv("BRAVE_API_KEY", "test-key"); + }); + + afterEach(() => { + vi.unstubAllEnvs(); + // @ts-expect-error global fetch cleanup + global.fetch = priorFetch; + }); + + it("should pass country parameter to Brave API", async () => { + const mockFetch = vi.fn(() => + Promise.resolve({ + ok: true, + json: () => Promise.resolve({ web: { results: [] } }), + } as Response), + ); + // @ts-expect-error mock fetch + global.fetch = mockFetch; + + const tool = createWebSearchTool({ config: undefined, sandboxed: true }); + expect(tool).not.toBeNull(); + + await tool?.execute?.(1, { query: "test", country: "DE" }); + + expect(mockFetch).toHaveBeenCalled(); + const url = new URL(mockFetch.mock.calls[0][0] as string); + expect(url.searchParams.get("country")).toBe("DE"); + }); + + it("should pass search_lang parameter to Brave API", async () => { + const mockFetch = vi.fn(() => + Promise.resolve({ + ok: true, + json: () => Promise.resolve({ web: { results: [] } }), + } as Response), + ); + // @ts-expect-error mock fetch + global.fetch = mockFetch; + + const tool = createWebSearchTool({ config: undefined, sandboxed: true }); + await tool?.execute?.(1, { query: "test", search_lang: "de" }); + + const url = new URL(mockFetch.mock.calls[0][0] as string); + expect(url.searchParams.get("search_lang")).toBe("de"); + }); + + it("should pass ui_lang parameter to Brave API", async () => { + const mockFetch = vi.fn(() => + Promise.resolve({ + ok: true, + json: () => Promise.resolve({ web: { results: [] } }), + } as Response), + ); + // @ts-expect-error mock fetch + global.fetch = mockFetch; + + const tool = createWebSearchTool({ config: undefined, sandboxed: true }); + await tool?.execute?.(1, { query: "test", ui_lang: "de" }); + + const url = new URL(mockFetch.mock.calls[0][0] as string); + expect(url.searchParams.get("ui_lang")).toBe("de"); + }); +});