Skip to content

Commit

Permalink
Add container*Context tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jim-krueger committed Mar 25, 2024
1 parent 90cd0e8 commit 78208ee
Show file tree
Hide file tree
Showing 7 changed files with 127 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@
package ee.jakarta.tck.ws.rs.ee.rs.container.requestcontext;

public enum ContextOperation {
ABORTWITH, GETACCEPTABLELANGUAGES, GETACCEPTABLELANGUAGESISREADONLY, GETACCEPTABLEMEDIATYPES, GETACCEPTABLEMEDIATYPESISREADONLY, GETCOOKIES, GETCOOKIESISREADONLY, GETDATE, GETENTITYSTREAM, GETHEADERS, GETHEADERSISMUTABLE, GETHEADERSTRING2, GETLANGUAGE, GETLENGTH, GETMEDIATYPE, GETMETHOD, GETPROPERTY, GETPROPERTYNAMES, GETPROPERTYNAMESISREADONLY, GETREQUEST, GETSECURITYCONTEXT, GETURIINFO, HASENTITY, REMOVEPROPERTY, SETENTITYSTREAM, SETMETHOD, SETPROPERTY, SETPROPERTYNULL, SETPROPERTYCONTEXT, SETREQUESTURI1, SETREQUESTURI2, SETSECURITYCONTEXT;
ABORTWITH, GETACCEPTABLELANGUAGES, GETACCEPTABLELANGUAGESISREADONLY, GETACCEPTABLEMEDIATYPES, GETACCEPTABLEMEDIATYPESISREADONLY, GETCOOKIES, GETCOOKIESISREADONLY, GETDATE, GETENTITYSTREAM, CONTAINSHEADERSTRING, GETHEADERS, GETHEADERSISMUTABLE, GETHEADERSTRING2, GETLANGUAGE, GETLENGTH, GETMEDIATYPE, GETMETHOD, GETPROPERTY, GETPROPERTYNAMES, GETPROPERTYNAMESISREADONLY, GETREQUEST, GETSECURITYCONTEXT, GETURIINFO, HASENTITY, REMOVEPROPERTY, SETENTITYSTREAM, SETMETHOD, SETPROPERTY, SETPROPERTYNULL, SETPROPERTYCONTEXT, SETREQUESTURI1, SETREQUESTURI2, SETSECURITYCONTEXT;
}
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,34 @@ public void getEntityStreamTest() throws Fault {
ContextOperation.GETENTITYSTREAM);
}

/*
* @testName: containsHeaderStringTest
*
* @assertion_ids: JAXRS:JAVADOC:???
*
* @test_Strategy: Check if the specified header contains a specified value.
*
* Filter method called before a request has been dispatched to a resource.
* Throws IOException.
*/
@Test
@Tag("servlet")
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.SEARCH_STRING, "Test1");
setProperty(Property.SEARCH_STRING, "Test2");
setProperty(Property.SEARCH_STRING, "Test3");
setProperty(Property.SEARCH_STRING, "Test4");
setProperty(Property.SEARCH_STRING, "Test5");

invokeRequestAndCheckResponse(ContextOperation.CONTAINSHEADERSTRING);
}

