import { describe, it, expect } from "vitest"; import { envSchema } from "./env"; describe("envSchema", () => { it("should allow missing MAIL_HOST in development", () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: "http://localhost:3000", TARGET: "development", }); expect(result.success).toBe(true); }); it("should require MAIL_HOST in production", () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: "https://example.com", TARGET: "production", }); expect(result.success).toBe(false); if (!result.success) { expect(result.error.issues[0].message).toBe( "MAIL_HOST is required in non-development environments", ); } }); it("should require MAIL_HOST in testing", () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: "https://testing.example.com", TARGET: "testing", }); expect(result.success).toBe(false); if (!result.success) { expect(result.error.issues[0].message).toBe( "MAIL_HOST is required in non-development environments", ); } }); it("should require MAIL_HOST in staging", () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: "https://staging.example.com", TARGET: "staging", }); expect(result.success).toBe(false); if (!result.success) { expect(result.error.issues[0].message).toBe( "MAIL_HOST is required in non-development environments", ); } }); it("should pass if MAIL_HOST is provided in production", () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: "https://example.com", TARGET: "production", MAIL_HOST: "smtp.example.com", }); expect(result.success).toBe(true); }); it("should skip MAIL_HOST requirement if SKIP_RUNTIME_ENV_VALIDATION is true", () => { process.env.SKIP_RUNTIME_ENV_VALIDATION = "true"; const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: "https://example.com", TARGET: "production", }); expect(result.success).toBe(true); delete process.env.SKIP_RUNTIME_ENV_VALIDATION; }); });