import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; vi.mock('@/lib/nodemailer', () => ({ transporter: { sendMail: vi.fn(), }, })); import { transporter } from '@/lib/nodemailer'; import { sendPasswordResetEmail } from '@/lib/nodemailer/reset-password'; describe('sendPasswordResetEmail', () => { const originalEnv = { ...process.env }; const sendMailMock = vi.mocked(transporter.sendMail); beforeEach(() => { process.env = { ...originalEnv, NODEMAILER_EMAIL: 'sender@example.com', NODEMAILER_PASSWORD: 'secret', }; sendMailMock.mockReset(); sendMailMock.mockResolvedValue({ messageId: 'msg-123' } as never); }); afterEach(() => { process.env = { ...originalEnv }; }); it('escapes interpolated values before building the HTML email', async () => { await sendPasswordResetEmail({ email: 'user@example.com', name: '', resetUrl: 'https://example.com/reset-password?token=a b&next=