This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlet-helpers.git
commit 4ab59ef7d25db2d3c726e07434414b1cef15a300 Author: Justin Edelson <[email protected]> AuthorDate: Mon Oct 2 17:33:10 2017 +0000 SLING-7174 - implement getReader in MockRequest git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1810562 13f79535-47bb-0310-9956-ffa450edef68 --- .../MockSlingHttpServletRequest.java | 32 ++++++++++++++--- .../MockSlingHttpServletRequestTest.java | 40 +++++++++++++++++++++- 2 files changed, 67 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java index 94a2ba6..128db0c 100644 --- a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java +++ b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java @@ -24,9 +24,11 @@ import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; +import java.nio.charset.Charset; import java.security.Principal; import java.util.ArrayList; import java.util.Arrays; @@ -101,6 +103,8 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling private String remoteHost; private int remotePort; private Locale locale = Locale.US; + private boolean getInputStreamCalled; + private boolean getReaderCalled; private MockRequestDispatcherFactory requestDispatcherFactory; @@ -540,11 +544,12 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling @Override public ServletInputStream getInputStream() { - if (content == null) { - return null; + if (getReaderCalled) { + throw new IllegalArgumentException(); } + getInputStreamCalled = true; return new ServletInputStream() { - private final InputStream is = new ByteArrayInputStream(content); + private final InputStream is = content == null ? new ByteArrayInputStream(new byte[0]) : new ByteArrayInputStream(content); @Override public int read() throws IOException { return is.read(); @@ -823,7 +828,26 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling @Override public BufferedReader getReader() { - throw new UnsupportedOperationException(); + if (getInputStreamCalled) { + throw new IllegalArgumentException(); + } + getReaderCalled = true; + if (this.content == null) { + return new BufferedReader(new StringReader("")); + } else { + String content; + try { + if (characterEncoding == null) { + content = new String(this.content, Charset.defaultCharset()); + } else { + content = new String(this.content, characterEncoding); + } + } catch (UnsupportedEncodingException e) { + content = new String(this.content, Charset.defaultCharset()); + } + return new BufferedReader(new StringReader(content)); + } + } @Override diff --git a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java index 26e5f51..f3f9c00 100644 --- a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java +++ b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java @@ -29,8 +29,10 @@ import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.io.BufferedReader; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.Charset; import java.util.Calendar; import java.util.Enumeration; import java.util.LinkedHashMap; @@ -326,7 +328,8 @@ public class MockSlingHttpServletRequestTest { @Test public void testContent() throws Exception { assertEquals(0, request.getContentLength()); - assertNull(request.getInputStream()); + assertNotNull(request.getInputStream()); + assertArrayEquals(new byte[0], IOUtils.toByteArray(request.getInputStream())); byte[] data = new byte[] { 0x01,0x02,0x03 }; request.setContent(data); @@ -336,6 +339,41 @@ public class MockSlingHttpServletRequestTest { } @Test + public void testContentFromReader() throws Exception { + Charset utf8 = Charset.forName("UTF-8"); + request.setContent("hello".getBytes(utf8)); + assertEquals(5, request.getContentLength()); + BufferedReader reader = request.getReader(); + String content = IOUtils.toString(reader); + assertEquals("hello", content); + } + + @Test + public void testGetReaderAfterGetInputStream() { + boolean thrown = false; + request.getInputStream(); + try { + request.getReader(); + } catch (IllegalArgumentException e) { + thrown = true; + } + assertTrue(thrown); + } + + @Test + public void testGetInputStreamAfterGetReader() { + boolean thrown = false; + request.getReader(); + try { + request.getInputStream(); + } catch (IllegalArgumentException e) { + thrown = true; + } + assertTrue(thrown); + } + + + @Test public void testGetRequestDispatcher() { MockRequestDispatcherFactory requestDispatcherFactory = mock(MockRequestDispatcherFactory.class); RequestDispatcher requestDispatcher = mock(RequestDispatcher.class); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
