From 0e84761871c7f35051c8185774517b21c88987e1 Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Wed, 18 Jun 2025 13:16:08 +0200 Subject: [PATCH] Return Builder from sslInfo() builder method for MockServerHttpRequest Prior to this commit, the sslInfo() method in MockServerHttpRequest's BaseBuilder returned void, which prevented it from being used with the intended fluent Builder pattern. This commit changes the return type to the builder (B) for proper method chaining. Closes gh-35075 --- .../server/reactive/MockServerHttpRequest.java | 5 +++-- .../reactive/MockServerHttpRequestTests.java | 15 +++++++++++++++ .../server/reactive/MockServerHttpRequest.java | 5 +++-- 3 files changed, 21 insertions(+), 4 deletions(-) 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