3232
3333import static org .assertj .core .api .Assertions .assertThat ;
3434import static org .mockito .ArgumentMatchers .anyBoolean ;
35- import static org .mockito .Mockito . mock ;
35+ import static org .mockito .ArgumentMatchers . anyString ;
3636import static org .mockito .Mockito .never ;
37+ import static org .mockito .Mockito .spy ;
3738import static org .mockito .Mockito .verify ;
3839
3940/**
@@ -100,7 +101,7 @@ public void testCustomSessionAttrName() {
100101 public void getMatchingRequestWhenMatchingRequestParameterNameSetThenSessionNotAccessed () {
101102 HttpSessionRequestCache cache = new HttpSessionRequestCache ();
102103 cache .setMatchingRequestParameterName ("success" );
103- HttpServletRequest request = mock ( HttpServletRequest . class );
104+ HttpServletRequest request = spy ( new MockHttpServletRequest () );
104105 HttpServletRequest matchingRequest = cache .getMatchingRequest (request , new MockHttpServletResponse ());
105106 assertThat (matchingRequest ).isNull ();
106107 verify (request , never ()).getSession ();
@@ -115,7 +116,6 @@ public void getMatchingRequestWhenMatchingRequestParameterNameSetAndParameterExi
115116 cache .saveRequest (request , new MockHttpServletResponse ());
116117 MockHttpServletRequest requestToMatch = new MockHttpServletRequest ();
117118 requestToMatch .setQueryString ("success" ); // gh-12665
118- requestToMatch .setParameter ("success" , "" );
119119 requestToMatch .setSession (request .getSession ());
120120 HttpServletRequest matchingRequest = cache .getMatchingRequest (requestToMatch , new MockHttpServletResponse ());
121121 assertThat (matchingRequest ).isNotNull ();
@@ -131,7 +131,6 @@ public void getMatchingRequestWhenMatchingRequestParameterNameSetAndParameterExi
131131 cache .saveRequest (request , new MockHttpServletResponse ());
132132 MockHttpServletRequest requestToMatch = new MockHttpServletRequest ();
133133 requestToMatch .setQueryString ("param=true&success" );
134- requestToMatch .setParameter ("success" , "" );
135134 requestToMatch .setSession (request .getSession ());
136135 HttpServletRequest matchingRequest = cache .getMatchingRequest (requestToMatch , new MockHttpServletResponse ());
137136 assertThat (matchingRequest ).isNotNull ();
@@ -146,13 +145,28 @@ public void getMatchingRequestWhenMatchesThenRemoved() {
146145 assertThat (request .getSession ().getAttribute (HttpSessionRequestCache .SAVED_REQUEST )).isNotNull ();
147146 MockHttpServletRequest requestToMatch = new MockHttpServletRequest ();
148147 requestToMatch .setQueryString ("success" );
149- requestToMatch .setParameter ("success" , "" );
150148 requestToMatch .setSession (request .getSession ());
151149 HttpServletRequest matchingRequest = cache .getMatchingRequest (requestToMatch , new MockHttpServletResponse ());
152150 assertThat (matchingRequest ).isNotNull ();
153151 assertThat (request .getSession ().getAttribute (HttpSessionRequestCache .SAVED_REQUEST )).isNull ();
154152 }
155153
154+ // gh-13731
155+ @ Test
156+ public void getMatchingRequestWhenMatchingRequestParameterNameSetThenDoesNotInvokeGetParameterMethods () {
157+ HttpSessionRequestCache cache = new HttpSessionRequestCache ();
158+ cache .setMatchingRequestParameterName ("success" );
159+ MockHttpServletRequest mockRequest = new MockHttpServletRequest ();
160+ mockRequest .setQueryString ("success" );
161+ HttpServletRequest request = spy (mockRequest );
162+ HttpServletRequest matchingRequest = cache .getMatchingRequest (request , new MockHttpServletResponse ());
163+ assertThat (matchingRequest ).isNull ();
164+ verify (request , never ()).getParameter (anyString ());
165+ verify (request , never ()).getParameterValues (anyString ());
166+ verify (request , never ()).getParameterNames ();
167+ verify (request , never ()).getParameterMap ();
168+ }
169+
156170 private static final class CustomSavedRequest implements SavedRequest {
157171
158172 private final SavedRequest delegate ;
0 commit comments