blob: c65f299ef9e0a8a82925955e96fa90cac5edc624 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (c) 2019 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************
*/
package org.eclipse.openk.gridfailureinformation.mailexport.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.icegreen.greenmail.util.GreenMail;
import com.icegreen.greenmail.util.ServerSetup;
import org.eclipse.openk.gridfailureinformation.mailexport.MailExportApplication;
import org.eclipse.openk.gridfailureinformation.mailexport.config.EmailConfig;
import org.eclipse.openk.gridfailureinformation.mailexport.config.TestConfiguration;
import org.eclipse.openk.gridfailureinformation.mailexport.dtos.MailMessageDto;
import org.eclipse.openk.gridfailureinformation.mailexport.email.GfiEmail;
import org.eclipse.openk.gridfailureinformation.mailexport.support.MockDataHelper;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
@SpringBootTest(classes = MailExportApplication.class)
@ContextConfiguration(classes = {TestConfiguration.class})
@ActiveProfiles("test")
public class EmailServiceTest {
private static GreenMail mailServer;
private static int emailTestPort;
@Qualifier("myEmailService")
@Autowired
private EmailService emailService;
@Autowired
ObjectMapper objectMapper;
@Autowired
private EmailConfig emailConfig;
@BeforeAll
public static void beforeAll() {
ServerSetup serverSetup = new ServerSetup(3025 , "localhost", ServerSetup.PROTOCOL_SMTP);
serverSetup.setServerStartupTimeout(3000);
mailServer = new GreenMail(serverSetup);
}
@BeforeEach
public void beforeTest() {
mailServer.start();
}
@AfterEach
public void afterTest() {
mailServer.stop();
}
@Test
public void testSenHtmldEmail() throws MessagingException {
MailMessageDto mailMessageDto = MockDataHelper.mockMailMessageDto();
emailService.sendMail(mailMessageDto);
MimeMessage[] receivedMessages = mailServer.getReceivedMessages();
assertEquals(1, receivedMessages.length);
}
@Test
public void testSendEmail() throws MessagingException {
MailMessageDto mailMessageDto = MockDataHelper.mockMailMessageDto();
emailConfig.setHtmlEmail(false);
emailService.sendMail(mailMessageDto);
MimeMessage[] receivedMessages = mailServer.getReceivedMessages();
assertEquals(1, receivedMessages.length);
}
@Test
public void testSendTestEmail() throws MessagingException {
MailMessageDto mailMessageDto = MockDataHelper.mockMailMessageDto();
emailConfig.setHtmlEmail(false);
emailConfig.setUseHtmlEmailTemplate(false);
emailService.sendTestMail("tester@test.de");
MimeMessage[] receivedMessages = mailServer.getReceivedMessages();
assertEquals(1, receivedMessages.length);
}
@Test
public void testSendMail_nok() {
mailServer.stop();
emailConfig.setUseHtmlEmailTemplate(false);
MailMessageDto mailMessageDto = MockDataHelper.mockMailMessageDto();
assertThrows(MessagingException.class, () -> emailService.sendMail(mailMessageDto));
}
@Test
public void testSendMail_invalidRecipient() {
MailMessageDto mailMessageDto = MockDataHelper.mockMailMessageDtoWrongRecipientFormat();
assertThrows(MessagingException.class, () -> emailService.sendMail(mailMessageDto));
}
@Test
public void testSendMail_invalidSender() {
EmailConfig emailConfig = new EmailConfig();
emailConfig.setSmtpHost("localhost");
emailConfig.setEmailPort("3025");
emailConfig.setSender("testCaseSendertest.de");
assertThrows(MessagingException.class, () -> {
GfiEmail emailManager = new GfiEmail(emailConfig);
emailManager.sendEmail();
});
}
}