Author: frm
Date: Tue Nov 29 13:38:43 2016
New Revision: 1771902

URL: http://svn.apache.org/viewvc?rev=1771902&view=rev
Log:
OAK-5180 - Fix and enable RemoteServerIT

Modified:
    
jackrabbit/oak/trunk/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java

Modified: 
jackrabbit/oak/trunk/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java?rev=1771902&r1=1771901&r2=1771902&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java
 Tue Nov 29 13:38:43 2016
@@ -17,10 +17,6 @@
 
 package org.apache.jackrabbit.oak.remote.http.handler;
 
-import static com.mashape.unirest.http.Unirest.get;
-import static com.mashape.unirest.http.Unirest.head;
-import static com.mashape.unirest.http.Unirest.patch;
-import static com.mashape.unirest.http.Unirest.post;
 import static java.util.Arrays.asList;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -33,6 +29,7 @@ import java.io.Closeable;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.net.ServerSocket;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -40,9 +37,14 @@ import java.util.regex.Pattern;
 
 import javax.jcr.SimpleCredentials;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.base.Charsets;
+import com.google.common.io.ByteStreams;
 import com.mashape.unirest.http.HttpResponse;
-import com.mashape.unirest.http.JsonNode;
+import com.mashape.unirest.http.Unirest;
+import com.mashape.unirest.request.GetRequest;
+import com.mashape.unirest.request.HttpRequestWithBody;
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.OakBaseTest;
@@ -58,10 +60,8 @@ import org.apache.jackrabbit.oak.remote.
 import org.apache.jackrabbit.util.ISO8601;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore("OAK-5171")
 public class RemoteServerIT extends OakBaseTest {
 
     private ContentRepository contentRepository;
@@ -113,10 +113,6 @@ public class RemoteServerIT extends OakB
         }
     }
 
-    private String resource(String path) {
-        return "http://localhost:"; + port + path;
-    }
-
     private String load(String name) throws Exception {
         InputStream is = null;
         try {
@@ -148,14 +144,14 @@ public class RemoteServerIT extends OakB
 
     @Test
     public void testReadLastRevision() throws Exception {
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last")).basicAuth("admin", "admin").asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/last").basicAuth("admin", "admin").asBinary();
         assertEquals(200, response.getStatus());
-        assertNotNull(getRevision(response));
+        assertNotNull(getRevision(json(response)));
     }
 
     @Test
     public void testReadLastRevisionWithoutAuthentication() throws Exception {
-        assertEquals(401, 
get(resource("/revisions/last")).asJson().getStatus());
+        assertEquals(401, get("/revisions/last").asString().getStatus());
     }
 
     @Test
@@ -167,7 +163,7 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
         assertEquals(200, response.getStatus());
     }
 
@@ -180,7 +176,7 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").asBinary();
         assertEquals(401, response.getStatus());
     }
 
@@ -193,13 +189,13 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
         assertFalse(response.getHeaders().getFirst("oak-revision").isEmpty());
     }
 
     @Test
     public void testReadLastRevisionTreeWithNotExistingTree() throws Exception 
{
-        assertEquals(404, 
get(resource("/revisions/last/tree/node")).basicAuth("admin", 
"admin").asJson().getStatus());
+        assertEquals(404, get("/revisions/last/tree/node").basicAuth("admin", 
"admin").asString().getStatus());
     }
 
     @Test
@@ -211,8 +207,8 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertFalse(getHasMoreChildren(response));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        assertFalse(getHasMoreChildren(json(response)));
     }
 
     @Test
@@ -227,8 +223,8 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        assertTrue(hasNullChild(json(response), "child"));
     }
 
     @Test
@@ -241,11 +237,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("string", getPropertyType(response, "property"));
-        assertEquals("a", getStringPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("string", getPropertyType(body, "property"));
+        assertEquals("a", getStringPropertyValue(body, "property"));
     }
 
     @Test
