import { sendEMail } from './sendEMail' import { createTransport } from 'nodemailer' import CONFIG from '@/config' import { logger } from '@test/testSetup' CONFIG.EMAIL = false CONFIG.EMAIL_SMTP_URL = 'EMAIL_SMTP_URL' CONFIG.EMAIL_SMTP_PORT = '1234' CONFIG.EMAIL_USERNAME = 'user' CONFIG.EMAIL_PASSWORD = 'pwd' jest.mock('nodemailer', () => { return { __esModule: true, createTransport: jest.fn(() => { return { sendMail: jest.fn(() => { return { messageId: 'message', } }), } }), } }) describe('sendEMail', () => { let result: boolean describe('config email is false', () => { beforeEach(async () => { jest.clearAllMocks() result = await sendEMail({ to: 'receiver@mail.org', cc: 'support@gradido.net', subject: 'Subject', text: 'Text text text', }) }) it('logs warining', () => { expect(logger.info).toBeCalledWith('Emails are disabled via config...') }) it('returns false', () => { expect(result).toBeFalsy() }) }) describe('config email is true', () => { beforeEach(async () => { jest.clearAllMocks() CONFIG.EMAIL = true result = await sendEMail({ to: 'receiver@mail.org', cc: 'support@gradido.net', subject: 'Subject', text: 'Text text text', }) }) it('calls the transporter', () => { expect(createTransport).toBeCalledWith({ host: 'EMAIL_SMTP_URL', port: 1234, secure: false, requireTLS: true, auth: { user: 'user', pass: 'pwd', }, }) }) it('calls sendMail of transporter', () => { expect((createTransport as jest.Mock).mock.results[0].value.sendMail).toBeCalledWith({ from: `Gradido (nicht antworten) <${CONFIG.EMAIL_SENDER}>`, to: 'receiver@mail.org', cc: 'support@gradido.net', subject: 'Subject', text: 'Text text text', }) }) it('returns true', () => { expect(result).toBeTruthy() }) }) describe('with email EMAIL_TEST_MODUS true', () => { beforeEach(async () => { jest.clearAllMocks() CONFIG.EMAIL = true CONFIG.EMAIL_TEST_MODUS = true result = await sendEMail({ to: 'receiver@mail.org', cc: 'support@gradido.net', subject: 'Subject', text: 'Text text text', }) }) it('calls sendMail of transporter with faked to', () => { expect((createTransport as jest.Mock).mock.results[0].value.sendMail).toBeCalledWith({ from: `Gradido (nicht antworten) <${CONFIG.EMAIL_SENDER}>`, to: CONFIG.EMAIL_TEST_RECEIVER, cc: 'support@gradido.net', subject: 'Subject', text: 'Text text text', }) }) }) })