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 8224e9d450..5f73abe401 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 @@ -87,10 +87,46 @@ public class MockHttpServletRequest implements HttpServletRequest { private static final String HTTPS = "https"; + private static final String CONTENT_TYPE_HEADER = "Content-Type"; + + private static final String HOST_HEADER = "Host"; + + private static final String CHARSET_PREFIX = "charset="; + + private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); + + private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = + new DelegatingServletInputStream(StreamUtils.emptyInput()); + + private static final BufferedReader EMPTY_BUFFERED_READER = + new BufferedReader(new StringReader("")); + + /** + * Date formats as specified in the HTTP RFC + * @see Section 7.1.1.1 of RFC 7231 + */ + private static final String[] DATE_FORMATS = new String[] { + "EEE, dd MMM yyyy HH:mm:ss zzz", + "EEE, dd-MMM-yy HH:mm:ss zzz", + "EEE MMM dd HH:mm:ss yyyy" + }; + + + // --------------------------------------------------------------------- + // Public constants + // --------------------------------------------------------------------- + + /** + * The default protocol: 'HTTP/1.1'. + * @since 4.3.7 + */ + public static final String DEFAULT_PROTOCOL = "HTTP/1.1"; + /** - * The default protocol: 'http'. + * The default scheme: 'http'. + * @since 4.3.7 */ - public static final String DEFAULT_PROTOCOL = HTTP; + public static final String DEFAULT_SCHEME = HTTP; /** * The default server address: '127.0.0.1'. @@ -117,30 +153,12 @@ public class MockHttpServletRequest implements HttpServletRequest { */ public static final String DEFAULT_REMOTE_HOST = "localhost"; - private static final String CONTENT_TYPE_HEADER = "Content-Type"; - - private static final String HOST_HEADER = "Host"; - - private static final String CHARSET_PREFIX = "charset="; - - private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = - new DelegatingServletInputStream(StreamUtils.emptyInput()); - - private static final BufferedReader EMPTY_BUFFERED_READER = - new BufferedReader(new StringReader("")); - - /** - * Date formats as specified in the HTTP RFC - * @see Section 7.1.1.1 of RFC 7231 - */ - private static final String[] DATE_FORMATS = new String[] { - "EEE, dd MMM yyyy HH:mm:ss zzz", - "EEE, dd-MMM-yy HH:mm:ss zzz", - "EEE MMM dd HH:mm:ss yyyy" - }; - private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); + // --------------------------------------------------------------------- + // Lifecycle properties + // --------------------------------------------------------------------- + private final ServletContext servletContext; private boolean active = true; @@ -161,7 +179,7 @@ public class MockHttpServletRequest implements HttpServletRequest { private String protocol = DEFAULT_PROTOCOL; - private String scheme = DEFAULT_PROTOCOL; + private String scheme = DEFAULT_SCHEME; private String serverName = DEFAULT_SERVER_NAME; @@ -176,8 +194,6 @@ public class MockHttpServletRequest implements HttpServletRequest { private boolean secure = false; - private final ServletContext servletContext; - private int remotePort = DEFAULT_SERVER_PORT; private String localName = DEFAULT_SERVER_NAME; @@ -1128,16 +1144,13 @@ 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))) { + if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) || + (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) { url.append(':').append(this.serverPort); } - if (StringUtils.hasText(getRequestURI())) { url.append(getRequestURI()); } - return url; } 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 55d6fb74d1..1ec2d9b1df 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 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. @@ -27,7 +27,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; - import javax.servlet.http.Cookie; import org.junit.Rule; @@ -62,6 +61,16 @@ public class MockHttpServletRequestTests { public final ExpectedException exception = ExpectedException.none(); + @Test + public void protocolAndScheme() { + assertEquals(MockHttpServletRequest.DEFAULT_PROTOCOL, request.getProtocol()); + assertEquals(MockHttpServletRequest.DEFAULT_SCHEME, request.getScheme()); + request.setProtocol("HTTP/2.0"); + request.setScheme("https"); + assertEquals("HTTP/2.0", request.getProtocol()); + assertEquals("https", request.getScheme()); + } + @Test public void setContentAndGetInputStream() throws IOException { byte[] bytes = "body".getBytes(Charset.defaultCharset()); 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 debed377a3..182df3af88 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 @@ -87,10 +87,46 @@ public class MockHttpServletRequest implements HttpServletRequest { private static final String HTTPS = "https"; + private static final String CONTENT_TYPE_HEADER = "Content-Type"; + + private static final String HOST_HEADER = "Host"; + + private static final String CHARSET_PREFIX = "charset="; + + private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); + + private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = + new DelegatingServletInputStream(StreamUtils.emptyInput()); + + private static final BufferedReader EMPTY_BUFFERED_READER = + new BufferedReader(new StringReader("")); + + /** + * Date formats as specified in the HTTP RFC + * @see Section 7.1.1.1 of RFC 7231 + */ + private static final String[] DATE_FORMATS = new String[] { + "EEE, dd MMM yyyy HH:mm:ss zzz", + "EEE, dd-MMM-yy HH:mm:ss zzz", + "EEE MMM dd HH:mm:ss yyyy" + }; + + + // --------------------------------------------------------------------- + // Public constants + // --------------------------------------------------------------------- + + /** + * The default protocol: 'HTTP/1.1'. + * @since 4.3.7 + */ + public static final String DEFAULT_PROTOCOL = "HTTP/1.1"; + /** - * The default protocol: 'http'. + * The default scheme: 'http'. + * @since 4.3.7 */ - public static final String DEFAULT_PROTOCOL = HTTP; + public static final String DEFAULT_SCHEME = HTTP; /** * The default server address: '127.0.0.1'. @@ -117,30 +153,12 @@ public class MockHttpServletRequest implements HttpServletRequest { */ public static final String DEFAULT_REMOTE_HOST = "localhost"; - private static final String CONTENT_TYPE_HEADER = "Content-Type"; - - private static final String HOST_HEADER = "Host"; - - private static final String CHARSET_PREFIX = "charset="; - - private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = - new DelegatingServletInputStream(StreamUtils.emptyInput()); - - private static final BufferedReader EMPTY_BUFFERED_READER = - new BufferedReader(new StringReader("")); - - /** - * Date formats as specified in the HTTP RFC - * @see Section 7.1.1.1 of RFC 7231 - */ - private static final String[] DATE_FORMATS = new String[] { - "EEE, dd MMM yyyy HH:mm:ss zzz", - "EEE, dd-MMM-yy HH:mm:ss zzz", - "EEE MMM dd HH:mm:ss yyyy" - }; - private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); + // --------------------------------------------------------------------- + // Lifecycle properties + // --------------------------------------------------------------------- + private final ServletContext servletContext; private boolean active = true; @@ -161,7 +179,7 @@ public class MockHttpServletRequest implements HttpServletRequest { private String protocol = DEFAULT_PROTOCOL; - private String scheme = DEFAULT_PROTOCOL; + private String scheme = DEFAULT_SCHEME; private String serverName = DEFAULT_SERVER_NAME; @@ -176,8 +194,6 @@ public class MockHttpServletRequest implements HttpServletRequest { private boolean secure = false; - private final ServletContext servletContext; - private int remotePort = DEFAULT_SERVER_PORT; private String localName = DEFAULT_SERVER_NAME; @@ -1128,16 +1144,13 @@ 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))) { + if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) || + (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) { url.append(':').append(this.serverPort); } - if (StringUtils.hasText(getRequestURI())) { url.append(getRequestURI()); } - return url; }