mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-10 21:44:16 +00:00
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const { fetchMock, signInMock } = vi.hoisted(() => ({
|
|
fetchMock: vi.fn(),
|
|
signInMock: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("@/auth.config", () => ({
|
|
signIn: signInMock,
|
|
}));
|
|
|
|
vi.mock("@/lib/helper", () => ({
|
|
apiBaseUrl: "https://api.example.com/api/v1",
|
|
baseUrl: "https://app.example.com",
|
|
}));
|
|
|
|
import { GET } from "./route";
|
|
|
|
describe("Google OAuth callback route", () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
vi.stubGlobal("fetch", fetchMock);
|
|
signInMock.mockResolvedValue({});
|
|
});
|
|
|
|
it("should forward callback attribution to the token exchange", async () => {
|
|
// Given
|
|
fetchMock.mockResolvedValue(
|
|
Response.json({
|
|
data: {
|
|
attributes: {
|
|
access: "access-token",
|
|
refresh: "refresh-token",
|
|
},
|
|
},
|
|
}),
|
|
);
|
|
const state = encodeURIComponent(
|
|
"/?promo_code=black-hat-2026&utm_source=blackhat",
|
|
);
|
|
const request = new Request(
|
|
`https://app.example.com/api/auth/callback/google?code=oauth-code&state=${state}`,
|
|
);
|
|
|
|
// When
|
|
await GET(request);
|
|
|
|
// Then
|
|
const body = new URLSearchParams(fetchMock.mock.calls[0][1].body);
|
|
expect(body.get("code")).toBe("oauth-code");
|
|
expect(body.get("promo_code")).toBe("black-hat-2026");
|
|
expect(body.get("utm_source")).toBe("blackhat");
|
|
});
|
|
});
|