1   package test.atlassian.mail;
2   
3   import com.atlassian.mail.MailFactory;
4   import com.atlassian.mail.server.MailServerManager;
5   import com.sun.mail.util.PropUtil;
6   import org.junit.Test;
7   import org.junit.runner.RunWith;
8   import org.powermock.core.classloader.annotations.PrepareForTest;
9   import org.powermock.modules.junit4.PowerMockRunner;
10  import test.mock.mail.MockMailSendingAlwaysOnSettings;
11  
12  import javax.mail.Session;
13  
14  import static org.junit.Assert.*;
15  
16  @RunWith(PowerMockRunner.class)
17  @PrepareForTest({Session.class, PropUtil.class})
18  public class TestMailFactory
19  {
20      @Test
21      public void shouldClearTheMailServerManagerReferenceWhenRefreshIsCalled() throws Exception
22      {
23          final MailServerManager initialServeManagerInstance = MailFactory.getServerManager();
24          assertNotNull(initialServeManagerInstance);
25  
26          MailFactory.refresh();
27  
28          final MailServerManager resetServerManagerInstance = MailFactory.getServerManager();
29  
30          assertNotSame(initialServeManagerInstance, resetServerManagerInstance);
31      }
32  
33      @Test
34      public void shouldRetrieveMailSettingsFromConfigurationFileGivenThatItTheSettingsClassHasBeenSpecifiedInIt()
35      {
36          assertTrue(MockMailSendingAlwaysOnSettings.class.equals(MailFactory.getSettings().getClass()));
37      }
38  }