960a2351d2fd210ff8b9310f1ecf07352168881e
[rhynodge.git] / src / test / java / net / pterodactylus / rhynodge / actions / EmailActionTest.java
1 package net.pterodactylus.rhynodge.actions;
2
3 import static org.mockito.Matchers.any;
4 import static org.mockito.Mockito.doThrow;
5 import static org.mockito.Mockito.mock;
6 import static org.mockito.Mockito.times;
7 import static org.mockito.Mockito.verify;
8
9 import javax.mail.Address;
10 import javax.mail.Message;
11 import javax.mail.MessagingException;
12 import javax.mail.Transport;
13
14 import net.pterodactylus.rhynodge.output.DefaultOutput;
15 import net.pterodactylus.rhynodge.output.Output;
16
17 import org.junit.Test;
18
19 /**
20  * Unit test for {@link EmailAction}.
21  *
22  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
23  */
24 public class EmailActionTest {
25
26         private final Transport transport = mock(Transport.class);
27         private final String sender = "sender@sender.de";
28         private final String recipient = "recipient@recipient.de";
29         private final EmailAction emailAction = new EmailAction(transport, sender, recipient);
30         private final Output output = new DefaultOutput("Action triggered!").addText("text/plain", "Plain Text.").addText("text/html", "<p>HTML Text.</p>");
31
32         @Test
33         public void canCreateActionWithNormalConstructor() {
34                 new EmailAction("hostname", "sender", "recipient");
35         }
36
37         @Test
38         public void emailIsGeneratedCorrectly() throws MessagingException {
39                 emailAction.execute(output);
40                 verify(transport).sendMessage(any(Message.class), any(Address[].class));
41         }
42
43         @Test
44         public void exceptionWhenSendingIsSwallowed() throws MessagingException {
45                 doThrow(MessagingException.class).doNothing().when(transport).sendMessage(any(Message.class), any(Address[].class));
46                 emailAction.execute(output);
47                 emailAction.execute(output);
48                 verify(transport, times(2)).sendMessage(any(Message.class), any(Address[].class));
49         }
50
51 }