import { afterEach, describe, expect, test } from "bun:test"; import { getEmailReadiness } from "../src"; const originalEnv = { EMAIL_FROM: process.env.EMAIL_FROM, EMAIL_PROVIDER: process.env.EMAIL_PROVIDER, NODE_ENV: process.env.NODE_ENV, RESEND_API_KEY: process.env.RESEND_API_KEY, SMTP_HOST: process.env.SMTP_HOST, SMTP_PORT: process.env.SMTP_PORT, }; afterEach(() => { for (const [key, value] of Object.entries(originalEnv)) { if (value === undefined) delete process.env[key]; else process.env[key] = value; } }); describe("email provider readiness", () => { test("accepts a configured Mailpit transport in development", () => { process.env.NODE_ENV = "development"; process.env.EMAIL_PROVIDER = "mailpit"; process.env.EMAIL_FROM = "beenvoice "; process.env.SMTP_HOST = "127.0.0.1"; process.env.SMTP_PORT = "1028"; expect(getEmailReadiness()).toEqual({ provider: "mailpit", configured: true, missing: [], }); }); test("rejects Mailpit in production", () => { process.env.NODE_ENV = "production"; process.env.EMAIL_PROVIDER = "mailpit"; process.env.EMAIL_FROM = "beenvoice "; process.env.SMTP_HOST = "mailpit"; process.env.SMTP_PORT = "1025"; expect(getEmailReadiness().configured).toBe(false); expect(getEmailReadiness().missing).toContain( "EMAIL_PROVIDER (mailpit is development-only)", ); }); test("accepts a per-business Resend key", () => { process.env.NODE_ENV = "production"; process.env.EMAIL_PROVIDER = "resend"; process.env.EMAIL_FROM = "beenvoice "; delete process.env.RESEND_API_KEY; expect(getEmailReadiness({ resendApiKey: "re_business" }).configured).toBe( true, ); }); });