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 8e1384c09e3dd3eff165289280c7881b0741575b..fc0199b036c25c328d6ae01a1cd9b2ce8cf1990e 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2014 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. @@ -104,6 +104,9 @@ public class MockHttpServletRequest implements HttpServletRequest { private static final String CHARSET_PREFIX = "charset="; + private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = + new DelegatingServletInputStream(new ByteArrayInputStream(new byte[0])); + private boolean active = true; @@ -375,7 +378,7 @@ public class MockHttpServletRequest implements HttpServletRequest { return new DelegatingServletInputStream(new ByteArrayInputStream(this.content)); } else { - return null; + return EMPTY_SERVLET_INPUT_STREAM; } } 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 35900fa6be2366bf1fffcda5d9639172140fc52b..c6cfe46c16edc27b39f0032111a589ec3d2d272e 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-2013 the original author or authors. + * Copyright 2002-2014 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. @@ -16,6 +16,8 @@ package org.springframework.mock.web; +import java.io.IOException; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -26,6 +28,7 @@ import java.util.Locale; import java.util.Map; import org.junit.Test; +import org.springframework.util.StreamUtils; import static org.junit.Assert.*; @@ -42,6 +45,22 @@ public class MockHttpServletRequestTests { private MockHttpServletRequest request = new MockHttpServletRequest(); + @Test + public void content() throws IOException { + byte[] bytes = "body".getBytes(Charset.defaultCharset()); + request.setContent(bytes); + assertEquals(bytes.length, request.getContentLength()); + assertNotNull(request.getInputStream()); + assertEquals("body", StreamUtils.copyToString(request.getInputStream(), Charset.defaultCharset())); + } + + @Test + public void noContent() throws IOException { + assertEquals(-1, request.getContentLength()); + assertNotNull(request.getInputStream()); + assertEquals(-1, request.getInputStream().read()); + } + @Test public void setContentType() { String contentType = "test/plain"; 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 997af6e09b852ae5861972e3482f9710bb9e9bdd..44e517f7d500f317c1dc49619601870849f06c35 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 @@ -107,6 +107,9 @@ public class MockHttpServletRequest implements HttpServletRequest { private static final String CHARSET_PREFIX = "charset="; + private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM = + new DelegatingServletInputStream(new ByteArrayInputStream(new byte[0])); + private boolean active = true; @@ -378,7 +381,7 @@ public class MockHttpServletRequest implements HttpServletRequest { return new DelegatingServletInputStream(new ByteArrayInputStream(this.content)); } else { - return null; + return EMPTY_SERVLET_INPUT_STREAM; } }