package org.geoserver.platform; import org.springframework.mock.web.MockFilterChain; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.junit.Test; import static org.junit.Assert.*; /** * * @author tw */ public class AdvancedDispatchFilterTest { public AdvancedDispatchFilterTest() { } /** * Test of destroy method, of class AdvancedDispatchFilter. */ @Test public void testPathIsNullNPE() { MockHttpServletRequest request = new MyMockRequest("GET", "/test?name=0"); request.setServerName("localhost"); MockHttpServletResponse response = new MockHttpServletResponse(); MockFilterChain filterChain = new MockFilterChain(); AdvancedDispatchFilter instance = new AdvancedDispatchFilter(); try { instance.doFilter(request, response, filterChain); } catch (Exception ex) { fail("should work"); } } /** * Need to handle a null result from getPathInfo. */ @Test public void testHandlePathInfoNull() { // Ensure null request succeeds MockHttpServletRequest mockRequest = new MyMockRequest("GET", null); mockRequest.setPathInfo(null); assertNull(mockRequest.getPathInfo()); AdvancedDispatchFilter.AdvancedDispatchHttpRequest advRequest = new AdvancedDispatchFilter.AdvancedDispatchHttpRequest(mockRequest); assertNull(advRequest.getPathInfo()); // Ensure non-null servlet path is handled advRequest.servletPath = "/bar"; mockRequest.setPathInfo("/bar/foo"); assertEquals("/bar/foo", mockRequest.getPathInfo()); assertEquals("/foo", advRequest.getPathInfo()); // Ensure non-null request succeeds mockRequest.setPathInfo("/foo"); assertEquals("/foo", mockRequest.getPathInfo()); assertEquals("/foo", advRequest.getPathInfo()); } /** * Necessary due to special filtering out delegates with * name MockHttpServletRequest. */ class MyMockRequest extends MockHttpServletRequest { public MyMockRequest(String method, String requestURI) { super(method, requestURI); } } }