KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openi > web > controller > admin > DatasourceFormControllerTest


1 /*********************************************************************************
2  * The contents of this file are subject to the OpenI Public License Version 1.0
3  * ("License"); You may not use this file except in compliance with the
4  * License. You may obtain a copy of the License at
5  * http://www.openi.org/docs/LICENSE.txt
6  *
7  * Software distributed under the License is distributed on an "AS IS" basis,
8  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
9  * the specific language governing rights and limitations under the License.
10  *
11  * The Original Code is: OpenI Open Source
12  *
13  * The Initial Developer of the Original Code is Loyalty Matrix, Inc.
14  * Portions created by Loyalty Matrix, Inc. are
15  * Copyright (C) 2005 Loyalty Matrix, Inc.; All Rights Reserved.
16  *
17  * Contributor(s): ______________________________________.
18  *
19  ********************************************************************************/

20 package org.openi.web.controller.admin;
21
22 import junit.framework.TestCase;
23 import org.apache.log4j.Logger;
24 import org.openi.analysis.Datasource;
25 import org.openi.application.Application;
26 import org.openi.project.Project;
27 import org.openi.project.ProjectContext;
28 import org.openi.test.Util;
29 import org.openi.xml.*;
30 import org.springframework.context.ApplicationContext;
31 import org.springframework.context.support.FileSystemXmlApplicationContext;
32 import org.springframework.mock.web.*;
33 import org.springframework.validation.BindException;
34 import org.springframework.web.servlet.ModelAndView;
35 import java.io.IOException JavaDoc;
36 import java.util.Iterator JavaDoc;
37 import java.util.Map JavaDoc;
38 import javax.servlet.ServletException JavaDoc;
39 import javax.servlet.http.HttpServletRequest JavaDoc;
40 import javax.servlet.http.HttpServletResponse JavaDoc;
41
42
43 /**
44  * @author Dipendra Pokhrel <br>
45  * @version $Revision: 1.4 $ $Date: 2006/04/12 00:39:12 $ <br>
46  *
47  * Test case for new datasource form controller.
48  *
49  */

