fix(kiro): enable Google OAuth login option (#2392)

Integrated into release/v3.8.0 — enables Google OAuth login button in Kiro auth modal
This commit is contained in:
Cong Vu Chi
2026-05-19 09:44:04 +07:00
committed by GitHub
parent 0de964d42b
commit 65105feeaf
2 changed files with 59 additions and 3 deletions

View File

@@ -163,10 +163,10 @@ export default function KiroAuthModal({
</div>
</button>
{/* Google Social Login - HIDDEN */}
{/* Google Social Login */}
<button
onClick={() => handleMethodSelect("social-google")}
className="hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors"
onClick={() => handleSocialLogin("google")}
className="w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors"
>
<div className="flex items-start gap-3">
<span className="material-symbols-outlined text-primary mt-0.5">

View File

@@ -0,0 +1,56 @@
// @vitest-environment jsdom
import React from "react";
import { act } from "react";
import { createRoot } from "react-dom/client";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
const cleanupCallbacks: Array<() => void> = [];
function makeContainer(): HTMLElement {
const container = document.createElement("div");
document.body.appendChild(container);
cleanupCallbacks.push(() => {
container.remove();
});
return container;
}
describe("KiroAuthModal", () => {
beforeEach(() => {
(
globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT?: boolean }
).IS_REACT_ACT_ENVIRONMENT = true;
});
afterEach(() => {
while (cleanupCallbacks.length > 0) {
cleanupCallbacks.pop()?.();
}
document.body.innerHTML = "";
vi.restoreAllMocks();
});
it("shows Google Account and starts Google social login when clicked", async () => {
const { default: KiroAuthModal } = await import("@/shared/components/KiroAuthModal");
const container = makeContainer();
const root = createRoot(container);
const onMethodSelect = vi.fn();
await act(async () => {
root.render(<KiroAuthModal isOpen onClose={vi.fn()} onMethodSelect={onMethodSelect} />);
});
const googleButton = Array.from(container.querySelectorAll("button")).find((button) =>
button.textContent?.includes("Google Account")
);
expect(googleButton).toBeTruthy();
expect(googleButton?.className).not.toContain("hidden");
await act(async () => {
googleButton?.click();
});
expect(onMethodSelect).toHaveBeenCalledWith("social", { provider: "google" });
});
});