package cn.org.rapid_framework.web.filter; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import junit.framework.TestCase; import org.springframework.mock.web.MockFilterChain; import org.springframework.mock.web.MockFilterConfig; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; public class RestUrlRewriteFilterTest extends TestCase { RestUrlRewriteFilter filter = new RestUrlRewriteFilter(); MockFilterChain chain = new MockFilterChain(); RestMockHttpServletRequest request = new RestMockHttpServletRequest(); MockHttpServletResponse response = new MockHttpServletResponse(); MockFilterConfig config = new MockFilterConfig(); public void setUp() throws ServletException { config.addInitParameter("debug", "true"); filter.init(config); } public void testPrifix() throws ServletException, IOException { config.addInitParameter("prefix", "/foo/"); filter.init(config); request.setRequestURI("/user.css"); filter.doFilter(request, response, new MockFilterChain()); assertEquals("/foo//user.css",request.rewritePath); } public void testRewriteURL() throws ServletException, IOException { request.setRequestURI("/user.css"); filter.doFilter(request, response, new MockFilterChain()); assertEquals("/static/user.css",request.rewritePath); config.addInitParameter("excludeExtentions", "foo"); filter.init(config); assertEquals("/static/user.css",request.rewritePath); } public void testExcludeExtensions() throws ServletException, IOException { request.setRequestURI("/user.jsp"); filter.doFilter(request, response, new MockFilterChain()); assertEquals(null,request.rewritePath); request.setRequestURI("/user.jspx"); filter.doFilter(request, response, new MockFilterChain()); assertEquals(null,request.rewritePath); request.setRequestURI("/user.do"); filter.doFilter(request, response, new MockFilterChain()); assertEquals(null,request.rewritePath); request.setRequestURI("/user"); filter.doFilter(request, response, new MockFilterChain()); assertEquals(null,request.rewritePath); config.addInitParameter("excludeExtentions", "foo"); filter.init(config); request.setRequestURI("/user.foo"); filter.doFilter(request, response, new MockFilterChain()); assertEquals(null,request.rewritePath); } public void testExcludePrefixs() throws ServletException, IOException { config.addInitParameter("excludePrefixes", "/scripts,/images"); filter.init(config); request.setRequestURI("/scripts/foo.js"); filter.doFilter(request, response, new MockFilterChain()); assertEquals(null,request.rewritePath); request.setRequestURI("/images/foo.gif"); filter.doFilter(request, response, new MockFilterChain()); assertEquals(null,request.rewritePath); request.setRequestURI("/foo.gif"); filter.doFilter(request, response, new MockFilterChain()); assertEquals("/static/foo.gif",request.rewritePath); } class RestMockHttpServletRequest extends MockHttpServletRequest{ public String rewritePath; public RequestDispatcher getRequestDispatcher(String path) { this.rewritePath = path; return super.getRequestDispatcher(path); } }; }