/**
* $Id: EntityBrokerServletTest.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $
* $URL: https://source.sakaiproject.org/svn/entitybroker/trunk/rest/src/test/org/sakaiproject/entitybroker/rest/jetty/EntityBrokerServletTest.java $
* DSpaceKernelServletFilterTest.java - DSpace2 - Oct 30, 2008 1:59:18 PM - azeckoski
**********************************************************************************
* Copyright (c) 2008, 2009 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**********************************************************************************/
package org.sakaiproject.entitybroker.rest.jetty;
import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.Map;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mortbay.jetty.testing.HttpTester;
import org.mortbay.jetty.testing.ServletTester;
import org.sakaiproject.entitybroker.mocks.data.TestData;
import org.sakaiproject.entitybroker.providers.EntityRequestHandler;
import org.sakaiproject.entitybroker.rest.ServiceTestManager;
import org.sakaiproject.entitybroker.util.http.HttpRESTUtils;
/**
* This starts up a jetty server and tests the processing of the servlets and batching
*
* @author Aaron Zeckoski (azeckoski @ gmail.com)
*/
public class EntityBrokerServletTest {
public static final String DIRECT_PREFIX = "/direct";
protected ServiceTestManager serviceTestManager;
protected TestData td;
private ServletTester tester;
private HttpTester request;
private HttpTester response;
@Before
public void setup() {
// setup the test data and the set of services
td = new TestData();
serviceTestManager = new ServiceTestManager(td);
assertNotNull(serviceTestManager);
assertNotNull(serviceTestManager.entityBrokerManager);
assertNotNull(serviceTestManager.entityEncodingManager);
assertNotNull(serviceTestManager.entityBatchHandler);
this.tester = new ServletTester();
this.tester.setContextPath(DIRECT_PREFIX);
this.tester.addServlet(MockDirectServlet.class, "/*");
try {
this.tester.start();
} catch (Exception e) {
fail("Could not start the jetty server: " + e.getMessage());
}
this.response = new HttpTester();
prepareRequest();
}
private void prepareRequest() {
this.request = new HttpTester();
this.request.setMethod("GET");
this.request.setHeader("Host", "tester");
this.request.setVersion("HTTP/1.0");
}
@After
public void teardown() {
try {
this.tester.stop();
} catch (Exception e) {
fail("Could not stop the jetty server: " + e.getMessage());
}
}
/**
* Fires off a request using Jetty to the given uri (uses GET by default),
* also resets the request afterward so it can be used again if desired
* @param uri any uri which you want to test (should be valid for the test)
*/
protected void fireRequest(String uri) {
fireRequest(uri, null, null);
}
/**
* Fires off a request using Jetty to the given uri (uses GET by default),
* also resets the request afterward so it can be used again if desired
* @param uri any uri which you want to test (should be valid for the test)
* @param method (optional) the method to use, if null then GET
*/
protected void fireRequest(String uri, String method) {
fireRequest(uri, null, null);
}
/**
* Fires off a request using Jetty to the given uri (uses GET by default),
* also resets the request afterward so it can be used again if desired
* @param uri any uri which you want to test (should be valid for the test)
* @param method (optional) the method to use, if null then GET
* @param params (optional) params to append to the end of the uri
*/
protected void fireRequest(String uri, String method, Map<String, String> params) {
if (method == null || "".equals(null)) {
method = "GET";
}
this.response = new HttpTester(); // build a new response
this.request.setMethod( method.toUpperCase() );
if (params != null && params.size() > 0) {
uri = HttpRESTUtils.mergeQueryStringWithParams(uri, params);
}
this.request.setURI(uri);
try {
this.response.parse(this.tester.getResponses(this.request.generate()));
} catch (Exception e) {
fail("Could not parse the response to the request ("+uri+"): " + e);
}
prepareRequest(); // reset the request
}
// now the tests
@Test
public void testSimpleXML() {
// now fire the request
fireRequest(DIRECT_PREFIX + TestData.ENTITY_URL4_XML);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("myPrefix4"));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("<id>4-one</id>"));
assertTrue(content.contains("<entityId>4-one</entityId>"));
assertTrue(content.contains("/myPrefix4/4-one"));
assertFalse(content.contains("4-two"));
assertFalse(content.contains("4-three"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testSimpleJSON() {
// now fire the request
fireRequest(DIRECT_PREFIX + TestData.ENTITY_URL4_JSON);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("myPrefix4"));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("\"id\": \"4-one\""));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains("\\/myPrefix4\\/4-one"));
assertFalse(content.contains("4-two"));
assertFalse(content.contains("4-three"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testSimpleCollectionXML() {
// now fire the request
fireRequest(DIRECT_PREFIX + TestData.COLLECTION_URL4_XML);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<myPrefix4_collection entityPrefix=\"myPrefix4\">"));
assertTrue(content.contains("</myPrefix4_collection>"));
assertTrue(content.contains("4-two"));
assertTrue(content.contains("4-three"));
assertTrue(content.contains("myPrefix4"));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("<id>4-one</id>"));
assertTrue(content.contains("<entityId>4-one</entityId>"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testSimpleCollectionJSON() {
// now fire the request
fireRequest(DIRECT_PREFIX + TestData.COLLECTION_URL4_JSON);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("\"myPrefix4_collection\":"));
assertTrue(content.contains("myPrefix4"));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("\"id\": \"4-one\""));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains("\\/myPrefix4\\/4-one"));
assertTrue(content.contains("4-two"));
assertTrue(content.contains("4-three"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
// test describe
@Test
public void testDescribe() {
// now fire the request
fireRequest(DIRECT_PREFIX + EntityRequestHandler.SLASH_DESCRIBE);
try {
String content = this.response.getContent();
assertNotNull(content);
// just check for working and valid format
assertTrue(content.contains("<?xml"));
assertTrue(content.contains("<!DOCTYPE html"));
assertTrue(content.contains("<html"));
assertTrue(content.contains("<head"));
assertTrue(content.contains("<title"));
assertTrue(content.contains("</title>"));
assertTrue(content.contains("<body"));
assertTrue(content.contains("</body>"));
assertTrue(content.contains("</html>"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testDescribeXML() {
// now fire the request
fireRequest(DIRECT_PREFIX + EntityRequestHandler.SLASH_DESCRIBE + ".xml");
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<?xml"));
assertTrue(content.contains("<describe>"));
assertTrue(content.contains("<prefixes>"));
assertTrue(content.contains("<prefix>"));
assertTrue(content.contains("<capabilities>"));
assertTrue(content.contains("<describeURL>"));
assertTrue(content.contains("<capability>"));
assertTrue(content.contains("</prefixes>"));
assertTrue(content.contains("</describe>"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testDescribeEntity() {
// now fire the request
fireRequest(DIRECT_PREFIX + "/" + TestData.PREFIX4 + EntityRequestHandler.SLASH_DESCRIBE);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<?xml"));
assertTrue(content.contains("<!DOCTYPE html"));
assertTrue(content.contains("<html"));
assertTrue(content.contains("<head"));
assertTrue(content.contains("<title"));
assertTrue(content.contains("</title>"));
assertTrue(content.contains("<body"));
assertTrue(content.contains("</body>"));
assertTrue(content.contains("</html>"));
assertTrue(content.contains(TestData.PREFIX4));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testDescribeEntityXML() {
// now fire the request
fireRequest(DIRECT_PREFIX + "/" + TestData.PREFIX4 + EntityRequestHandler.SLASH_DESCRIBE + ".xml");
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<?xml"));
assertTrue(content.contains("<prefix>"));
assertTrue(content.contains("<collectionURL>/"+TestData.PREFIX4+"</collectionURL>"));
assertTrue(content.contains("<describeURL>"));
assertTrue(content.contains("<capabilities>"));
assertTrue(content.contains("<capability>"));
assertTrue(content.contains(TestData.PREFIX4));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
// test batching
@Test
public void testBatchGetOneEntityXML() {
// now fire the request
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".xml" + "?_refs=" + DIRECT_PREFIX + TestData.REF4;
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<refs"));
assertTrue(content.contains("ref0"));
assertTrue(content.contains("<headers"));
assertTrue(content.contains("<status"));
assertTrue(content.contains("200"));
assertTrue(content.contains("<data"));
assertTrue(content.contains("refs"));
assertTrue(content.contains("refs"));
assertTrue(content.contains(TestData.PREFIX4));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("<id>4-one</id>"));
assertTrue(content.contains("<entityId>4-one</entityId>"));
assertTrue(content.contains("/myPrefix4/4-one"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testBatchGetOneEntityJSON() {
// now fire the request
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".json" + "?_refs=" + DIRECT_PREFIX + TestData.REF4 + ".xml";
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("ref0"));
assertTrue(content.contains("\"status\":"));
assertTrue(content.contains("200"));
assertTrue(content.contains("\"headers\":"));
assertTrue(content.contains("\"reference\":"));
assertTrue(content.contains("\"data\":"));
assertTrue(content.contains("myPrefix4"));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("\"id\": \"4-one\""));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains("\\/myPrefix4\\/4-one"));
assertTrue(content.contains(TestData.PREFIX4));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".json" + "?_refs=" + DIRECT_PREFIX + TestData.REF4_3;
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("ref0"));
assertTrue(content.contains("\"status\":"));
assertTrue(content.contains("200"));
assertTrue(content.contains("\"headers\":"));
assertTrue(content.contains("\"reference\":"));
assertTrue(content.contains("\"data\":"));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains(TestData.IDS4[2]));
assertTrue(content.contains(TestData.PREFIX4));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".json" + "?_refs=" + DIRECT_PREFIX + TestData.REF6_3;
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("ref0"));
assertTrue(content.contains("\"status\":"));
assertTrue(content.contains("200"));
assertTrue(content.contains("\"headers\":"));
assertTrue(content.contains("\"reference\":"));
assertTrue(content.contains("\"data\":"));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains(TestData.IDS6[2]));
assertTrue(content.contains(TestData.PREFIX6));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
// test redirect
@Test
public void testBatchRedirectEntityXML() {
// normal
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".xml" + "?_refs=" + DIRECT_PREFIX + TestData.REFU1 + ".xml";
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<refs"));
assertTrue(content.contains("ref0"));
assertTrue(content.contains("<headers"));
assertTrue(content.contains("<status"));
assertTrue(content.contains("200"));
assertTrue(content.contains("<data"));
assertTrue(content.contains("refs"));
assertTrue(content.contains(TestData.PREFIXU1));
assertTrue(content.contains("rA"));
assertTrue(content.contains("<id>rA</id>"));
assertTrue(content.contains("<entityId>rA</entityId>"));
assertTrue(content.contains("/redirect1/rA"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
// once again with feeling
url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".xml" + "?_refs="
+ DIRECT_PREFIX + "/" + TestData.PREFIXU1 + "/xml/" + TestData.IDSU1[0];
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<refs"));
assertTrue(content.contains("ref0"));
assertTrue(content.contains("<headers"));
assertTrue(content.contains("<status"));
assertTrue(content.contains("200"));
assertTrue(content.contains("<data"));
assertTrue(content.contains("refs"));
assertTrue(content.contains(TestData.PREFIXU1));
assertTrue(content.contains("rA"));
assertTrue(content.contains("<id>rA</id>"));
assertTrue(content.contains("<entityId>rA</entityId>"));
assertTrue(content.contains("/redirect1/rA"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
// test batch multiple get
@Test
public void testBatchGetEntitiesXML() {
// now fire the request
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".xml"
+ "?_refs=" + DIRECT_PREFIX + TestData.REF4_two
+ "," + DIRECT_PREFIX + TestData.REF6_2;
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<refs"));
assertTrue(content.contains("ref0"));
assertTrue(content.contains("<headers"));
assertTrue(content.contains("<status"));
assertTrue(content.contains("200"));
assertTrue(content.contains("<data"));
assertTrue(content.contains("refs"));
assertTrue(content.contains("refs"));
assertTrue(content.contains(TestData.PREFIX4));
assertTrue(content.contains("4-two"));
assertTrue(content.contains("<id>4-two</id>"));
assertTrue(content.contains("<entityId>4-two</entityId>"));
assertTrue(content.contains("/myPrefix4/4-two"));
assertTrue(content.contains(TestData.PREFIX6));
assertTrue(content.contains("6-two"));
assertTrue(content.contains("<id>6-two</id>"));
assertTrue(content.contains("<entityId>6-two</entityId>"));
assertTrue(content.contains("/myPrefix6/6-two"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testBatchGetEntitiesJSON() {
// now fire the request
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".json"
+ "?_refs=" + DIRECT_PREFIX + TestData.REF4_two
+ "," + DIRECT_PREFIX + TestData.REF6_2;
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("ref0"));
assertTrue(content.contains("\"status\":"));
assertTrue(content.contains("200"));
assertTrue(content.contains("\"headers\":"));
assertTrue(content.contains("\"reference\":"));
assertTrue(content.contains("\"data\":"));
assertTrue(content.contains(TestData.PREFIX4));
assertTrue(content.contains("4-two"));
assertTrue(content.contains("\"id\": \"4-two\""));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains("\\/myPrefix4\\/4-two"));
assertTrue(content.contains(TestData.PREFIX6));
assertTrue(content.contains("6-two"));
assertTrue(content.contains("\"id\": \"6-two\""));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testBatchGetCollectionsXML() {
// now fire the request
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".xml"
+ "?_refs=" + DIRECT_PREFIX + TestData.SPACE4
+ "," + DIRECT_PREFIX + TestData.REF6_2;
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("<refs"));
assertTrue(content.contains("ref0"));
assertTrue(content.contains("<headers"));
assertTrue(content.contains("<status"));
assertTrue(content.contains("200"));
assertTrue(content.contains("<data"));
assertTrue(content.contains("refs"));
assertTrue(content.contains("refs"));
assertTrue(content.contains(TestData.PREFIX4));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("4-two"));
assertTrue(content.contains("4-three"));
assertTrue(content.contains("<id>4-two</id>"));
assertTrue(content.contains("<entityId>4-two</entityId>"));
assertTrue(content.contains("/myPrefix4/4-two"));
assertTrue(content.contains(TestData.PREFIX6));
assertTrue(content.contains("6-two"));
assertTrue(content.contains("<id>6-two</id>"));
assertTrue(content.contains("<entityId>6-two</entityId>"));
assertTrue(content.contains("/myPrefix6/6-two"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testBatchGetCollectionsJSON() {
// now fire the request
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".json"
+ "?_refs=" + DIRECT_PREFIX + TestData.SPACE4
+ "," + DIRECT_PREFIX + TestData.REF6_2;
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("ref0"));
assertTrue(content.contains("\"status\":"));
assertTrue(content.contains("200"));
assertTrue(content.contains("\"headers\":"));
assertTrue(content.contains("\"reference\":"));
assertTrue(content.contains("\"data\":"));
assertTrue(content.contains(TestData.PREFIX4));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("4-two"));
assertTrue(content.contains("4-three"));
assertTrue(content.contains("\"id\": \"4-two\""));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains("\\/myPrefix4\\/4-two"));
assertTrue(content.contains(TestData.PREFIX6));
assertTrue(content.contains("6-two"));
assertTrue(content.contains("\"id\": \"6-two\""));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testBatchGetValidAndInvalidJSON() {
// now fire the request
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".json"
+ "?_refs=" + DIRECT_PREFIX + TestData.SPACE4
+ "," + DIRECT_PREFIX + TestData.REF6_2
+ "," + DIRECT_PREFIX + TestData.SPACE6 + "/XXXXX";
fireRequest(url);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("ref0"));
assertTrue(content.contains("\"status\":"));
assertTrue(content.contains("200"));
assertTrue(content.contains("\"headers\":"));
assertTrue(content.contains("\"reference\":"));
assertTrue(content.contains("\"data\":"));
assertTrue(content.contains(TestData.PREFIX4));
assertTrue(content.contains("4-one"));
assertTrue(content.contains("4-two"));
assertTrue(content.contains("4-three"));
assertTrue(content.contains("\"id\": \"4-two\""));
assertTrue(content.contains("\"entityReference\":"));
assertTrue(content.contains("\\/myPrefix4\\/4-two"));
assertTrue(content.contains(TestData.PREFIX6));
assertTrue(content.contains("6-two"));
assertTrue(content.contains("\"id\": \"6-two\""));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
}
@Test
public void testBatchNew() {
// now fire the request
String newURL = DIRECT_PREFIX + "/" + TestData.PREFIX6 + "/new";
String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH
+ "?_refs=" + newURL + "," + newURL + "," + newURL;
Map<String, String> params = new HashMap<String, String>();
params.put("ref0.id", "AZ0");
params.put("ref1.id", "AZ1");
params.put("ref2.id", "AZ2");
params.put("ref0.stuff", "Aaron");
params.put("ref1.stuff", "Becky");
params.put("ref2.stuff", "Minerva");
params.put("number", "11");
assertEquals(4, td.entityProvider6.myEntities.size());
fireRequest(url, "POST", params);
try {
String content = this.response.getContent();
assertNotNull(content);
assertTrue(content.contains("ref0"));
assertTrue(content.contains("ref1"));
assertTrue(content.contains("ref2"));
assertTrue(content.contains("\"status\":"));
assertTrue(content.contains("201"));
assertTrue(content.contains("\"headers\":"));
assertTrue(content.contains("\"reference\":"));
} catch (Exception e) {
fail("Could not get content: " + e.getMessage());
}
assertEquals(7, td.entityProvider6.myEntities.size());
assertNotNull(td.entityProvider6.myEntities.get("AZ0"));
assertNotNull(td.entityProvider6.myEntities.get("AZ1"));
assertNotNull(td.entityProvider6.myEntities.get("AZ2"));
assertEquals("Aaron", td.entityProvider6.myEntities.get("AZ0").getStuff());
assertEquals("Becky", td.entityProvider6.myEntities.get("AZ1").getStuff());
assertEquals("Minerva", td.entityProvider6.myEntities.get("AZ2").getStuff());
assertEquals(11, td.entityProvider6.myEntities.get("AZ0").getNumber());
assertEquals(11, td.entityProvider6.myEntities.get("AZ1").getNumber());
assertEquals(11, td.entityProvider6.myEntities.get("AZ2").getNumber());
}
// TODO need to work on a way to actually call the other webapps, it is not actually possible with forward/include
// @Test
// public void testBatchAllInvalidJSON() {
// // now fire the request
// String url = DIRECT_PREFIX + EntityRequestHandler.SLASH_BATCH + ".json"
// + "?_refs=/XXXXX/XXXX/XXX,/YYYYY/YYYY,/ZZZZZ";
// fireRequest(url);
//
// try {
// String content = this.response.getContent();
// assertNotNull(content);
// assertTrue(content.contains("ref0"));
// assertTrue(content.contains("\"status\":"));
// assertTrue(content.contains("200"));
// assertTrue(content.contains("\"headers\":"));
// assertTrue(content.contains("\"reference\":"));
// assertTrue(content.contains("\"data\":"));
// assertTrue(content.contains(TestData.PREFIX4));
// assertTrue(content.contains("4-one"));
// assertTrue(content.contains("4-two"));
// assertTrue(content.contains("4-three"));
// assertTrue(content.contains("\"id\": \"4-two\""));
// assertTrue(content.contains("\"entityReference\":"));
// assertTrue(content.contains("\\/myPrefix4\\/4-two"));
// assertTrue(content.contains(TestData.PREFIX6));
// assertTrue(content.contains("6-two"));
// assertTrue(content.contains("\"id\": \"6-two\""));
// } catch (Exception e) {
// fail("Could not get content: " + e.getMessage());
// }
// }
// TODO test batch post/head/put/delete
}