diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/QueryReferenceControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/QueryReferenceControllerTest.java
index f4d90ef..f9b297f 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/QueryReferenceControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/QueryReferenceControllerTest.java
@@ -46,9 +46,32 @@
     }
 
     @Test
-    public void testListAvailableQuery () throws UniformInterfaceException,
+    public void testAvailableQueryForDory () throws UniformInterfaceException,
             ClientHandlerException, KustvaktException {
-        String username = "dory";
+        JsonNode node = testListAvailableQuery("dory");
+        assertEquals(2, node.size());
+    }
+
+    @Test
+    public void testListAvailableQueryForPearl ()
+            throws UniformInterfaceException, ClientHandlerException,
+            KustvaktException {
+        
+        JsonNode node = testListAvailableQuery("pearl");
+        
+        assertEquals(1, node.size());
+        assertEquals("system-q", node.at("/0/name").asText());
+        assertEquals(ResourceType.SYSTEM.displayName(),
+                node.at("/0/type").asText());
+        assertEquals("\"system\" query", node.at("/0/description").asText());
+        assertEquals("koral:token", node.at("/0/koralQuery/@type").asText());
+
+    }
+
+    private JsonNode testListAvailableQuery (String username)
+            throws UniformInterfaceException, ClientHandlerException,
+            KustvaktException {
+
         ClientResponse response = resource().path(API_VERSION).path("query")
                 .header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
                         .createBasicAuthorizationHeaderValue(username, "pass"))
@@ -58,11 +81,11 @@
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
 
         String entity = response.getEntity(String.class);
-//        System.out.println(entity);
+        // System.out.println(entity);
         JsonNode node = JsonUtils.readTree(entity);
-        assertEquals(2, node.size());
+        return node;
     }
-
+    
     private JsonNode testRetrieveQueryByName (String username, String qCreator,
             String qName) throws UniformInterfaceException,
             ClientHandlerException, KustvaktException {
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java
index 66a2b42..f1e8101 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java
@@ -119,6 +119,7 @@
         assertEquals("system-vc", node.at("/name").asText());
         assertEquals(ResourceType.SYSTEM.displayName(),
                 node.at("/type").asText());
+        assertEquals("koral:doc", node.at("/koralQuery/collection/@type").asText());
     }
 
     @Test
@@ -703,10 +704,7 @@
 
         // check VC
         JsonNode node = testListVC("dory");
-        String koralQuery = node.get(0).get("koralQuery").asText();
-        node = JsonUtils.readTree(koralQuery);
-        assertEquals("WPD17", node.at("/collection/value").asText());
-        assertTrue(koralQuery.contains("WPD17"));
+        assertEquals("WPD17", node.at("/0/koralQuery/collection/value").asText());
     }
 
     @Test
