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
11 import java.util.Collections;
12 import java.util.HashMap;
13 import java.util.List;
14 import java.util.Map;
15
16 public class TestXMLMailServerManager extends TestCase
17 {
18 public void testMailServers() throws MailException
19 {
20 XMLMailServerManager sm = new XMLMailServerManager();
21 sm.init(Collections.EMPTY_MAP);
22 assertEquals("mail-servers.xml", sm.getConfigFile());
23
24 assertEquals(0, sm.getPopMailServers().size());
25 assertEquals(1, sm.getSmtpMailServers().size());
26
27 SMTPMailServer smtpserver = sm.getDefaultSMTPMailServer();
28 assertEquals("smtptwo", smtpserver.getName());
29 assertNull(smtpserver.getHostname());
30 assertEquals("java:comp/env/Mail", smtpserver.getJndiLocation());
31 assertEquals(1, smtpserver.getId().longValue());
32 }
33
34 public void testTestMailServers() throws MailException
35 {
36 XMLMailServerManager sm = new XMLMailServerManager();
37 sm.init(toMap("config-file", "test-mail-servers.xml"));
38 assertEquals("test-mail-servers.xml", sm.getConfigFile());
39
40 assertEquals(1, sm.getPopMailServers().size());
41 PopMailServer popserver = sm.getDefaultPopMailServer();
42 assertEquals("defpop", popserver.getName());
43 assertEquals("mail.atlassian.com", popserver.getHostname());
44 assertEquals("foo", popserver.getUsername());
45 assertEquals("bar", popserver.getPassword());
46 assertEquals("The default pop server.", popserver.getDescription());
47 assertEquals(new Long(2), popserver.getId());
48 assertEquals(20000, popserver.getTimeout());
49
50 assertEquals(1, sm.getSmtpMailServers().size());
51 SMTPMailServer smtpserver = sm.getDefaultSMTPMailServer();
52 assertEquals("defsmtp", smtpserver.getName());
53 assertEquals("mail.atlassian.com", smtpserver.getHostname());
54 assertEquals("foo@atlassian.com", smtpserver.getDefaultFrom());
55 assertEquals(new Long(1), smtpserver.getId());
56 assertEquals(15000, smtpserver.getTimeout());
57 }
58
59 public void testDeleteMailServer() throws MailException
60 {
61
62 XMLMailServerManager sm = new XMLMailServerManager();
63 sm.init(toMap("config-file", "test-mail-servers.xml"));
64
65
66 List smtpMailServers = sm.getSmtpMailServers();
67 assertEquals(1, smtpMailServers.size());
68 SMTPMailServer s = (SMTPMailServer) smtpMailServers.get(0);
69 sm.delete(s.getId());
70
71 assertEquals(0, sm.getSmtpMailServers().size());
72
73
74 try
75 {
76 sm.delete(new Long(999));
77 fail();
78 }
79 catch (Exception e)
80 {
81
82 }
83 }
84
85 public void testUpdateMailServer() throws MailException
86 {
87
88 XMLMailServerManager sm = new XMLMailServerManager();
89 sm.init(toMap("config-file", "test-mail-servers.xml"));
90
91
92 List smtpMailServers = sm.getSmtpMailServers();
93 assertEquals(1, smtpMailServers.size());
94 SMTPMailServer s = (SMTPMailServer) smtpMailServers.get(0);
95
96
97 s.setDefaultFrom("dave@atlassian");
98 s.setHostname("testhostname");
99
100
101 Long id = s.getId();
102 sm.update(s);
103
104
105 SMTPMailServer updatedServer = (SMTPMailServer) sm.getMailServer(id);
106 assertEquals("dave@atlassian", updatedServer.getDefaultFrom());
107 assertEquals("testhostname", updatedServer.getHostname());
108 }
109
110 public void testIdGenerationScheme() throws MailException
111 {
112
113 XMLMailServerManager sm = new XMLMailServerManager();
114 sm.init(toMap("config-file", "test-mail-servers.xml"));
115
116
117 SMTPMailServer server1 = createSMTPMailServer("a");
118 assertEquals(3, sm.create(server1).longValue());
119
120
121 sm.delete(new Long(2));
122
123
124 SMTPMailServer server4 = createSMTPMailServer("d");
125 assertEquals(4, sm.create(server4).longValue());
126 }
127
128 private SMTPMailServer createSMTPMailServer(String name)
129 {
130 return new SMTPMailServerImpl(null, name, null, null, null, false, null, null, null);
131 }
132
133 private Map toMap(final String key, final Object value)
134 {
135 Map map = new HashMap();
136 map.put(key,value);
137 return map;
138 }
139 }