diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java index 870ada7d5a..3c47048d56 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java @@ -1103,13 +1103,18 @@ public class MockHttpServletRequest implements HttpServletRequest { @Override public StringBuffer getRequestURL() { - StringBuffer url = new StringBuffer(this.scheme).append("://").append(this.serverName); - if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) || - (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) { - url.append(':').append(this.serverPort); + String scheme = getScheme(); + String server = getServerName(); + int port = getServerPort(); + String uri = getRequestURI(); + + StringBuffer url = new StringBuffer(scheme).append("://").append(server); + if (port > 0 && ((HTTP.equalsIgnoreCase(scheme) && port != 80) || + (HTTPS.equalsIgnoreCase(scheme) && port != 443))) { + url.append(':').append(port); } - if (StringUtils.hasText(getRequestURI())) { - url.append(getRequestURI()); + if (StringUtils.hasText(uri)) { + url.append(uri); } return url; } @@ -1219,12 +1224,12 @@ public class MockHttpServletRequest implements HttpServletRequest { } @Override - public Part getPart(String name) throws IOException, IllegalStateException, ServletException { + public Part getPart(String name) throws IOException, ServletException { return this.parts.getFirst(name); } @Override - public Collection getParts() throws IOException, IllegalStateException, ServletException { + public Collection getParts() throws IOException, ServletException { List result = new LinkedList(); for (List list : this.parts.values()) { result.addAll(list); diff --git a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java index 343c667039..e3400931d3 100644 --- a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java +++ b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java @@ -146,7 +146,7 @@ public class MockHttpServletRequestTests { } @Test - public void httpHeaderNameCasingIsPreserved() throws Exception { + public void httpHeaderNameCasingIsPreserved() { String headerName = "Header1"; request.addHeader(headerName, "value1"); Enumeration requestHeaders = request.getHeaderNames(); @@ -360,6 +360,22 @@ public class MockHttpServletRequestTests { assertEquals("http://localhost", requestURL.toString()); } + @Test // SPR-16138 + public void getRequestURLWithHostHeader() { + String testServer = "test.server"; + request.addHeader(HOST, testServer); + StringBuffer requestURL = request.getRequestURL(); + assertEquals("http://" + testServer, requestURL.toString()); + } + + @Test // SPR-16138 + public void getRequestURLWithHostHeaderAndPort() { + String testServer = "test.server:9999"; + request.addHeader(HOST, testServer); + StringBuffer requestURL = request.getRequestURL(); + assertEquals("http://" + testServer, requestURL.toString()); + } + @Test public void getRequestURLWithNullRequestUri() { request.setRequestURI(null); @@ -415,43 +431,44 @@ public class MockHttpServletRequestTests { } @Test - public void httpHeaderDate() throws Exception { + public void httpHeaderDate() { Date date = new Date(); request.addHeader(IF_MODIFIED_SINCE, date); assertEquals(date.getTime(), request.getDateHeader(IF_MODIFIED_SINCE)); } @Test - public void httpHeaderTimestamp() throws Exception { + public void httpHeaderTimestamp() { long timestamp = new Date().getTime(); request.addHeader(IF_MODIFIED_SINCE, timestamp); assertEquals(timestamp, request.getDateHeader(IF_MODIFIED_SINCE)); } @Test - public void httpHeaderRfcFormatedDate() throws Exception { + public void httpHeaderRfcFormatedDate() { request.addHeader(IF_MODIFIED_SINCE, "Tue, 21 Jul 2015 10:00:00 GMT"); assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE)); } @Test - public void httpHeaderFirstVariantFormatedDate() throws Exception { + public void httpHeaderFirstVariantFormatedDate() { request.addHeader(IF_MODIFIED_SINCE, "Tue, 21-Jul-15 10:00:00 GMT"); assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE)); } @Test - public void httpHeaderSecondVariantFormatedDate() throws Exception { + public void httpHeaderSecondVariantFormatedDate() { request.addHeader(IF_MODIFIED_SINCE, "Tue Jul 21 10:00:00 2015"); assertEquals(1437472800000L, request.getDateHeader(IF_MODIFIED_SINCE)); } @Test(expected = IllegalArgumentException.class) - public void httpHeaderFormatedDateError() throws Exception { + public void httpHeaderFormatedDateError() { request.addHeader(IF_MODIFIED_SINCE, "This is not a date"); request.getDateHeader(IF_MODIFIED_SINCE); } + private void assertEqualEnumerations(Enumeration enum1, Enumeration enum2) { assertNotNull(enum1); assertNotNull(enum2); diff --git a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java index e44bd0873b..c1b9934515 100644 --- a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java +++ b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java @@ -1103,13 +1103,18 @@ public class MockHttpServletRequest implements HttpServletRequest { @Override public StringBuffer getRequestURL() { - StringBuffer url = new StringBuffer(this.scheme).append("://").append(this.serverName); - if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) || - (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) { - url.append(':').append(this.serverPort); + String scheme = getScheme(); + String server = getServerName(); + int port = getServerPort(); + String uri = getRequestURI(); + + StringBuffer url = new StringBuffer(scheme).append("://").append(server); + if (port > 0 && ((HTTP.equalsIgnoreCase(scheme) && port != 80) || + (HTTPS.equalsIgnoreCase(scheme) && port != 443))) { + url.append(':').append(port); } - if (StringUtils.hasText(getRequestURI())) { - url.append(getRequestURI()); + if (StringUtils.hasText(uri)) { + url.append(uri); } return url; } @@ -1219,12 +1224,12 @@ public class MockHttpServletRequest implements HttpServletRequest { } @Override - public Part getPart(String name) throws IOException, IllegalStateException, ServletException { + public Part getPart(String name) throws IOException, ServletException { return this.parts.getFirst(name); } @Override - public Collection getParts() throws IOException, IllegalStateException, ServletException { + public Collection getParts() throws IOException, ServletException { List result = new LinkedList(); for (List list : this.parts.values()) { result.addAll(list);