Skip to content

Commit 9ca4de1

Browse files
committed
MockHttpServletRequest.getRequestURL aligns with getServerName/Port
Issue: SPR-16138 (cherry picked from commit 0edf4d6)
1 parent 519195c commit 9ca4de1

File tree

3 files changed

+50
-23
lines changed

3 files changed

+50
-23
lines changed

spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java

+13-8
Original file line numberDiff line numberDiff line change
@@ -1103,13 +1103,18 @@ public String getRequestURI() {
11031103

11041104
@Override
11051105
public StringBuffer getRequestURL() {
1106-
StringBuffer url = new StringBuffer(this.scheme).append("://").append(this.serverName);
1107-
if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) ||
1108-
(HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) {
1109-
url.append(':').append(this.serverPort);
1106+
String scheme = getScheme();
1107+
String server = getServerName();
1108+
int port = getServerPort();
1109+
String uri = getRequestURI();
1110+
1111+
StringBuffer url = new StringBuffer(scheme).append("://").append(server);
1112+
if (port > 0 && ((HTTP.equalsIgnoreCase(scheme) && port != 80) ||
1113+
(HTTPS.equalsIgnoreCase(scheme) && port != 443))) {
1114+
url.append(':').append(port);
11101115
}
1111-
if (StringUtils.hasText(getRequestURI())) {
1112-
url.append(getRequestURI());
1116+
if (StringUtils.hasText(uri)) {
1117+
url.append(uri);
11131118
}
11141119
return url;
11151120
}
@@ -1219,12 +1224,12 @@ public void addPart(Part part) {
12191224
}
12201225

12211226
@Override
1222-
public Part getPart(String name) throws IOException, IllegalStateException, ServletException {
1227+
public Part getPart(String name) throws IOException, ServletException {
12231228
return this.parts.getFirst(name);
12241229
}
12251230

12261231
@Override
1227-
public Collection<Part> getParts() throws IOException, IllegalStateException, ServletException {
1232+
public Collection<Part> getParts() throws IOException, ServletException {
12281233
List<Part> result = new LinkedList<Part>();
12291234
for (List<Part> list : this.parts.values()) {
12301235
result.addAll(list);

spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java

+24-7
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public void setCharacterEncodingThenContentType() {
146146
}
147147

148148
@Test
149-
public void httpHeaderNameCasingIsPreserved() throws Exception {
149+
public void httpHeaderNameCasingIsPreserved() {
150150
String headerName = "Header1";
151151
request.addHeader(headerName, "value1");
152152
Enumeration<String> requestHeaders = request.getHeaderNames();
@@ -360,6 +360,22 @@ public void getRequestURLWithDefaults() {
360360
assertEquals("http://localhost", requestURL.toString());
361361
}
362362

363+
@Test // SPR-16138
364+
public void getRequestURLWithHostHeader() {
365+
String testServer = "test.server";
366+
request.addHeader(HOST, testServer);
367+
StringBuffer requestURL = request.getRequestURL();
368+
assertEquals("http://" + testServer, requestURL.toString());
369+
}
370+
371+
@Test // SPR-16138
372+
public void getRequestURLWithHostHeaderAndPort() {
373+
String testServer = "test.server:9999";
374+
request.addHeader(HOST, testServer);
375+
StringBuffer requestURL = request.getRequestURL();
376+
assertEquals("http://" + testServer, requestURL.toString());
377+
}
378+
363379
@Test
364380
public void getRequestURLWithNullRequestUri() {
365381
request.setRequestURI(null);
@@ -415,43 +431,44 @@ public void isSecureWithHttpsSchemeAndSecureFlagIsTrue() {
415431
}
416432

417433
@Test
418-
public void httpHeaderDate() throws Exception {
434+
public void httpHeaderDate() {
419435
Date date = new Date();
420436
request.addHeader(IF_MODIFIED_SINCE, date);
421437
assertEquals(date.getTime(), request.getDateHeader(IF_MODIFIED_SINCE));
422438
}
423439

424440
@Test
425-
public void httpHeaderTimestamp() throws Exception {
441+
public void httpHeaderTimestamp() {
426442
long timestamp = new Date().getTime();
427443
request.addHeader(IF_MODIFIED_SINCE, timestamp);
428444
assertEquals(timestamp, request.getDateHeader(IF_MODIFIED_SINCE));
429445
}
430446

431447
@Test
432-
public void httpHeaderRfcFormatedDate() throws Exception {
448+
public void httpHeaderRfcFormatedDate() {
433449
request.addHeader(IF_MODIFIED_SINCE, "Tue, 21 Jul 2015 10:00:00 GMT");
434450
assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE));
435451
}
436452

437453
@Test
438-
public void httpHeaderFirstVariantFormatedDate() throws Exception {
454+
public void httpHeaderFirstVariantFormatedDate() {
439455
request.addHeader(IF_MODIFIED_SINCE, "Tue, 21-Jul-15 10:00:00 GMT");
440456
assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE));
441457
}
442458

443459
@Test
444-
public void httpHeaderSecondVariantFormatedDate() throws Exception {
460+
public void httpHeaderSecondVariantFormatedDate() {
445461
request.addHeader(IF_MODIFIED_SINCE, "Tue Jul 21 10:00:00 2015");
446462
assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE));
447463
}
448464

449465
@Test(expected = IllegalArgumentException.class)
450-
public void httpHeaderFormatedDateError() throws Exception {
466+
public void httpHeaderFormatedDateError() {
451467
request.addHeader(IF_MODIFIED_SINCE, "This is not a date");
452468
request.getDateHeader(IF_MODIFIED_SINCE);
453469
}
454470

471+
455472
private void assertEqualEnumerations(Enumeration<?> enum1, Enumeration<?> enum2) {
456473
assertNotNull(enum1);
457474
assertNotNull(enum2);

spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java

+13-8
Original file line numberDiff line numberDiff line change
@@ -1103,13 +1103,18 @@ public String getRequestURI() {
11031103

11041104
@Override
11051105
public StringBuffer getRequestURL() {
1106-
StringBuffer url = new StringBuffer(this.scheme).append("://").append(this.serverName);
1107-
if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) ||
1108-
(HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) {
1109-
url.append(':').append(this.serverPort);
1106+
String scheme = getScheme();
1107+
String server = getServerName();
1108+
int port = getServerPort();
1109+
String uri = getRequestURI();
1110+
1111+
StringBuffer url = new StringBuffer(scheme).append("://").append(server);
1112+
if (port > 0 && ((HTTP.equalsIgnoreCase(scheme) && port != 80) ||
1113+
(HTTPS.equalsIgnoreCase(scheme) && port != 443))) {
1114+
url.append(':').append(port);
11101115
}
1111-
if (StringUtils.hasText(getRequestURI())) {
1112-
url.append(getRequestURI());
1116+
if (StringUtils.hasText(uri)) {
1117+
url.append(uri);
11131118
}
11141119
return url;
11151120
}
@@ -1219,12 +1224,12 @@ public void addPart(Part part) {
12191224
}
12201225

12211226
@Override
1222-
public Part getPart(String name) throws IOException, IllegalStateException, ServletException {
1227+
public Part getPart(String name) throws IOException, ServletException {
12231228
return this.parts.getFirst(name);
12241229
}
12251230

12261231
@Override
1227-
public Collection<Part> getParts() throws IOException, IllegalStateException, ServletException {
1232+
public Collection<Part> getParts() throws IOException, ServletException {
12281233
List<Part> result = new LinkedList<Part>();
12291234
for (List<Part> list : this.parts.values()) {
12301235
result.addAll(list);

0 commit comments

Comments
 (0)