@ -19,7 +19,6 @@ package org.springframework.test.web.servlet.request;
@@ -19,7 +19,6 @@ package org.springframework.test.web.servlet.request;
import java.io.IOException ;
import java.net.URI ;
import java.net.URISyntaxException ;
import java.nio.charset.StandardCharsets ;
import java.security.Principal ;
import java.util.ArrayList ;
import java.util.Arrays ;
@ -34,7 +33,6 @@ import jakarta.servlet.http.Cookie;
@@ -34,7 +33,6 @@ import jakarta.servlet.http.Cookie;
import org.junit.jupiter.api.Test ;
import org.springframework.http.HttpHeaders ;
import org.springframework.http.HttpMethod ;
import org.springframework.http.MediaType ;
import org.springframework.mock.web.MockHttpServletRequest ;
import org.springframework.mock.web.MockHttpSession ;
@ -46,8 +44,12 @@ import org.springframework.web.servlet.FlashMap;
@@ -46,8 +44,12 @@ import org.springframework.web.servlet.FlashMap;
import org.springframework.web.servlet.support.SessionFlashMapManager ;
import org.springframework.web.util.UriComponentsBuilder ;
import static java.nio.charset.StandardCharsets.ISO_8859_1 ;
import static java.nio.charset.StandardCharsets.UTF_8 ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException ;
import static org.springframework.http.HttpMethod.GET ;
import static org.springframework.http.HttpMethod.POST ;
/ * *
* Unit tests for building a { @link MockHttpServletRequest } with
@ -60,7 +62,7 @@ class MockHttpServletRequestBuilderTests {
@@ -60,7 +62,7 @@ class MockHttpServletRequestBuilderTests {
private final ServletContext servletContext = new MockServletContext ( ) ;
private MockHttpServletRequestBuilder builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/foo/bar" ) ;
private MockHttpServletRequestBuilder builder = new MockHttpServletRequestBuilder ( GET , "/foo/bar" ) ;
@Test
@ -73,7 +75,7 @@ class MockHttpServletRequestBuilderTests {
@@ -73,7 +75,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void uri ( ) {
String uri = "https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)" ;
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , uri ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , uri ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getScheme ( ) ) . isEqualTo ( "https" ) ;
@ -87,7 +89,7 @@ class MockHttpServletRequestBuilderTests {
@@ -87,7 +89,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void requestUriWithEncoding ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/foo bar" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/foo bar" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getRequestURI ( ) ) . isEqualTo ( "/foo%20bar" ) ;
@ -95,7 +97,7 @@ class MockHttpServletRequestBuilderTests {
@@ -95,7 +97,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-13435
void requestUriWithDoubleSlashes ( ) throws URISyntaxException {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , new URI ( "/test//currentlyValid/0" ) ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , new URI ( "/test//currentlyValid/0" ) ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getRequestURI ( ) ) . isEqualTo ( "/test//currentlyValid/0" ) ;
@ -109,7 +111,7 @@ class MockHttpServletRequestBuilderTests {
@@ -109,7 +111,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void contextPathEmpty ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/foo" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/foo" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getContextPath ( ) ) . isEqualTo ( "" ) ;
@ -119,7 +121,7 @@ class MockHttpServletRequestBuilderTests {
@@ -119,7 +121,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void contextPathServletPathEmpty ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/travel/hotels/42" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/travel/hotels/42" ) ;
this . builder . contextPath ( "/travel" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
@ -130,7 +132,7 @@ class MockHttpServletRequestBuilderTests {
@@ -130,7 +132,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void contextPathServletPath ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/travel/main/hotels/42" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/travel/main/hotels/42" ) ;
this . builder . contextPath ( "/travel" ) ;
this . builder . servletPath ( "/main" ) ;
@ -143,7 +145,7 @@ class MockHttpServletRequestBuilderTests {
@@ -143,7 +145,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void contextPathServletPathInfoEmpty ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/travel/hotels/42" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/travel/hotels/42" ) ;
this . builder . contextPath ( "/travel" ) ;
this . builder . servletPath ( "/hotels/42" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
@ -155,7 +157,7 @@ class MockHttpServletRequestBuilderTests {
@@ -155,7 +157,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void contextPathServletPathInfo ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/" ) ;
this . builder . servletPath ( "/index.html" ) ;
this . builder . pathInfo ( null ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
@ -167,7 +169,7 @@ class MockHttpServletRequestBuilderTests {
@@ -167,7 +169,7 @@ class MockHttpServletRequestBuilderTests {
@Test // gh-28823
void emptyPath ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getRequestURI ( ) ) . isEqualTo ( "" ) ;
@ -178,7 +180,7 @@ class MockHttpServletRequestBuilderTests {
@@ -178,7 +180,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-16453
void pathInfoIsDecoded ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/travel/hotels 42" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/travel/hotels 42" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getPathInfo ( ) ) . isEqualTo ( "/travel/hotels 42" ) ;
@ -208,7 +210,7 @@ class MockHttpServletRequestBuilderTests {
@@ -208,7 +210,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void requestUriAndFragment ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/foo#bar" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/foo#bar" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getRequestURI ( ) ) . isEqualTo ( "/foo" ) ;
@ -226,7 +228,7 @@ class MockHttpServletRequestBuilderTests {
@@ -226,7 +228,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void requestParameterFromQuery ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/?foo=bar&foo=baz" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/?foo=bar&foo=baz" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
Map < String , String [ ] > parameterMap = request . getParameterMap ( ) ;
@ -237,7 +239,7 @@ class MockHttpServletRequestBuilderTests {
@@ -237,7 +239,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void requestParameterFromQueryList ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/?foo[0]=bar&foo[1]=baz" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/?foo[0]=bar&foo[1]=baz" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
@ -248,7 +250,7 @@ class MockHttpServletRequestBuilderTests {
@@ -248,7 +250,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void queryParameter ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/" ) ;
this . builder . queryParam ( "foo" , "bar" ) ;
this . builder . queryParam ( "foo" , "baz" ) ;
@ -260,7 +262,7 @@ class MockHttpServletRequestBuilderTests {
@@ -260,7 +262,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void queryParameterMap ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/" ) ;
MultiValueMap < String , String > queryParams = new LinkedMultiValueMap < > ( ) ;
List < String > values = new ArrayList < > ( ) ;
values . add ( "bar" ) ;
@ -276,7 +278,7 @@ class MockHttpServletRequestBuilderTests {
@@ -276,7 +278,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void queryParameterList ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/" ) ;
this . builder . queryParam ( "foo[0]" , "bar" ) ;
this . builder . queryParam ( "foo[1]" , "baz" ) ;
@ -289,7 +291,7 @@ class MockHttpServletRequestBuilderTests {
@@ -289,7 +291,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void requestParameterFromQueryWithEncoding ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/?foo={value}" , "bar=baz" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/?foo={value}" , "bar=baz" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
@ -299,7 +301,7 @@ class MockHttpServletRequestBuilderTests {
@@ -299,7 +301,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-11043
void requestParameterFromQueryNull ( ) {
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . GET , "/?foo" ) ;
this . builder = new MockHttpServletRequestBuilder ( GET , "/?foo" ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
Map < String , String [ ] > parameterMap = request . getParameterMap ( ) ;
@ -313,7 +315,7 @@ class MockHttpServletRequestBuilderTests {
@@ -313,7 +315,7 @@ class MockHttpServletRequestBuilderTests {
MultiValueMap < String , String > params = new LinkedMultiValueMap < > ( ) ;
params . add ( "foo" , "bar" ) ;
params . add ( "foo" , "baz" ) ;
this . builder = new MockHttpServletRequestBuilder ( HttpMethod . POST , "/foo" ) ;
this . builder = new MockHttpServletRequestBuilder ( POST , "/foo" ) ;
this . builder . params ( params ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
@ -326,8 +328,8 @@ class MockHttpServletRequestBuilderTests {
@@ -326,8 +328,8 @@ class MockHttpServletRequestBuilderTests {
String contentType = "application/x-www-form-urlencoded;charset=UTF-8" ;
String body = "name+1=value+1&name+2=value+A&name+2=value+B&name+3" ;
MockHttpServletRequest request = new MockHttpServletRequestBuilder ( HttpMethod . POST , "/foo" )
. contentType ( contentType ) . content ( body . getBytes ( StandardCharsets . UTF_8 ) )
MockHttpServletRequest request = new MockHttpServletRequestBuilder ( POST , "/foo" )
. contentType ( contentType ) . content ( body . getBytes ( UTF_8 ) )
. buildRequest ( this . servletContext ) ;
assertThat ( request . getParameterMap ( ) . get ( "name 1" ) ) . containsExactly ( "value 1" ) ;
@ -414,7 +416,7 @@ class MockHttpServletRequestBuilderTests {
@@ -414,7 +416,7 @@ class MockHttpServletRequestBuilderTests {
@Test
void body ( ) throws IOException {
byte [ ] body = "Hello World" . getBytes ( StandardCharsets . UTF_8 ) ;
byte [ ] body = "Hello World" . getBytes ( UTF_8 ) ;
this . builder . content ( body ) ;
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
@ -492,9 +494,9 @@ class MockHttpServletRequestBuilderTests {
@@ -492,9 +494,9 @@ class MockHttpServletRequestBuilderTests {
MockHttpServletRequest request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getCharacterEncoding ( ) ) . isEqualTo ( encoding ) ;
this . builder . characterEncoding ( StandardCharsets . ISO_8859_1 ) ;
this . builder . characterEncoding ( ISO_8859_1 ) ;
request = this . builder . buildRequest ( this . servletContext ) ;
assertThat ( request . getCharacterEncoding ( ) ) . isEqualTo ( StandardCharsets . ISO_8859_1 . name ( ) ) ;
assertThat ( request . getCharacterEncoding ( ) ) . isEqualTo ( ISO_8859_1 . name ( ) ) ;
}
@Test
@ -563,7 +565,7 @@ class MockHttpServletRequestBuilderTests {
@@ -563,7 +565,7 @@ class MockHttpServletRequestBuilderTests {
final String EXPECTED = "override" ;
MockHttpServletRequestBuilder defaultBuilder =
new MockHttpServletRequestBuilder ( HttpMethod . GET , "/foo/bar" )
new MockHttpServletRequestBuilder ( GET , "/foo/bar" )
. with ( requestAttr ( ATTR ) . value ( "default" ) )
. with ( requestAttr ( ATTR ) . value ( EXPECTED ) ) ;