Project

General

Profile

Download (3.3 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2021 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.api.service;
10

    
11
import static org.junit.Assert.assertEquals;
12
import static org.junit.Assert.assertNotNull;
13
import static org.junit.Assert.assertTrue;
14

    
15
import java.io.FileNotFoundException;
16
import java.util.Objects;
17

    
18
import javax.mail.MessagingException;
19
import javax.mail.internet.MimeMessage;
20

    
21
import org.junit.Test;
22
import org.springframework.core.env.Environment;
23
import org.springframework.mail.SimpleMailMessage;
24
import org.springframework.mail.javamail.JavaMailSender;
25
import org.subethamail.wiser.Wiser;
26
import org.subethamail.wiser.WiserMessage;
27
import org.unitils.spring.annotation.SpringBeanByType;
28

    
29
import eu.etaxonomy.cdm.api.config.SendEmailConfigurer;
30
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
31

    
32

    
33
public class EmailSendTest extends CdmIntegrationTest {
34

    
35

    
36
    private static final String SUBJECT = "eu.etaxonomy.cdm.test.function.EmailSendTest";
37

    
38
    private static final String TO = "a.kohlbecker@bgbm.org";
39

    
40
    @SpringBeanByType
41
    private JavaMailSender emailSender;
42

    
43
    @SpringBeanByType
44
    private Environment env;
45

    
46
    @Test
47
    public void sendEmailTest() {
48

    
49
        boolean disabled = false;
50
        try {
51
            disabled = Boolean.valueOf(env.getProperty(SendEmailConfigurer.DISABLED));
52
        } catch (Exception e) {
53
            // ignore all
54
        }
55

    
56
        if(disabled) {
57
            logger.warn("sendEmailTest is disabled");
58
            return;
59
        }
60

    
61
        String from = env.getProperty(SendEmailConfigurer.FROM_ADDRESS);
62
        assertNotNull(from);
63
        assertTrue(from.contains("@"));
64

    
65
        boolean useWiser = Objects.equals(env.getProperty(SendEmailConfigurer.INT_TEST_SERVER), "wiser");
66
        Wiser wiser = null;
67
        if(useWiser) {
68
            // start test smtp server
69
            wiser = new Wiser();
70
            wiser.setPort(2500); // better use random port
71
            wiser.start();
72
        }
73

    
74
        if(!disabled) {
75

    
76
            SimpleMailMessage message = new SimpleMailMessage();
77
            message.setFrom(from);
78
            message.setTo(TO);
79
            message.setSubject(SUBJECT);
80
            message.setText("This is a test email send from the cdmlib intergration test suite");
81
            emailSender.send(message);
82
        }
83

    
84
        if(useWiser) {
85
            for (WiserMessage message : wiser.getMessages())
86
            {
87
                String envelopeSender = message.getEnvelopeSender();
88
                String envelopeReceiver = message.getEnvelopeReceiver();
89
                String subject = null;
90

    
91
                assertEquals(from, envelopeSender);
92
                assertEquals(TO, envelopeReceiver);
93
                try {
94
                    MimeMessage mess = message.getMimeMessage();
95
                    subject  = mess.getSubject();
96
                } catch (MessagingException e) {
97
                    logger.error("MessagingException", e);
98
                }
99
                assertEquals(SUBJECT, subject);
100
            }
101
            wiser.stop();
102
        }
103

    
104
    }
105

    
106
    @Override
107
    public void createTestDataSet() throws FileNotFoundException {
108
        // no data needed
109
    }
110

    
111
}
(7-7/37)