001: /*
002: * Copyright 2004, 2005, 2006 Odysseus Software GmbH
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package de.odysseus.calyxo.control.impl;
017:
018: import java.io.IOException;
019: import java.util.HashMap;
020: import java.util.Map;
021:
022: import javax.servlet.ServletContext;
023: import javax.servlet.ServletException;
024:
025: import de.odysseus.calyxo.base.I18nSupport;
026: import de.odysseus.calyxo.base.conf.ConfigException;
027: import de.odysseus.calyxo.base.test.TestRequest;
028: import de.odysseus.calyxo.base.test.TestResponse;
029: import de.odysseus.calyxo.base.test.TestServletConfig;
030: import de.odysseus.calyxo.base.test.TestServletContext;
031: import de.odysseus.calyxo.base.test.TestSession;
032: import de.odysseus.calyxo.base.access.AccessSupport;
033: import de.odysseus.calyxo.control.base.ControlModuleContext;
034: import de.odysseus.calyxo.control.base.ControlModuleGroup;
035: import de.odysseus.calyxo.control.base.ControlModuleMapping;
036: import de.odysseus.calyxo.control.impl.DefaultModule;
037:
038: import junit.framework.TestCase;
039:
040: /**
041: *
042: * @author Christoph Beck
043: */
044: public class DefaultModuleTest extends TestCase {
045:
046: /**
047: * Constructor for ModuleTest.
048: * @param arg0
049: */
050: public DefaultModuleTest(String arg0) {
051: super (arg0);
052: }
053:
054: private DefaultModule createModule(ServletContext context,
055: String name, String pattern, Map params)
056: throws ConfigException, ServletException {
057: TestServletConfig config = new TestServletConfig(name, context,
058: params);
059: DefaultModule module = new DefaultModule();
060: module.init(new ControlModuleContext(config,
061: new ControlModuleMapping(pattern), null));
062: return module;
063: }
064:
065: public void testInitDestroy() throws ConfigException,
066: ServletException {
067: HashMap params = new HashMap();
068: params
069: .put("config",
070: "/de/odysseus/calyxo/control/calyxo-control-config-empty.xml");
071: ServletContext context = new TestServletContext();
072: DefaultModule module = createModule(context, "module1",
073: "/module1/*", params);
074:
075: assertNotNull(I18nSupport.getInstance(module.getContext()));
076: assertNotNull(AccessSupport.getInstance(module.getContext()));
077: module.destroy();
078: assertNull(I18nSupport.getInstance(module.getContext()));
079: assertNull(AccessSupport.getInstance(module.getContext()));
080: }
081:
082: public void testProcess() throws ConfigException, ServletException,
083: IOException {
084: HashMap params = new HashMap();
085: params
086: .put("config",
087: "/de/odysseus/calyxo/control/calyxo-control-config.xml");
088: ServletContext context = new TestServletContext();
089: ControlModuleGroup group = ControlModuleGroup
090: .getInstance(context);
091: DefaultModule module1 = createModule(context, "module1",
092: "/module1/*", params);
093: DefaultModule module2 = createModule(context, "module2",
094: "/module2/*", params);
095: group.add((ControlModuleContext) module1.getContext());
096: group.add((ControlModuleContext) module2.getContext());
097: TestRequest request = new TestRequest(new TestSession(context));
098: TestResponse response = new TestResponse();
099:
100: module1.process(request, response, "/index");
101: assertEquals("/module1/index.jsp", request
102: .getRecentRequestDispatchPath());
103:
104: module2.process(request, response, "/index");
105: assertEquals("/module2/index.jsp", request
106: .getRecentRequestDispatchPath());
107:
108: module1.process(request, response, "/module2");
109: assertEquals("/module2/index", request
110: .getRecentRequestDispatchPath());
111:
112: }
113:
114: public static void main(String[] args) {
115: junit.textui.TestRunner.run(DefaultModuleTest.class);
116: }
117:
118: }
|