Simplify Mock[Multipart]HttpServletRequestBuilder

This commit simplifies the package private constructors on those two
builders now that the URI can be specified by dedicated builder methods.

Closes gh-33062
This commit is contained in:
Stéphane Nicoll 2024-06-18 10:10:07 +02:00
parent d76f37c90b
commit acf73404c1
5 changed files with 59 additions and 103 deletions

View File

@ -16,12 +16,9 @@
package org.springframework.test.web.servlet.request; package org.springframework.test.web.servlet.request;
import java.net.URI;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MockMvc;
import org.springframework.util.Assert;
/** /**
* Default builder for {@link MockHttpServletRequest} required as input to * Default builder for {@link MockHttpServletRequest} required as input to
@ -51,25 +48,9 @@ public class MockHttpServletRequestBuilder
* the {@code MockHttpServletRequest} can be plugged in via * the {@code MockHttpServletRequest} can be plugged in via
* {@link #with(RequestPostProcessor)}. * {@link #with(RequestPostProcessor)}.
* @param httpMethod the HTTP method (GET, POST, etc.) * @param httpMethod the HTTP method (GET, POST, etc.)
* @param uriTemplate a URI template; the resulting URI will be encoded
* @param uriVariables zero or more URI variables
*/ */
MockHttpServletRequestBuilder(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) { MockHttpServletRequestBuilder(HttpMethod httpMethod) {
super(httpMethod); super(httpMethod);
super.uri(uriTemplate, uriVariables);
}
/**
* Alternative to {@link #MockHttpServletRequestBuilder(HttpMethod, String, Object...)}
* with a pre-built URI.
* @param httpMethod the HTTP method (GET, POST, etc.)
* @param uri the URI
* @since 4.0.3
*/
MockHttpServletRequestBuilder(HttpMethod httpMethod, URI uri) {
super(httpMethod);
Assert.notNull(uri, "'uri' is required");
super.uri(uri);
} }
} }

View File

@ -16,8 +16,6 @@
package org.springframework.test.web.servlet.request; package org.springframework.test.web.servlet.request;
import java.net.URI;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.mock.web.MockMultipartHttpServletRequest; import org.springframework.mock.web.MockMultipartHttpServletRequest;
@ -33,49 +31,26 @@ import org.springframework.mock.web.MockMultipartHttpServletRequest;
public class MockMultipartHttpServletRequestBuilder public class MockMultipartHttpServletRequestBuilder
extends AbstractMockMultipartHttpServletRequestBuilder<MockMultipartHttpServletRequestBuilder> { extends AbstractMockMultipartHttpServletRequestBuilder<MockMultipartHttpServletRequestBuilder> {
/** /**
* Package-private constructor. Use static factory methods in * Package-private constructor. Use static factory methods in
* {@link MockMvcRequestBuilders}. * {@link MockMvcRequestBuilders}.
* <p>For other ways to initialize a {@code MockMultipartHttpServletRequest}, * <p>For other ways to initialize a {@code MockMultipartHttpServletRequest},
* see {@link #with(RequestPostProcessor)} and the * see {@link #with(RequestPostProcessor)} and the
* {@link RequestPostProcessor} extension point. * {@link RequestPostProcessor} extension point.
* @param uriTemplate a URI template; the resulting URI will be encoded * @param httpMethod the HTTP method (GET, POST, etc.)
* @param uriVariables zero or more URI variables
*/ */
MockMultipartHttpServletRequestBuilder(String uriTemplate, Object... uriVariables) { MockMultipartHttpServletRequestBuilder(HttpMethod httpMethod) {
this(HttpMethod.POST, uriTemplate, uriVariables);
}
/**
* Variant of {@link #MockMultipartHttpServletRequestBuilder(String, Object...)}
* that also accepts an {@link HttpMethod}.
* @since 5.3.22
*/
MockMultipartHttpServletRequestBuilder(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
super(httpMethod); super(httpMethod);
super.uri(uriTemplate, uriVariables);
super.contentType(MediaType.MULTIPART_FORM_DATA); super.contentType(MediaType.MULTIPART_FORM_DATA);
} }
/** /**
* Variant of {@link #MockMultipartHttpServletRequestBuilder(String, Object...)} * Variant of {@link #MockMultipartHttpServletRequestBuilder(HttpMethod)}
* with a {@link URI}. * that defaults to {@link HttpMethod#POST}.
* @since 4.0.3
*/ */
MockMultipartHttpServletRequestBuilder(URI uri) { MockMultipartHttpServletRequestBuilder() {
this(HttpMethod.POST, uri); this(HttpMethod.POST);
} }
/**
* Variant of {@link #MockMultipartHttpServletRequestBuilder(String, Object...)}
* with a {@link URI} and an {@link HttpMethod}.
* @since 5.3.21
*/
MockMultipartHttpServletRequestBuilder(HttpMethod httpMethod, URI uri) {
super(httpMethod);
super.uri(uri);
super.contentType(MediaType.MULTIPART_FORM_DATA);
}
} }

