diff --git a/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java b/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java index 7a07208f..6be80849 100644 --- a/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java +++ b/spring-restdocs-webtestclient/src/main/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverter.java @@ -104,8 +104,8 @@ private Collection extractCookies(HttpHeaders headers) { } private RequestCookie createRequestCookie(String header) { - String[] components = header.split("="); - return new RequestCookie(components[0], components[1]); + int separator = header.indexOf('='); + return new RequestCookie(header.substring(0, separator), header.substring(separator + 1)); } private final class ExchangeResultReactiveHttpInputMessage implements ReactiveHttpInputMessage { diff --git a/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverterTests.java b/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverterTests.java index 487723dc..dbb9b187 100644 --- a/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverterTests.java +++ b/spring-restdocs-webtestclient/src/test/java/org/springframework/restdocs/webtestclient/WebTestClientRequestConverterTests.java @@ -335,4 +335,22 @@ public void requestWithCookies() { assertThat(request.getCookies()).extracting("value").containsExactly("cookieVal1", "cookieVal2"); } + @Test + public void requestWithCookieValueContainingEqualsSign() { + ExchangeResult result = WebTestClient.bindToRouterFunction(RouterFunctions.route(GET("/foo"), (req) -> null)) + .configureClient() + .baseUrl("http://localhost") + .build() + .get() + .uri("/foo") + .cookie("sessionId", "YWJjZGVm==") + .exchange() + .expectBody() + .returnResult(); + OperationRequest request = this.converter.convert(result); + assertThat(request.getCookies()).hasSize(1); + assertThat(request.getCookies()).extracting("name").containsExactly("sessionId"); + assertThat(request.getCookies()).extracting("value").containsExactly("YWJjZGVm=="); + } + }