提交 04b8ae92 编写于 作者: S Sam Brannen

Introduce getContentAsByteArray()/getContentAsString() in MockHtttpSvltReq

In order to improve debugging and logging within test suites, this
commit introduces getContentAsByteArray() and getContentAsString()
methods in MockHttpServletRequest, analogous to the existing methods in
MockHttpServletResponse.

Issue: SPR-14717
上级 dbc86ec0
......@@ -371,10 +371,42 @@ public class MockHttpServletRequest implements HttpServletRequest {
}
}
/**
* Set the content of the request body as a byte array.
* @see #getContentAsByteArray()
* @see #getContentAsString()
*/
public void setContent(byte[] content) {
this.content = content;
}
/**
* Get the content of the request body as a byte array.
* @since 5.0
* @see #setContent(byte[])
* @see #getContentAsString()
*/
public byte[] getContentAsByteArray() {
return this.content;
}
/**
* Get the content of the request body as a {@code String}, using the configured
* {@linkplain #getCharacterEncoding character encoding} if present.
* @since 5.0
* @see #setContent(byte[])
* @see #getContentAsByteArray()
* @see #setCharacterEncoding(String)
*/
public String getContentAsString() throws UnsupportedEncodingException {
if (this.content == null) {
return null;
}
return (this.characterEncoding != null ?
new String(this.content, this.characterEncoding) : new String(this.content));
}
@Override
public int getContentLength() {
return (this.content != null ? this.content.length : -1);
......
......@@ -58,7 +58,7 @@ public class MockHttpServletRequestTests {
@Test
public void content() throws IOException {
public void setContentAndGetInputStream() throws IOException {
byte[] bytes = "body".getBytes(Charset.defaultCharset());
request.setContent(bytes);
assertEquals(bytes.length, request.getContentLength());
......@@ -66,11 +66,43 @@ public class MockHttpServletRequestTests {
assertEquals("body", StreamUtils.copyToString(request.getInputStream(), Charset.defaultCharset()));
}
@Test
public void setContentAndGetContentAsByteArray() throws IOException {
byte[] bytes = "request body".getBytes();
request.setContent(bytes);
assertEquals(bytes.length, request.getContentLength());
assertNotNull(request.getContentAsByteArray());
assertEquals(bytes, request.getContentAsByteArray());
}
@Test
public void setContentAndGetContentAsStringWithDefaultCharacterEncoding() throws IOException {
String palindrome = "ablE was I ere I saw Elba";
byte[] bytes = palindrome.getBytes();
request.setContent(bytes);
assertEquals(bytes.length, request.getContentLength());
assertNotNull(request.getContentAsString());
assertEquals(palindrome, request.getContentAsString());
}
@Test
public void setContentAndGetContentAsStringWithExplicitCharacterEncoding() throws IOException {
String palindrome = "ablE was I ere I saw Elba";
byte[] bytes = palindrome.getBytes("UTF-16");
request.setCharacterEncoding("UTF-16");
request.setContent(bytes);
assertEquals(bytes.length, request.getContentLength());
assertNotNull(request.getContentAsString());
assertEquals(palindrome, request.getContentAsString());
}
@Test
public void noContent() throws IOException {
assertEquals(-1, request.getContentLength());
assertNotNull(request.getInputStream());
assertEquals(-1, request.getInputStream().read());
assertNull(request.getContentAsByteArray());
assertNull(request.getContentAsString());
}
@Test
......
......@@ -371,10 +371,42 @@ public class MockHttpServletRequest implements HttpServletRequest {
}
}
/**
* Set the content of the request body as a byte array.
* @see #getContentAsByteArray()
* @see #getContentAsString()
*/
public void setContent(byte[] content) {
this.content = content;
}
/**
* Get the content of the request body as a byte array.
* @since 5.0
* @see #setContent(byte[])
* @see #getContentAsString()
*/
public byte[] getContentAsByteArray() {
return this.content;
}
/**
* Get the content of the request body as a {@code String}, using the configured
* {@linkplain #getCharacterEncoding character encoding} if present.
* @since 5.0
* @see #setContent(byte[])
* @see #getContentAsByteArray()
* @see #setCharacterEncoding(String)
*/
public String getContentAsString() throws UnsupportedEncodingException {
if (this.content == null) {
return null;
}
return (this.characterEncoding != null ?
new String(this.content, this.characterEncoding) : new String(this.content));
}
@Override
public int getContentLength() {
return (this.content != null ? this.content.length : -1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册