fix(email): test saved SMTP config and add TLS modes (#3388)

This commit is contained in:
Hampus authored and GitHub committed 2026-10-11 13:30:00 +02:00
1 parent 45b78a13c2
commit cca8227ca6
66 files changed
+2464 -319

No files matched your search

@@ -0,0 +1,28 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {SmtpEmailProvider} from '@pkgs/email/src/SmtpEmailProvider';
import {beforeEach, describe, expect, it, vi} from 'vitest';
const {createTransport} = vi.hoisted(() => ({createTransport: vi.fn()}));
vi.mock('nodemailer', () => ({default: {createTransport}}));
describe('SmtpEmailProvider', () => {
beforeEach(() => {
createTransport.mockReset();
createTransport.mockReturnValue({sendMail: vi.fn(), verify: vi.fn()});
});
it.each([
{port: 465, tlsMode: undefined, secure: true, requireTLS: false, ignoreTLS: false},
{port: 587, tlsMode: undefined, secure: false, requireTLS: true, ignoreTLS: false},
{port: 587, tlsMode: null, secure: false, requireTLS: true, ignoreTLS: false},
{port: 587, tlsMode: 'implicit', secure: true, requireTLS: false, ignoreTLS: false},
{port: 465, tlsMode: 'starttls', secure: false, requireTLS: true, ignoreTLS: false},
{port: 25, tlsMode: 'opportunistic', secure: false, requireTLS: false, ignoreTLS: false},
{port: 587, tlsMode: 'none', secure: false, requireTLS: false, ignoreTLS: true},
] as const)('maps TLS mode $tlsMode on port $port to nodemailer options', ({port, tlsMode, ...expected}) => {
new SmtpEmailProvider({host: 'smtp.example.com', port, username: 'user', password: 'pass', tlsMode});
expect(createTransport).toHaveBeenCalledWith(expect.objectContaining(expected));
});
});