diff --git a/packages/better-auth/src/client/config.test.ts b/packages/better-auth/src/client/config.test.ts new file mode 100644 index 0000000000..0e5c25f777 --- /dev/null +++ b/packages/better-auth/src/client/config.test.ts @@ -0,0 +1,52 @@ +import { createServer } from "node:http"; +import { describe, expect, it } from "vitest"; +import { getClientConfig } from "./config"; + +describe("client config", () => { + it("enable default plugins should include user agent", async ({ + onTestFinished, + }) => { + const server = createServer((_, res) => res.end()); + await new Promise((resolve) => + server.listen(0, () => { + resolve(); + }), + ); + onTestFinished(() => { + server.close(); + }); + const url = `http://localhost:${(server.address() as any).port}`; + const { $fetch } = getClientConfig({ + baseURL: "http://localhost:3000", + }); + await $fetch(url, { + onResponse: ({ request }) => { + expect(request.headers.has("User-Agent")).toBe(true); + }, + }); + }); + + it("disable default plugins should not include user agent", async ({ + onTestFinished, + }) => { + const server = createServer((_, res) => res.end()); + await new Promise((resolve) => + server.listen(0, () => { + resolve(); + }), + ); + onTestFinished(() => { + server.close(); + }); + const url = `http://localhost:${(server.address() as any).port}`; + const { $fetch } = getClientConfig({ + disableDefaultFetchPlugins: true, + baseURL: "http://localhost:3000", + }); + await $fetch(url, { + onResponse: ({ request }) => { + expect(request.headers.has("User-Agent")).toBe(false); + }, + }); + }); +}); diff --git a/packages/better-auth/src/client/config.ts b/packages/better-auth/src/client/config.ts index d266495c50..2c30bb3a07 100644 --- a/packages/better-auth/src/client/config.ts +++ b/packages/better-auth/src/client/config.ts @@ -50,9 +50,10 @@ export const getClientConfig = ( ...restOfFetchOptions, plugins: [ lifeCyclePlugin, - userAgentPlugin, ...(restOfFetchOptions.plugins || []), - ...(options?.disableDefaultFetchPlugins ? [] : [redirectPlugin]), + ...(options?.disableDefaultFetchPlugins + ? [] + : [userAgentPlugin, redirectPlugin]), ...pluginsFetchPlugins, ], });