Kuma/tests/lib/stripe.test.ts
2026-10-01 23:28:32 +02:00

36 lines
1.2 KiB
TypeScript

import { describe, it, expect, afterEach, vi } from "vitest";
import { getWebhookSecrets, onAccount } from "@/src/lib/stripe";
afterEach(() => {
vi.unstubAllEnvs();
});
describe("getWebhookSecrets", () => {
it("liefert Plattform- und Connect-Secret, wenn beide gesetzt sind", () => {
vi.stubEnv("STRIPE_WEBHOOK_SECRET", "whsec_platform");
vi.stubEnv("STRIPE_CONNECT_WEBHOOK_SECRET", "whsec_connect");
expect(getWebhookSecrets()).toEqual(["whsec_platform", "whsec_connect"]);
});
it("kommt lokal mit dem einen CLI-Secret aus", () => {
vi.stubEnv("STRIPE_WEBHOOK_SECRET", "whsec_cli");
vi.stubEnv("STRIPE_CONNECT_WEBHOOK_SECRET", "");
expect(getWebhookSecrets()).toEqual(["whsec_cli"]);
});
it("wirft, wenn kein Secret gesetzt ist", () => {
vi.stubEnv("STRIPE_WEBHOOK_SECRET", "");
vi.stubEnv("STRIPE_CONNECT_WEBHOOK_SECRET", " ");
expect(() => getWebhookSecrets()).toThrow("STRIPE_WEBHOOK_SECRET");
});
});
describe("onAccount", () => {
it("adressiert Direct Charges auf dem Studio-Account", () => {
expect(onAccount("acct_studio")).toEqual({ stripeAccount: "acct_studio" });
});
it("lässt Altbuchungen auf dem Plattformkonto", () => {
expect(onAccount(null)).toBeUndefined();
});
});