Harmonize use of uri in MockMvc
Closes gh-32915
This commit is contained in:
@@ -88,7 +88,7 @@ public class MockHttpServletRequestBuilder
|
||||
|
||||
private final HttpMethod method;
|
||||
|
||||
private final URI url;
|
||||
private final URI uri;
|
||||
|
||||
private String contextPath = "";
|
||||
|
||||
@@ -146,18 +146,18 @@ public class MockHttpServletRequestBuilder
|
||||
* the {@code MockHttpServletRequest} can be plugged in via
|
||||
* {@link #with(RequestPostProcessor)}.
|
||||
* @param httpMethod the HTTP method (GET, POST, etc.)
|
||||
* @param url a URL template; the resulting URL will be encoded
|
||||
* @param vars zero or more URI variables
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
MockHttpServletRequestBuilder(HttpMethod httpMethod, String url, Object... vars) {
|
||||
this(httpMethod, initUri(url, vars));
|
||||
MockHttpServletRequestBuilder(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
|
||||
this(httpMethod, initUri(uriTemplate, uriVariables));
|
||||
}
|
||||
|
||||
private static URI initUri(String url, Object[] vars) {
|
||||
Assert.notNull(url, "'url' must not be null");
|
||||
Assert.isTrue(url.isEmpty() || url.startsWith("/") || url.startsWith("http://") || url.startsWith("https://"),
|
||||
() -> "'url' should start with a path or be a complete HTTP URL: " + url);
|
||||
String uriString = (url.isEmpty() ? "/" : url);
|
||||
private static URI initUri(String uri, Object[] vars) {
|
||||
Assert.notNull(uri, "'uri' must not be null");
|
||||
Assert.isTrue(uri.isEmpty() || uri.startsWith("/") || uri.startsWith("http://") || uri.startsWith("https://"),
|
||||
() -> "'uri' should start with a path or be a complete HTTP URI: " + uri);
|
||||
String uriString = (uri.isEmpty() ? "/" : uri);
|
||||
return UriComponentsBuilder.fromUriString(uriString).buildAndExpand(vars).encode().toUri();
|
||||
}
|
||||
|
||||
@@ -165,14 +165,14 @@ public class MockHttpServletRequestBuilder
|
||||
* Alternative to {@link #MockHttpServletRequestBuilder(HttpMethod, String, Object...)}
|
||||
* with a pre-built URI.
|
||||
* @param httpMethod the HTTP method (GET, POST, etc.)
|
||||
* @param url the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
MockHttpServletRequestBuilder(HttpMethod httpMethod, URI url) {
|
||||
MockHttpServletRequestBuilder(HttpMethod httpMethod, URI uri) {
|
||||
Assert.notNull(httpMethod, "'httpMethod' is required");
|
||||
Assert.notNull(url, "'url' is required");
|
||||
Assert.notNull(uri, "'uri' is required");
|
||||
this.method = httpMethod;
|
||||
this.url = url;
|
||||
this.uri = uri;
|
||||
}
|
||||
|
||||
|
||||
@@ -363,7 +363,7 @@ public class MockHttpServletRequestBuilder
|
||||
* also use add Servlet request parameters by specifying the query or form
|
||||
* data through one of the following:
|
||||
* <ul>
|
||||
* <li>Supply a URL with a query to {@link MockMvcRequestBuilders}.
|
||||
* <li>Supply a URI with a query to {@link MockMvcRequestBuilders}.
|
||||
* <li>Add query params via {@link #queryParam} or {@link #queryParams}.
|
||||
* <li>Provide {@link #content} with {@link #contentType}
|
||||
* {@code application/x-www-form-urlencoded}.
|
||||
@@ -708,17 +708,17 @@ public class MockHttpServletRequestBuilder
|
||||
request.setAsyncSupported(true);
|
||||
request.setMethod(this.method.name());
|
||||
|
||||
String requestUri = this.url.getRawPath();
|
||||
String requestUri = this.uri.getRawPath();
|
||||
request.setRequestURI(requestUri);
|
||||
|
||||
if (this.url.getScheme() != null) {
|
||||
request.setScheme(this.url.getScheme());
|
||||
if (this.uri.getScheme() != null) {
|
||||
request.setScheme(this.uri.getScheme());
|
||||
}
|
||||
if (this.url.getHost() != null) {
|
||||
request.setServerName(this.url.getHost());
|
||||
if (this.uri.getHost() != null) {
|
||||
request.setServerName(this.uri.getHost());
|
||||
}
|
||||
if (this.url.getPort() != -1) {
|
||||
request.setServerPort(this.url.getPort());
|
||||
if (this.uri.getPort() != -1) {
|
||||
request.setServerPort(this.uri.getPort());
|
||||
}
|
||||
|
||||
updatePathRequestProperties(request, requestUri);
|
||||
@@ -753,7 +753,7 @@ public class MockHttpServletRequestBuilder
|
||||
request.addHeader(HttpHeaders.CONTENT_LENGTH, this.content.length);
|
||||
}
|
||||
|
||||
String query = this.url.getRawQuery();
|
||||
String query = this.uri.getRawQuery();
|
||||
if (!this.queryParams.isEmpty()) {
|
||||
String str = UriComponentsBuilder.newInstance().queryParams(this.queryParams).build().encode().getQuery();
|
||||
query = StringUtils.hasLength(query) ? (query + "&" + str) : str;
|
||||
@@ -761,7 +761,7 @@ public class MockHttpServletRequestBuilder
|
||||
if (query != null) {
|
||||
request.setQueryString(query);
|
||||
}
|
||||
addRequestParams(request, UriComponentsBuilder.fromUri(this.url).build().getQueryParams());
|
||||
addRequestParams(request, UriComponentsBuilder.fromUri(this.uri).build().getQueryParams());
|
||||
|
||||
this.parameters.forEach((name, values) -> {
|
||||
for (String value : values) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -60,11 +60,11 @@ public class MockMultipartHttpServletRequestBuilder extends MockHttpServletReque
|
||||
* <p>For other ways to initialize a {@code MockMultipartHttpServletRequest},
|
||||
* see {@link #with(RequestPostProcessor)} and the
|
||||
* {@link RequestPostProcessor} extension point.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
MockMultipartHttpServletRequestBuilder(String urlTemplate, Object... uriVariables) {
|
||||
this(HttpMethod.POST, urlTemplate, uriVariables);
|
||||
MockMultipartHttpServletRequestBuilder(String uriTemplate, Object... uriVariables) {
|
||||
this(HttpMethod.POST, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,8 +72,8 @@ public class MockMultipartHttpServletRequestBuilder extends MockHttpServletReque
|
||||
* that also accepts an {@link HttpMethod}.
|
||||
* @since 5.3.22
|
||||
*/
|
||||
MockMultipartHttpServletRequestBuilder(HttpMethod httpMethod, String urlTemplate, Object... uriVariables) {
|
||||
super(httpMethod, urlTemplate, uriVariables);
|
||||
MockMultipartHttpServletRequestBuilder(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
|
||||
super(httpMethod, uriTemplate, uriVariables);
|
||||
super.contentType(MediaType.MULTIPART_FORM_DATA);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,16 +49,16 @@ public abstract class MockMvcRequestBuilders {
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a GET request.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.GET, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder get(String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.GET, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a GET request.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder get(URI uri) {
|
||||
@@ -67,16 +67,16 @@ public abstract class MockMvcRequestBuilders {
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a POST request.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder post(String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.POST, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder post(String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.POST, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a POST request.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder post(URI uri) {
|
||||
@@ -85,16 +85,16 @@ public abstract class MockMvcRequestBuilders {
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a PUT request.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder put(String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.PUT, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder put(String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.PUT, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a PUT request.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder put(URI uri) {
|
||||
@@ -103,16 +103,16 @@ public abstract class MockMvcRequestBuilders {
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a PATCH request.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder patch(String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.PATCH, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder patch(String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.PATCH, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a PATCH request.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder patch(URI uri) {
|
||||
@@ -121,16 +121,16 @@ public abstract class MockMvcRequestBuilders {
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a DELETE request.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder delete(String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a DELETE request.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder delete(URI uri) {
|
||||
@@ -139,16 +139,16 @@ public abstract class MockMvcRequestBuilders {
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for an OPTIONS request.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder options(String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder options(String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for an OPTIONS request.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder options(URI uri) {
|
||||
@@ -157,17 +157,17 @@ public abstract class MockMvcRequestBuilders {
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a HEAD request.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
* @since 4.1
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder head(String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.HEAD, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder head(String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(HttpMethod.HEAD, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a HEAD request.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.1
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder head(URI uri) {
|
||||
@@ -177,17 +177,17 @@ public abstract class MockMvcRequestBuilders {
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a request with the given HTTP method.
|
||||
* @param method the HTTP method (GET, POST, etc.)
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder request(HttpMethod method, String urlTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(method, urlTemplate, uriVariables);
|
||||
public static MockHttpServletRequestBuilder request(HttpMethod method, String uriTemplate, Object... uriVariables) {
|
||||
return new MockHttpServletRequestBuilder(method, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link MockHttpServletRequestBuilder} for a request with the given HTTP method.
|
||||
* @param httpMethod the HTTP method (GET, POST, etc.)
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.0.3
|
||||
*/
|
||||
public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, URI uri) {
|
||||
@@ -197,7 +197,7 @@ public abstract class MockMvcRequestBuilders {
|
||||
/**
|
||||
* Alternative factory method that allows for custom HTTP verbs (e.g. WebDAV).
|
||||
* @param httpMethod the HTTP method
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 4.3
|
||||
* @deprecated in favor of {@link #request(HttpMethod, URI)}
|
||||
*/
|
||||
@@ -209,29 +209,29 @@ public abstract class MockMvcRequestBuilders {
|
||||
/**
|
||||
* Create a {@link MockMultipartHttpServletRequestBuilder} for a multipart request,
|
||||
* using POST as the HTTP method.
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
* @since 5.0
|
||||
*/
|
||||
public static MockMultipartHttpServletRequestBuilder multipart(String urlTemplate, Object... uriVariables) {
|
||||
return new MockMultipartHttpServletRequestBuilder(urlTemplate, uriVariables);
|
||||
public static MockMultipartHttpServletRequestBuilder multipart(String uriTemplate, Object... uriVariables) {
|
||||
return new MockMultipartHttpServletRequestBuilder(uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Variant of {@link #multipart(String, Object...)} that also accepts an
|
||||
* {@link HttpMethod}.
|
||||
* @param httpMethod the HTTP method to use
|
||||
* @param urlTemplate a URL template; the resulting URL will be encoded
|
||||
* @param uriTemplate a URI template; the resulting URI will be encoded
|
||||
* @param uriVariables zero or more URI variables
|
||||
* @since 5.3.22
|
||||
*/
|
||||
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, String urlTemplate, Object... uriVariables) {
|
||||
return new MockMultipartHttpServletRequestBuilder(httpMethod, urlTemplate, uriVariables);
|
||||
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
|
||||
return new MockMultipartHttpServletRequestBuilder(httpMethod, uriTemplate, uriVariables);
|
||||
}
|
||||
|
||||
/**
|
||||
* Variant of {@link #multipart(String, Object...)} with a {@link URI}.
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 5.0
|
||||
*/
|
||||
public static MockMultipartHttpServletRequestBuilder multipart(URI uri) {
|
||||
@@ -242,7 +242,7 @@ public abstract class MockMvcRequestBuilders {
|
||||
* Variant of {@link #multipart(String, Object...)} with a {@link URI} and
|
||||
* an {@link HttpMethod}.
|
||||
* @param httpMethod the HTTP method to use
|
||||
* @param uri the URL
|
||||
* @param uri the URI
|
||||
* @since 5.3.21
|
||||
*/
|
||||
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, URI uri) {
|
||||
|
||||
Reference in New Issue
Block a user