public void ThrowsClientExceptionWithNoBody()
        {
            Uri        requestUri    = new Uri("http://www.springframework.net");
            HttpMethod requestMethod = HttpMethod.GET;

            ExpectResponse(String.Empty, Encoding.UTF8, HttpStatusCode.NotFound, "NotFound");

            mocks.ReplayAll();

            Assert.IsTrue(responseErrorHandler.HasError(requestUri, requestMethod, response));
            try
            {
                responseErrorHandler.HandleError(requestUri, requestMethod, response);
                Assert.Fail("DefaultResponseErrorHandler.HandleError should throw an exception");
            }
            catch (Exception ex)
            {
                HttpClientErrorException clientErrorException = ex as HttpClientErrorException;
                Assert.IsNotNull(clientErrorException, "Exception HttpClientErrorException expected");
                Assert.AreEqual(requestUri, clientErrorException.RequestUri);
                Assert.AreEqual(requestMethod, clientErrorException.RequestMethod);
                Assert.IsNotNull(clientErrorException.Response);
                Assert.AreEqual(0, clientErrorException.Response.Headers.ContentLength);
                Assert.AreEqual(0, clientErrorException.Response.Body.Length);
                Assert.AreEqual(String.Empty, clientErrorException.GetResponseBodyAsString());
            }
        }
        public void ThrowsClientException()
        {
            Uri        requestUri    = new Uri("http://www.springframework.net");
            HttpMethod requestMethod = HttpMethod.GET;

            ExpectResponse("ClientError", Encoding.UTF8, HttpStatusCode.NotFound, "NotFound");

            mocks.ReplayAll();

            Assert.IsTrue(responseErrorHandler.HasError(requestUri, requestMethod, response));
            try
            {
                responseErrorHandler.HandleError(requestUri, requestMethod, response);
                Assert.Fail("DefaultResponseErrorHandler.HandleError should throw an exception");
            }
            catch (Exception ex)
            {
                HttpClientErrorException clientErrorException = ex as HttpClientErrorException;
                Assert.IsNotNull(clientErrorException, "Exception HttpClientErrorException expected");
                Assert.AreEqual(requestUri, clientErrorException.RequestUri);
                Assert.AreEqual(requestMethod, clientErrorException.RequestMethod);
                Assert.IsNotNull(clientErrorException.Response);
                Assert.IsTrue(clientErrorException.Response.Body.Length > 0);
                Assert.IsTrue(clientErrorException.Response.Headers.ContentLength > 0);
                Assert.AreEqual(new MediaType("text", "plain", "utf-8"), clientErrorException.Response.Headers.ContentType);
                Assert.AreEqual("ClientError", clientErrorException.GetResponseBodyAsString());
                Assert.AreEqual(HttpStatusCode.NotFound, clientErrorException.Response.StatusCode);
                Assert.AreEqual("NotFound", clientErrorException.Response.StatusDescription);
            }
        }