package org.pentaho.platform.web.http.filters; import org.junit.Test; import org.springframework.mock.web.MockFilterChain; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import static org.junit.Assert.*; /** * Created by nbaker on 4/8/14. */ public class PentahoPathDecodingFilterTest { @Test public void testDoFilter() throws Exception { PentahoPathDecodingFilter decodingFilter = new PentahoPathDecodingFilter(); final MockHttpServletRequest request = new MockHttpServletRequest( "GET", "http://localhost:8080/pentaho/encoded%255Cpath" ); request.setPathInfo( "/pentaho/encoded%5Cpath" ); decodingFilter.doFilter( request, new MockHttpServletResponse(), new MockFilterChain() { @Override public void doFilter( ServletRequest request, ServletResponse response ) { //pathInfo is to be fully decoded assertEquals( "/pentaho/encoded\\path", ( (HttpServletRequest) request ).getPathInfo() ); //requestURI is not decoded assertEquals( "http://localhost:8080/pentaho/encoded%5Cpath", ( (HttpServletRequest) request ).getRequestURI() ); } } ); } }