@@ -258,12 +253,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("strings", getPropertyType(response, "property"));
-        assertEquals("a", getStringPropertyValue(response, "property", 0));
-        assertEquals("b", getStringPropertyValue(response, "property", 1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("strings", getPropertyType(body, "property"));
+        assertEquals("a", getStringPropertyValue(body, "property", 0));
+        assertEquals("b", getStringPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -276,12 +270,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("binaryIds", getPropertyType(response, "property"));
-        assertFalse(getStringPropertyValue(response, "property", 0).isEmpty());
-        assertFalse(getStringPropertyValue(response, "property", 1).isEmpty());
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("binaryIds", getPropertyType(body, "property"));
+        assertFalse(getStringPropertyValue(body, "property", 0).isEmpty());
+        assertFalse(getStringPropertyValue(body, "property", 1).isEmpty());
     }
 
     @Test
@@ -294,11 +287,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("binaryId", getPropertyType(response, "property"));
-        assertFalse(getStringPropertyValue(response, "property").isEmpty());
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("binaryId", getPropertyType(body, "property"));
+        assertFalse(getStringPropertyValue(body, "property").isEmpty());
     }
 
     @Test
@@ -311,11 +303,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("long", getPropertyType(response, "property"));
-        assertEquals(42L, getLongPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("long", getPropertyType(body, "property"));
+        assertEquals(42L, getLongPropertyValue(body, "property"));
     }
 
     @Test
@@ -328,12 +319,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("longs", getPropertyType(response, "property"));
-        assertEquals(4L, getLongPropertyValue(response, "property", 0));
-        assertEquals(2L, getLongPropertyValue(response, "property", 1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("longs", getPropertyType(body, "property"));
+        assertEquals(4L, getLongPropertyValue(body, "property", 0));
+        assertEquals(2L, getLongPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -346,11 +336,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("double", getPropertyType(response, "property"));
-        assertEquals(4.2, getDoublePropertyValue(response, "property"), 1e-10);
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("double", getPropertyType(body, "property"));
+        assertEquals(4.2, getDoublePropertyValue(body, "property"), 1e-10);
     }
 
     @Test
@@ -363,12 +352,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("doubles", getPropertyType(response, "property"));
-        assertEquals(4.2, getDoublePropertyValue(response, "property", 0), 
1e-10);
-        assertEquals(2.4, getDoublePropertyValue(response, "property", 1), 
1e-10);
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("doubles", getPropertyType(body, "property"));
+        assertEquals(4.2, getDoublePropertyValue(body, "property", 0), 1e-10);
+        assertEquals(2.4, getDoublePropertyValue(body, "property", 1), 1e-10);
     }
 
     @Test
@@ -383,11 +371,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("date", getPropertyType(response, "property"));
-        assertEquals(calendar.getTimeInMillis(), 
getLongPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("date", getPropertyType(body, "property"));
+        assertEquals(calendar.getTimeInMillis(), getLongPropertyValue(body, 
"property"));
     }
 
     @Test
@@ -402,12 +389,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("dates", getPropertyType(response, "property"));
-        assertEquals(calendar.getTimeInMillis(), 
getLongPropertyValue(response, "property", 0));
-        assertEquals(calendar.getTimeInMillis(), 
getLongPropertyValue(response, "property", 1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("dates", getPropertyType(body, "property"));
+        assertEquals(calendar.getTimeInMillis(), getLongPropertyValue(body, 
"property", 0));
+        assertEquals(calendar.getTimeInMillis(), getLongPropertyValue(body, 
"property", 1));
     }
 
     @Test
@@ -420,11 +406,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("boolean", getPropertyType(response, "property"));
-        assertEquals(true, getBooleanPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("boolean", getPropertyType(body, "property"));
+        assertEquals(true, getBooleanPropertyValue(body, "property"));
     }
 
     @Test
@@ -437,12 +422,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("booleans", getPropertyType(response, "property"));
-        assertEquals(true, getBooleanPropertyValue(response, "property", 0));
-        assertEquals(false, getBooleanPropertyValue(response, "property", 1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("booleans", getPropertyType(body, "property"));
+        assertEquals(true, getBooleanPropertyValue(body, "property", 0));
+        assertEquals(false, getBooleanPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -455,11 +439,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("name", getPropertyType(response, "property"));
-        assertEquals("value", getStringPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("name", getPropertyType(body, "property"));
+        assertEquals("value", getStringPropertyValue(body, "property"));
     }
 
     @Test
@@ -472,12 +455,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("names", getPropertyType(response, "property"));
-        assertEquals("first", getStringPropertyValue(response, "property", 0));
-        assertEquals("second", getStringPropertyValue(response, "property", 
1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("names", getPropertyType(body, "property"));
+        assertEquals("first", getStringPropertyValue(body, "property", 0));
+        assertEquals("second", getStringPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -490,11 +472,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("path", getPropertyType(response, "property"));
-        assertEquals("/value", getStringPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("path", getPropertyType(body, "property"));
+        assertEquals("/value", getStringPropertyValue(body, "property"));
     }
 
     @Test
@@ -507,12 +488,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("paths", getPropertyType(response, "property"));
-        assertEquals("/first", getStringPropertyValue(response, "property", 
0));
-        assertEquals("/second", getStringPropertyValue(response, "property", 
1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("paths", getPropertyType(body, "property"));
+        assertEquals("/first", getStringPropertyValue(body, "property", 0));
+        assertEquals("/second", getStringPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -525,11 +505,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("reference", getPropertyType(response, "property"));
-        assertEquals("value", getStringPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("reference", getPropertyType(body, "property"));
+        assertEquals("value", getStringPropertyValue(body, "property"));
     }
 
     @Test
@@ -542,12 +521,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("references", getPropertyType(response, "property"));
-        assertEquals("first", getStringPropertyValue(response, "property", 0));
-        assertEquals("second", getStringPropertyValue(response, "property", 
0));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("references", getPropertyType(body, "property"));
+        assertEquals("first", getStringPropertyValue(body, "property", 0));
+        assertEquals("second", getStringPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -560,11 +538,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("weakReference", getPropertyType(response, "property"));
-        assertEquals("value", getStringPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("weakReference", getPropertyType(body, "property"));
+        assertEquals("value", getStringPropertyValue(body, "property"));
     }
 
     @Test
@@ -577,12 +554,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("weakReferences", getPropertyType(response, "property"));
-        assertEquals("first", getStringPropertyValue(response, "property", 0));
-        assertEquals("second", getStringPropertyValue(response, "property", 
1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("weakReferences", getPropertyType(body, "property"));
+        assertEquals("first", getStringPropertyValue(body, "property", 0));
+        assertEquals("second", getStringPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -595,11 +571,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("uri", getPropertyType(response, "property"));
-        assertEquals("http://acme.org";, getStringPropertyValue(response, 
"property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("uri", getPropertyType(body, "property"));
+        assertEquals("http://acme.org";, getStringPropertyValue(body, 
"property"));
     }
 
     @Test
@@ -612,12 +587,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("uris", getPropertyType(response, "property"));
-        assertEquals("http://acme.org";, getStringPropertyValue(response, 
"property", 0));
-        assertEquals("http://acme.com";, getStringPropertyValue(response, 
"property", 1));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("uris", getPropertyType(body, "property"));
+        assertEquals("http://acme.org";, getStringPropertyValue(body, 
"property", 0));
+        assertEquals("http://acme.com";, getStringPropertyValue(body, 
"property", 1));
     }
 
     @Test
@@ -630,11 +604,10 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("decimal", getPropertyType(response, "property"));
-        assertEquals("0", getStringPropertyValue(response, "property"));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("decimal", getPropertyType(body, "property"));
+        assertEquals("0", getStringPropertyValue(body, "property"));
     }
 
     @Test
@@ -647,12 +620,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        assertTrue(hasNullChild(response, "child"));
-
-        assertEquals("decimals", getPropertyType(response, "property"));
-        assertEquals("0", getStringPropertyValue(response, "property", 0));
-        assertEquals("1", getStringPropertyValue(response, "property", 0));
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        JsonNode body = json(response);
+        assertEquals("decimals", getPropertyType(body, "property"));
+        assertEquals("0", getStringPropertyValue(body, "property", 0));
+        assertEquals("1", getStringPropertyValue(body, "property", 1));
     }
 
     @Test
@@ -670,11 +642,11 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", 
"admin").queryString("depth", 1).asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", 
"admin").queryString("depth", 1).asBinary();
         assertEquals(200, response.getStatus());
-
-        assertFalse(hasNullChild(response, "child"));
-        assertTrue(hasNullGrandChild(response, "child", "grandChild"));
+        JsonNode body = json(response);
+        assertFalse(hasNullChild(body, "child"));
+        assertTrue(hasNullGrandChild(body, "child", "grandChild"));
     }
 
     @Test
@@ -689,12 +661,12 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", 
"admin").queryString("properties", "ba*").queryString("properties", 
"-baz").asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", 
"admin").queryString("properties", "ba*").queryString("properties", 
"-baz").asBinary();
         assertEquals(200, response.getStatus());
-
-        assertFalse(hasProperty(response, "foo"));
-        assertTrue(hasProperty(response, "bar"));
-        assertFalse(hasProperty(response, "baz"));
+        JsonNode body = json(response);
+        assertFalse(hasProperty(body, "foo"));
+        assertTrue(hasProperty(body, "bar"));
+        assertFalse(hasProperty(body, "baz"));
     }
 
     @Test
@@ -715,12 +687,12 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", 
"admin").queryString("children", "ba*").queryString("children", 
"-baz").asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", 
"admin").queryString("children", "ba*").queryString("children", 
"-baz").asBinary();
         assertEquals(200, response.getStatus());
-
-        assertFalse(hasChild(response, "foo"));
-        assertTrue(hasChild(response, "bar"));
-        assertFalse(hasChild(response, "baz"));
+        JsonNode body = json(response);
+        assertFalse(hasChild(body, "foo"));
+        assertTrue(hasChild(body, "bar"));
+        assertFalse(hasChild(body, "baz"));
     }
 
     @Test
@@ -732,16 +704,16 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        String revision = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", 
"admin").asJson().getHeaders().getFirst("oak-revision");
+        String revision = get("/revisions/last/tree/node").basicAuth("admin", 
"admin").asString().getHeaders().getFirst("oak-revision");
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/{revision}/tree/node")).basicAuth("admin", 
"admin").routeParam("revision", revision).asJson();
+        HttpResponse<InputStream> response = 
get("/revisions/{revision}/tree/node").basicAuth("admin", 
"admin").routeParam("revision", revision).asBinary();
         assertEquals(200, response.getStatus());
         assertEquals(revision, response.getHeaders().getFirst("oak-revision"));
     }
 
     @Test
     public void testReadTreeAtRevisionWithInvalidRevision() throws Exception {
-        assertEquals(410, 
get(resource("/revisions/any/tree/node")).basicAuth("admin", 
"admin").asJson().getStatus());
+        assertEquals(410, get("/revisions/any/tree/node").basicAuth("admin", 
"admin").asString().getStatus());
     }
 
     @Test
@@ -754,24 +726,24 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        String binaryId = getStringPropertyValue(response, "binary");
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        String binaryId = getStringPropertyValue(json(response), "binary");
 
-        HttpResponse<String> binaryResponse = 
get(resource("/binaries/{binaryId}")).basicAuth("admin", 
"admin").routeParam("binaryId", binaryId).asString();
+        HttpResponse<InputStream> binaryResponse = 
get("/binaries/{binaryId}").basicAuth("admin", "admin").routeParam("binaryId", 
binaryId).asBinary();
         assertEquals(200, binaryResponse.getStatus());
-        assertEquals("test", binaryResponse.getBody());
+        assertEquals("test", string(binaryResponse));
         assertEquals("4", 
binaryResponse.getHeaders().getFirst("content-length"));
     }
 
     @Test
     public void testReadBinaryWithoutAuthentication() throws Exception {
-        HttpResponse<String> response = 
get(resource("/binaries/any")).asString();
+        HttpResponse<InputStream> response = get("/binaries/any").asBinary();
         assertEquals(401, response.getStatus());
     }
 
     @Test
     public void testReadBinaryWithInvalidId() throws Exception {
-        HttpResponse<String> response = 
get(resource("/binaries/any")).basicAuth("admin", "admin").asString();
+        HttpResponse<InputStream> response = 
get("/binaries/any").basicAuth("admin", "admin").asBinary();
         assertEquals(404, response.getStatus());
     }
 
@@ -785,44 +757,44 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        String binaryId = getStringPropertyValue(response, "binary");
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        String binaryId = getStringPropertyValue(json(response), "binary");
 
         // Offset = 0
-        HttpResponse<String> binaryResponse = 
get(resource("/binaries/{binaryId}"))
+        HttpResponse<InputStream> binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=0")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*0\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("10", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("0123456789", binaryResponse.getBody());
+        assertEquals("0123456789", string(binaryResponse));
 
         // Offset = 3
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes = 3")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*3\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("7", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("3456789", binaryResponse.getBody());
+        assertEquals("3456789", string(binaryResponse));
 
         // Offset = 9 (last)
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=9")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*9\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("1", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("9", binaryResponse.getBody());
+        assertEquals("9", string(binaryResponse));
     }
 
     @Test
