1 package test.atlassian.mail.server.util;
2
3 import com.atlassian.mail.Email;
4 import com.atlassian.mail.MailException;
5 import com.atlassian.mail.server.impl.util.MessageCreator;
6 import com.sun.mail.util.PropUtil;
7 import org.junit.Before;
8 import org.junit.Test;
9 import org.junit.runner.RunWith;
10 import org.mockito.Mock;
11 import org.powermock.api.mockito.PowerMockito;
12 import org.powermock.core.classloader.annotations.PrepareForTest;
13 import org.powermock.modules.junit4.PowerMockRunner;
14
15 import javax.mail.MessagingException;
16 import javax.mail.NoSuchProviderException;
17 import javax.mail.Session;
18 import javax.mail.internet.InternetAddress;
19 import javax.mail.internet.MimeMessage;
20
21 import java.io.UnsupportedEncodingException;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Mockito.mock;
25 import static org.mockito.Mockito.when;
26
27 @RunWith(PowerMockRunner.class)
28 @PrepareForTest({Session.class, PropUtil.class})
29 public class TestMessageCreator
30 {
31 private Session mockSession;
32
33 @Before
34 public void setupMockSessionAndTransport() throws NoSuchProviderException {
35 mockSession = PowerMockito.mock(Session.class);
36 PowerMockito.mockStatic(PropUtil.class);
37 when(PropUtil.getBooleanSessionProperty(mockSession, "mail.mime.address.strict", true)).thenReturn(false);
38 }
39
40 MimeMessage message = new MimeMessage(mockSession);
41 MessageCreator messageCreator = new MessageCreator();
42
43 @Test
44 public void testDefaultFromContainsPersonalName() throws MessagingException, UnsupportedEncodingException, MailException
45 {
46 _testFromName("Default Personal Name <from@example.com>", null, "Default Personal Name", "from@example.com");
47 }
48
49 @Test
50 public void testFromNameOverriddenByDefaultFromName() throws MessagingException, UnsupportedEncodingException, MailException
51 {
52 _testFromName("Default Personal Name <from@example.com>", "Personal From Name", "Default Personal Name", "from@example.com");
53 }
54
55 private void _testFromName(String defaultFrom, String fromName, String expectedPersonalName, String expectedFromAddress) throws MessagingException, UnsupportedEncodingException, MailException
56 {
57 Email email = new Email("to@example.com");
58 if (fromName != null)
59 email.setFromName(fromName);
60
61 messageCreator.updateMimeMessage(email, defaultFrom, "[EMAIL]",message);
62 InternetAddress fromAddress = (InternetAddress) message.getFrom()[0];
63
64 assertEquals(expectedFromAddress, fromAddress.getAddress());
65 assertEquals(expectedPersonalName, fromAddress.getPersonal());
66 }
67
68 }