Added virtual corpus edit service.
Change-Id: I9e030930c3fb0118086ae6359cf192157ea73098
diff --git a/full/src/test/java/de/ids_mannheim/korap/dao/UserGroupDaoTest.java b/full/src/test/java/de/ids_mannheim/korap/dao/UserGroupDaoTest.java
index 66e2b79..8753259 100644
--- a/full/src/test/java/de/ids_mannheim/korap/dao/UserGroupDaoTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/dao/UserGroupDaoTest.java
@@ -86,8 +86,9 @@
@Test
public void retrieveGroupWithMembers () throws KustvaktException {
+ // dory group
List<UserGroupMember> members =
- userGroupDao.retrieveGroupWithMemberById(1).getMembers();
+ userGroupDao.retrieveGroupWithMemberById(2).getMembers();
assertEquals(4, members.size());
UserGroupMember m = members.get(1);
@@ -123,7 +124,7 @@
@Test
public void addVCToGroup () throws KustvaktException {
// dory group
- int groupId = 1;
+ int groupId = 2;
UserGroup group = userGroupDao.retrieveGroupById(groupId);
String createdBy = "dory";
diff --git a/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java b/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
index 06da873..4ec7314 100644
--- a/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
@@ -29,13 +29,25 @@
@Rule
public ExpectedException thrown = ExpectedException.none();
+ @Test
+ public void testListVCByType () throws KustvaktException {
+ List<VirtualCorpus> vcList =
+ dao.retrieveVCByType(VirtualCorpusType.PUBLISHED);
+ assertEquals(1, vcList.size());
+
+ VirtualCorpus vc = vcList.get(0);
+ assertEquals(4, vc.getId());
+ assertEquals("published VC", vc.getName());
+ assertEquals("marlin", vc.getCreatedBy());
+ }
@Test
public void testPredefinedVC () throws KustvaktException {
// insert vc
- int id = dao.createVirtualCorpus("predefined VC", VirtualCorpusType.PREDEFINED,
- User.CorpusAccess.FREE, "corpusSigle=GOE", "definition",
- "description", "experimental", "test class");
+ int id = dao.createVirtualCorpus("predefined VC",
+ VirtualCorpusType.PREDEFINED, User.CorpusAccess.FREE,
+ "corpusSigle=GOE", "definition", "description", "experimental",
+ "test class");
// select vc
List<VirtualCorpus> vcList =
@@ -68,10 +80,10 @@
Set<VirtualCorpus> virtualCorpora = dao.retrieveVCByUser("dory");
assertEquals(3, virtualCorpora.size());
// order is random
-// Iterator<VirtualCorpus> i = virtualCorpora.iterator();
-// assertEquals("dory VC", i.next().getName());
-// assertEquals("system VC", i.next().getName());
-// assertEquals("group VC", i.next().getName());
+ // Iterator<VirtualCorpus> i = virtualCorpora.iterator();
+ // assertEquals("dory VC", i.next().getName());
+ // assertEquals("system VC", i.next().getName());
+ // assertEquals("group VC", i.next().getName());
}
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/service/full/UserGroupServiceTest.java b/full/src/test/java/de/ids_mannheim/korap/web/service/full/UserGroupServiceTest.java
index 7f1d390..5a975a6 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/service/full/UserGroupServiceTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/service/full/UserGroupServiceTest.java
@@ -40,7 +40,7 @@
// System.out.println(entity);
JsonNode node = JsonUtils.readTree(entity);
- assertEquals(1, node.at("/0/id").asInt());
+ assertEquals(2, node.at("/0/id").asInt());
assertEquals("dory group", node.at("/0/name").asText());
assertEquals("dory", node.at("/0/owner").asText());
assertEquals(3, node.at("/0/members").size());
@@ -60,7 +60,7 @@
// System.out.println(entity);
JsonNode node = JsonUtils.readTree(entity);
- assertEquals(1, node.at("/0/id").asInt());
+ assertEquals(2, node.at("/0/id").asInt());
assertEquals("dory group", node.at("/0/name").asText());
assertEquals("dory", node.at("/0/owner").asText());
// group members are not allowed to see other members
@@ -103,7 +103,7 @@
@Test
public void testSubscribeMarlinToDoryGroup () throws KustvaktException {
MultivaluedMap<String, String> form = new MultivaluedMapImpl();
- form.add("groupId", "1");
+ form.add("groupId", "2");
ClientResponse response = resource().path("group").path("subscribe")
.type(MediaType.APPLICATION_FORM_URLENCODED)
@@ -127,7 +127,7 @@
JsonNode node = JsonUtils.readTree(entity);
assertEquals(1, node.size());
- assertEquals(1, node.at("/0/id").asInt());
+ assertEquals(2, node.at("/0/id").asInt());
assertEquals("dory group", node.at("/0/name").asText());
assertEquals("dory", node.at("/0/owner").asText());
// group members are not allowed to see other members
@@ -138,7 +138,7 @@
@Test
public void testSubscribePearlToDoryGroup () throws KustvaktException {
MultivaluedMap<String, String> form = new MultivaluedMapImpl();
- form.add("groupId", "1");
+ form.add("groupId", "2");
ClientResponse response = resource().path("group").path("subscribe")
.type(MediaType.APPLICATION_FORM_URLENCODED)
@@ -153,7 +153,7 @@
assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
assertEquals(StatusCodes.NOTHING_CHANGED,
node.at("/errors/0/0").asInt());
- assertEquals("Username pearl had been deleted in group 1",
+ assertEquals("Username pearl had been deleted in group 2",
node.at("/errors/0/1").asText());
}
@@ -177,7 +177,7 @@
@Test
public void testSubscribeNonExistentMember () throws KustvaktException {
MultivaluedMap<String, String> form = new MultivaluedMapImpl();
- form.add("groupId", "1");
+ form.add("groupId", "2");
ClientResponse response = resource().path("group").path("subscribe")
.type(MediaType.APPLICATION_FORM_URLENCODED)
@@ -193,7 +193,7 @@
assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
assertEquals(StatusCodes.NO_RESULT_FOUND,
node.at("/errors/0/0").asInt());
- assertEquals("Username bruce is not found in group 1",
+ assertEquals("Username bruce is not found in group 2",
node.at("/errors/0/1").asText());
}
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/service/full/VirtualCorpusServiceTest.java b/full/src/test/java/de/ids_mannheim/korap/web/service/full/VirtualCorpusServiceTest.java
index 3b3bc6e..0e02f2b 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/service/full/VirtualCorpusServiceTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/service/full/VirtualCorpusServiceTest.java
@@ -27,6 +27,8 @@
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.config.AuthenticationScheme;
import de.ids_mannheim.korap.config.SpringJerseyTest;
+import de.ids_mannheim.korap.dao.VirtualCorpusDao;
+import de.ids_mannheim.korap.entity.VirtualCorpus;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.utils.JsonUtils;
@@ -35,7 +37,7 @@
@Autowired
private HttpAuthorizationHandler handler;
-
+
private void checkWWWAuthenticateHeader (ClientResponse response) {
Set<Entry<String, List<String>>> headers =
response.getHeaders().entrySet();
@@ -55,9 +57,9 @@
}
@Test
- public void testRetrieveUserVC () throws UniformInterfaceException,
+ public void tesListVC () throws UniformInterfaceException,
ClientHandlerException, KustvaktException {
- ClientResponse response = resource().path("vc").path("user")
+ ClientResponse response = resource().path("vc").path("list")
.header(Attributes.AUTHORIZATION,
handler.createBasicAuthorizationHeaderValue("dory",
"pass"))
@@ -66,16 +68,16 @@
.get(ClientResponse.class);
String entity = response.getEntity(String.class);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
- System.out.println(entity);
+ // System.out.println(entity);
JsonNode node = JsonUtils.readTree(entity);
assertEquals(3, node.size());
}
@Test
- public void testRetrieveUserVCUnauthorized ()
+ public void testListVCUnauthorized ()
throws UniformInterfaceException, ClientHandlerException,
KustvaktException {
- ClientResponse response = resource().path("vc").path("user")
+ ClientResponse response = resource().path("vc").path("list")
.header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
.get(ClientResponse.class);
@@ -105,11 +107,11 @@
.header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
.post(ClientResponse.class, json);
String entity = response.getEntity(String.class);
-// System.out.println(entity);
+ // System.out.println(entity);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
// retrieve user VC
- response = resource().path("vc").path("user")
+ response = resource().path("vc").path("list")
.header(Attributes.AUTHORIZATION,
handler.createBasicAuthorizationHeaderValue(
"test class", "pass"))
@@ -136,8 +138,8 @@
// entity = response.getEntity(String.class);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
- // retrieve user VC
- response = resource().path("vc").path("user")
+ // list VC
+ response = resource().path("vc").path("list")
.header(Attributes.AUTHORIZATION,
handler.createBasicAuthorizationHeaderValue(
"test class", "pass"))
@@ -206,10 +208,10 @@
}
@Test
- public void testCreateVCWithoutType () throws KustvaktException {
+ public void testCreateVCWithoutCollectionQuery () throws KustvaktException {
String json =
- "{\"name\": \"new vc\",\"createdBy\": "
- + "\"test class\",\"collectionQuery\": \"creationDate since 1820\"}";
+ "{\"name\": \"new vc\",\"type\": \"PRIVATE\",\"createdBy\": "
+ + "\"test class\"}";
ClientResponse response = resource().path("vc").path("create")
.header(Attributes.AUTHORIZATION,
@@ -218,16 +220,38 @@
.header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
.entity(json).post(ClientResponse.class);
String entity = response.getEntity(String.class);
-// System.out.println(entity);
+ // System.out.println(entity);
assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
JsonNode node = JsonUtils.readTree(entity);
assertEquals(StatusCodes.INVALID_ARGUMENT,
node.at("/errors/0/0").asInt());
- assertEquals("type",node.at("/errors/0/1").asText());
- assertEquals("null",node.at("/errors/0/2").asText());
+ assertEquals("collectionQuery", node.at("/errors/0/1").asText());
+ assertEquals("null", node.at("/errors/0/2").asText());
}
-
+
+ @Test
+ public void testCreateVCWithoutType () throws KustvaktException {
+ String json = "{\"name\": \"new vc\",\"createdBy\": "
+ + "\"test class\",\"collectionQuery\": \"creationDate since 1820\"}";
+
+ ClientResponse response = resource().path("vc").path("create")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue(
+ "test class", "pass"))
+ .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
+ .entity(json).post(ClientResponse.class);
+ String entity = response.getEntity(String.class);
+ // System.out.println(entity);
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ JsonNode node = JsonUtils.readTree(entity);
+ assertEquals(StatusCodes.INVALID_ARGUMENT,
+ node.at("/errors/0/0").asInt());
+ assertEquals("type", node.at("/errors/0/1").asText());
+ assertEquals("null", node.at("/errors/0/2").asText());
+ }
+
@Test
public void testCreateVCWithWrongType () throws KustvaktException {
String json =
@@ -241,7 +265,7 @@
.header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
.entity(json).post(ClientResponse.class);
String entity = response.getEntity(String.class);
-// System.out.println(entity);
+ // System.out.println(entity);
assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
JsonNode node = JsonUtils.readTree(entity);
@@ -275,4 +299,103 @@
checkWWWAuthenticateHeader(response);
}
+
+ @Test
+ public void testEditVC () throws KustvaktException {
+
+ // 1st edit
+ String json =
+ "{\"id\": \"1\", \"name\": \"edited vc\"}";
+
+ ClientResponse response = resource().path("vc").path("edit")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue(
+ "dory", "pass"))
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
+ .post(ClientResponse.class, json);
+
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+ // check VC
+ response = resource().path("vc").path("list")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("dory",
+ "pass"))
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+
+ .get(ClientResponse.class);
+ String entity = response.getEntity(String.class);
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+ JsonNode node = JsonUtils.readTree(entity);
+
+ for (int i=0; i<node.size(); i++){
+ JsonNode n = node.get(i);
+ if (n.get("id").asInt() == 1){
+ assertEquals("edited vc", n.get("name").asText());
+ break;
+ }
+ }
+
+ // 2nd edit
+ json =
+ "{\"id\": \"1\", \"name\": \"dory VC\"}";
+
+ response = resource().path("vc").path("edit")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue(
+ "dory", "pass"))
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
+ .post(ClientResponse.class, json);
+
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+ // check VC
+ response = resource().path("vc").path("list")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("dory",
+ "pass"))
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+
+ .get(ClientResponse.class);
+
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+ entity = response.getEntity(String.class);
+ node = JsonUtils.readTree(entity);
+
+ for (int i=0; i<node.size(); i++){
+ JsonNode n = node.get(i);
+ if (n.get("id").asInt() == 1){
+ assertEquals("dory VC", n.get("name").asText());
+ break;
+ }
+ }
+ }
+
+ @Test
+ public void testEditVCNotOwner () throws KustvaktException {
+ String json =
+ "{\"id\": \"1\", \"name\": \"edited vc\"}";
+
+ ClientResponse response = resource().path("vc").path("edit")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue(
+ "test class", "pass"))
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
+ .post(ClientResponse.class, json);
+ String entity = response.getEntity(String.class);
+// System.out.println(entity);
+ JsonNode node = JsonUtils.readTree(entity);
+ assertEquals(Status.UNAUTHORIZED.getStatusCode(), response.getStatus());
+ assertEquals(StatusCodes.AUTHORIZATION_FAILED,
+ node.at("/errors/0/0").asInt());
+ assertEquals("Unauthorized operation for user: test class",
+ node.at("/errors/0/1").asText());
+
+ checkWWWAuthenticateHeader(response);
+ }
}