@ -166,6 +166,21 @@ public class HttpSessionRequestCacheTests {
@@ -166,6 +166,21 @@ public class HttpSessionRequestCacheTests {
verify ( request , never ( ) ) . getParameterMap ( ) ;
}
// gh-16656
@Test
public void getMatchingRequestWhenMatchingRequestPathContainsPercentSignThenLookedUp ( ) {
MockHttpServletRequest request = new MockHttpServletRequest ( ) ;
request . setServletPath ( "/30 % off" ) ;
HttpSessionRequestCache cache = new HttpSessionRequestCache ( ) ;
cache . saveRequest ( request , new MockHttpServletResponse ( ) ) ;
MockHttpServletRequest requestToMatch = new MockHttpServletRequest ( ) ;
requestToMatch . setServletPath ( "/30 % off" ) ;
requestToMatch . setQueryString ( "continue" ) ;
requestToMatch . setSession ( request . getSession ( ) ) ;
HttpServletRequest matchingRequest = cache . getMatchingRequest ( requestToMatch , new MockHttpServletResponse ( ) ) ;
assertThat ( matchingRequest ) . isNotNull ( ) ;
}
private static final class CustomSavedRequest implements SavedRequest {
private final SavedRequest delegate ;