Add Mailpit email transport
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
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 <noreply@beenvoice.test>";
|
||||
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 <noreply@beenvoice.test>";
|
||||
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 <noreply@beenvoice.app>";
|
||||
delete process.env.RESEND_API_KEY;
|
||||
|
||||
expect(getEmailReadiness({ resendApiKey: "re_business" }).configured).toBe(
|
||||
true,
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user