From b7186209f1669bc431668761a9cc341ba2c80607 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 4 Jan 2022 18:37:59 +0100 Subject: [PATCH] sendAccountActivationEmail as imprted function --- .../src/graphql/resolver/UserResolver.test.ts | 20 +++++------ backend/src/graphql/resolver/UserResolver.ts | 34 ++----------------- backend/src/util/sendEMail.ts | 27 ++++++++++++++- 3 files changed, 37 insertions(+), 44 deletions(-) diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index d0c144e22..6944215d9 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -12,12 +12,12 @@ import { LoginUserBackup } from '@entity/LoginUserBackup' import { LoginEmailOptIn } from '@entity/LoginEmailOptIn' import { User } from '@entity/User' import CONFIG from '../../config' -import { sendEMail } from '../../util/sendEMail' +import { sendAccountActivationEmail } from '../../util/sendEMail' jest.mock('../../util/sendEMail', () => { return { __esModule: true, - sendEMail: jest.fn(), + sendAccountActivationEmail: jest.fn(), } }) @@ -62,7 +62,6 @@ describe('UserResolver', () => { let result: any let emailOptIn: string - let newUser: User beforeAll(async () => { result = await mutate({ mutation, variables }) @@ -90,7 +89,6 @@ describe('UserResolver', () => { loginEmailOptIn = await getRepository(LoginEmailOptIn) .createQueryBuilder('login_email_optin') .getMany() - newUser = user[0] emailOptIn = loginEmailOptIn[0].verificationCode.toString() }) @@ -165,14 +163,12 @@ describe('UserResolver', () => { describe('account activation email', () => { it('sends an account activation email', () => { const activationLink = CONFIG.EMAIL_LINK_VERIFICATION.replace(/\$1/g, emailOptIn) - expect(sendEMail).toBeCalledWith({ - from: `Gradido (nicht antworten) <${CONFIG.EMAIL_SENDER}>`, - to: `${newUser.firstName} ${newUser.lastName} <${newUser.email}>`, - subject: 'Gradido: E-Mail Überprüfung', - text: - expect.stringContaining(`Hallo ${newUser.firstName} ${newUser.lastName},`) && - expect.stringContaining(activationLink), - }) + expect(sendAccountActivationEmail).toBeCalledWith( + activationLink, + 'Peter', + 'Lustig', + 'peter@lustig.de', + ) }) }) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 2f98a2f6f..0d3a48ddf 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -20,7 +20,7 @@ import { UserRepository } from '../../typeorm/repository/User' import { LoginUser } from '@entity/LoginUser' import { LoginUserBackup } from '@entity/LoginUserBackup' import { LoginEmailOptIn } from '@entity/LoginEmailOptIn' -import { sendEMail } from '../../util/sendEMail' +import { sendAccountActivationEmail, sendEMail } from '../../util/sendEMail' import { LoginElopageBuysRepository } from '../../typeorm/repository/LoginElopageBuys' import { signIn } from '../../apis/KlicktippController' import { RIGHTS } from '../../auth/RIGHTS' @@ -450,12 +450,7 @@ export class UserResolver { /\$1/g, emailOptIn.verificationCode.toString(), ) - const emailSent = await this.sendAccountActivationEmail( - activationLink, - firstName, - lastName, - email, - ) + const emailSent = await sendAccountActivationEmail(activationLink, firstName, lastName, email) // In case EMails are disabled log the activation link for the user if (!emailSent) { @@ -472,29 +467,6 @@ export class UserResolver { return 'success' } - private sendAccountActivationEmail( - activationLink: string, - firstName: string, - lastName: string, - email: string, - ): Promise { - return sendEMail({ - from: `Gradido (nicht antworten) <${CONFIG.EMAIL_SENDER}>`, - to: `${firstName} ${lastName} <${email}>`, - subject: 'Gradido: E-Mail Überprüfung', - text: `Hallo ${firstName} ${lastName}, - - Deine EMail wurde soeben bei Gradido registriert. - - Klicke bitte auf diesen Link, um die Registrierung abzuschließen und dein Gradido-Konto zu aktivieren: - ${activationLink} - oder kopiere den obigen Link in dein Browserfenster. - - Mit freundlichen Grüßen, - dein Gradido-Team`, - }) - } - @Mutation(() => Boolean) async sendActivationEmail(@Arg('email') email: string): Promise { const loginUserRepository = getCustomRepository(LoginUserRepository) @@ -512,7 +484,7 @@ export class UserResolver { emailOptIn.verificationCode.toString(), ) - const emailSent = await this.sendAccountActivationEmail( + const emailSent = await sendAccountActivationEmail( activationLink, loginUser.firstName, loginUser.lastName, diff --git a/backend/src/util/sendEMail.ts b/backend/src/util/sendEMail.ts index 4c239980d..0221c001c 100644 --- a/backend/src/util/sendEMail.ts +++ b/backend/src/util/sendEMail.ts @@ -2,7 +2,7 @@ import { createTransport } from 'nodemailer' import CONFIG from '../config' -export const sendEMail = async (emailDef: { +const sendEMail = async (emailDef: { from: string to: string subject: string @@ -29,3 +29,28 @@ export const sendEMail = async (emailDef: { } return true } + +const sendAccountActivationEmail = ( + activationLink: string, + firstName: string, + lastName: string, + email: string, +): Promise => { + return sendEMail({ + from: `Gradido (nicht antworten) <${CONFIG.EMAIL_SENDER}>`, + to: `${firstName} ${lastName} <${email}>`, + subject: 'Gradido: E-Mail Überprüfung', + text: `Hallo ${firstName} ${lastName}, + + Deine EMail wurde soeben bei Gradido registriert. + + Klicke bitte auf diesen Link, um die Registrierung abzuschließen und dein Gradido-Konto zu aktivieren: + ${activationLink} + oder kopiere den obigen Link in dein Browserfenster. + + Mit freundlichen Grüßen, + dein Gradido-Team`, + }) +} + +export { sendAccountActivationEmail, sendEMail }