Include URL and HTTP method in DefaultResponseErrorHandler
See gh-28958
This commit is contained in:
committed by
Stéphane Nicoll
parent
2350c8a8f5
commit
4972d18dd6
@@ -18,11 +18,13 @@ package org.springframework.web.client;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.HttpStatusCode;
|
||||
import org.springframework.http.MediaType;
|
||||
@@ -77,6 +79,22 @@ class DefaultResponseErrorHandlerTests {
|
||||
.satisfies(ex -> assertThat(ex.getResponseHeaders()).isEqualTo(headers));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleErrorWithUrlAndMethod() throws Exception {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.TEXT_PLAIN);
|
||||
|
||||
given(response.getStatusCode()).willReturn(HttpStatus.NOT_FOUND);
|
||||
given(response.getStatusText()).willReturn("Not Found");
|
||||
given(response.getHeaders()).willReturn(headers);
|
||||
given(response.getBody()).willReturn(new ByteArrayInputStream("Hello World".getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
assertThatExceptionOfType(HttpClientErrorException.class)
|
||||
.isThrownBy(() -> handler.handleError(URI.create("https://example.com"), HttpMethod.GET, response))
|
||||
.withMessage("404 Not Found after GET https://example.com : \"Hello World\"")
|
||||
.satisfies(ex -> assertThat(ex.getResponseHeaders()).isSameAs(headers));
|
||||
}
|
||||
|
||||
@Test
|
||||
void handleErrorIOException() throws Exception {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
|
||||
@@ -247,6 +247,7 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
|
||||
assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(ex.getStatusText()).isNotNull();
|
||||
assertThat(ex.getResponseBodyAsString()).isNotNull();
|
||||
assertThat(ex.getMessage()).isEqualTo("404 Client Error after GET http://localhost:" + port + "/status/notfound : [no body]");
|
||||
});
|
||||
}
|
||||
|
||||
@@ -259,7 +260,7 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
|
||||
.satisfies(ex -> {
|
||||
assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
|
||||
assumeFalse(clientHttpRequestFactory instanceof JdkClientHttpRequestFactory, "JDK HttpClient does not expose status text");
|
||||
assertThat(ex.getMessage()).isEqualTo("400 Client Error: [no body]");
|
||||
assertThat(ex.getMessage()).isEqualTo("400 Client Error after GET http://localhost:" + port + "/status/badrequest : [no body]");
|
||||
});
|
||||
}
|
||||
|
||||
@@ -273,6 +274,7 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
|
||||
assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||
assertThat(ex.getStatusText()).isNotNull();
|
||||
assertThat(ex.getResponseBodyAsString()).isNotNull();
|
||||
assertThat(ex.getMessage()).isEqualTo("500 Server Error after GET http://localhost:" + port + "/status/server : [no body]");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user