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;