Skip to content

Commit fc54cf4

Browse files
committed
Harmonize use of uri in MockMvc
Closes gh-32915
1 parent 54c07ed commit fc54cf4

File tree

4 files changed

+72
-72
lines changed

4 files changed

+72
-72
lines changed

spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java

+24-24
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public class MockHttpServletRequestBuilder
8888

8989
private final HttpMethod method;
9090

91-
private final URI url;
91+
private final URI uri;
9292

9393
private String contextPath = "";
9494

@@ -146,33 +146,33 @@ public class MockHttpServletRequestBuilder
146146
* the {@code MockHttpServletRequest} can be plugged in via
147147
* {@link #with(RequestPostProcessor)}.
148148
* @param httpMethod the HTTP method (GET, POST, etc.)
149-
* @param url a URL template; the resulting URL will be encoded
150-
* @param vars zero or more URI variables
149+
* @param uriTemplate a URI template; the resulting URI will be encoded
150+
* @param uriVariables zero or more URI variables
151151
*/
152-
MockHttpServletRequestBuilder(HttpMethod httpMethod, String url, Object... vars) {
153-
this(httpMethod, initUri(url, vars));
152+
MockHttpServletRequestBuilder(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
153+
this(httpMethod, initUri(uriTemplate, uriVariables));
154154
}
155155

156-
private static URI initUri(String url, Object[] vars) {
157-
Assert.notNull(url, "'url' must not be null");
158-
Assert.isTrue(url.isEmpty() || url.startsWith("/") || url.startsWith("http://") || url.startsWith("https://"),
159-
() -> "'url' should start with a path or be a complete HTTP URL: " + url);
160-
String uriString = (url.isEmpty() ? "/" : url);
156+
private static URI initUri(String uri, Object[] vars) {
157+
Assert.notNull(uri, "'uri' must not be null");
158+
Assert.isTrue(uri.isEmpty() || uri.startsWith("/") || uri.startsWith("http://") || uri.startsWith("https://"),
159+
() -> "'uri' should start with a path or be a complete HTTP URI: " + uri);
160+
String uriString = (uri.isEmpty() ? "/" : uri);
161161
return UriComponentsBuilder.fromUriString(uriString).buildAndExpand(vars).encode().toUri();
162162
}
163163

164164
/**
165165
* Alternative to {@link #MockHttpServletRequestBuilder(HttpMethod, String, Object...)}
166166
* with a pre-built URI.
167167
* @param httpMethod the HTTP method (GET, POST, etc.)
168-
* @param url the URL
168+
* @param uri the URI
169169
* @since 4.0.3
170170
*/
171-
MockHttpServletRequestBuilder(HttpMethod httpMethod, URI url) {
171+
MockHttpServletRequestBuilder(HttpMethod httpMethod, URI uri) {
172172
Assert.notNull(httpMethod, "'httpMethod' is required");
173-
Assert.notNull(url, "'url' is required");
173+
Assert.notNull(uri, "'uri' is required");
174174
this.method = httpMethod;
175-
this.url = url;
175+
this.uri = uri;
176176
}
177177

178178

@@ -363,7 +363,7 @@ public MockHttpServletRequestBuilder headers(HttpHeaders httpHeaders) {
363363
* also use add Servlet request parameters by specifying the query or form
364364
* data through one of the following:
365365
* <ul>
366-
* <li>Supply a URL with a query to {@link MockMvcRequestBuilders}.
366+
* <li>Supply a URI with a query to {@link MockMvcRequestBuilders}.
367367
* <li>Add query params via {@link #queryParam} or {@link #queryParams}.
368368
* <li>Provide {@link #content} with {@link #contentType}
369369
* {@code application/x-www-form-urlencoded}.
@@ -708,17 +708,17 @@ public final MockHttpServletRequest buildRequest(ServletContext servletContext)
708708
request.setAsyncSupported(true);
709709
request.setMethod(this.method.name());
710710

711-
String requestUri = this.url.getRawPath();
711+
String requestUri = this.uri.getRawPath();
712712
request.setRequestURI(requestUri);
713713

714-
if (this.url.getScheme() != null) {
715-
request.setScheme(this.url.getScheme());
714+
if (this.uri.getScheme() != null) {
715+
request.setScheme(this.uri.getScheme());
716716
}
717-
if (this.url.getHost() != null) {
718-
request.setServerName(this.url.getHost());
717+
if (this.uri.getHost() != null) {
718+
request.setServerName(this.uri.getHost());
719719
}
720-
if (this.url.getPort() != -1) {
721-
request.setServerPort(this.url.getPort());
720+
if (this.uri.getPort() != -1) {
721+
request.setServerPort(this.uri.getPort());
722722
}
723723

724724
updatePathRequestProperties(request, requestUri);
@@ -753,15 +753,15 @@ public final MockHttpServletRequest buildRequest(ServletContext servletContext)
753753
request.addHeader(HttpHeaders.CONTENT_LENGTH, this.content.length);
754754
}
755755

756-
String query = this.url.getRawQuery();
756+
String query = this.uri.getRawQuery();
757757
if (!this.queryParams.isEmpty()) {
758758
String str = UriComponentsBuilder.newInstance().queryParams(this.queryParams).build().encode().getQuery();
759759
query = StringUtils.hasLength(query) ? (query + "&" + str) : str;
760760
}
761761
if (query != null) {
762762
request.setQueryString(query);
763763
}
764-
addRequestParams(request, UriComponentsBuilder.fromUri(this.url).build().getQueryParams());
764+
addRequestParams(request, UriComponentsBuilder.fromUri(this.uri).build().getQueryParams());
765765

766766
this.parameters.forEach((name, values) -> {
767767
for (String value : values) {

spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMultipartHttpServletRequestBuilder.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -60,20 +60,20 @@ public class MockMultipartHttpServletRequestBuilder extends MockHttpServletReque
6060
* <p>For other ways to initialize a {@code MockMultipartHttpServletRequest},
6161
* see {@link #with(RequestPostProcessor)} and the
6262
* {@link RequestPostProcessor} extension point.
63-
* @param urlTemplate a URL template; the resulting URL will be encoded
63+
* @param uriTemplate a URI template; the resulting URI will be encoded
6464
* @param uriVariables zero or more URI variables
6565
*/
66-
MockMultipartHttpServletRequestBuilder(String urlTemplate, Object... uriVariables) {
67-
this(HttpMethod.POST, urlTemplate, uriVariables);
66+
MockMultipartHttpServletRequestBuilder(String uriTemplate, Object... uriVariables) {
67+
this(HttpMethod.POST, uriTemplate, uriVariables);
6868
}
6969

7070
/**
7171
* Variant of {@link #MockMultipartHttpServletRequestBuilder(String, Object...)}
7272
* that also accepts an {@link HttpMethod}.
7373
* @since 5.3.22
7474
*/
75-
MockMultipartHttpServletRequestBuilder(HttpMethod httpMethod, String urlTemplate, Object... uriVariables) {
76-
super(httpMethod, urlTemplate, uriVariables);
75+
MockMultipartHttpServletRequestBuilder(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
76+
super(httpMethod, uriTemplate, uriVariables);
7777
super.contentType(MediaType.MULTIPART_FORM_DATA);
7878
}
7979

spring-test/src/main/java/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.java

+41-41
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,16 @@ public abstract class MockMvcRequestBuilders {
4949

5050
/**
5151
* Create a {@link MockHttpServletRequestBuilder} for a GET request.
52-
* @param urlTemplate a URL template; the resulting URL will be encoded
52+
* @param uriTemplate a URI template; the resulting URI will be encoded
5353
* @param uriVariables zero or more URI variables
5454
*/
55-
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... uriVariables) {
56-
return new MockHttpServletRequestBuilder(HttpMethod.GET, urlTemplate, uriVariables);
55+
public static MockHttpServletRequestBuilder get(String uriTemplate, Object... uriVariables) {
56+
return new MockHttpServletRequestBuilder(HttpMethod.GET, uriTemplate, uriVariables);
5757
}
5858

5959
/**
6060
* Create a {@link MockHttpServletRequestBuilder} for a GET request.
61-
* @param uri the URL
61+
* @param uri the URI
6262
* @since 4.0.3
6363
*/
6464
public static MockHttpServletRequestBuilder get(URI uri) {
@@ -67,16 +67,16 @@ public static MockHttpServletRequestBuilder get(URI uri) {
6767

6868
/**
6969
* Create a {@link MockHttpServletRequestBuilder} for a POST request.
70-
* @param urlTemplate a URL template; the resulting URL will be encoded
70+
* @param uriTemplate a URI template; the resulting URI will be encoded
7171
* @param uriVariables zero or more URI variables
7272
*/
73-
public static MockHttpServletRequestBuilder post(String urlTemplate, Object... uriVariables) {
74-
return new MockHttpServletRequestBuilder(HttpMethod.POST, urlTemplate, uriVariables);
73+
public static MockHttpServletRequestBuilder post(String uriTemplate, Object... uriVariables) {
74+
return new MockHttpServletRequestBuilder(HttpMethod.POST, uriTemplate, uriVariables);
7575
}
7676

7777
/**
7878
* Create a {@link MockHttpServletRequestBuilder} for a POST request.
79-
* @param uri the URL
79+
* @param uri the URI
8080
* @since 4.0.3
8181
*/
8282
public static MockHttpServletRequestBuilder post(URI uri) {
@@ -85,16 +85,16 @@ public static MockHttpServletRequestBuilder post(URI uri) {
8585

8686
/**
8787
* Create a {@link MockHttpServletRequestBuilder} for a PUT request.
88-
* @param urlTemplate a URL template; the resulting URL will be encoded
88+
* @param uriTemplate a URI template; the resulting URI will be encoded
8989
* @param uriVariables zero or more URI variables
9090
*/
91-
public static MockHttpServletRequestBuilder put(String urlTemplate, Object... uriVariables) {
92-
return new MockHttpServletRequestBuilder(HttpMethod.PUT, urlTemplate, uriVariables);
91+
public static MockHttpServletRequestBuilder put(String uriTemplate, Object... uriVariables) {
92+
return new MockHttpServletRequestBuilder(HttpMethod.PUT, uriTemplate, uriVariables);
9393
}
9494

9595
/**
9696
* Create a {@link MockHttpServletRequestBuilder} for a PUT request.
97-
* @param uri the URL
97+
* @param uri the URI
9898
* @since 4.0.3
9999
*/
100100
public static MockHttpServletRequestBuilder put(URI uri) {
@@ -103,16 +103,16 @@ public static MockHttpServletRequestBuilder put(URI uri) {
103103

104104
/**
105105
* Create a {@link MockHttpServletRequestBuilder} for a PATCH request.
106-
* @param urlTemplate a URL template; the resulting URL will be encoded
106+
* @param uriTemplate a URI template; the resulting URI will be encoded
107107
* @param uriVariables zero or more URI variables
108108
*/
109-
public static MockHttpServletRequestBuilder patch(String urlTemplate, Object... uriVariables) {
110-
return new MockHttpServletRequestBuilder(HttpMethod.PATCH, urlTemplate, uriVariables);
109+
public static MockHttpServletRequestBuilder patch(String uriTemplate, Object... uriVariables) {
110+
return new MockHttpServletRequestBuilder(HttpMethod.PATCH, uriTemplate, uriVariables);
111111
}
112112

113113
/**
114114
* Create a {@link MockHttpServletRequestBuilder} for a PATCH request.
115-
* @param uri the URL
115+
* @param uri the URI
116116
* @since 4.0.3
117117
*/
118118
public static MockHttpServletRequestBuilder patch(URI uri) {
@@ -121,16 +121,16 @@ public static MockHttpServletRequestBuilder patch(URI uri) {
121121

122122
/**
123123
* Create a {@link MockHttpServletRequestBuilder} for a DELETE request.
124-
* @param urlTemplate a URL template; the resulting URL will be encoded
124+
* @param uriTemplate a URI template; the resulting URI will be encoded
125125
* @param uriVariables zero or more URI variables
126126
*/
127-
public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... uriVariables) {
128-
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, urlTemplate, uriVariables);
127+
public static MockHttpServletRequestBuilder delete(String uriTemplate, Object... uriVariables) {
128+
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, uriTemplate, uriVariables);
129129
}
130130

131131
/**
132132
* Create a {@link MockHttpServletRequestBuilder} for a DELETE request.
133-
* @param uri the URL
133+
* @param uri the URI
134134
* @since 4.0.3
135135
*/
136136
public static MockHttpServletRequestBuilder delete(URI uri) {
@@ -139,16 +139,16 @@ public static MockHttpServletRequestBuilder delete(URI uri) {
139139

140140
/**
141141
* Create a {@link MockHttpServletRequestBuilder} for an OPTIONS request.
142-
* @param urlTemplate a URL template; the resulting URL will be encoded
142+
* @param uriTemplate a URI template; the resulting URI will be encoded
143143
* @param uriVariables zero or more URI variables
144144
*/
145-
public static MockHttpServletRequestBuilder options(String urlTemplate, Object... uriVariables) {
146-
return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS, urlTemplate, uriVariables);
145+
public static MockHttpServletRequestBuilder options(String uriTemplate, Object... uriVariables) {
146+
return new MockHttpServletRequestBuilder(HttpMethod.OPTIONS, uriTemplate, uriVariables);
147147
}
148148

149149
/**
150150
* Create a {@link MockHttpServletRequestBuilder} for an OPTIONS request.
151-
* @param uri the URL
151+
* @param uri the URI
152152
* @since 4.0.3
153153
*/
154154
public static MockHttpServletRequestBuilder options(URI uri) {
@@ -157,17 +157,17 @@ public static MockHttpServletRequestBuilder options(URI uri) {
157157

158158
/**
159159
* Create a {@link MockHttpServletRequestBuilder} for a HEAD request.
160-
* @param urlTemplate a URL template; the resulting URL will be encoded
160+
* @param uriTemplate a URI template; the resulting URI will be encoded
161161
* @param uriVariables zero or more URI variables
162162
* @since 4.1
163163
*/
164-
public static MockHttpServletRequestBuilder head(String urlTemplate, Object... uriVariables) {
165-
return new MockHttpServletRequestBuilder(HttpMethod.HEAD, urlTemplate, uriVariables);
164+
public static MockHttpServletRequestBuilder head(String uriTemplate, Object... uriVariables) {
165+
return new MockHttpServletRequestBuilder(HttpMethod.HEAD, uriTemplate, uriVariables);
166166
}
167167

168168
/**
169169
* Create a {@link MockHttpServletRequestBuilder} for a HEAD request.
170-
* @param uri the URL
170+
* @param uri the URI
171171
* @since 4.1
172172
*/
173173
public static MockHttpServletRequestBuilder head(URI uri) {
@@ -177,17 +177,17 @@ public static MockHttpServletRequestBuilder head(URI uri) {
177177
/**
178178
* Create a {@link MockHttpServletRequestBuilder} for a request with the given HTTP method.
179179
* @param method the HTTP method (GET, POST, etc.)
180-
* @param urlTemplate a URL template; the resulting URL will be encoded
180+
* @param uriTemplate a URI template; the resulting URI will be encoded
181181
* @param uriVariables zero or more URI variables
182182
*/
183-
public static MockHttpServletRequestBuilder request(HttpMethod method, String urlTemplate, Object... uriVariables) {
184-
return new MockHttpServletRequestBuilder(method, urlTemplate, uriVariables);
183+
public static MockHttpServletRequestBuilder request(HttpMethod method, String uriTemplate, Object... uriVariables) {
184+
return new MockHttpServletRequestBuilder(method, uriTemplate, uriVariables);
185185
}
186186

187187
/**
188188
* Create a {@link MockHttpServletRequestBuilder} for a request with the given HTTP method.
189189
* @param httpMethod the HTTP method (GET, POST, etc.)
190-
* @param uri the URL
190+
* @param uri the URI
191191
* @since 4.0.3
192192
*/
193193
public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, URI uri) {
@@ -197,7 +197,7 @@ public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, URI u
197197
/**
198198
* Alternative factory method that allows for custom HTTP verbs (e.g. WebDAV).
199199
* @param httpMethod the HTTP method
200-
* @param uri the URL
200+
* @param uri the URI
201201
* @since 4.3
202202
* @deprecated in favor of {@link #request(HttpMethod, URI)}
203203
*/
@@ -209,29 +209,29 @@ public static MockHttpServletRequestBuilder request(String httpMethod, URI uri)
209209
/**
210210
* Create a {@link MockMultipartHttpServletRequestBuilder} for a multipart request,
211211
* using POST as the HTTP method.
212-
* @param urlTemplate a URL template; the resulting URL will be encoded
212+
* @param uriTemplate a URI template; the resulting URI will be encoded
213213
* @param uriVariables zero or more URI variables
214214
* @since 5.0
215215
*/
216-
public static MockMultipartHttpServletRequestBuilder multipart(String urlTemplate, Object... uriVariables) {
217-
return new MockMultipartHttpServletRequestBuilder(urlTemplate, uriVariables);
216+
public static MockMultipartHttpServletRequestBuilder multipart(String uriTemplate, Object... uriVariables) {
217+
return new MockMultipartHttpServletRequestBuilder(uriTemplate, uriVariables);
218218
}
219219

220220
/**
221221
* Variant of {@link #multipart(String, Object...)} that also accepts an
222222
* {@link HttpMethod}.
223223
* @param httpMethod the HTTP method to use
224-
* @param urlTemplate a URL template; the resulting URL will be encoded
224+
* @param uriTemplate a URI template; the resulting URI will be encoded
225225
* @param uriVariables zero or more URI variables
226226
* @since 5.3.22
227227
*/
228-
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, String urlTemplate, Object... uriVariables) {
229-
return new MockMultipartHttpServletRequestBuilder(httpMethod, urlTemplate, uriVariables);
228+
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, String uriTemplate, Object... uriVariables) {
229+
return new MockMultipartHttpServletRequestBuilder(httpMethod, uriTemplate, uriVariables);
230230
}
231231

232232
/**
233233
* Variant of {@link #multipart(String, Object...)} with a {@link URI}.
234-
* @param uri the URL
234+
* @param uri the URI
235235
* @since 5.0
236236
*/
237237
public static MockMultipartHttpServletRequestBuilder multipart(URI uri) {
@@ -242,7 +242,7 @@ public static MockMultipartHttpServletRequestBuilder multipart(URI uri) {
242242
* Variant of {@link #multipart(String, Object...)} with a {@link URI} and
243243
* an {@link HttpMethod}.
244244
* @param httpMethod the HTTP method to use
245-
* @param uri the URL
245+
* @param uri the URI
246246
* @since 5.3.21
247247
*/
248248
public static MockMultipartHttpServletRequestBuilder multipart(HttpMethod httpMethod, URI uri) {

spring-test/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void requestUriWithDoubleSlashes() {
109109
@Test // gh-24556
110110
void requestUriWithoutScheme() {
111111
assertThatIllegalArgumentException().isThrownBy(() -> MockMvcRequestBuilders.get("localhost:8080/path"))
112-
.withMessage("'url' should start with a path or be a complete HTTP URL: localhost:8080/path");
112+
.withMessage("'uri' should start with a path or be a complete HTTP URI: localhost:8080/path");
113113
}
114114

115115
@Test

0 commit comments

Comments
 (0)