sendAccountActivationEmail as imprted function

This commit is contained in:
Moriz Wahl 2022-01-04 18:37:59 +01:00
parent 3ef4d94aae
commit b7186209f1
3 changed files with 37 additions and 44 deletions

View File

@ -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',
)
})
})

View File

@ -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<boolean> {
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<boolean> {
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,

View File

@ -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<boolean> => {
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 }