This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 4.0.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git
commit c9f5f8eb05aeb2dbe223a9d0633afdfa825ea14c Author: Andriy Redko <[email protected]> AuthorDate: Mon Dec 30 20:20:23 2024 -0500 Add Cookie header test cases (#2185) --- .../org/apache/cxf/jaxrs/client/WebClientTest.java | 21 +++++++++++++++++++++ .../org/apache/cxf/systest/jaxrs/BookStore.java | 9 +++++++++ .../systest/jaxrs/JAXRS20ClientServerBookTest.java | 18 ++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java b/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java index 3b4cfb767d..fa90cf37e5 100644 --- a/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java +++ b/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java @@ -24,6 +24,7 @@ import java.lang.reflect.Type; import java.net.URI; import java.util.Collections; +import jakarta.ws.rs.core.Cookie; import jakarta.ws.rs.core.HttpHeaders; import jakarta.ws.rs.ext.ParamConverter; import jakarta.ws.rs.ext.ParamConverterProvider; @@ -32,8 +33,10 @@ import org.apache.cxf.jaxrs.resources.BookStore; import org.junit.Test; +import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -343,6 +346,24 @@ public class WebClientTest { assertEquals("en_CA", wc.getHeaders().getFirst(HttpHeaders.CONTENT_LANGUAGE)); } + @Test + public void testDefaultCookie() { + WebClient wc = WebClient.create("http://foo").language("en_CA"); + wc.cookie(new Cookie("a", "1")); + wc.cookie(new Cookie("b", "2")); + assertThat(wc.getHeaders().get(HttpHeaders.COOKIE), + containsInAnyOrder("$Version=1;a=1", "$Version=1;b=2")); + } + + @Test + public void testCookieNoVersion() { + WebClient wc = WebClient.create("http://foo").language("en_CA"); + wc.cookie(new Cookie("a", "1", null, null, 0)); + wc.cookie(new Cookie("b", "2", null, null, 0)); + assertThat(wc.getHeaders().get(HttpHeaders.COOKIE), + containsInAnyOrder("a=1", "b=2")); + } + private static final class ParamConverterProviderImpl implements ParamConverterProvider { @SuppressWarnings("unchecked") diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java index a28f720742..e1a16401b3 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java @@ -1852,6 +1852,15 @@ public class BookStore { return httpHeaders.getRequestHeaders(); } + @GET + @Path("/cookies") + @Produces("application/json") + public Response getCookies() { + return Response.ok() + .header(HttpHeaders.SET_COOKIE, httpHeaders.getRequestHeaders().getFirst(HttpHeaders.COOKIE)) + .build(); + } + public final String init() { books.clear(); cds.clear(); diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java index 7362f4f7e8..5159ee3d42 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java @@ -63,6 +63,7 @@ import jakarta.ws.rs.client.ResponseProcessingException; import jakarta.ws.rs.client.WebTarget; import jakarta.ws.rs.container.ResourceContext; import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.Cookie; import jakarta.ws.rs.core.Feature; import jakarta.ws.rs.core.FeatureContext; import jakarta.ws.rs.core.GenericEntity; @@ -1122,6 +1123,23 @@ public class JAXRS20ClientServerBookTest extends AbstractBusClientServerTestBase + "jakarta.ws.rs.ext.Provider,jakarta.ws.rs.Consumes}")); } + @Test + public void testGetCookies() throws Exception { + final WebTarget target = ClientBuilder + .newClient() + .property("org.apache.cxf.http.cookie.separator", ";") + .target("http://localhost:" + PORT + "/bookstore/cookies"); + + @SuppressWarnings("unchecked") + final Response response = target + .request().accept("application/json") + .cookie(new Cookie("a", "1")) + .cookie(new Cookie("b", "2")) + .get(); + + assertThat(response.getHeaderString(HttpHeaders.SET_COOKIE), equalTo("$Version=1;a=1; $Version=1;b=2")); + } + private static final class ReplaceBodyFilter implements ClientRequestFilter { @Override
