You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
1.4 KiB
TypeScript

// frontend/tests/connectors/api.test.ts — connectorsApi OAuth/providers 쿼리 구성
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { connectorsApi } from "@/lib/connectors/api";
function mockFetch(payload: unknown) {
const fn = vi.fn().mockResolvedValue({
ok: true,
json: () => Promise.resolve(payload),
});
vi.stubGlobal("fetch", fn);
return fn;
}
beforeEach(() => vi.restoreAllMocks());
afterEach(() => vi.unstubAllGlobals());
describe("connectorsApi", () => {
it("oauthStart 는 domain/provider/redirect_after 를 인코딩해 호출", async () => {
const fetchMock = mockFetch({ authorize_url: "https://x" });
const res = await connectorsApi.oauthStart("mail", "outlook", "/settings?tab=mail");
expect(res.authorize_url).toBe("https://x");
const url = fetchMock.mock.calls[0][0] as string;
expect(url).toContain("/api/connectors/oauth/start?");
expect(url).toContain("domain=mail");
expect(url).toContain("provider=outlook");
expect(url).toContain("redirect_after=%2Fsettings%3Ftab%3Dmail");
});
it("providers 는 domain 필터 쿼리를 붙인다", async () => {
const fetchMock = mockFetch([{ domain: "mail", provider: "gmail", label: "Gmail", configured: true }]);
const rows = await connectorsApi.providers("mail");
expect(rows[0].provider).toBe("gmail");
expect(fetchMock.mock.calls[0][0]).toContain("/api/connectors/providers?domain=mail");
});
});