struts-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tm...@apache.org
Subject svn commit: r431027 - /struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
Date Sat, 12 Aug 2006 12:49:20 GMT
Author: tmjee
Date: Sat Aug 12 05:49:20 2006
New Revision: 431027

URL: http://svn.apache.org/viewvc?rev=431027&view=rev
Log:
WW-1340
  - added test case to test for 
   a] character encoding is set into request BEFORE wrapping request
   b] character encoding is set into request BEFORE servicing action
   c] if no action mapping could be found from action mapper,
FilterDispatcher just let the filter propagate down the filter chain



Modified:
    struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java

Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java?rev=431027&r1=431026&r2=431027&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
(original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
Sat Aug 12 05:49:20 2006
@@ -17,17 +17,31 @@
  */
 package org.apache.struts2.dispatcher;
 
+import com.mockobjects.servlet.MockFilterChain;
 import com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.config.Configuration;
+import com.opensymphony.xwork2.config.ConfigurationManager;
+import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
+
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.StrutsTestCase;
 import org.apache.struts2.config.Settings;
+import org.apache.struts2.dispatcher.mapper.ActionMapper;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
 import org.apache.struts2.util.ObjectFactoryDestroyable;
 import org.apache.struts2.util.ObjectFactoryInitializable;
 import org.apache.struts2.util.ObjectFactoryLifecycle;
 import org.springframework.mock.web.MockFilterConfig;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.mock.web.MockServletContext;
 
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -115,9 +129,155 @@
         filterDispatcher.destroy();
         assertTrue(((InnerInitailizableDestroyableObjectFactory) ObjectFactory.getObjectFactory()).destroyable);
     }
+    
+    public void testIfActionMapperIsNullDontServiceAction() throws Exception {
+    	try {
+    		MockServletContext servletContext = new MockServletContext();
+    		MockFilterConfig filterConfig = new MockFilterConfig(servletContext);
+    		MockHttpServletRequest req = new MockHttpServletRequest(servletContext);
+    		MockHttpServletResponse res = new MockHttpServletResponse();
+    		MockFilterChain chain = new MockFilterChain();
+    		final NoOpDispatcher dispatcher = new NoOpDispatcher(servletContext);
+    		Dispatcher.setInstance(null);
+
+    		ConfigurationManager confManager = new ConfigurationManager();
+    		confManager.setConfiguration(new DefaultConfiguration());
+    		dispatcher.setConfigurationManager(confManager);
+    		
+    		
+    		ObjectFactory.setObjectFactory(new InnerObjectFactory());
+    		
+    		Map settings = new HashMap();
+    		settings.put(StrutsConstants.STRUTS_MAPPER_CLASS, "org.apache.struts2.dispatcher.FilterDispatcherTest$NullActionMapper");
+    		Settings.setInstance(new InnerConfiguration(settings));
+    	
+    		FilterDispatcher filter = new FilterDispatcher() {
+    			protected Dispatcher createDispatcher() {
+    				return dispatcher;
+    			}
+    		};
+    		filter.init(filterConfig);
+    		filter.doFilter(req, res, chain);
+    	
+    		assertFalse(dispatcher.serviceRequest);
+    	}
+    	finally {
+    		Settings.reset();
+    	}
+    }
+    
+    public void testCharacterEncodingSetBeforeRequestWrappingAndActionService() throws Exception
{ 
+    	try {
+    		MockServletContext servletContext = new MockServletContext();
+    		MockFilterConfig filterConfig = new MockFilterConfig(servletContext);
+    		MockHttpServletRequest req = new MockHttpServletRequest(servletContext);
+    		MockHttpServletResponse res = new MockHttpServletResponse();
+    		MockFilterChain chain = new MockFilterChain();
+    		final InnerDispatcher dispatcher = new InnerDispatcher(servletContext);
+    		Dispatcher.setInstance(null);
+
+    		ConfigurationManager confManager = new ConfigurationManager();
+    		confManager.setConfiguration(new DefaultConfiguration());
+    		dispatcher.setConfigurationManager(confManager);
+    		
+    		
+    		ObjectFactory.setObjectFactory(new InnerObjectFactory());
+    		
+    		Map settings = new HashMap();
+    		settings.put(StrutsConstants.STRUTS_I18N_ENCODING, "UTF-16_DUMMY");
+    		settings.put(StrutsConstants.STRUTS_MAPPER_CLASS, "org.apache.struts2.dispatcher.FilterDispatcherTest$InnerActionMapper");
+    		Settings.setInstance(new InnerConfiguration(settings));
+    	
+    		FilterDispatcher filter = new FilterDispatcher() {
+    			protected Dispatcher createDispatcher() {
+    				return dispatcher;
+    			}
+    		};
+    		filter.init(filterConfig);
+    		filter.doFilter(req, res, chain);
+    	
+    		assertTrue(dispatcher.wrappedRequest);
+    		assertTrue(dispatcher.serviceRequest);
+    	}
+    	finally {
+    		Settings.reset();
+    	}
+    }
 
 
     // === inner class ========
+    public static class InnerObjectFactory extends ObjectFactory {
+    	
+    }
+    
+    public static class NoOpDispatcher extends Dispatcher {
+    	protected boolean wrappedRequest = false;
+    	protected boolean serviceRequest = false;
+
+		public NoOpDispatcher(ServletContext servletContext) {
+			super(servletContext);
+		}
+
+		public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext)
throws IOException {
+			wrappedRequest = true;
+			return request;
+		}
+		
+		public void serviceAction(HttpServletRequest request, HttpServletResponse response, ServletContext
context, ActionMapping mapping) throws ServletException {
+			serviceRequest = true;
+		}
+    }
+    
+    public static class InnerDispatcher extends Dispatcher {
+    	
+    	protected boolean wrappedRequest = false;
+    	protected boolean serviceRequest = false;
+
+		public InnerDispatcher(ServletContext servletContext) {
+			super(servletContext);
+		}
+
+		public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext)
throws IOException {
+			wrappedRequest = true;
+			// if we set the chracter encoding AFTER we do wrap request, we will get
+			// a failing test
+			assertNotNull(request.getCharacterEncoding());
+			assertEquals(request.getCharacterEncoding(), "UTF-16_DUMMY");
+			
+			return request;
+		}
+		
+		public void serviceAction(HttpServletRequest request, HttpServletResponse response, ServletContext
context, ActionMapping mapping) throws ServletException {
+			serviceRequest = true;
+			// if we set the chracter encoding AFTER we do wrap request, we will get
+			// a failing test
+			assertNotNull(request.getCharacterEncoding());
+			assertEquals(request.getCharacterEncoding(), "UTF-16_DUMMY");
+		}
+    }
+    
+    public static class InnerActionMapper implements ActionMapper {
+
+		public ActionMapping getMapping(HttpServletRequest request, Configuration config) {
+			return new ActionMapping();
+		}
+
+		public String getUriFromActionMapping(ActionMapping mapping) {
+			return null;
+		}
+    }
+    
+    public static class NullActionMapper implements ActionMapper {
+    	public ActionMapping getMapping(HttpServletRequest request, Configuration config) {
+			return null;
+		}
+
+		public String getUriFromActionMapping(ActionMapping mapping) {
+			return null;
+		}
+    }
+    
+    
     public static class InnerConfiguration extends Settings {
         Map<String,String> m;
 
@@ -139,7 +299,6 @@
                 return m.get(aName);
         }
     }
-
 
     public static class InnerDestroyableObjectFactory extends ObjectFactory implements ObjectFactoryDestroyable
{
         public boolean destroyed = false;



Mime
View raw message