diff --git a/spring-test/src/main/java/org/springframework/mock/http/server/reactive/MockServerHttpRequest.java b/spring-test/src/main/java/org/springframework/mock/http/server/reactive/MockServerHttpRequest.java index 90982d159bf..4a9fd9bc611 100644 --- a/spring-test/src/main/java/org/springframework/mock/http/server/reactive/MockServerHttpRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/http/server/reactive/MockServerHttpRequest.java @@ -258,7 +258,7 @@ public final class MockServerHttpRequest extends AbstractServerHttpRequest { /** * Set SSL session information and certificates. */ - void sslInfo(SslInfo sslInfo); + B sslInfo(SslInfo sslInfo); /** * Add one or more cookies. @@ -443,8 +443,9 @@ public final class MockServerHttpRequest extends AbstractServerHttpRequest { } @Override - public void sslInfo(SslInfo sslInfo) { + public BodyBuilder sslInfo(SslInfo sslInfo) { this.sslInfo = sslInfo; + return this; } @Override diff --git a/spring-test/src/test/java/org/springframework/mock/http/server/reactive/MockServerHttpRequestTests.java b/spring-test/src/test/java/org/springframework/mock/http/server/reactive/MockServerHttpRequestTests.java index bdc2649d91d..b2a4dff2ea2 100644 --- a/spring-test/src/test/java/org/springframework/mock/http/server/reactive/MockServerHttpRequestTests.java +++ b/spring-test/src/test/java/org/springframework/mock/http/server/reactive/MockServerHttpRequestTests.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.Named; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; +import org.mockito.internal.util.MockUtil; import org.springframework.http.HttpCookie; import org.springframework.http.HttpHeaders; @@ -33,6 +34,7 @@ import org.springframework.web.util.UriComponentsBuilder; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.junit.jupiter.api.Named.named; +import static org.mockito.Mockito.mock; /** * Tests for {@link MockServerHttpRequest}. @@ -66,6 +68,19 @@ class MockServerHttpRequestTests { assertThat(request.getURI().toString()).isEqualTo("/foo%20bar?a=b&name%20A=value%20A1&name%20A=value%20A2&name%20B=value%20B1"); } + /** + * Ensure that {@code sslInfo()} can be used with the fluent builder pattern. + */ + @Test // gh-35075 + void sslInfo() { + MockServerHttpRequest request = MockServerHttpRequest.get("/test") + .sslInfo(mock()) + .build(); + + assertThat(request.getSslInfo()).as("is mock").satisfies(sslInfo -> MockUtil.isMock(sslInfo)); + assertThat(request.getURI().toString()).isEqualTo("/test"); + } + @ParameterizedTest(name = "[{index}] {0}") @MethodSource void httpMethodNotNullOrEmpty(ThrowingCallable callable) { diff --git a/spring-web/src/testFixtures/java/org/springframework/web/testfixture/http/server/reactive/MockServerHttpRequest.java b/spring-web/src/testFixtures/java/org/springframework/web/testfixture/http/server/reactive/MockServerHttpRequest.java index 81613dcc681..00c825d2b94 100644 --- a/spring-web/src/testFixtures/java/org/springframework/web/testfixture/http/server/reactive/MockServerHttpRequest.java +++ b/spring-web/src/testFixtures/java/org/springframework/web/testfixture/http/server/reactive/MockServerHttpRequest.java @@ -258,7 +258,7 @@ public final class MockServerHttpRequest extends AbstractServerHttpRequest { /** * Set SSL session information and certificates. */ - void sslInfo(SslInfo sslInfo); + B sslInfo(SslInfo sslInfo); /** * Add one or more cookies. @@ -458,8 +458,9 @@ public final class MockServerHttpRequest extends AbstractServerHttpRequest { } @Override - public void sslInfo(SslInfo sslInfo) { + public BodyBuilder sslInfo(SslInfo sslInfo) { this.sslInfo = sslInfo; + return this; } @Override