Added maximum number of user persistent virtual corpora and queries

Change-Id: I6bbf17ed9cc68203908208c0bc46f81e55fe0d8a
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 3c67974..4106a7a 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
@@ -381,6 +381,47 @@
                 "Cannot deserialize value of type `de.ids_mannheim.korap.constant."
                         + "ResourceType` from String \"PRIVAT\""));
     }
+    
+    @Test
+    public void testMaxNumberOfVC () throws KustvaktException {
+        String json = "{\"type\": \"PRIVATE\""
+                + ",\"queryType\": \"VIRTUAL_CORPUS\""
+                + ",\"corpusQuery\": \"corpusSigle=GOE\"}";
+
+        for (int i=1; i<6; i++) {
+            createVC(authHeader,testUser, "new_vc_"+i, json);
+        }
+
+        Response response = target().path(API_VERSION).path("vc")
+                .path("~" + testUser).path("new_vc_6").request()
+                .header(Attributes.AUTHORIZATION, authHeader)
+                .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
+                .put(Entity.json(json));
+
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        
+        String entity = response.readEntity(String.class);
+        JsonNode node = JsonUtils.readTree(entity);
+        
+        assertEquals(StatusCodes.NOT_ALLOWED,
+                node.at("/errors/0/0").asInt());
+        assertEquals("Cannot create virtual corpus. The maximum number of "
+                + "virtual corpus has been reached.",
+                node.at("/errors/0/1").asText());
+
+        // list user VC
+        node = listVC(testUser);
+        assertEquals(6, node.size()); // including 1 system-vc
+
+        // delete new VC
+        for (int i=1; i<6; i++) {
+            deleteVC("new_vc_"+i, testUser, testUser);
+        }
+
+        // list VC
+        node = listVC(testUser);
+        assertEquals(1, node.size()); // system-vc
+    }
 
     @Test
     public void testDeleteVC_unauthorized () throws KustvaktException {
diff --git a/full/src/test/resources/kustvakt-test.conf b/full/src/test/resources/kustvakt-test.conf
index 430ad5f..893d04b 100644
--- a/full/src/test/resources/kustvakt-test.conf
+++ b/full/src/test/resources/kustvakt-test.conf
@@ -52,6 +52,9 @@
 delete.group = soft
 delete.group.member = soft
 
+# Virtual corpus and queries
+max.user.persistent.queries = 5
+
 # Availability regex only support |
 # It should be removed/commented when the data doesn't contain availability field.
 #