@@ -835,44 +807,44 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        String binaryId = getStringPropertyValue(response, "binary");
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        String binaryId = getStringPropertyValue(json(response), "binary");
 
         // Last 10 bytes (full body)
-        HttpResponse<String> binaryResponse = 
get(resource("/binaries/{binaryId}"))
+        HttpResponse<InputStream> binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=-10")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*0\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("10", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("0123456789", binaryResponse.getBody());
+        assertEquals("0123456789", string(binaryResponse));
 
         // Last 3 bytes
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=-3")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*7\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("3", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("789", binaryResponse.getBody());
+        assertEquals("789", string(binaryResponse));
 
         // Last 1 byte
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=-1")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*9\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("1", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("9", binaryResponse.getBody());
+        assertEquals("9", string(binaryResponse));
     }
 
     @Test
@@ -885,56 +857,56 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        String binaryId = getStringPropertyValue(response, "binary");
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        String binaryId = getStringPropertyValue(json(response), "binary");
 
         // Range 0-9 (full body)
-        HttpResponse<String> binaryResponse = 
get(resource("/binaries/{binaryId}"))
+        HttpResponse<InputStream> binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=0-9")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*0\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("10", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("0123456789", binaryResponse.getBody());
+        assertEquals("0123456789", string(binaryResponse));
 
         // Range 0- (full body)
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=0-")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*0\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("10", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("0123456789", binaryResponse.getBody());
+        assertEquals("0123456789", string(binaryResponse));
 
         // Range 3-6
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=3- 6")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*3\\s*\\-\\s*6\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("4", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("3456", binaryResponse.getBody());
+        assertEquals("3456", string(binaryResponse));
 
         // Range 9-9
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes= 9 - 9")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
         assertTrue(binaryResponse.getHeaders().containsKey("content-range"));
         
