diff --git a/src/test/java/de/ids_mannheim/korap/web/service/SearchKrillTest.java b/src/test/java/de/ids_mannheim/korap/web/service/SearchKrillTest.java
index 5e0c730..40fb0ad 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/SearchKrillTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/SearchKrillTest.java
@@ -31,7 +31,6 @@
     @Test
     public void testInit () {
         KustvaktConfiguration config = helper().getContext().getConfiguration();
-        System.out.println("'" + config.getIndexDir() + "'");
         SearchKrill krill = new SearchKrill(config.getIndexDir());
         assertNotNull(krill);
     }
@@ -56,6 +55,15 @@
         assertNotEquals(0, krill.getIndex().numberOf("documents"));
     }
 
+	@Test
+    public void testMatchInfo () {
+        KustvaktConfiguration config = helper().getContext().getConfiguration();
+        SearchKrill krill = new SearchKrill(config.getIndexDir());
+        assertNotNull(krill);
+		String matchinfo = krill.getMatch("WPD/AAA.00002/p169-197");
+		JsonNode node = JsonUtils.readTree(matchinfo);
+		assertEquals("Invalid match identifier", node.at("/errors/0/1").asText());
+	}
 
     @Test
     public void testSearch () {
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/LightServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/LightServiceTest.java
index ceb9a35..8a94c44 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/LightServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/LightServiceTest.java
@@ -143,6 +143,40 @@
                 .toString());
     }
 
+	@Test
+	public void testMatchInfoGet1 () {
+		// match-WPD_AAA.00001-p4-5
+        ClientResponse response = resource()
+			.path(getAPIVersion())
+			//.path("corpus/GOE/AGI.00200/p13576-13577/matchInfo")
+			.path("corpus/WPD/AAA.00001/p4-5/matchInfo")
+			.queryParam("foundry", "*")
+			.queryParam("spans", "false")
+			.get(ClientResponse.class);
+        assertEquals(ClientResponse.Status.OK.getStatusCode(),
+					 response.getStatus());
+        String ent = response.getEntity(String.class);
+        JsonNode node = JsonUtils.readTree(ent);
+        assertNotNull(node);
+        assertEquals("WPD/AAA/00001", node.at("/textSigle").asText());
+	};
+
+	@Test
+	public void testMatchInfoGet2 () {
+		// match-WPD_AAA.00001-p4-5
+        ClientResponse response = resource()
+			.path(getAPIVersion())
+			//.path("corpus/GOE/AGI.00200/p13576-13577/matchInfo")
+			.path("corpus/WPD/AAA.00001/p4-5/matchInfo")
+			.queryParam("foundry", "*")
+			.get(ClientResponse.class);
+        assertEquals(ClientResponse.Status.OK.getStatusCode(),
+					 response.getStatus());
+        String ent = response.getEntity(String.class);
+        JsonNode node = JsonUtils.readTree(ent);
+        assertNotNull(node);
+        assertEquals("WPD/AAA/00001", node.at("/textSigle").asText());
+	};
 
     @Test
     public void testCQParameter () {
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java
index c3b0e84..c541e7a 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/ResourceServiceTest.java
@@ -427,7 +427,7 @@
         assertEquals(response.getStatus(),
                 ClientResponse.Status.OK.getStatusCode());
         String ent = response.getEntity(String.class);
-        JsonNode node = JsonUtils.readTree(ent);
+		JsonNode node = JsonUtils.readTree(ent);
         assertNotNull(node);
         assertEquals("koral:docGroup", node.at("/collection/@type").asText());
         assertEquals("operation:or", node.at("/collection/operation").asText());
@@ -451,7 +451,6 @@
 
     @Test
     public void testMatchInfoGet () {
-
     }
 
 
