aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/android/volley/toolbox/HurlStackTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/android/volley/toolbox/HurlStackTest.java')
-rw-r--r--src/test/java/com/android/volley/toolbox/HurlStackTest.java104
1 files changed, 91 insertions, 13 deletions
diff --git a/src/test/java/com/android/volley/toolbox/HurlStackTest.java b/src/test/java/com/android/volley/toolbox/HurlStackTest.java
index c1fc92d..7508244 100644
--- a/src/test/java/com/android/volley/toolbox/HurlStackTest.java
+++ b/src/test/java/com/android/volley/toolbox/HurlStackTest.java
@@ -17,6 +17,7 @@
package com.android.volley.toolbox;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.never;
@@ -24,11 +25,16 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.android.volley.Header;
+import com.android.volley.Request;
import com.android.volley.Request.Method;
import com.android.volley.mock.TestRequest;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.FilterInputStream;
+import java.io.FilterOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
import java.net.URL;
@@ -62,6 +68,26 @@ public class HurlStackTest {
protected HttpURLConnection createConnection(URL url) {
return mMockConnection;
}
+
+ @Override
+ protected InputStream createInputStream(
+ Request<?> request, HttpURLConnection connection) {
+ return new MonitoringInputStream(
+ super.createInputStream(request, connection));
+ }
+
+ @Override
+ protected OutputStream createOutputStream(
+ Request<?> request, HttpURLConnection connection, int length)
+ throws IOException {
+ if (request instanceof MonitoredRequest) {
+ return new MonitoringOutputStream(
+ super.createOutputStream(request, connection, length),
+ (MonitoredRequest) request,
+ length);
+ }
+ return super.createOutputStream(request, connection, length);
+ }
};
}
@@ -70,7 +96,7 @@ public class HurlStackTest {
TestRequest.DeprecatedGet request = new TestRequest.DeprecatedGet();
assertEquals(request.getMethod(), Method.DEPRECATED_GET_OR_POST);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection, never()).setRequestMethod(anyString());
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -80,7 +106,7 @@ public class HurlStackTest {
TestRequest.DeprecatedPost request = new TestRequest.DeprecatedPost();
assertEquals(request.getMethod(), Method.DEPRECATED_GET_OR_POST);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("POST");
verify(mMockConnection).setDoOutput(true);
}
@@ -90,7 +116,7 @@ public class HurlStackTest {
TestRequest.Get request = new TestRequest.Get();
assertEquals(request.getMethod(), Method.GET);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("GET");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -100,7 +126,7 @@ public class HurlStackTest {
TestRequest.Post request = new TestRequest.Post();
assertEquals(request.getMethod(), Method.POST);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("POST");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -110,7 +136,7 @@ public class HurlStackTest {
TestRequest.PostWithBody request = new TestRequest.PostWithBody();
assertEquals(request.getMethod(), Method.POST);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("POST");
verify(mMockConnection).setDoOutput(true);
}
@@ -120,7 +146,7 @@ public class HurlStackTest {
TestRequest.Put request = new TestRequest.Put();
assertEquals(request.getMethod(), Method.PUT);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("PUT");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -130,7 +156,7 @@ public class HurlStackTest {
TestRequest.PutWithBody request = new TestRequest.PutWithBody();
assertEquals(request.getMethod(), Method.PUT);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("PUT");
verify(mMockConnection).setDoOutput(true);
}
@@ -140,7 +166,7 @@ public class HurlStackTest {
TestRequest.Delete request = new TestRequest.Delete();
assertEquals(request.getMethod(), Method.DELETE);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("DELETE");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -150,7 +176,7 @@ public class HurlStackTest {
TestRequest.Head request = new TestRequest.Head();
assertEquals(request.getMethod(), Method.HEAD);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("HEAD");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -160,7 +186,7 @@ public class HurlStackTest {
TestRequest.Options request = new TestRequest.Options();
assertEquals(request.getMethod(), Method.OPTIONS);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("OPTIONS");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -170,7 +196,7 @@ public class HurlStackTest {
TestRequest.Trace request = new TestRequest.Trace();
assertEquals(request.getMethod(), Method.TRACE);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("TRACE");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -180,7 +206,7 @@ public class HurlStackTest {
TestRequest.Patch request = new TestRequest.Patch();
assertEquals(request.getMethod(), Method.PATCH);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("PATCH");
verify(mMockConnection, never()).setDoOutput(true);
}
@@ -190,7 +216,7 @@ public class HurlStackTest {
TestRequest.PatchWithBody request = new TestRequest.PatchWithBody();
assertEquals(request.getMethod(), Method.PATCH);
- HurlStack.setConnectionParametersForRequest(mMockConnection, request);
+ mHurlStack.setConnectionParametersForRequest(mMockConnection, request);
verify(mMockConnection).setRequestMethod("PATCH");
verify(mMockConnection).setDoOutput(true);
}
@@ -256,4 +282,56 @@ public class HurlStackTest {
expected.add(new Header("HeaderB", "ValueB_2"));
assertEquals(expected, result);
}
+
+ @Test
+ public void interceptResponseStream() throws Exception {
+ when(mMockConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_OK);
+ when(mMockConnection.getInputStream())
+ .thenReturn(new ByteArrayInputStream("hello".getBytes(StandardCharsets.UTF_8)));
+ HttpResponse response =
+ mHurlStack.executeRequest(
+ new TestRequest.Get(), Collections.<String, String>emptyMap());
+ assertTrue(response.getContent() instanceof MonitoringInputStream);
+ }
+
+ @Test
+ public void interceptRequestStream() throws Exception {
+ MonitoredRequest request = new MonitoredRequest();
+ mHurlStack.executeRequest(request, Collections.<String, String>emptyMap());
+ assertTrue(request.totalRequestBytes > 0);
+ assertEquals(request.totalRequestBytes, request.requestBytesRead);
+ }
+
+ private static class MonitoringInputStream extends FilterInputStream {
+ private MonitoringInputStream(InputStream in) {
+ super(in);
+ }
+ }
+
+ private static class MonitoringOutputStream extends FilterOutputStream {
+ private MonitoredRequest request;
+
+ private MonitoringOutputStream(OutputStream out, MonitoredRequest request, int length) {
+ super(out);
+ this.request = request;
+ this.request.totalRequestBytes = length;
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ this.request.requestBytesRead++;
+ out.write(b);
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ this.request.requestBytesRead += len;
+ out.write(b, off, len);
+ }
+ }
+
+ private static class MonitoredRequest extends TestRequest.PostWithBody {
+ int requestBytesRead = 0;
+ int totalRequestBytes = 0;
+ }
}