assertTrue(binaryResponse.getHeaders().getFirst("content-range").matches("^\\s*9\\s*\\-\\s*9\\s*/\\s*(10|\\*)\\s*$"));
         assertEquals("1", 
binaryResponse.getHeaders().getFirst("content-length"));
-        assertEquals("9", binaryResponse.getBody());
+        assertEquals("9", string(binaryResponse));
     }
 
     @Test
@@ -947,14 +919,14 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        String binaryId = getStringPropertyValue(response, "binary");
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        String binaryId = getStringPropertyValue(json(response), "binary");
 
-        HttpResponse<String> binaryResponse = 
get(resource("/binaries/{binaryId}"))
+        HttpResponse<InputStream> binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=0,-1 , 2-2, 3-6")
-                .asString();
+                .asBinary();
         assertEquals(206, binaryResponse.getStatus());
 
         String contentType = 
binaryResponse.getHeaders().getFirst("content-type");
@@ -977,60 +949,60 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        String binaryId = getStringPropertyValue(response, "binary");
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        String binaryId = getStringPropertyValue(json(response), "binary");
 
         // Unknown range unit = elephant
-        HttpResponse<String> binaryResponse = 
get(resource("/binaries/{binaryId}"))
+        HttpResponse<InputStream> binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "elephant=0-9")
-                .asString();
+                .asBinary();
         assertNotEquals(206, binaryResponse.getStatus());
         assertNotEquals(500, binaryResponse.getStatus());
 
         // Invalid range header
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "this is not correct")
-                .asString();
+                .asBinary();
         assertNotEquals(206, binaryResponse.getStatus());
         assertNotEquals(500, binaryResponse.getStatus());
 
         // Missing range unit
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "0")
-                .asString();
+                .asBinary();
         assertNotEquals(206, binaryResponse.getStatus());
         assertNotEquals(500, binaryResponse.getStatus());
 
         // Range limit greater than file size
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=0-1000")
-                .asString();
+                .asBinary();
         assertNotEquals(206, binaryResponse.getStatus());
         assertNotEquals(500, binaryResponse.getStatus());
 
         // Range start greater than end
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=9-8")
-                .asString();
+                .asBinary();
         assertNotEquals(206, binaryResponse.getStatus());
         assertNotEquals(500, binaryResponse.getStatus());
 
         // One bad range will "break" all ranges
