mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-17 02:37:33 +00:00
test: dedupe brave fetch mock calls
This commit is contained in:
@@ -72,6 +72,22 @@ function readHeader(init: unknown, name: string): string | null {
|
||||
return new Headers(headers).get(name);
|
||||
}
|
||||
|
||||
function fetchCall(mockFetch: { mock: { calls: Array<Array<unknown>> } }, index = 0) {
|
||||
const call = mockFetch.mock.calls.at(index);
|
||||
if (!call) {
|
||||
throw new Error(`Expected fetch call ${index + 1}`);
|
||||
}
|
||||
return call;
|
||||
}
|
||||
|
||||
function fetchRequestUrl(mockFetch: { mock: { calls: Array<Array<unknown>> } }, index = 0) {
|
||||
return new URL(String(fetchCall(mockFetch, index)[0]));
|
||||
}
|
||||
|
||||
function fetchRequestInit(mockFetch: { mock: { calls: Array<Array<unknown>> } }, index = 0) {
|
||||
return fetchCall(mockFetch, index)[1];
|
||||
}
|
||||
|
||||
describe("brave web search provider", () => {
|
||||
const priorFetch = global.fetch;
|
||||
|
||||
@@ -220,7 +236,7 @@ describe("brave web search provider", () => {
|
||||
|
||||
await tool.execute({ query: "latest ai news" });
|
||||
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.origin).toBe("https://api.search.brave.com");
|
||||
expect(requestUrl.pathname).toBe("/proxy/res/v1/web/search");
|
||||
});
|
||||
@@ -245,7 +261,7 @@ describe("brave web search provider", () => {
|
||||
|
||||
await tool.execute({ query: "latest ai news" });
|
||||
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.pathname).toBe("/proxy/res/v1/llm/context");
|
||||
});
|
||||
|
||||
@@ -288,12 +304,8 @@ describe("brave web search provider", () => {
|
||||
await secondTool.execute({ query: "base url cache identity" });
|
||||
|
||||
expect(mockFetch).toHaveBeenCalledTimes(2);
|
||||
expect(new URL(String(mockFetch.mock.calls[0]?.[0])).pathname).toBe(
|
||||
"/proxy-one/res/v1/web/search",
|
||||
);
|
||||
expect(new URL(String(mockFetch.mock.calls[1]?.[0])).pathname).toBe(
|
||||
"/proxy-two/res/v1/web/search",
|
||||
);
|
||||
expect(fetchRequestUrl(mockFetch).pathname).toBe("/proxy-one/res/v1/web/search");
|
||||
expect(fetchRequestUrl(mockFetch, 1).pathname).toBe("/proxy-two/res/v1/web/search");
|
||||
});
|
||||
|
||||
it("rejects invalid Brave mode values in the plugin config schema", () => {
|
||||
@@ -393,7 +405,7 @@ describe("brave web search provider", () => {
|
||||
|
||||
await tool.execute({ query: "latest ai news", freshness: "week" });
|
||||
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.pathname).toBe("/res/v1/llm/context");
|
||||
expect(requestUrl.searchParams.get("freshness")).toBe("pw");
|
||||
});
|
||||
@@ -422,10 +434,10 @@ describe("brave web search provider", () => {
|
||||
|
||||
await tool.execute({ query: "latest ai news" });
|
||||
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.searchParams.get("apikey")).toBeNull();
|
||||
expect(requestUrl.searchParams.get("key")).toBeNull();
|
||||
expect(readHeader(mockFetch.mock.calls[0]?.[1], "X-Subscription-Token")).toBe("brave-test-key");
|
||||
expect(readHeader(fetchRequestInit(mockFetch), "X-Subscription-Token")).toBe("brave-test-key");
|
||||
});
|
||||
|
||||
it("sends Brave llm-context auth in the X-Subscription-Token header", async () => {
|
||||
@@ -445,10 +457,10 @@ describe("brave web search provider", () => {
|
||||
|
||||
await tool.execute({ query: "latest ai news" });
|
||||
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.searchParams.get("apikey")).toBeNull();
|
||||
expect(requestUrl.searchParams.get("key")).toBeNull();
|
||||
expect(readHeader(mockFetch.mock.calls[0]?.[1], "X-Subscription-Token")).toBe("brave-test-key");
|
||||
expect(readHeader(fetchRequestInit(mockFetch), "X-Subscription-Token")).toBe("brave-test-key");
|
||||
});
|
||||
|
||||
it("passes bounded date ranges to Brave llm-context endpoint", async () => {
|
||||
@@ -472,7 +484,7 @@ describe("brave web search provider", () => {
|
||||
date_before: "2025-01-31",
|
||||
});
|
||||
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.pathname).toBe("/res/v1/llm/context");
|
||||
expect(requestUrl.searchParams.get("freshness")).toBe("2025-01-01to2025-01-31");
|
||||
});
|
||||
@@ -495,7 +507,7 @@ describe("brave web search provider", () => {
|
||||
await tool.execute({ query: "latest ai news", date_after: "2025-01-01" });
|
||||
|
||||
const today = new Date().toISOString().slice(0, 10);
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.pathname).toBe("/res/v1/llm/context");
|
||||
expect(requestUrl.searchParams.get("freshness")).toBe(`2025-01-01to${today}`);
|
||||
});
|
||||
@@ -584,7 +596,7 @@ describe("brave web search provider", () => {
|
||||
country: "VN",
|
||||
});
|
||||
|
||||
const requestUrl = new URL(String(mockFetch.mock.calls[0]?.[0]));
|
||||
const requestUrl = fetchRequestUrl(mockFetch);
|
||||
expect(requestUrl.searchParams.get("country")).toBe("ALL");
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user