From 712ca2b37a2b31e488d7ce209f9ccb36b4c7d6fd Mon Sep 17 00:00:00 2001 From: cagedbird043 Date: Thu, 18 Jun 2026 19:15:32 +0800 Subject: [PATCH] test(auth): add regression test and packages/ai changelog for loopback ip redirect --- packages/ai/CHANGELOG.md | 4 ++++ .../ai/test/google-oauth-hostname.test.ts | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 packages/ai/test/google-oauth-hostname.test.ts diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 7f34ea30e..ab75489c6 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Changed + +- Switched Google OAuth callback hostname from `localhost` to `127.0.0.1` to prevent IPv6 loopback fallback delays and proxy routing interception. + ## [16.0.6] - 2026-06-18 ### Added diff --git a/packages/ai/test/google-oauth-hostname.test.ts b/packages/ai/test/google-oauth-hostname.test.ts new file mode 100644 index 000000000..f50a4816e --- /dev/null +++ b/packages/ai/test/google-oauth-hostname.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from "bun:test"; +import { GoogleOAuthFlow } from "../src/registry/oauth/google-oauth-shared"; +import type { OAuthController } from "../src/registry/oauth/types"; + +describe("GoogleOAuthFlow callback hostname", () => { + it("uses 127.0.0.1 as the callback hostname to avoid IPv6 and proxy delays", () => { + const ctrl: OAuthController = { + onAuth: () => {}, + }; + const flow = new GoogleOAuthFlow(ctrl, { + clientId: "test-client", + clientSecret: "test-secret", + authUrl: "https://example.com/auth", + tokenUrl: "https://example.com/token", + scopes: ["scope1"], + callbackPort: 51121, + callbackPath: "/callback", + }); + + expect(flow.callbackHostname).toBe("127.0.0.1"); + }); +});