diff --git a/org.springframework.testsuite/src/test/java/org/springframework/web/multipart/MockMultipartHttpServletRequestTests.java b/org.springframework.test/src/test/java/org/springframework/web/multipart/MockMultipartHttpServletRequestTests.java similarity index 100% rename from org.springframework.testsuite/src/test/java/org/springframework/web/multipart/MockMultipartHttpServletRequestTests.java rename to org.springframework.test/src/test/java/org/springframework/web/multipart/MockMultipartHttpServletRequestTests.java diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/mock/web/MockFilterConfig.java b/org.springframework.web.servlet/src/test/java/org/springframework/mock/web/MockFilterConfig.java new file mode 100644 index 0000000000..69d50dacad --- /dev/null +++ b/org.springframework.web.servlet/src/test/java/org/springframework/mock/web/MockFilterConfig.java @@ -0,0 +1,106 @@ +/* + * Copyright 2002-2008 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.mock.web; + +import java.util.Enumeration; +import java.util.Properties; +import java.util.Collections; +import java.util.Map; +import java.util.LinkedHashMap; + +import javax.servlet.FilterConfig; +import javax.servlet.ServletContext; + +import org.springframework.util.Assert; + +/** + * Mock implementation of the {@link javax.servlet.FilterConfig} interface. + * + *

Used for testing the web framework; also usefol for testing + * custom {@link javax.servlet.Filter} implementations. + * + * @author Juergen Hoeller + * @since 1.0.2 + * @see MockFilterChain + * @see PassThroughFilterChain + */ +public class MockFilterConfig implements FilterConfig { + + private final ServletContext servletContext; + + private final String filterName; + + private final Map initParameters = new LinkedHashMap(); + + + /** + * Create a new MockFilterConfig with a default {@link MockServletContext}. + */ + public MockFilterConfig() { + this(null, ""); + } + + /** + * Create a new MockFilterConfig with a default {@link MockServletContext}. + * @param filterName the name of the filter + */ + public MockFilterConfig(String filterName) { + this(null, filterName); + } + + /** + * Create a new MockFilterConfig. + * @param servletContext the ServletContext that the servlet runs in + */ + public MockFilterConfig(ServletContext servletContext) { + this(servletContext, ""); + } + + /** + * Create a new MockFilterConfig. + * @param servletContext the ServletContext that the servlet runs in + * @param filterName the name of the filter + */ + public MockFilterConfig(ServletContext servletContext, String filterName) { + this.servletContext = (servletContext != null ? servletContext : new MockServletContext()); + this.filterName = filterName; + } + + + public String getFilterName() { + return filterName; + } + + public ServletContext getServletContext() { + return servletContext; + } + + public void addInitParameter(String name, String value) { + Assert.notNull(name, "Parameter name must not be null"); + this.initParameters.put(name, value); + } + + public String getInitParameter(String name) { + Assert.notNull(name, "Parameter name must not be null"); + return this.initParameters.get(name); + } + + public Enumeration getInitParameterNames() { + return Collections.enumeration(this.initParameters.keySet()); + } + +} diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/mock/web/PassThroughFilterChain.java b/org.springframework.web.servlet/src/test/java/org/springframework/mock/web/PassThroughFilterChain.java new file mode 100644 index 0000000000..9fe173b8ad --- /dev/null +++ b/org.springframework.web.servlet/src/test/java/org/springframework/mock/web/PassThroughFilterChain.java @@ -0,0 +1,86 @@ +/* + * Copyright 2002-2007 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.mock.web; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.Servlet; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.springframework.util.Assert; + +/** + * Implementation of the {@link javax.servlet.FilterConfig} interface which + * simply passes the call through to a given Filter/FilterChain combo + * (indicating the next Filter in the chain along with the FilterChain that it is + * supposed to work on) or to a given Servlet (indicating the end of the chain). + * + * @author Juergen Hoeller + * @since 2.0.3 + * @see javax.servlet.Filter + * @see javax.servlet.Servlet + * @see MockFilterChain + */ +public class PassThroughFilterChain implements FilterChain { + + private Filter filter; + + private FilterChain nextFilterChain; + + private Servlet servlet; + + + /** + * Create a new PassThroughFilterChain that delegates to the given Filter, + * calling it with the given FilterChain. + * @param filter the Filter to delegate to + * @param nextFilterChain the FilterChain to use for that next Filter + */ + public PassThroughFilterChain(Filter filter, FilterChain nextFilterChain) { + Assert.notNull(filter, "Filter must not be null"); + Assert.notNull(nextFilterChain, "'FilterChain must not be null"); + this.filter = filter; + this.nextFilterChain = nextFilterChain; + } + + /** + * Create a new PassThroughFilterChain that delegates to the given Servlet. + * @param servlet the Servlet to delegate to + */ + public PassThroughFilterChain(Servlet servlet) { + Assert.notNull(servlet, "Servlet must not be null"); + this.servlet = servlet; + } + + + /** + * Pass the call on to the Filter/Servlet. + */ + public void doFilter(ServletRequest request, ServletResponse response) throws ServletException, IOException { + if (this.filter != null) { + this.filter.doFilter(request, response, this.nextFilterChain); + } + else { + this.servlet.service(request, response); + } + } + +} diff --git a/org.springframework.testsuite/src/test/java/org/springframework/web/bind/ServletRequestDataBinderTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/bind/ServletRequestDataBinderTests.java similarity index 100% rename from org.springframework.testsuite/src/test/java/org/springframework/web/bind/ServletRequestDataBinderTests.java rename to org.springframework.web.servlet/src/test/java/org/springframework/web/bind/ServletRequestDataBinderTests.java diff --git a/org.springframework.testsuite/src/test/java/org/springframework/web/bind/ServletRequestUtilsTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/bind/ServletRequestUtilsTests.java similarity index 98% rename from org.springframework.testsuite/src/test/java/org/springframework/web/bind/ServletRequestUtilsTests.java rename to org.springframework.web.servlet/src/test/java/org/springframework/web/bind/ServletRequestUtilsTests.java index 7f18e0ffcf..095be26363 100644 --- a/org.springframework.testsuite/src/test/java/org/springframework/web/bind/ServletRequestUtilsTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/bind/ServletRequestUtilsTests.java @@ -16,17 +16,20 @@ package org.springframework.web.bind; -import junit.framework.TestCase; +import static org.junit.Assert.*; +import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.util.StopWatch; /** * @author Juergen Hoeller + * @author Chris Beams * @since 06.08.2003 */ -public class ServletRequestUtilsTests extends TestCase { +public class ServletRequestUtilsTests { + @Test public void testIntParameter() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param1", "5"); @@ -65,6 +68,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testIntParameters() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param", new String[] {"1", "2", "3"}); @@ -89,6 +93,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testLongParameter() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param1", "5"); @@ -127,6 +132,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testLongParameters() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.setParameter("param", new String[] {"1", "2", "3"}); @@ -167,6 +173,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testFloatParameter() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param1", "5.5"); @@ -205,6 +212,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testFloatParameters() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param", new String[] {"1.5", "2.5", "3"}); @@ -229,6 +237,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testDoubleParameter() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param1", "5.5"); @@ -267,6 +276,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testDoubleParameters() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param", new String[] {"1.5", "2.5", "3"}); @@ -291,6 +301,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testBooleanParameter() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param1", "true"); @@ -324,6 +335,7 @@ public class ServletRequestUtilsTests extends TestCase { assertFalse(ServletRequestUtils.getRequiredBooleanParameter(request, "paramEmpty")); } + @Test public void testBooleanParameters() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param", new String[] {"true", "yes", "off", "1", "bogus"}); @@ -347,6 +359,7 @@ public class ServletRequestUtilsTests extends TestCase { } } + @Test public void testStringParameter() throws ServletRequestBindingException { MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("param1", "str"); @@ -371,6 +384,7 @@ public class ServletRequestUtilsTests extends TestCase { assertEquals("", ServletRequestUtils.getRequiredStringParameter(request, "paramEmpty")); } + @Test public void testGetIntParameterWithDefaultValueHandlingIsFastEnough() { MockHttpServletRequest request = new MockHttpServletRequest(); StopWatch sw = new StopWatch(); @@ -383,6 +397,7 @@ public class ServletRequestUtilsTests extends TestCase { assertTrue("getStringParameter took too long: " + sw.getTotalTimeMillis(), sw.getTotalTimeMillis() < 250); } + @Test public void testGetLongParameterWithDefaultValueHandlingIsFastEnough() { MockHttpServletRequest request = new MockHttpServletRequest(); StopWatch sw = new StopWatch(); @@ -395,6 +410,7 @@ public class ServletRequestUtilsTests extends TestCase { assertTrue("getStringParameter took too long: " + sw.getTotalTimeMillis(), sw.getTotalTimeMillis() < 250); } + @Test public void testGetFloatParameterWithDefaultValueHandlingIsFastEnough() { MockHttpServletRequest request = new MockHttpServletRequest(); StopWatch sw = new StopWatch(); @@ -407,6 +423,7 @@ public class ServletRequestUtilsTests extends TestCase { assertTrue("getStringParameter took too long: " + sw.getTotalTimeMillis(), sw.getTotalTimeMillis() < 250); } + @Test public void testGetDoubleParameterWithDefaultValueHandlingIsFastEnough() { MockHttpServletRequest request = new MockHttpServletRequest(); StopWatch sw = new StopWatch(); @@ -419,6 +436,7 @@ public class ServletRequestUtilsTests extends TestCase { assertTrue("getStringParameter took too long: " + sw.getTotalTimeMillis(), sw.getTotalTimeMillis() < 250); } + @Test public void testGetBooleanParameterWithDefaultValueHandlingIsFastEnough() { MockHttpServletRequest request = new MockHttpServletRequest(); StopWatch sw = new StopWatch(); @@ -431,6 +449,7 @@ public class ServletRequestUtilsTests extends TestCase { assertTrue("getStringParameter took too long: " + sw.getTotalTimeMillis(), sw.getTotalTimeMillis() < 250); } + @Test public void testGetStringParameterWithDefaultValueHandlingIsFastEnough() { MockHttpServletRequest request = new MockHttpServletRequest(); StopWatch sw = new StopWatch(); diff --git a/org.springframework.testsuite/src/test/java/org/springframework/web/multipart/commons/CommonsMultipartResolverTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/multipart/commons/CommonsMultipartResolverTests.java similarity index 100% rename from org.springframework.testsuite/src/test/java/org/springframework/web/multipart/commons/CommonsMultipartResolverTests.java rename to org.springframework.web.servlet/src/test/java/org/springframework/web/multipart/commons/CommonsMultipartResolverTests.java