1   package org.melati.servlet.test;
2   
3   import java.io.PrintWriter;
4   
5   import javax.servlet.ServletConfig;
6   import javax.servlet.ServletException;
7   import javax.servlet.http.HttpServletRequest;
8   import javax.servlet.http.HttpServletResponse;
9   
10  import junit.framework.TestCase;
11  
12  /**
13   * @author timp
14   */
15  public class ConfigServletTest extends TestCase {
16  
17    /**
18     * Constructor for ConfigServletTest.
19     * @param name
20     */
21    public ConfigServletTest(String name) {
22      super(name);
23      
24    }
25  
26    /**
27     * @see TestCase#setUp()
28     */
29    protected void setUp()
30        throws Exception {
31      super.setUp();
32    }
33  
34    /**
35     * @see TestCase#tearDown()
36     */
37    protected void tearDown()
38        throws Exception {
39      super.tearDown();
40    }
41  
42    /**
43     * @see org.melati.servlet.ConfigServlet#init(ServletConfig)
44     */
45    public void testInitServletConfig() {
46  
47    }
48  
49    /**
50     * @see org.melati.servlet.ConfigServlet#doGet(HttpServletRequest, HttpServletResponse)
51     */
52    public void testDoGetHttpServletRequestHttpServletResponse() {
53      MockServletRequest mockHttpServletRequest = new MockServletRequest(); 
54      MockServletResponse mockHttpServletResponse = new MockServletResponse(); 
55                     
56      mockHttpServletRequest.setPathInfo("melatitest/user/1"); 
57  
58      MockServletConfig mockServletConfig = new MockServletConfig();
59      org.melati.test.ConfigServletTest aServlet = 
60            new org.melati.test.ConfigServletTest();
61      try {
62        aServlet.init(mockServletConfig);
63        aServlet.doGet(mockHttpServletRequest,  
64                       mockHttpServletResponse);
65      } catch (ServletException e) {
66        e.printStackTrace();
67        fail(e.toString());
68      } 
69  
70      aServlet.destroy();
71  
72      String output = mockHttpServletResponse.getWritten();
73      assertTrue(output.toString().indexOf("<h2>ConfigServlet Test</h2>") != -1); 
74    }
75  
76    /**
77     * @see org.melati.servlet.ConfigServlet#doPost(HttpServletRequest, HttpServletResponse)
78     */
79    public void testDoPostHttpServletRequestHttpServletResponse() {
80      MockServletRequest mockHttpServletRequest = new MockServletRequest(); 
81      MockServletResponse mockHttpServletResponse = new MockServletResponse(); 
82                     
83      mockHttpServletRequest.setPathInfo("melatitest/user/1"); 
84      
85      MockServletConfig mockServletConfig = new MockServletConfig();
86      org.melati.test.ConfigServletTest aServlet = 
87            new org.melati.test.ConfigServletTest();
88      try {
89        aServlet.init(mockServletConfig);
90        aServlet.doPost(mockHttpServletRequest,  
91                       mockHttpServletResponse);
92      } catch (Exception e) {
93        e.printStackTrace();
94        fail();
95      } 
96                     
97      aServlet.destroy();
98  
99      String output = mockHttpServletResponse.getWritten();
100     assertTrue(output.toString().indexOf("<h2>ConfigServlet Test</h2>") != -1); 
101 
102   }
103 
104   /**
105    * @see org.melati.servlet.ConfigServlet#error(Melati, Exception)
106    */
107   public void testError() {
108     MockServletRequest mockHttpServletRequest = new MockServletRequest(); 
109     MockServletResponse mockHttpServletResponse = new MockServletResponse(); 
110                    
111     mockHttpServletRequest.setPathInfo("melatitest/user/1"); 
112     
113     MockServletConfig mockServletConfig = new MockServletConfig();
114     ErrorConfigServlet aServlet = 
115           new ErrorConfigServlet();
116     try {
117       aServlet.init(mockServletConfig);
118       aServlet.doPost(mockHttpServletRequest,  
119                      mockHttpServletResponse);
120     } catch (Exception e) {
121       e.printStackTrace();
122       fail();
123     } 
124                    
125     aServlet.destroy();
126 
127     String output = mockHttpServletResponse.getWritten();
128     assertTrue(output.toString().indexOf("You need the capability") != -1); 
129 
130 
131   }
132 
133   /**
134    * @see org.melati.servlet.ConfigServlet#error(Melati, Exception)
135    */
136   public void testConnectionPendingError() throws Exception {
137     MockServletRequest mockHttpServletRequest = new MockServletRequest(); 
138     MockServletResponse mockHttpServletResponse = new MockServletResponse(); 
139                    
140     mockHttpServletRequest.setPathInfo("melatitest/user/1"); 
141     
142     MockServletConfig mockServletConfig = new MockServletConfig();
143     DbPendingErrorConfigServlet aServlet = 
144           new DbPendingErrorConfigServlet();
145     aServlet.init(mockServletConfig);
146     aServlet.doPost(mockHttpServletRequest,  
147                    mockHttpServletResponse);
148     aServlet.destroy();
149                    
150     String output = mockHttpServletResponse.getWritten();
151     assertTrue(output.toString().indexOf("The database `testdb' is in the process of being initialized") != -1); 
152 
153   }
154   
155   /**
156    * Test expection thrown during initialisation.
157    */
158   public void testExceptionDuringInit() throws Exception {
159     MockServletResponse response = new MockServletResponse();
160     MockServletRequest request = new MockServletRequest();
161     MockServletConfig mockServletConfig = new MockServletConfig();
162     MelatiConfigExceptionConfigServlet aServlet = 
163       new MelatiConfigExceptionConfigServlet();
164     try {
165       aServlet.init(mockServletConfig);
166       aServlet.doPost(request,  
167                      response);
168       fail("Should have blown up");
169     } catch (ServletException e) {
170       assertEquals("org.melati.util.ConfigException: Pretend bug", e.getMessage());
171     }
172     aServlet.destroy();
173   }
174   
175 
176   /**
177    * @see org.melati.servlet.ConfigServlet#writeError(PrintWriter, Exception)
178    */
179   public void testWriteError() {
180 
181   }
182 
183   /**
184    * @see org.melati.servlet.ConfigServlet#writeConnectionPendingException(PrintWriter, Exception)
185    */
186   public void testWriteConnectionPendingException() {
187 
188   }
189 
190   /**
191    * @see org.melati.servlet.ConfigServlet#getSysAdminName()
192    */
193   public void testGetSysAdminName() {
194     MockServletRequest mockHttpServletRequest = new MockServletRequest(); 
195     MockServletResponse mockHttpServletResponse = new MockServletResponse(); 
196                    
197     mockHttpServletRequest.setPathInfo("melatitest/user/1"); 
198            
199     MockServletConfig mockServletConfig = new MockServletConfig();
200 
201     org.melati.test.ConfigServletTest aServlet = 
202           new org.melati.test.ConfigServletTest();
203     try {
204       aServlet.init(mockServletConfig);
205       assertEquals("nobody", aServlet.getSysAdminName());
206       aServlet.doPost(mockHttpServletRequest,  
207           mockHttpServletResponse);
208       aServlet.destroy();               
209     } catch (Exception e) {
210       e.printStackTrace();
211       fail();
212     } 
213   }
214 
215   /**
216    * @see org.melati.servlet.ConfigServlet#getSysAdminEmail()
217    */
218   public void testGetSysAdminEmail() {
219     MockServletRequest mockHttpServletRequest = new MockServletRequest(); 
220     MockServletResponse mockHttpServletResponse = new MockServletResponse(); 
221 
222     mockHttpServletRequest.setPathInfo("melatitest/user/1"); 
223 
224     MockServletConfig mockServletConfig = new MockServletConfig();
225 
226     org.melati.test.ConfigServletTest aServlet = 
227           new org.melati.test.ConfigServletTest();
228     try {
229       aServlet.init(mockServletConfig);
230       assertEquals("nobody@nobody.com", aServlet.getSysAdminEmail());
231       aServlet.doPost(mockHttpServletRequest,  
232           mockHttpServletResponse);
233       aServlet.destroy();               
234     } catch (Exception e) {
235       e.printStackTrace();
236       fail();
237     } 
238   }
239 
240 }