diff --git a/backend/src/emails/sendEmailTranslated.test.ts b/backend/src/emails/sendEmailTranslated.test.ts index f35815d07..a3eb26314 100644 --- a/backend/src/emails/sendEmailTranslated.test.ts +++ b/backend/src/emails/sendEmailTranslated.test.ts @@ -78,26 +78,24 @@ describe('sendEmailTranslated', () => { }) }) - it('has "sendEmailTranslated" with result not(!) "null"', () => { - expect(result).toBeTruthy() - }) - - it('has "sendEmailTranslated" with result', () => { - expect(result).toMatchObject({ - envelope: { - from: 'info@gradido.net', - to: ['stage1@gradido.net', 'support@gradido.net'], - }, - message: expect.any(String), - originalMessage: expect.objectContaining({ - to: 'stage1@gradido.net', - cc: 'support@gradido.net', - from: 'Gradido (nicht antworten) ', - attachments: [], - subject: 'Gradido: Try To Register Again With Your Email', - html: expect.stringContaining('Gradido: Try To Register Again With Your Email'), - text: expect.stringContaining('GRADIDO: TRY TO REGISTER AGAIN WITH YOUR EMAIL'), - }), + describe('call of "sendEmailTranslated"', () => { + it('has result', () => { + expect(result).toMatchObject({ + envelope: { + from: 'info@gradido.net', + to: ['stage1@gradido.net', 'support@gradido.net'], + }, + message: expect.any(String), + originalMessage: expect.objectContaining({ + to: 'stage1@gradido.net', + cc: 'support@gradido.net', + from: 'Gradido (nicht antworten) ', + attachments: [], + subject: 'Gradido: Try To Register Again With Your Email', + html: expect.stringContaining('Gradido: Try To Register Again With Your Email'), + text: expect.stringContaining('GRADIDO: TRY TO REGISTER AGAIN WITH YOUR EMAIL'), + }), + }) }) }) diff --git a/backend/src/emails/sendEmailTranslated.ts b/backend/src/emails/sendEmailTranslated.ts index 77c668493..3fe4177f4 100644 --- a/backend/src/emails/sendEmailTranslated.ts +++ b/backend/src/emails/sendEmailTranslated.ts @@ -32,7 +32,8 @@ export const sendEmailTranslated = async (params: { logger.info(`Emails are disabled via config...`) return null } - if (CONFIG.EMAIL_TEST_MODUS) { + // because 'CONFIG.EMAIL_TEST_MODUS' can be boolean 'true' or string '`false`' + if (CONFIG.EMAIL_TEST_MODUS === true) { logger.info( `Testmodus=ON: change receiver from ${params.receiver.to} to ${CONFIG.EMAIL_TEST_RECEIVER}`, ) diff --git a/backend/src/emails/sendEmailVariants.test.ts b/backend/src/emails/sendEmailVariants.test.ts new file mode 100644 index 000000000..4ac8221a7 --- /dev/null +++ b/backend/src/emails/sendEmailVariants.test.ts @@ -0,0 +1,88 @@ +import CONFIG from '@/config' +import { sendAccountMultiRegistrationEmail } from './sendEmailVariants' +import { sendEmailTranslated } from './sendEmailTranslated' + +CONFIG.EMAIL = true +CONFIG.EMAIL_SMTP_URL = 'EMAIL_SMTP_URL' +CONFIG.EMAIL_SMTP_PORT = '1234' +CONFIG.EMAIL_USERNAME = 'user' +CONFIG.EMAIL_PASSWORD = 'pwd' + +jest.mock('./sendEmailTranslated', () => { + const originalModule = jest.requireActual('./sendEmailTranslated') + return { + __esModule: true, + sendEmailTranslated: jest.fn((a) => originalModule.sendEmailTranslated(a)), + } +}) + +describe('sendEmailVariants', () => { + let result: Record | null + + describe('sendAccountMultiRegistrationEmail', () => { + beforeAll(async () => { + result = await sendAccountMultiRegistrationEmail({ + firstName: 'Peter', + lastName: 'Lustig', + email: 'peter@lustig.de', + language: 'en', + }) + }) + + describe('calls "sendEmailTranslated"', () => { + it('with expected parameters', () => { + expect(sendEmailTranslated).toBeCalledWith({ + receiver: { + to: 'Peter Lustig ', + }, + template: 'accountMultiRegistration', + locals: { + firstName: 'Peter', + lastName: 'Lustig', + locale: 'en', + resendLink: CONFIG.EMAIL_LINK_FORGOTPASSWORD, + }, + }) + }) + + it('has expected result', () => { + expect(result).toMatchObject({ + envelope: { + from: 'info@gradido.net', + to: ['peter@lustig.de'], + }, + message: expect.any(String), + originalMessage: expect.objectContaining({ + to: 'Peter Lustig ', + from: 'Gradido (nicht antworten) ', + attachments: [], + subject: 'Gradido: Try To Register Again With Your Email', + html: + expect.stringContaining( + 'Gradido: Try To Register Again With Your Email', + ) && + expect.stringContaining('>Gradido: Try To Register Again With Your Email') && + expect.stringContaining( + 'Your email address has just been used again to register an account with Gradido.', + ) && + expect.stringContaining( + 'However, an account already exists for your email address.', + ) && + expect.stringContaining( + 'Please click on the following link if you have forgotten your password:', + ) && + expect.stringContaining( + `${CONFIG.EMAIL_LINK_FORGOTPASSWORD}`, + ) && + expect.stringContaining('or copy the link above into your browser window.') && + expect.stringContaining( + 'If you are not the one who tried to register again, please contact our support:', + ) && + expect.stringContaining('Sincerely yours,
your Gradido team'), + text: expect.stringContaining('GRADIDO: TRY TO REGISTER AGAIN WITH YOUR EMAIL'), + }), + }) + }) + }) + }) +}) diff --git a/backend/src/emails/sendEmailVariants.ts b/backend/src/emails/sendEmailVariants.ts index e9823c5bf..fb142f206 100644 --- a/backend/src/emails/sendEmailVariants.ts +++ b/backend/src/emails/sendEmailVariants.ts @@ -1,12 +1,12 @@ -import { sendEmailTranslated } from './sendEmailTranslated' import CONFIG from '@/config' +import { sendEmailTranslated } from './sendEmailTranslated' export const sendAccountMultiRegistrationEmail = (data: { firstName: string lastName: string email: string language: string -}): Promise => { +}): Promise | null> => { return sendEmailTranslated({ receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>` }, template: 'accountMultiRegistration',