Merge branch '7.0.x'

This commit is contained in:
Sam Brannen
2026-04-02 12:45:50 +02:00
13 changed files with 64 additions and 51 deletions
@@ -42,7 +42,6 @@ import mockwebserver3.RecordedRequest;
import okio.Buffer;
import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Named;
import org.junit.jupiter.api.Test;
@@ -62,6 +61,7 @@ import org.springframework.http.ReactiveHttpOutputMessage;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
import static org.assertj.core.api.Assumptions.assumeThat;
import static org.junit.jupiter.api.Named.named;
/**
@@ -203,8 +203,9 @@ class ClientHttpConnectorTests {
@ParameterizedConnectorTest
void partitionedCookieSupport(ClientHttpConnector connector) {
Assumptions.assumeFalse(connector instanceof JettyClientHttpConnector, "Jetty client does not support partitioned cookies");
Assumptions.assumeFalse(connector instanceof JdkClientHttpConnector, "JDK client does not support partitioned cookies");
assumeThat(connector).as("Jetty and JDK clients do not support partitioned cookies")
.isNotInstanceOfAny(JettyClientHttpConnector.class, JdkClientHttpConnector.class);
prepareResponse(builder -> builder
.code(200)
.addHeader("Set-Cookie", "id=test; Partitioned;"));
@@ -92,7 +92,7 @@ class CookieIntegrationTests extends AbstractHttpHandlerIntegrationTests {
public void cookiesWithSameNameTest(HttpServer httpServer) throws Exception {
startServer(httpServer);
ResponseEntity<Void> response = getRestClient().get()
getRestClient().get()
.header("Cookie", "SID=31d4d96e407aad42; lang=en-US; lang=zh-CN")
.retrieve().toBodilessEntity();
@@ -31,7 +31,7 @@ import org.springframework.web.testfixture.http.server.reactive.bootstrap.JettyC
import org.springframework.web.testfixture.http.server.reactive.bootstrap.ReactorHttpServer;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.assertj.core.api.Assumptions.assumeThat;
/**
* @author Arjen Poutsma
@@ -51,8 +51,8 @@ class ZeroCopyIntegrationTests extends AbstractHttpHandlerIntegrationTests {
@ParameterizedHttpServerTest
void zeroCopy(HttpServer httpServer) throws Exception {
assumeTrue(httpServer instanceof ReactorHttpServer ||
httpServer instanceof JettyCoreHttpServer, "Zero-copy does not support Servlet");
assumeThat(httpServer).as("Zero-copy does not support Servlet")
.isInstanceOfAny(ReactorHttpServer.class, JettyCoreHttpServer.class);
startServer(httpServer);
@@ -71,7 +71,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import static org.assertj.core.api.Assumptions.assumeThat;
import static org.junit.jupiter.params.provider.Arguments.argumentSet;
/**
@@ -513,7 +513,9 @@ class RestClientIntegrationTests {
}
catch (HttpServerErrorException ex) {
assumeFalse(requestFactory instanceof JdkClientHttpRequestFactory, "JDK HttpClient does not expose status text");
assumeThat(requestFactory).as("JDK HttpClient does not expose status text")
.isNotInstanceOf(JdkClientHttpRequestFactory.class);
assertThat(ex.getMessage()).isEqualTo("555 Server Error: \"Something went wrong\"");
assertThat(ex.getStatusText()).isEqualTo("Server Error");
assertThat(ex.getResponseHeaders().getContentType()).isEqualTo(MediaType.TEXT_PLAIN);
@@ -60,7 +60,7 @@ import org.springframework.util.MultiValueMap;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import static org.assertj.core.api.Assumptions.assumeThat;
import static org.junit.jupiter.params.provider.Arguments.argumentSet;
import static org.springframework.http.HttpMethod.POST;
import static org.springframework.http.MediaType.MULTIPART_MIXED;
@@ -228,8 +228,8 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
@ParameterizedRestTemplateTest
void patchForObject(ClientHttpRequestFactory clientHttpRequestFactory) {
assumeFalse(clientHttpRequestFactory instanceof SimpleClientHttpRequestFactory,
"HttpURLConnection does not support the PATCH method");
assumeThat(clientHttpRequestFactory).as("HttpURLConnection does not support the PATCH method")
.isNotInstanceOf(SimpleClientHttpRequestFactory.class);
setUpClient(clientHttpRequestFactory);
@@ -242,8 +242,8 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
setUpClient(clientHttpRequestFactory);
String url = baseUrl + "/status/notfound";
assertThatExceptionOfType(HttpClientErrorException.class).isThrownBy(() ->
template.execute(url, HttpMethod.GET, null, null))
assertThatExceptionOfType(HttpClientErrorException.class)
.isThrownBy(() -> template.execute(url, HttpMethod.GET, null, null))
.satisfies(ex -> {
assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
assertThat(ex.getStatusText()).isNotNull();
@@ -261,12 +261,13 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
setUpClient(clientHttpRequestFactory);
String url = baseUrl + "/status/badrequest";
assertThatExceptionOfType(HttpClientErrorException.class).isThrownBy(() ->
template.execute(url, HttpMethod.GET, null, null))
assertThatExceptionOfType(HttpClientErrorException.class)
.isThrownBy(() -> template.execute(url, HttpMethod.GET, null, null))
.satisfies(ex -> {
assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
assertThat(ex.getMessage()).containsSubsequence("400", "on GET request for \""+url+ "\": [no body]");
assumeFalse(clientHttpRequestFactory instanceof JdkClientHttpRequestFactory, "JDK HttpClient does not expose status text");
assumeThat(clientHttpRequestFactory).as("JDK HttpClient does not expose status text")
.isNotInstanceOf(JdkClientHttpRequestFactory.class);
assertThat(ex.getMessage()).isEqualTo("400 Client Error on GET request for \""+url+ "\": [no body]");
});
}
@@ -276,14 +277,15 @@ class RestTemplateIntegrationTests extends AbstractMockWebServerTests {
setUpClient(clientHttpRequestFactory);
String url = baseUrl + "/status/server";
assertThatExceptionOfType(HttpServerErrorException.class).isThrownBy(() ->
template.execute(url, HttpMethod.GET, null, null))
assertThatExceptionOfType(HttpServerErrorException.class)
.isThrownBy(() -> template.execute(url, HttpMethod.GET, null, null))
.satisfies(ex -> {
assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR);
assertThat(ex.getStatusText()).isNotNull();
assertThat(ex.getResponseBodyAsString()).isNotNull();
assertThat(ex.getMessage()).containsSubsequence("500", "on GET request for \"" + url + "\": [no body]");
assumeFalse(clientHttpRequestFactory instanceof JdkClientHttpRequestFactory, "JDK HttpClient does not expose status text");
assumeThat(clientHttpRequestFactory).as("JDK HttpClient does not expose status text")
.isNotInstanceOf(JdkClientHttpRequestFactory.class);
assertThat(ex.getMessage()).isEqualTo("500 Server Error on GET request for \"" + url + "\": [no body]");
});
}