Add HttpHeaders.containsHeaderString() test
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java b/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java index 84cdd4c..999577b 100644 --- a/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java +++ b/jaxrs-api/src/main/java/jakarta/ws/rs/core/HttpHeaders.java
@@ -75,7 +75,8 @@ * (missing comma), or the value {@code no - store} (whitespace within value). * * @param name the message header. - * @param valueSeparatorRegex Separates the header value into single values. {@code null} does not split. + * @param valueSeparatorRegex Regular expression that separates the header value into single values. + * {@code null} does not split. * @param valuePredicate value must fulfil this predicate. * @return {@code true} if and only if a header with the given name exists, having either a whitespace-trimmed value * matching the predicate, or having at least one whitespace-trimmed single value in a token-separated list of single values.
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java index debf1a1..6f31ef0 100644 --- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java +++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientrequestcontext/JAXRSClientIT.java
@@ -864,9 +864,9 @@ /* * @testName: containsHeaderStringTest * - * @assertion_ids: JAXRS:JAVADOC:???; + * @assertion_ids: JAXRS:JAVADOC:1353; JAXRS:JAVADOC:1354; * - * @test_Strategy: Check if the specified headers a specified value. + * @test_Strategy: Check if the specified header contains a specified value. * * ClientRequestFilter.abortWith */
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java index 45cc716..5ab7ad8 100644 --- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java +++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/client/clientresponsecontext/JAXRSClientIT.java
@@ -430,9 +430,9 @@ /* * @testName: containsHeaderStringTest * - * @assertion_ids: JAXRS:JAVADOC:???; + * @assertion_ids: JAXRS:JAVADOC:1355; JAXRS:JAVADOC:1356; * - * @test_Strategy: Check if the specified headers a specified value. + * @test_Strategy: Check if the specified header contains a specified value. * * ClientRequestFilter.abortWith */
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/HttpHeadersTest.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/HttpHeadersTest.java index 72df7b6..43a7f41 100644 --- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/HttpHeadersTest.java +++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/HttpHeadersTest.java
@@ -16,6 +16,9 @@ package ee.jakarta.tck.ws.rs.ee.rs.core.headers; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + import java.util.Arrays; import java.util.Date; import java.util.Iterator; @@ -68,6 +71,39 @@ } @GET + @Path("/contains-headers") + public String containsHeadersGet() { + sb = new StringBuffer(); + List<String> myHeaders = Arrays.asList("Accept", "Content-Type", "Header3"); + + try { + assertTrue(hs.containsHeaderString("accept", "text/html"::equalsIgnoreCase)); + sb.append("Header: accept contains text/html; "); + + //Verify Predicate and separator character usage + assertTrue(hs.containsHeaderString("Accept", ",", "Text/html;Level=1"::equalsIgnoreCase)); + sb.append("Header: accept contains text/html;level=1; "); + + //Verify incorrect separator character fails + assertFalse(hs.containsHeaderString("Accept", ";", "text/html;level=1"::equals)); + sb.append("Incorrect separator character fails as expected; "); + + //Verify white space in parameter not trimmed + assertFalse(hs.containsHeaderString("header3", "**", "value3"::equalsIgnoreCase)); + sb.append("White space not trimmed from parameter as expected; "); + + //Verify white space in front and back of value trimmed + assertTrue(hs.containsHeaderString("HEADER3", "**", "value2"::equalsIgnoreCase)); + sb.append("White space trimmed around value as expected; "); + } catch (Throwable ex) { + sb.append("Unexpected exception thrown in containsHeadersGet: " + + ex.getMessage()); + ex.printStackTrace(); + } + return sb.toString(); + } + + @GET @Path("/acl") public String aclGet() { sb = new StringBuffer();
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/JAXRSClientIT.java index 5b3cc4d..1a4c8ce 100644 --- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/JAXRSClientIT.java +++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/headers/JAXRSClientIT.java
@@ -211,6 +211,26 @@ } /* + * @testName: requestHeadersTest + * + * @assertion_ids: JAXRS:JAVADOC:1361; JAXRS:JAVADOC:1362; + * + * @test_Strategy: HttpHeaders.containsHeaderString used to confirm that a given header contains + * a specified value with the appropriate value separator. + */ + @Test + public void containsHeaderStringTest() throws Fault { + setProperty(Property.REQUEST_HEADERS, + "Accept:text/*, text/html, text/html;level=1, */*"); + setProperty(Property.REQUEST_HEADERS, + "Content-Type:application/xml;charset=utf8"); + setProperty(Property.REQUEST_HEADERS, + "Header3:value1 ** value2 **value 3"); + setProperty(Property.REQUEST, buildRequest(Request.GET, "contains-headers")); + invoke(); + } + + /* * @testName: getDateTest * * @assertion_ids: JAXRS:JAVADOC:779;