1   package test.atlassian.mail.server.managers;
2   
3   import com.atlassian.mail.server.managers.XMLMailServerManager;
4   import com.atlassian.mail.server.PopMailServer;
5   import com.atlassian.mail.server.SMTPMailServer;
6   import com.atlassian.mail.server.impl.SMTPMailServerImpl;
7   import com.atlassian.mail.MailException;
8   
9   import junit.framework.TestCase;
10  import org.ofbiz.core.util.UtilMisc;
11  
12  import java.util.Collections;
13  import java.util.List;
14  
15  public class TestXMLMailServerManager extends TestCase
16  {
17      public void testMailServers() throws MailException
18      {
19          XMLMailServerManager sm = new XMLMailServerManager();
20          sm.init(Collections.EMPTY_MAP);
21          assertEquals("mail-servers.xml", sm.getConfigFile());
22  
23          assertEquals(0, sm.getPopMailServers().size());
24          assertEquals(1, sm.getSmtpMailServers().size());
25  
26          SMTPMailServer smtpserver = sm.getDefaultSMTPMailServer();
27          assertEquals("smtptwo", smtpserver.getName());
28          assertNull(smtpserver.getHostname());
29          assertEquals("java:comp/env/Mail", smtpserver.getJndiLocation());
30          assertEquals(1, smtpserver.getId().longValue());
31      }
32  
33      public void testTestMailServers() throws MailException
34      {
35          XMLMailServerManager sm = new XMLMailServerManager();
36          sm.init(UtilMisc.toMap("config-file", "test-mail-servers.xml"));
37          assertEquals("test-mail-servers.xml", sm.getConfigFile());
38  
39          assertEquals(1, sm.getPopMailServers().size());
40          PopMailServer popserver = sm.getDefaultPopMailServer();
41          assertEquals("defpop", popserver.getName());
42          assertEquals("mail.atlassian.com", popserver.getHostname());
43          assertEquals("foo", popserver.getUsername());
44          assertEquals("bar", popserver.getPassword());
45          assertEquals("The default pop server.", popserver.getDescription());
46          assertEquals(new Long(2), popserver.getId());
47  
48          assertEquals(1, sm.getSmtpMailServers().size());
49          SMTPMailServer smtpserver = sm.getDefaultSMTPMailServer();
50          assertEquals("defsmtp", smtpserver.getName());
51          assertEquals("mail.atlassian.com", smtpserver.getHostname());
52          assertEquals("foo@atlassian.com", smtpserver.getDefaultFrom());
53          assertEquals(new Long(1), smtpserver.getId());
54      }
55  
56      public void testDeleteMailServer() throws MailException
57      {
58          // load two servers into the manager
59          XMLMailServerManager sm = new XMLMailServerManager();
60          sm.init(UtilMisc.toMap("config-file", "test-mail-servers.xml"));
61  
62          // delete the smtp server
63          List smtpMailServers = sm.getSmtpMailServers();
64          assertEquals(1, smtpMailServers.size());
65          SMTPMailServer s = (SMTPMailServer) smtpMailServers.get(0);
66          sm.delete(s.getId());
67  
68          assertEquals(0, sm.getSmtpMailServers().size());
69  
70          // try removing a false id
71          try
72          {
73              sm.delete(new Long(999));
74              fail();
75          }
76          catch (Exception e)
77          {
78  
79          }
80      }
81  
82      public void testUpdateMailServer() throws MailException
83      {
84          // load two servers into the manager
85          XMLMailServerManager sm = new XMLMailServerManager();
86          sm.init(UtilMisc.toMap("config-file", "test-mail-servers.xml"));
87  
88          // get the mail server loaded from XML
89          List smtpMailServers = sm.getSmtpMailServers();
90          assertEquals(1, smtpMailServers.size());
91          SMTPMailServer s = (SMTPMailServer) smtpMailServers.get(0);
92  
93          // update it
94          s.setDefaultFrom("dave@atlassian");
95          s.setHostname("testhostname");
96  
97          // update it in XMLMailServerManager
98          Long id = s.getId();
99          sm.update(s);
100 
101         // get it back from the XMLMailServerManager and check for changed attributes
102         SMTPMailServer updatedServer = (SMTPMailServer) sm.getMailServer(id);
103         assertEquals("dave@atlassian", updatedServer.getDefaultFrom());
104         assertEquals("testhostname", updatedServer.getHostname());
105     }
106 
107     public void testIdGenerationScheme() throws MailException
108     {
109         // load 2 servers from XML
110         XMLMailServerManager sm = new XMLMailServerManager();
111         sm.init(UtilMisc.toMap("config-file", "test-mail-servers.xml"));
112 
113         // create a 3rd server
114         SMTPMailServer server1 = createSMTPMailServer("a");
115         assertEquals(3, sm.create(server1).longValue());
116 
117         // delete server 2
118         sm.delete(new Long(2));
119 
120         // create a 4th server
121         SMTPMailServer server4 = createSMTPMailServer("d");
122         assertEquals(4, sm.create(server4).longValue());
123     }
124 
125     private SMTPMailServer createSMTPMailServer(String name)
126     {
127         return new SMTPMailServerImpl(null, name, null, null, null, false, null, null, null);
128     }
129 }