/*
* @testName: getHeadersTest
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,16 +140,48 @@ public void getEntityStream() throws IOException {
abortWithEntity(entity);
}

public void containsHeaderString() {
StringBuffer sb = new StringBuffer();
sb.append("containsHeaderString= ");

try {
assertTrue(requestContext.containsHeaderString("accept", "text/html"::equals));
sb.append("Test1: accept contains text/html; ");

//Verify Predicate and separator character usage
assertTrue(requestContext.containsHeaderString("Accept", ",", "Text/html;Level=1"::equalsIgnoreCase));
sb.append("Test2: accept contains text/html;level=1; ");

//Verify incorrect separator character fails
assertTrue(!(requestContext.containsHeaderString("Accept", ";", "text/html;level=1"::equals)));
sb.append("Test3: Incorrect separator character fails as expected; ");

//Verify white space in value not trimmed and double character separator
assertTrue(!(requestContext.containsHeaderString("header3", ";;", "value3"::equals)));
sb.append("Test4: White space not trimmed from value as expected; ");

//Verify white space in front and back of value trimmed
assertTrue(requestContext.containsHeaderString("HEADER3", ";;", "value2"::equalsIgnoreCase));
sb.append("Test5: White space trimmed around value as expected; ");
} catch (Throwable ex) {
sb.append("Unexpected exception thrown in containsHeaderString: "
+ ex.getMessage());
ex.printStackTrace();
}
abortWithEntity(sb.toString());
}

public void getHeaders() {
MultivaluedMap<String, String> headers = requestContext.getHeaders();
StringBuilder sb = new StringBuilder();
for (Entry<String, List<String>> set : headers.entrySet()) {
String first = headers.getFirst(set.getKey());
String first = headers.getFirst(set.getKey());
sb.append(set.getKey()).append(":").append(first).append(";");
}
abortWithEntity(sb.toString());
}


public void getHeadersIsMutable() {
String key = "KEY";
MultivaluedMap<String, String> headers = requestContext.getHeaders();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package ee.jakarta.tck.ws.rs.ee.rs.container.responsecontext;

public enum ContextOperation {
GETALLOWEDMETHODS, GETCOOKIES, GETCOOKIESISREADONLY, GETDATE, GETENTITY, GETENTITYANNOTATIONS, GETENTITYANNOTATIONSONENTITY, GETENTITYCLASS, GETENTITYSTREAM, GETENTITYTAG, GETENTITYTYPE, GETHEADERS, GETHEADERSISMUTABLE, GETHEADERSTRINGOPERATION, GETHEADERSTRINGHEADER, GETLANGUAGE, GETLASTMODIFIED, GETLENGTH, GETLINK, GETLINKBUILDER, GETLINKS, GETLOCATION, GETMEDIATYPE, GETSTATUS, GETSTATUSINFO, GETSTRINGHEADERS, HASENTITY, HASLINK, SETENTITY, SETENTITYSTREAM, SETSTATUS, SETSTATUSINFO,
GETALLOWEDMETHODS, GETCOOKIES, GETCOOKIESISREADONLY, GETDATE, GETENTITY, GETENTITYANNOTATIONS, GETENTITYANNOTATIONSONENTITY, GETENTITYCLASS, GETENTITYSTREAM, GETENTITYTAG, GETENTITYTYPE, CONTAINSHEADERSTRING, GETHEADERS, GETHEADERSISMUTABLE, GETHEADERSTRINGOPERATION, GETHEADERSTRINGHEADER, GETLANGUAGE, GETLASTMODIFIED, GETLENGTH, GETLINK, GETLINKBUILDER, GETLINKS, GETLOCATION, GETMEDIATYPE, GETSTATUS, GETSTATUSINFO, GETSTRINGHEADERS, HASENTITY, HASLINK, SETENTITY, SETENTITYSTREAM, SETSTATUS, SETSTATUSINFO,

// just helping methods, pass
SETSTRINGBEANRUNTIME, SETORIGINALRUNTIME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,25 @@ public void getEntityTypeInputStreamTest() throws Fault {
invokeRequestAndCheckResponse(ContextOperation.GETENTITYTYPE);
}

/*
* @testName: getHeadersTest
*
* @assertion_ids: JAXRS:JAVADOC:688; JAXRS:JAVADOC:707; JAXRS:JAVADOC:708;
*
* @test_Strategy: Get the mutable response headers multivalued map.
*
* Filter method called after a response has been provided for a request.
* Throws IOException.
*/
@Test
public void containsHeaderStringTest() throws Fault {
String header = "Test";
for (int i = 1; i != 6; i++)
setProperty(Property.UNORDERED_SEARCH_STRING, header + i);
setProperty(Property.CONTENT, header);
invokeRequestAndCheckResponse(ContextOperation.CONTAINSHEADERSTRING);
}

/*
* @testName: getHeadersTest
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,17 @@ public Response setEntityStream() {
return response;
}

@POST
@Path("containsheaderstring")
public Response containsHeaderString(String header) {
ResponseBuilder builder = createResponseWithHeader();
builder = builder.header("Accept", "text/html, text/html;level=1, */*");
builder = builder.header("Content-Type", "application/xml;charset=utf8");
builder = builder.header("Header3", "value1 ;; Value2 ;;value 3");
Response response = builder.build();
return response;
}

@POST
@Path("getheaders")
public Response getHeaders(String header) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,41 @@ else if (type != null)
setEntity(name);
}

public void containsHeaderString() {
StringBuffer sb = new StringBuffer();
sb.append("containsHeaderString= ");

try {
assertTrue(requestContext.containsHeaderString("accept", "text/html"::equals));
sb.append("Test1: accept contains text/html; ");

//Verify Predicate and separator character usage
assertTrue(requestContext.containsHeaderString("Accept", ",", "Text/html;Level=1"::equalsIgnoreCase));
sb.append("Test2: accept contains text/html;level=1; ");

//Verify incorrect separator character fails
assertTrue(!(requestContext.containsHeaderString("Accept", ";", "text/html;level=1"::equals)));
sb.append("Test3: Incorrect separator character fails as expected; ");

//Verify white space in value not trimmed and double character separator
assertTrue(!(requestContext.containsHeaderString("header3", ";;", "value3"::equals)));
sb.append("Test4: White space not trimmed from value as expected; ");

//Verify white space in front and back of value trimmed
assertTrue(requestContext.containsHeaderString("HEADER3", ";;", "value2"::equalsIgnoreCase));
sb.append("Test5: White space trimmed around value as expected; ");
} catch (Throwable ex) {
sb.append("Unexpected exception thrown in containsHeaderString: "
+ ex.getMessage());
ex.printStackTrace();
}
setEntity(sb.toString());
}

public void getHeaders() {
MultivaluedMap<String, Object> headers = responseContext.getHeaders();
setEntity(collectionToString(headers.keySet()));
}
MultivaluedMap<String, Object> headers = responseContext.getHeaders();
setEntity(collectionToString(headers.keySet()));
}

public void getHeadersIsMutable() {
MultivaluedMap<String, Object> headers = responseContext.getHeaders();
Expand Down

0 comments on commit 78208ee

Please sign in to comment.