You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2017/10/02 17:33:10 UTC
svn commit: r1810562 - in
/sling/trunk/bundles/extensions/servlet-helpers/src:
main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
Author: justin
Date: Mon Oct 2 17:33:10 2017
New Revision: 1810562
URL: http://svn.apache.org/viewvc?rev=1810562&view=rev
Log:
SLING-7174 - implement getReader in MockRequest
Modified:
sling/trunk/bundles/extensions/servlet-helpers/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
sling/trunk/bundles/extensions/servlet-helpers/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
Modified: sling/trunk/bundles/extensions/servlet-helpers/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/servlet-helpers/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java?rev=1810562&r1=1810561&r2=1810562&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/servlet-helpers/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java (original)
+++ sling/trunk/bundles/extensions/servlet-helpers/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java Mon Oct 2 17:33:10 2017
@@ -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
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
@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
@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
Modified: sling/trunk/bundles/extensions/servlet-helpers/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/servlet-helpers/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java?rev=1810562&r1=1810561&r2=1810562&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/servlet-helpers/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java (original)
+++ sling/trunk/bundles/extensions/servlet-helpers/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java Mon Oct 2 17:33:10 2017
@@ -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 MockSlingHttpServletRequest
@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 MockSlingHttpServletRequest
}
@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);