예제 #1
0
 @Test
 public void otherClientError() throws Exception {
   for (int i = 400; i <= 499; i++) {
     if (i == 401 || i == 403) {
       // covered above.
       continue;
     }
     MockHttpStack mockHttpStack = new MockHttpStack();
     BasicHttpResponse fakeResponse =
         new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), i, "");
     mockHttpStack.setResponseToReturn(fakeResponse);
     BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
     Request<String> request = buildRequest();
     request.setRetryPolicy(mMockRetryPolicy);
     doThrow(new VolleyError()).when(mMockRetryPolicy).retry(any(VolleyError.class));
     try {
       httpNetwork.performRequest(request);
     } catch (VolleyError e) {
       // expected
     }
     // should not retry other 400 errors.
     verify(mMockRetryPolicy, never()).retry(any(VolleyError.class));
     reset(mMockRetryPolicy);
   }
 }
예제 #2
0
 @Test
 public void headersAndPostParams() throws Exception {
   MockHttpStack mockHttpStack = new MockHttpStack();
   BasicHttpResponse fakeResponse =
       new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), 200, "OK");
   fakeResponse.setEntity(new StringEntity("foobar"));
   mockHttpStack.setResponseToReturn(fakeResponse);
   BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
   Request<String> request = buildRequest();
   httpNetwork.performRequest(request);
   assertEquals("foo", mockHttpStack.getLastHeaders().get("requestheader"));
   assertEquals("requestpost=foo&", new String(mockHttpStack.getLastPostBody()));
 }
예제 #3
0
 @Test
 public void connectTimeout() throws Exception {
   MockHttpStack mockHttpStack = new MockHttpStack();
   mockHttpStack.setExceptionToThrow(new ConnectTimeoutException());
   BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
   Request<String> request = buildRequest();
   request.setRetryPolicy(mMockRetryPolicy);
   doThrow(new VolleyError()).when(mMockRetryPolicy).retry(any(VolleyError.class));
   try {
     httpNetwork.performRequest(request);
   } catch (VolleyError e) {
     // expected
   }
   // should retry connection timeouts
   verify(mMockRetryPolicy).retry(any(TimeoutError.class));
 }
예제 #4
0
 @Test
 public void forbidden() throws Exception {
   MockHttpStack mockHttpStack = new MockHttpStack();
   BasicHttpResponse fakeResponse =
       new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), 403, "Forbidden");
   mockHttpStack.setResponseToReturn(fakeResponse);
   BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
   Request<String> request = buildRequest();
   request.setRetryPolicy(mMockRetryPolicy);
   doThrow(new VolleyError()).when(mMockRetryPolicy).retry(any(VolleyError.class));
   try {
     httpNetwork.performRequest(request);
   } catch (VolleyError e) {
     // expected
   }
   // should retry in case it's an auth failure.
   verify(mMockRetryPolicy).retry(any(AuthFailureError.class));
 }
예제 #5
0
 @Test
 public void serverError_disableRetries() throws Exception {
   for (int i = 500; i <= 599; i++) {
     MockHttpStack mockHttpStack = new MockHttpStack();
     BasicHttpResponse fakeResponse =
         new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), i, "");
     mockHttpStack.setResponseToReturn(fakeResponse);
     BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
     Request<String> request = buildRequest();
     request.setRetryPolicy(mMockRetryPolicy);
     doThrow(new VolleyError()).when(mMockRetryPolicy).retry(any(VolleyError.class));
     try {
       httpNetwork.performRequest(request);
     } catch (VolleyError e) {
       // expected
     }
     // should not retry any 500 error w/ HTTP 500 retries turned off (the default).
     verify(mMockRetryPolicy, never()).retry(any(VolleyError.class));
     reset(mMockRetryPolicy);
   }
 }
예제 #6
0
 @Test
 public void serverError_enableRetries() throws Exception {
   for (int i = 500; i <= 599; i++) {
     MockHttpStack mockHttpStack = new MockHttpStack();
     BasicHttpResponse fakeResponse =
         new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), i, "");
     mockHttpStack.setResponseToReturn(fakeResponse);
     BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack, new ByteArrayPool(4096));
     Request<String> request = buildRequest();
     request.setRetryPolicy(mMockRetryPolicy);
     request.setShouldRetryServerErrors(true);
     doThrow(new VolleyError()).when(mMockRetryPolicy).retry(any(VolleyError.class));
     try {
       httpNetwork.performRequest(request);
     } catch (VolleyError e) {
       // expected
     }
     // should retry all 500 errors
     verify(mMockRetryPolicy).retry(any(ServerError.class));
     reset(mMockRetryPolicy);
   }
 }
예제 #7
0
  public void testHeadersAndPostParams() throws Exception {
    MockHttpStack mockHttpStack = new MockHttpStack();
    BasicHttpResponse fakeResponse =
        new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), 200, "OK");
    fakeResponse.setEntity(new StringEntity("foobar"));
    mockHttpStack.setResponseToReturn(fakeResponse);
    BasicNetwork httpNetwork = new BasicNetwork(mockHttpStack);
    Request<String> request =
        new Request<String>(Request.Method.GET, "http://foo", null) {

          @Override
          protected Response<String> parseNetworkResponse(NetworkResponse response) {
            return null;
          }

          @Override
          protected void deliverResponse(String response) {}

          @Override
          public Map<String, String> getHeaders() {
            Map<String, String> result = new HashMap<String, String>();
            result.put("requestheader", "foo");
            return result;
          }

          @Override
          public Map<String, String> getParams() {
            Map<String, String> result = new HashMap<String, String>();
            result.put("requestpost", "foo");
            return result;
          }
        };
    httpNetwork.performRequest(request);
    assertEquals("foo", mockHttpStack.getLastHeaders().get("requestheader"));
    assertEquals("requestpost=foo&", new String(mockHttpStack.getLastPostBody()));
  }