-        binaryResponse = get(resource("/binaries/{binaryId}"))
+        binaryResponse = get("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
                 .header("Range", "bytes=0, -1, 10000")
-                .asString();
+                .asBinary();
         assertNotEquals(206, binaryResponse.getStatus());
         assertNotEquals(500, binaryResponse.getStatus());
     }
@@ -1045,189 +1017,189 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = 
get(resource("/revisions/last/tree/node")).basicAuth("admin", "admin").asJson();
-        String binaryId = getStringPropertyValue(response, "binary");
+        HttpResponse<InputStream> response = 
get("/revisions/last/tree/node").basicAuth("admin", "admin").asBinary();
+        String binaryId = getStringPropertyValue(json(response), "binary");
 
         // Offset = 0
-        HttpResponse<String> binaryResponse = 
head(resource("/binaries/{binaryId}"))
+        HttpResponse<InputStream> binaryResponse = head("/binaries/{binaryId}")
                 .basicAuth("admin", "admin")
                 .routeParam("binaryId", binaryId)
-                .asString();
+                .asBinary();
         assertEquals(200, binaryResponse.getStatus());
         assertEquals("bytes", 
binaryResponse.getHeaders().getFirst("accept-ranges"));
     }
 
     @Test
     public void testExistsBinaryWithInvalidId() throws Exception {
-        HttpResponse<String> response = 
head(resource("/binaries/any")).basicAuth("admin", "admin").asString();
+        HttpResponse<InputStream> response = 
head("/binaries/any").basicAuth("admin", "admin").asBinary();
         assertEquals(404, response.getStatus());
     }
 
     @Test
     public void testExistsBinaryWithoutAuthentication() throws Exception {
-        HttpResponse<String> response = 
head(resource("/binaries/any")).asString();
+        HttpResponse<InputStream> response = head("/binaries/any").asBinary();
         assertEquals(401, response.getStatus());
     }
 
     @Test
     public void testCreateBinary() throws Exception {
-        HttpResponse<JsonNode> response = 
post(resource("/binaries")).basicAuth("admin", "admin").body("body").asJson();
+        HttpResponse<InputStream> response = 
post("/binaries").basicAuth("admin", "admin").body("body").asBinary();
         assertEquals(201, response.getStatus());
 
-        String binaryId = getBinaryId(response);
+        String binaryId = getBinaryId(json(response));
         assertFalse(binaryId.isEmpty());
 
-        HttpResponse<String> binaryResponse = 
get(resource("/binaries/{binaryId}")).basicAuth("admin", 
"admin").routeParam("binaryId", binaryId).asString();
+        HttpResponse<InputStream> binaryResponse = 
get("/binaries/{binaryId}").basicAuth("admin", "admin").routeParam("binaryId", 
binaryId).asBinary();
         assertEquals(200, binaryResponse.getStatus());
-        assertEquals("body", binaryResponse.getBody());
+        assertEquals("body", string(binaryResponse));
     }
 
     @Test
     public void testCreateBinaryWithoutAuthentication() throws Exception {
-        assertEquals(401, 
post(resource("/binaries")).body("body").asJson().getStatus());
+        assertEquals(401, 
post("/binaries").body("body").asString().getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddNodeBinaryProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeBinaryProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeBinaryProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddNodeMultiBinaryProperty() throws 
Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiBinaryProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiBinaryProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddNodeBooleanProperty() throws Exception 
{
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeBooleanProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeBooleanProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddNodeMultiBooleanProperty() throws 
Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiBooleanProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiBooleanProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddNodeDateProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeDateProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeDateProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddNodeMultiDateProperty() throws 
Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiDateProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiDateProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddDecimalProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeDecimalProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeDecimalProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiDecimalProperty() throws 
Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiDecimalProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiDecimalProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddDoubleProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeDoubleProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeDoubleProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiDoubleProperty() throws Exception 
{
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiDoubleProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiDoubleProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddLongProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeLongProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeLongProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiLongProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiLongProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiLongProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddNameProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeNameProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeNameProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiNameProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiNameProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiNameProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddPathProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodePathProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodePathProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiPathProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiPathProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiPathProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddReferenceProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeReferenceProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeReferenceProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiReferenceProperty() throws 
Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiReferenceProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiReferenceProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddStringProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeStringProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeStringProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiStringProperty() throws Exception 
{
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiStringProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiStringProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddUriProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeUriProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeUriProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiUriProperty() throws Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiUriProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiUriProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddWeakReferenceProperty() throws 
Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeWeakReferenceProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeWeakReferenceProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
     @Test
     public void testPatchLastRevisionAddMultiWeakReferenceProperty() throws 
Exception {
-        HttpResponse<JsonNode> response = 
patch(resource("/revisions/last/tree")).basicAuth("admin", 
"admin").body(load("addNodeMultiWeakReferenceProperty.json")).asJson();
+        HttpResponse<InputStream> response = 
patch("/revisions/last/tree").basicAuth("admin", 
"admin").body(load("addNodeMultiWeakReferenceProperty.json")).asBinary();
         assertEquals(201, response.getStatus());
     }
 
@@ -1248,175 +1220,195 @@ public class RemoteServerIT extends OakB
 
         root.commit();
 
-        HttpResponse<JsonNode> response = get(resource("/revisions/last/tree"))
+        HttpResponse<InputStream> response = get("/revisions/last/tree")
                 .basicAuth("admin", "admin")
                 .queryString("query", "select name from nt:unstructured as 
node where jcr:path like '/test/%'")
                 .queryString("language", "sql")
                 .queryString("offset", 0)
                 .queryString("limit", 10)
-                .asJson();
+                .asBinary();
 
         assertEquals(200, response.getStatus());
-
-        assertTrue(getTotal(response) > 0);
-
-        List<String> columns = getStringArray(response, "columns");
+        JsonNode body = json(response);
+        assertTrue(hasTotal(body));
+        List<String> columns = getStringArray(body, "columns");
         assertTrue(columns.contains("name"));
         assertTrue(columns.contains("jcr:path"));
-
-        List<String> selectors = getStringArray(response, "selectors");
+        List<String> selectors = getStringArray(body, "selectors");
         assertTrue(selectors.contains("node"));
     }
 
     @Test
     public void testSearchLastRevisionWithoutAuthentication() throws Exception 
{
-        HttpResponse<JsonNode> response = get(resource("/revisions/last/tree"))
+        HttpResponse<InputStream> response = get("/revisions/last/tree")
                 .queryString("query", "select name from nt:unstructured as 
node where jcr:path like '/test/%'")
                 .queryString("language", "sql")
                 .queryString("offset", 0)
                 .queryString("limit", 10)
-                .asJson();
+                .asBinary();
 
         assertEquals(401, response.getStatus());
     }
 
     @Test
     public void testSearchLastRevisionWithoutQuery() throws Exception {
-        HttpResponse<JsonNode> response = get(resource("/revisions/last/tree"))
+        HttpResponse<InputStream> response = get("/revisions/last/tree")
                 .basicAuth("admin", "admin")
                 .queryString("language", "sql")
                 .queryString("offset", 0)
                 .queryString("limit", 10)
-                .asJson();
+                .asBinary();
 
         assertEquals(400, response.getStatus());
     }
 
     @Test
     public void testSearchLastRevisionWithoutLanguage() throws Exception {
-        HttpResponse<JsonNode> response = get(resource("/revisions/last/tree"))
+        HttpResponse<InputStream> response = get("/revisions/last/tree")
                 .basicAuth("admin", "admin")
                 .queryString("query", "select name from nt:unstructured as 
node where jcr:path like '/test/%'")
                 .queryString("offset", 0)
                 .queryString("limit", 10)
-                .asJson();
+                .asBinary();
 
         assertEquals(400, response.getStatus());
     }
 
     @Test
     public void testSearchLastRevisionWithoutOffset() throws Exception {
-        HttpResponse<JsonNode> response = get(resource("/revisions/last/tree"))
+        HttpResponse<InputStream> response = get("/revisions/last/tree")
                 .basicAuth("admin", "admin")
                 .queryString("query", "select name from nt:unstructured as 
node where jcr:path like '/test/%'")
                 .queryString("language", "sql")
                 .queryString("limit", 10)
-                .asJson();
+                .asBinary();
 
         assertEquals(400, response.getStatus());
     }
 
     @Test
     public void testSearchLastRevisionWithoutLimit() throws Exception {
-        HttpResponse<JsonNode> response = get(resource("/revisions/last/tree"))
+        HttpResponse<InputStream> response = get("/revisions/last/tree")
                 .basicAuth("admin", "admin")
                 .queryString("query", "select name from nt:unstructured as 
node where jcr:path like '/test/%'")
                 .queryString("language", "sql")
                 .queryString("offset", 0)
-                .asJson();
+                .asBinary();
 
         assertEquals(400, response.getStatus());
     }
 
-    private String getRevision(HttpResponse<JsonNode> response) {
-        // return response.revision
-        throw new UnsupportedOperationException("not implemented");
+    private String resource(String path) {
+        return "http://localhost:"; + port + path;
+    }
+
+    private GetRequest get(String path) {
+        return Unirest.get(resource(path));
     }
 
-    private boolean getHasMoreChildren(HttpResponse<JsonNode> response) {
-        // return response.hasMoreChildren
-        throw new UnsupportedOperationException("not implemented");
+    private GetRequest head(String path) {
+        return Unirest.head(resource(path));
     }
 
-    private boolean hasChild(HttpResponse<JsonNode> response, String name) {
-        // return name in response.children
-        throw new UnsupportedOperationException("not implemented");
+    private HttpRequestWithBody patch(String path) {
+        return Unirest.patch(resource(path));
     }
 
-    private boolean hasNullChild(HttpResponse<JsonNode> response, String name) 
{
-        // return response.children[name] === null
-        throw new UnsupportedOperationException("not implemented");
+    private HttpRequestWithBody post(String path) {
+        return Unirest.post(resource(path));
     }
 
-    private boolean hasNullGrandChild(HttpResponse<JsonNode> response, String 
child, String grandChild) {
-        // return response.children[child].children[grandChild] == null
-        throw new UnsupportedOperationException("not implemented");
+    private JsonNode json(HttpResponse<?> response) throws Exception {
+        return new ObjectMapper().readTree(response.getRawBody());
     }
 
-    private boolean hasProperty(HttpResponse<JsonNode> response, String name) {
-        // return name in response.properties
-        throw new UnsupportedOperationException("not implemented");
+    private String string(HttpResponse<?> response) throws Exception {
+        return new String(ByteStreams.toByteArray(response.getRawBody()), 
Charsets.UTF_8);
     }
 
-    private String getPropertyType(HttpResponse<JsonNode> response, String 
name) {
-        // return response.properties[name].type
-        throw new UnsupportedOperationException("not implemented");
+    private String getRevision(JsonNode response) throws Exception {
+        return response.get("revision").asText();
     }
 
-    private String getStringPropertyValue(HttpResponse<JsonNode> response, 
String name) {
-        // return response.properties[name].value
-        throw new UnsupportedOperationException("not implemented");
+    private boolean getHasMoreChildren(JsonNode response) throws Exception {
+        return response.get("hasMoreChildren").asBoolean();
     }
 
-    private String getStringPropertyValue(HttpResponse<JsonNode> response, 
String name, int index) {
-        // return response.properties[name].value[index]
-        throw new UnsupportedOperationException("not implemented");
+    private boolean hasChild(JsonNode response, String name) throws Exception {
+        return response.get("children").has(name);
     }
 
-    private long getLongPropertyValue(HttpResponse<JsonNode> response, String 
name) {
-        // return response.properties[name].type
-        throw new UnsupportedOperationException("not implemented");
+    private boolean hasNullChild(JsonNode response, String name) throws 
Exception {
+        return response.get("children").get(name).isNull();
     }
 
-    private long getLongPropertyValue(HttpResponse<JsonNode> response, String 
name, int index) {
-        // return response.properties[name].value[index]
-        throw new UnsupportedOperationException("not implemented");
+    private boolean hasNullGrandChild(JsonNode response, String child, String 
grandChild) throws Exception {
+        return 
response.get("children").get(child).get("children").get(grandChild).isNull();
     }
 
-    private double getDoublePropertyValue(HttpResponse<JsonNode> response, 
String name) {
-        // return response.properties[name].type
-        throw new UnsupportedOperationException("not implemented");
+    private boolean hasProperty(JsonNode response, String name) throws 
Exception {
+        return response.get("properties").has(name);
     }
 
-    private double getDoublePropertyValue(HttpResponse<JsonNode> response, 
String name, int index) {
-        // return response.properties[name].value[index]
-        throw new UnsupportedOperationException("not implemented");
+    private String getPropertyType(JsonNode response, String name) throws 
Exception {
+        return response.get("properties").get(name).get("type").asText();
     }
 
-    private boolean getBooleanPropertyValue(HttpResponse<JsonNode> response, 
String name) {
-        // return response.properties[name].type
-        throw new UnsupportedOperationException("not implemented");
+    private JsonNode getPropertyValue(JsonNode response, String name) throws 
Exception {
+        return response.get("properties").get(name).get("value");
     }
 
-    private boolean getBooleanPropertyValue(HttpResponse<JsonNode> response, 
String name, int index) {
-        // return response.properties[name].value[index]
-        throw new UnsupportedOperationException("not implemented");
+    private JsonNode getPropertyValue(JsonNode response, String name, int 
index) throws Exception {
+        return response.get("properties").get(name).get("value").get(index);
     }
 
-    private String getBinaryId(HttpResponse<JsonNode> response) {
-        // return response.binaryId
-        throw new UnsupportedOperationException("not implemented");
+    private String getStringPropertyValue(JsonNode response, String name) 
throws Exception {
+        return getPropertyValue(response, name).asText();
     }
 
-    private long getTotal(HttpResponse<JsonNode> response) {
-        // return response.total
-        throw new UnsupportedOperationException("not implemented");
+    private String getStringPropertyValue(JsonNode response, String name, int 
index) throws Exception {
+        return getPropertyValue(response, name, index).asText();
     }
 
-    private List<String> getStringArray(HttpResponse<JsonNode> response, 
String name) {
-        // return response[name]
-        throw new UnsupportedOperationException("not implemented");
+    private long getLongPropertyValue(JsonNode response, String name) throws 
Exception {
+        return getPropertyValue(response, name).asLong();
     }
 
+    private long getLongPropertyValue(JsonNode response, String name, int 
index) throws Exception {
+        return getPropertyValue(response, name, index).asLong();
+    }
+
+    private double getDoublePropertyValue(JsonNode response, String name) 
throws Exception {
+        return getPropertyValue(response, name).asDouble();
+    }
+
+    private double getDoublePropertyValue(JsonNode response, String name, int 
index) throws Exception {
+        return getPropertyValue(response, name, index).asDouble();
+    }
+
+    private boolean getBooleanPropertyValue(JsonNode response, String name) 
throws Exception {
+        return getPropertyValue(response, name).asBoolean();
+    }
+
+    private boolean getBooleanPropertyValue(JsonNode response, String name, 
int index) throws Exception {
+        return getPropertyValue(response, name, index).asBoolean();
+    }
+
+    private String getBinaryId(JsonNode response) throws Exception {
+        return response.get("binaryId").asText();
+    }
+
+    private boolean hasTotal(JsonNode response) throws Exception {
+        return response.has("total");
+    }
+
+    private List<String> getStringArray(JsonNode response, String name) throws 
Exception {
+        List<String> result = new ArrayList<>();
+        JsonNode field = response.get(name);
+        for (int i = 0; i < field.size(); i++) {
+            result.add(field.get(i).asText());
+        }
+        return result;
+    }
 
 }


Reply via email to