View File

@ -53,7 +53,7 @@ public abstract class MockMvcRequestBuilders {
* @param uriVariables zero or more URI variables * @param uriVariables zero or more URI variables
*/ */
public static MockHttpServletRequestBuilder get(String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder get(String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(HttpMethod.GET, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(HttpMethod.GET).uri(uriTemplate, uriVariables);
} }
/** /**
@ -62,7 +62,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.0.3 * @since 4.0.3
*/ */
public static MockHttpServletRequestBuilder get(URI uri) { public static MockHttpServletRequestBuilder get(URI uri) {
return new MockHttpServletRequestBuilder(HttpMethod.GET, uri); return new MockHttpServletRequestBuilder(HttpMethod.GET).uri(uri);
} }
/** /**
@ -71,7 +71,7 @@ public abstract class MockMvcRequestBuilders {
* @param uriVariables zero or more URI variables * @param uriVariables zero or more URI variables
*/ */
public static MockHttpServletRequestBuilder post(String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder post(String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(HttpMethod.POST, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(HttpMethod.POST).uri(uriTemplate, uriVariables);
} }
/** /**
@ -80,7 +80,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.0.3 * @since 4.0.3
*/ */
public static MockHttpServletRequestBuilder post(URI uri) { public static MockHttpServletRequestBuilder post(URI uri) {
return new MockHttpServletRequestBuilder(HttpMethod.POST, uri); return new MockHttpServletRequestBuilder(HttpMethod.POST).uri(uri);
} }
/** /**
@ -89,7 +89,7 @@ public abstract class MockMvcRequestBuilders {
* @param uriVariables zero or more URI variables * @param uriVariables zero or more URI variables
*/ */
public static MockHttpServletRequestBuilder put(String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder put(String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(HttpMethod.PUT, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(HttpMethod.PUT).uri(uriTemplate, uriVariables);
} }
/** /**
@ -98,7 +98,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.0.3 * @since 4.0.3
*/ */
public static MockHttpServletRequestBuilder put(URI uri) { public static MockHttpServletRequestBuilder put(URI uri) {
return new MockHttpServletRequestBuilder(HttpMethod.PUT, uri); return new MockHttpServletRequestBuilder(HttpMethod.PUT).uri(uri);
} }
/** /**
@ -107,7 +107,7 @@ public abstract class MockMvcRequestBuilders {
* @param uriVariables zero or more URI variables * @param uriVariables zero or more URI variables
*/ */
public static MockHttpServletRequestBuilder patch(String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder patch(String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(HttpMethod.PATCH, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(HttpMethod.PATCH).uri(uriTemplate, uriVariables);
} }
/** /**
@ -116,7 +116,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.0.3 * @since 4.0.3
*/ */
public static MockHttpServletRequestBuilder patch(URI uri) { public static MockHttpServletRequestBuilder patch(URI uri) {
return new MockHttpServletRequestBuilder(HttpMethod.PATCH, uri); return new MockHttpServletRequestBuilder(HttpMethod.PATCH).uri(uri);
} }
/** /**
@ -125,7 +125,7 @@ public abstract class MockMvcRequestBuilders {
* @param uriVariables zero or more URI variables * @param uriVariables zero or more URI variables
*/ */
public static MockHttpServletRequestBuilder delete(String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder delete(String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(HttpMethod.DELETE).uri(uriTemplate, uriVariables);
} }
/** /**
@ -134,7 +134,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.0.3 * @since 4.0.3
*/ */
public static MockHttpServletRequestBuilder delete(URI uri) { public static MockHttpServletRequestBuilder delete(URI uri) {
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, uri); return new MockHttpServletRequestBuilder(HttpMethod.DELETE).uri(uri);
} }
/** /**
@ -143,7 +143,7 @@ public abstract class MockMvcRequestBuilders {
* @param uriVariables zero or more URI variables * @param uriVariables zero or more URI variables
*/ */
public static MockHttpServletRequestBuilder options(String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder options(String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS).uri(uriTemplate, uriVariables);
} }
/** /**
@ -152,7 +152,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.0.3 * @since 4.0.3
*/ */
public static MockHttpServletRequestBuilder options(URI uri) { public static MockHttpServletRequestBuilder options(URI uri) {
return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS, uri); return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS).uri(uri);
} }
/** /**
@ -162,7 +162,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.1 * @since 4.1
*/ */
public static MockHttpServletRequestBuilder head(String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder head(String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(HttpMethod.HEAD, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(HttpMethod.HEAD).uri(uriTemplate, uriVariables);
} }
/** /**
@ -171,7 +171,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.1 * @since 4.1
*/ */
public static MockHttpServletRequestBuilder head(URI uri) { public static MockHttpServletRequestBuilder head(URI uri) {
return new MockHttpServletRequestBuilder(HttpMethod.HEAD, uri); return new MockHttpServletRequestBuilder(HttpMethod.HEAD).uri(uri);
} }
/** /**
@ -181,7 +181,7 @@ public abstract class MockMvcRequestBuilders {
* @param uriVariables zero or more URI variables * @param uriVariables zero or more URI variables
*/ */
public static MockHttpServletRequestBuilder request(HttpMethod method, String uriTemplate, Object... uriVariables) { public static MockHttpServletRequestBuilder request(HttpMethod method, String uriTemplate, Object... uriVariables) {
return new MockHttpServletRequestBuilder(method, uriTemplate, uriVariables); return new MockHttpServletRequestBuilder(method).uri(uriTemplate, uriVariables);
} }
/** /**
@ -191,7 +191,7 @@ public abstract class MockMvcRequestBuilders {
* @since 4.0.3 * @since 4.0.3
*/ */
public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, URI uri) { public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, URI uri) {
return new MockHttpServletRequestBuilder(httpMethod, uri); return new MockHttpServletRequestBuilder(httpMethod).uri(uri);
} }
/** /**
@ -214,7 +214,7 @@ public abstract class MockMvcRequestBuilders {
* @since 5.0 * @since 5.0
*/ */
public static MockMultipartHttpServletRequestBuilder multipart(String uriTemplate, Object... uriVariables) { public static MockMultipartHttpServletRequestBuilder multipart(String uriTemplate, Object... uriVariables) {
return new MockMultipartHttpServletRequestBuilder(uriTemplate, uriVariables); return new MockMultipartHttpServletRequestBuilder().uri(uriTemplate, uriVariables);
} }
/** /**
@ -226,7 +226,7 @@ public abstract class MockMvcRequestBuilders {
* @since 5.3.22 * @since 5.3.22
*/ */
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) { public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
return new MockMultipartHttpServletRequestBuilder(httpMethod, uriTemplate, uriVariables); return new MockMultipartHttpServletRequestBuilder(httpMethod).uri(uriTemplate, uriVariables);
} }
/** /**
@ -235,7 +235,7 @@ public abstract class MockMvcRequestBuilders {
* @since 5.0 * @since 5.0
*/ */
public static MockMultipartHttpServletRequestBuilder multipart(URI uri) { public static MockMultipartHttpServletRequestBuilder multipart(URI uri) {
return new MockMultipartHttpServletRequestBuilder(uri); return new MockMultipartHttpServletRequestBuilder().uri(uri);
} }
/** /**
@ -246,7 +246,7 @@ public abstract class MockMvcRequestBuilders {
* @since 5.3.21 * @since 5.3.21
*/ */
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, URI uri) { public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, URI uri) {
return new MockMultipartHttpServletRequestBuilder(httpMethod, uri); return new MockMultipartHttpServletRequestBuilder(httpMethod).uri(uri);
} }
/** /**

View File

@ -65,7 +65,7 @@ class MockHttpServletRequestBuilderTests {
private final ServletContext servletContext = new MockServletContext(); private final ServletContext servletContext = new MockServletContext();
private MockHttpServletRequestBuilder builder = new MockHttpServletRequestBuilder(GET, "/foo/bar"); private MockHttpServletRequestBuilder builder = new MockHttpServletRequestBuilder(GET).uri("/foo/bar");
@Test @Test
@ -78,7 +78,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void uri() { void uri() {
String uri = "https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)"; 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(GET, uri); this.builder = new MockHttpServletRequestBuilder(GET).uri(uri);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getScheme()).isEqualTo("https"); assertThat(request.getScheme()).isEqualTo("https");
@ -92,7 +92,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestUriWithEncoding() { void requestUriWithEncoding() {
this.builder = new MockHttpServletRequestBuilder(GET, "/foo bar"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/foo bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo("/foo%20bar"); assertThat(request.getRequestURI()).isEqualTo("/foo%20bar");
@ -100,7 +100,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-13435 @Test // SPR-13435
void requestUriWithDoubleSlashes() { void requestUriWithDoubleSlashes() {
this.builder = new MockHttpServletRequestBuilder(GET, URI.create("/test//currentlyValid/0")); this.builder = new MockHttpServletRequestBuilder(GET).uri(URI.create("/test//currentlyValid/0"));
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo("/test//currentlyValid/0"); assertThat(request.getRequestURI()).isEqualTo("/test//currentlyValid/0");
@ -114,7 +114,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathEmpty() { void contextPathEmpty() {
this.builder = new MockHttpServletRequestBuilder(GET, "/foo"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getContextPath()).isEqualTo(""); assertThat(request.getContextPath()).isEqualTo("");
@ -124,7 +124,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPathEmpty() { void contextPathServletPathEmpty() {
this.builder = new MockHttpServletRequestBuilder(GET, "/travel/hotels/42"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/travel/hotels/42");
this.builder.contextPath("/travel"); this.builder.contextPath("/travel");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -135,7 +135,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPath() { void contextPathServletPath() {
this.builder = new MockHttpServletRequestBuilder(GET, "/travel/main/hotels/42"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/travel/main/hotels/42");
this.builder.contextPath("/travel"); this.builder.contextPath("/travel");
this.builder.servletPath("/main"); this.builder.servletPath("/main");
@ -148,7 +148,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPathInfoEmpty() { void contextPathServletPathInfoEmpty() {
this.builder = new MockHttpServletRequestBuilder(GET, "/travel/hotels/42"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/travel/hotels/42");
this.builder.contextPath("/travel"); this.builder.contextPath("/travel");
this.builder.servletPath("/hotels/42"); this.builder.servletPath("/hotels/42");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -160,7 +160,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void contextPathServletPathInfo() { void contextPathServletPathInfo() {
this.builder = new MockHttpServletRequestBuilder(GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
this.builder.servletPath("/index.html"); this.builder.servletPath("/index.html");
this.builder.pathInfo(null); this.builder.pathInfo(null);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -172,7 +172,7 @@ class MockHttpServletRequestBuilderTests {
@Test // gh-28823, gh-29933 @Test // gh-28823, gh-29933
void emptyPath() { void emptyPath() {
this.builder = new MockHttpServletRequestBuilder(GET, ""); this.builder = new MockHttpServletRequestBuilder(GET).uri("");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo("/"); assertThat(request.getRequestURI()).isEqualTo("/");
@ -183,7 +183,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-16453 @Test // SPR-16453
void pathInfoIsDecoded() { void pathInfoIsDecoded() {
this.builder = new MockHttpServletRequestBuilder(GET, "/travel/hotels 42"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/travel/hotels 42");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getPathInfo()).isEqualTo("/travel/hotels 42"); assertThat(request.getPathInfo()).isEqualTo("/travel/hotels 42");
@ -213,7 +213,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestUriAndFragment() { void requestUriAndFragment() {
this.builder = new MockHttpServletRequestBuilder(GET, "/foo#bar"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/foo#bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getRequestURI()).isEqualTo("/foo"); assertThat(request.getRequestURI()).isEqualTo("/foo");
@ -231,7 +231,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestParameterFromQuery() { void requestParameterFromQuery() {
this.builder = new MockHttpServletRequestBuilder(GET, "/?foo=bar&foo=baz"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo=bar&foo=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
Map<String, String[]> parameterMap = request.getParameterMap(); Map<String, String[]> parameterMap = request.getParameterMap();
@ -242,7 +242,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestParameterFromQueryList() { void requestParameterFromQueryList() {
this.builder = new MockHttpServletRequestBuilder(GET, "/?foo[0]=bar&foo[1]=baz"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo[0]=bar&foo[1]=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -253,7 +253,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void queryParameter() { void queryParameter() {
this.builder = new MockHttpServletRequestBuilder(GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
this.builder.queryParam("foo", "bar"); this.builder.queryParam("foo", "bar");
this.builder.queryParam("foo", "baz"); this.builder.queryParam("foo", "baz");
@ -265,7 +265,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void queryParameterMap() { void queryParameterMap() {
this.builder = new MockHttpServletRequestBuilder(GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>(); MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<>();
List<String> values = new ArrayList<>(); List<String> values = new ArrayList<>();
values.add("bar"); values.add("bar");
@ -281,7 +281,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void queryParameterList() { void queryParameterList() {
this.builder = new MockHttpServletRequestBuilder(GET, "/"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
this.builder.queryParam("foo[0]", "bar"); this.builder.queryParam("foo[0]", "bar");
this.builder.queryParam("foo[1]", "baz"); this.builder.queryParam("foo[1]", "baz");
@ -294,7 +294,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void formField() { void formField() {
this.builder = new MockHttpServletRequestBuilder(POST, "/"); this.builder = new MockHttpServletRequestBuilder(POST).uri("/");
this.builder.formField("foo", "bar"); this.builder.formField("foo", "bar");
this.builder.formField("foo", "baz"); this.builder.formField("foo", "baz");
@ -306,7 +306,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void formFieldMap() { void formFieldMap() {
this.builder = new MockHttpServletRequestBuilder(POST, "/"); this.builder = new MockHttpServletRequestBuilder(POST).uri("/");
MultiValueMap<String, String> formFields = new LinkedMultiValueMap<>(); MultiValueMap<String, String> formFields = new LinkedMultiValueMap<>();
List<String> values = new ArrayList<>(); List<String> values = new ArrayList<>();
values.add("bar"); values.add("bar");
@ -322,7 +322,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void formFieldsAreEncoded() { void formFieldsAreEncoded() {
MockHttpServletRequest request = new MockHttpServletRequestBuilder(POST, "/") MockHttpServletRequest request = new MockHttpServletRequestBuilder(POST).uri("/")
.formField("name 1", "value 1").formField("name 2", "value A", "value B") .formField("name 1", "value 1").formField("name 2", "value A", "value B")
.buildRequest(new MockServletContext()); .buildRequest(new MockServletContext());
assertThat(request.getParameterMap()).containsOnly( assertThat(request.getParameterMap()).containsOnly(
@ -333,7 +333,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void formFieldWithContent() { void formFieldWithContent() {
this.builder = new MockHttpServletRequestBuilder(POST, "/"); this.builder = new MockHttpServletRequestBuilder(POST).uri("/");
this.builder.content("Should not have content"); this.builder.content("Should not have content");
this.builder.formField("foo", "bar"); this.builder.formField("foo", "bar");
assertThatIllegalStateException().isThrownBy(() -> this.builder.buildRequest(this.servletContext)) assertThatIllegalStateException().isThrownBy(() -> this.builder.buildRequest(this.servletContext))
@ -342,7 +342,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void formFieldWithIncompatibleMediaType() { void formFieldWithIncompatibleMediaType() {
this.builder = new MockHttpServletRequestBuilder(POST, "/"); this.builder = new MockHttpServletRequestBuilder(POST).uri("/");
this.builder.contentType(MediaType.TEXT_PLAIN); this.builder.contentType(MediaType.TEXT_PLAIN);
this.builder.formField("foo", "bar"); this.builder.formField("foo", "bar");
assertThatIllegalStateException().isThrownBy(() -> this.builder.buildRequest(this.servletContext)) assertThatIllegalStateException().isThrownBy(() -> this.builder.buildRequest(this.servletContext))
@ -358,7 +358,7 @@ class MockHttpServletRequestBuilderTests {
@Test @Test
void requestParameterFromQueryWithEncoding() { void requestParameterFromQueryWithEncoding() {
this.builder = new MockHttpServletRequestBuilder(GET, "/?foo={value}", "bar=baz"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo={value}", "bar=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -368,7 +368,7 @@ class MockHttpServletRequestBuilderTests {
@Test // SPR-11043 @Test // SPR-11043
void requestParameterFromQueryNull() { void requestParameterFromQueryNull() {
this.builder = new MockHttpServletRequestBuilder(GET, "/?foo"); this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
Map<String, String[]> parameterMap = request.getParameterMap(); Map<String, String[]> parameterMap = request.getParameterMap();
@ -382,7 +382,7 @@ class MockHttpServletRequestBuilderTests {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("foo", "bar"); params.add("foo", "bar");
params.add("foo", "baz"); params.add("foo", "baz");
this.builder = new MockHttpServletRequestBuilder(POST, "/foo"); this.builder = new MockHttpServletRequestBuilder(POST).uri("/foo");
this.builder.params(params); this.builder.params(params);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -395,7 +395,7 @@ class MockHttpServletRequestBuilderTests {
String contentType = "application/x-www-form-urlencoded;charset=UTF-8"; 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"; String body = "name+1=value+1&name+2=value+A&name+2=value+B&name+3";
MockHttpServletRequest request = new MockHttpServletRequestBuilder(POST, "/foo") MockHttpServletRequest request = new MockHttpServletRequestBuilder(POST).uri("/foo")
.contentType(contentType).content(body.getBytes(UTF_8)) .contentType(contentType).content(body.getBytes(UTF_8))
.buildRequest(this.servletContext); .buildRequest(this.servletContext);
@ -635,7 +635,7 @@ class MockHttpServletRequestBuilderTests {
final String EXPECTED = "override"; final String EXPECTED = "override";
MockHttpServletRequestBuilder defaultBuilder = MockHttpServletRequestBuilder defaultBuilder =
new MockHttpServletRequestBuilder(GET, "/foo/bar") new MockHttpServletRequestBuilder(GET).uri("/foo/bar")
.with(requestAttr(ATTR).value("default")) .with(requestAttr(ATTR).value("default"))
.with(requestAttr(ATTR).value(EXPECTED)); .with(requestAttr(ATTR).value(EXPECTED));
@ -651,7 +651,7 @@ class MockHttpServletRequestBuilderTests {
void arbitraryMethod() { void arbitraryMethod() {
String httpMethod = "REPort"; String httpMethod = "REPort";
URI url = UriComponentsBuilder.fromPath("/foo/{bar}").buildAndExpand(42).toUri(); URI url = UriComponentsBuilder.fromPath("/foo/{bar}").buildAndExpand(42).toUri();
this.builder = new MockHttpServletRequestBuilder(HttpMethod.valueOf(httpMethod), url); this.builder = new MockHttpServletRequestBuilder(HttpMethod.valueOf(httpMethod)).uri(url);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext); MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getMethod()).isEqualTo(httpMethod); assertThat(request.getMethod()).isEqualTo(httpMethod);

View File

@ -39,7 +39,7 @@ public class MockMultipartHttpServletRequestBuilderTests {
@Test // gh-26166 @Test // gh-26166
void addFileAndParts() throws Exception { void addFileAndParts() throws Exception {
MockMultipartHttpServletRequest mockRequest = MockMultipartHttpServletRequest mockRequest =
(MockMultipartHttpServletRequest) new MockMultipartHttpServletRequestBuilder("/upload") (MockMultipartHttpServletRequest) new MockMultipartHttpServletRequestBuilder().uri("/upload")
.file(new MockMultipartFile("file", "test.txt", "text/plain", "Test".getBytes(UTF_8))) .file(new MockMultipartFile("file", "test.txt", "text/plain", "Test".getBytes(UTF_8)))
.part(new MockPart("name", "value".getBytes(UTF_8))) .part(new MockPart("name", "value".getBytes(UTF_8)))
.buildRequest(new MockServletContext()); .buildRequest(new MockServletContext());
@ -55,7 +55,7 @@ public class MockMultipartHttpServletRequestBuilderTests {
jsonPart.getHeaders().setContentType(MediaType.APPLICATION_JSON); jsonPart.getHeaders().setContentType(MediaType.APPLICATION_JSON);
MockMultipartHttpServletRequest mockRequest = MockMultipartHttpServletRequest mockRequest =
(MockMultipartHttpServletRequest) new MockMultipartHttpServletRequestBuilder("/upload") (MockMultipartHttpServletRequest) new MockMultipartHttpServletRequestBuilder().uri("/upload")
.file(new MockMultipartFile("file", "Test".getBytes(UTF_8))) .file(new MockMultipartFile("file", "Test".getBytes(UTF_8)))
.part(jsonPart) .part(jsonPart)
.buildRequest(new MockServletContext()); .buildRequest(new MockServletContext());
@ -68,9 +68,9 @@ public class MockMultipartHttpServletRequestBuilderTests {
@Test @Test
void mergeAndBuild() { void mergeAndBuild() {
MockHttpServletRequestBuilder parent = new MockHttpServletRequestBuilder(HttpMethod.GET, "/"); MockHttpServletRequestBuilder parent = new MockHttpServletRequestBuilder(HttpMethod.GET).uri("/");
parent.characterEncoding("UTF-8"); parent.characterEncoding("UTF-8");
Object result = new MockMultipartHttpServletRequestBuilder("/fileUpload").merge(parent); Object result = new MockMultipartHttpServletRequestBuilder().uri("/fileUpload").merge(parent);
assertThat(result).isNotNull(); assertThat(result).isNotNull();
assertThat(result.getClass()).isEqualTo(MockMultipartHttpServletRequestBuilder.class); assertThat(result.getClass()).isEqualTo(MockMultipartHttpServletRequestBuilder.class);