50 public class DatasourceFormControllerTest extends TestCase {
51     private static Logger logger = Logger.getLogger(DatasourceFormControllerTest.class);
52     public static final String JavaDoc TEST_PROJECT_NAME = "project.xml";
53     private ApplicationContext appContext;
54     private DatasourceFormController ds;
55     private MockHttpServletRequest request;
56     private HttpServletResponse JavaDoc response;
57     private ModelAndView mv;
58     private Application application;
59     private Project project;
60     private BeanStorage beanStorage;
61     private ProjectContext projectContext;
62
63     /**
64      *
65      * @param arg0 String
66      */

67     public DatasourceFormControllerTest(String JavaDoc arg0) {
68         super(arg0);
69     }
70
71     /**
72      *
73      * @throws IOException
74      */

75     public void setUp() throws Exception JavaDoc {
76         String JavaDoc dirName = Util.findTestDirectory() + "/"
77             + (this.getClass().getPackage().getName()).replace('.', '/');
78
79         appContext = new FileSystemXmlApplicationContext(dirName
80                 + "/../WEB-INF/springapp-servlet.xml");
81
82         ds = (DatasourceFormController) appContext.getBean(
83                 "datasourceFormController");
84
85         request = new MockHttpServletRequest("POST", "/datasource.htm");
86
87         response = new MockHttpServletResponse();
88
89         beanStorage = new BeanStorage();
90
91         application = Application.getInstance();
92
93         application.setBasicAuthentication(false);
94
95         projectContext = getTestProjectContext();
96
97         request.getSession().setAttribute("projectContext", projectContext);
98     }
99
100     /**
101      * test for checking add view. Similar to clicking on add button of datasource page
102      * @throws Exception
103      */

104     public void testAddView() throws Exception JavaDoc {
105         logger.debug("testing add datasource ....");
106
107         removeRequestAttribute();
108
109         request.addParameter("action", "Add");
110
111         request.addParameter("formType", "Add");
112
113         mv = ds.handleRequest(request, new MockHttpServletResponse());
114
115         removeRequestAttribute();
116
117         assertEquals("editDatasourceView", mv.getViewName());
118
119         Map JavaDoc model = (Map JavaDoc) mv.getModel().get(ds.getCommandName());
120
121         assertNotNull(model.get("formType"));
122
123         assertEquals("Add", model.get("formType"));
124     }
125
126     /**
127      * test for checking Edit view. Similar to clicking on Edit button of datasource page
128      * @throws Exception
129      */

130     public void testEditView() throws Exception JavaDoc {
131         logger.debug("testing add datasource ....");
132
133         removeRequestAttribute();
134
135         String JavaDoc datasource = (String JavaDoc) projectContext.getProject()
136                                                    .getDataSourceMap().keySet()
137                                                    .toArray()[0];
138
139         Datasource datasrc = projectContext.getDatasource(datasource);
140
141         request.addParameter("action", "Edit");
142
143         request.addParameter("formType", "Edit");
144
145         request.addParameter("dataSource", datasource);
146
147         mv = ds.handleRequest(request, new MockHttpServletResponse());
148
149         removeRequestAttribute();
150
151         assertEquals("editDatasourceView", mv.getViewName());
152
153         Map JavaDoc model = (Map JavaDoc) mv.getModel().get(ds.getCommandName());
154
155         assertNotNull(model.get("formType"));
156
157         assertEquals(datasource, (String JavaDoc) model.get("dataSource"));
158
159         assertEquals("Edit", (String JavaDoc) model.get("formType"));
160
161         assertEquals(datasrc.getServer(), (String JavaDoc) model.get("server"));
162
163         assertEquals(datasrc.getCatalog(), (String JavaDoc) model.get("selectedCatalog"));
164     }
165
166     /**
167      * test for delete datasource functionality. This test creates new datasource
168      * 'testdatasource' and deletes this as well.
169      * Simulates delete button functionality of datasource page
170      * @throws Exception
171      */

172     public void testAddNewAndDeleteDatasource() throws Exception JavaDoc {
173         removeRequestAttribute();
174
175         AddNewDatasource();
176
177         logger.debug("Datasource added! \ndeleting 'testdatasource'...");
178
179         request.addParameter("action", "Delete");
180
181         request.addParameter("dataSource", "testdatasource");
182
183         mv = ds.handleRequest(request, new MockHttpServletResponse());
184
185         removeRequestAttribute();
186
187         assertEquals("mainDatasourceView", mv.getViewName());
188
189         Map JavaDoc model = (Map JavaDoc) mv.getModel().get(ds.getCommandName());
190
191         assertNotNull(model);
192
193         Map JavaDoc dsMap = (Map JavaDoc) model.get("datasourceMap");
194
195         assertNotNull(dsMap);
196
197         Datasource datasource = (Datasource) dsMap.get("testdatasource");
198
199         assertNull(datasource);
200
201         logger.debug("deleted 'testdatasource'");
202     }
203
204     /**
205      * test for Edit datasource functionality. This test creates new datasource
206      * 'testdatasource' and edit its field 'server' and 'catalog' as well.
207      * Simulates Edit button functionality of datasource page
208      * @throws Exception
209      */

210     public void testAddNewAndEditDatasource() throws Exception JavaDoc {
211         removeRequestAttribute();
212
213         AddNewDatasource();
214
215         logger.debug("Datasource added!");
216
217         logger.debug(
218             "Editing 'testdatasource' as server='http://127.0.0.1:80/xmla/msxisapi.dll' and catalog='FoodMart 2001'...");
219
220         request.addParameter("action", "Save");
221
222         request.addParameter("formType", "Edit");
223
224         request.addParameter("dataSource", "testdatasource");
225
226         request.addParameter("server", "http://127.0.0.1:80/xmla/msxisapi.dll");
227
228         request.addParameter("catalog", "FoodMart 2001");
229
230         mv = ds.handleRequest(request, new MockHttpServletResponse());
231
232         removeRequestAttribute();
233
234         Map JavaDoc model = (Map JavaDoc) mv.getModel().get(ds.getCommandName());
235
236         assertNotNull(model);
237
238         assertNull(model.get("errorMessage"));
239
240         Map JavaDoc dsMap = (Map JavaDoc) model.get("datasourceMap");
241
242         assertNotNull(dsMap);
243
244         Datasource datasource = (Datasource) dsMap.get("testdatasource");
245
246         assertNotNull(datasource);
247
248         assertEquals("http://127.0.0.1:80/xmla/msxisapi.dll",
249             datasource.getServer());
250
251         assertEquals("FoodMart 2001", datasource.getCatalog());
252
253         assertEquals("mainDatasourceView", mv.getViewName());
254     }
255
256     private void AddNewDatasource() throws Exception JavaDoc {
257         logger.debug("Adding new datasource entry....");
258
259         removeRequestAttribute();
260
261         logger.debug("testing entry of 'testdatasource' in config file..");
262
263         if (projectContext.getDatasource("testdatasource") != null) {
264             logger.debug(
265                 "found entry for 'testdatasource' in config file\n deleting entry..");
266
267             projectContext.getProject().getDataSourceMap()
268                           .remove("testdatasource");
269
270             projectContext.saveProject();
271         }
272
273         request.addParameter("action", "Save");
274
275         request.addParameter("formType", "Add");
276
277         logger.debug(
278             "Adding datasource 'testdatasource' as server='http://localhost:80/xmla/msxisapi.dll' and catalog='FoodMart 2000'....");
279
280         request.addParameter("dataSource", "testdatasource");
281
282         request.addParameter("server", "http://localhost:80/xmla/msxisapi.dll");
283
284         request.addParameter("catalog", "FoodMart 2000");
285
286         mv = ds.handleRequest(request, new MockHttpServletResponse());
287
288         removeRequestAttribute();
289
290         assertEquals("mainDatasourceView", mv.getViewName());
291
292         Map JavaDoc model = (Map JavaDoc) mv.getModel().get(ds.getCommandName());
293
294         assertNotNull(model);
295
296         assertNull(model.get("errorMessage"));
297
298         Map JavaDoc dsMap = (Map JavaDoc) model.get("datasourceMap");
299
300         assertNotNull(dsMap);
301
302         Datasource datasource = (Datasource) dsMap.get("testdatasource");
303
304         assertNotNull(datasource);
305
306         assertEquals("http://localhost:80/xmla/msxisapi.dll",
307             datasource.getServer());
308
309         assertEquals("FoodMart 2000", datasource.getCatalog());
310     }
311
312     private ProjectContext getTestProjectContext() throws Exception JavaDoc {
313         Project project = getTestProject();
314
315         String JavaDoc username = "mouser";
316
317         String JavaDoc baseDirectory = getTestProjectsDir();
318
319         ProjectContext context = new ProjectContext(project, baseDirectory,
320                 username);
321
322         return context;
323     }
324
325     private Project getTestProject() throws IOException JavaDoc {
326         String JavaDoc filename = getTestProjectsDir() + "/standard/"
327             + TEST_PROJECT_NAME;
328
329         project = (Project) beanStorage.restoreBeanFromFile(filename);
330
331         return project;
332     }
333
334     private String JavaDoc getTestProjectsDir() {
335         return Util.findTestDirectory() + "/projects";
336     }
337
338     private void removeRequestAttribute() throws Exception JavaDoc {
339         request = new MockHttpServletRequest("POST", "/datasource.htm");
340
341         request.getSession().setAttribute("projectContext", projectContext);
342     }
343 }
344
Popular Tags