Added more handling on deleted group and tests.
Change-Id: Ibc9b8dd8434cdc576d917a1784a719cdfe767066
diff --git a/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java b/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java
index 85a0f4a..d0c490c 100644
--- a/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java
+++ b/full/src/test/java/de/ids_mannheim/korap/config/TestBeans.java
@@ -1,12 +1,15 @@
package de.ids_mannheim.korap.config;
-import de.ids_mannheim.korap.handlers.AdminDao;
+import java.util.List;
+
import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
-import de.ids_mannheim.korap.interfaces.db.*;
-import org.springframework.context.annotation.Bean;
-
-import java.util.List;
+import de.ids_mannheim.korap.interfaces.db.AdminHandlerIface;
+import de.ids_mannheim.korap.interfaces.db.AuditingIface;
+import de.ids_mannheim.korap.interfaces.db.EntityHandlerIface;
+import de.ids_mannheim.korap.interfaces.db.PolicyHandlerIface;
+import de.ids_mannheim.korap.interfaces.db.ResourceOperationIface;
+import de.ids_mannheim.korap.interfaces.db.UserDataDbIface;
/**
* @author hanl
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java
index ff6a563..04314fc 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/UserGroupControllerTest.java
@@ -58,11 +58,10 @@
.header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
.get(ClientResponse.class);
String entity = response.getEntity(String.class);
- System.out.println(entity);
+ // System.out.println(entity);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
JsonNode node = JsonUtils.readTree(entity);
-
JsonNode group = node.get(1);
assertEquals(2, group.at("/id").asInt());
assertEquals("dory group", group.at("/name").asText());
@@ -181,6 +180,9 @@
testDeleteMemberUnauthorized(groupId);
testDeleteMember(groupId);
testDeleteGroup(groupId);
+
+ testSubscribeToDeletedGroup(groupId);
+ testUnsubscribeToDeletedGroup(groupId);
}
@@ -330,6 +332,27 @@
}
@Test
+ public void testDeleteDeletedGroup () throws UniformInterfaceException,
+ ClientHandlerException, KustvaktException {
+ ClientResponse response = resource().path("group").path("delete")
+ .queryParam("groupId", "4")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("dory",
+ "pass"))
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .delete(ClientResponse.class);
+
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ String entity = response.getEntity(String.class);
+ JsonNode node = JsonUtils.readTree(entity);
+ assertEquals(StatusCodes.GROUP_DELETED, node.at("/errors/0/0").asInt());
+ assertEquals("Group deleted group has been deleted.",
+ node.at("/errors/0/1").asText());
+ assertEquals("deleted group", node.at("/errors/0/2").asText());
+ }
+
+ @Test
public void testDeleteGroupOwner () throws UniformInterfaceException,
ClientHandlerException, KustvaktException {
// delete marlin from marlin group
@@ -452,7 +475,7 @@
testDeletePendingMember();
}
-
+
@Test
public void testInvitePendingMember () throws UniformInterfaceException,
ClientHandlerException, KustvaktException {
@@ -521,7 +544,8 @@
@Test
public void testInviteMemberToDeletedGroup ()
- throws UniformInterfaceException, ClientHandlerException, KustvaktException {
+ throws UniformInterfaceException, ClientHandlerException,
+ KustvaktException {
String[] members = new String[] { "nemo" };
UserGroupJson userGroup = new UserGroupJson();
@@ -541,15 +565,12 @@
String entity = response.getEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
- assertEquals(StatusCodes.GROUP_DELETED,
- node.at("/errors/0/0").asInt());
- assertEquals(
- "Group deleted group has been deleted.",
+ assertEquals(StatusCodes.GROUP_DELETED, node.at("/errors/0/0").asInt());
+ assertEquals("Group deleted group has been deleted.",
node.at("/errors/0/1").asText());
- assertEquals("deleted group",
- node.at("/errors/0/2").asText());
+ assertEquals("deleted group", node.at("/errors/0/2").asText());
}
-
+
// marlin has GroupMemberStatus.PENDING in dory group
@Test
public void testSubscribePendingMember () throws KustvaktException {
@@ -673,6 +694,29 @@
node.at("/errors/0/1").asText());
}
+ private void testSubscribeToDeletedGroup (String groupId)
+ throws UniformInterfaceException, ClientHandlerException,
+ KustvaktException {
+ MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+ form.add("groupId", groupId);
+
+ ClientResponse response = resource().path("group").path("subscribe")
+ .type(MediaType.APPLICATION_FORM_URLENCODED)
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("nemo",
+ "pass"))
+ .entity(form).post(ClientResponse.class);
+
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ String entity = response.getEntity(String.class);
+ JsonNode node = JsonUtils.readTree(entity);
+ assertEquals(StatusCodes.GROUP_DELETED, node.at("/errors/0/0").asInt());
+ assertEquals("Group new user group has been deleted.",
+ node.at("/errors/0/1").asText());
+ }
+
private void testUnsubscribeActiveMember (
MultivaluedMap<String, String> form)
throws UniformInterfaceException, ClientHandlerException,
@@ -739,8 +783,6 @@
"pass"))
.entity(form).post(ClientResponse.class);
- String entity = response.getEntity(String.class);
- // System.out.println(entity);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
node = retrieveUserGroups("marlin");
@@ -749,4 +791,98 @@
// invite marlin to dory group to set back the GroupMemberStatus.PENDING
testInviteDeletedMember();
}
+
+ @Test
+ public void testUnsubscribeMissingGroupId () throws KustvaktException {
+ MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+
+ ClientResponse response = resource().path("group").path("unsubscribe")
+ .type(MediaType.APPLICATION_FORM_URLENCODED)
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("marlin",
+ "pass"))
+ .entity(form).post(ClientResponse.class);
+
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ String entity = response.getEntity(String.class);
+ JsonNode node = JsonUtils.readTree(entity);
+
+ assertEquals(StatusCodes.MISSING_ARGUMENT,
+ node.at("/errors/0/0").asInt());
+ assertEquals("groupId", node.at("/errors/0/1").asText());
+ assertEquals("0", node.at("/errors/0/2").asText());
+ }
+
+ @Test
+ public void testUnsubscribeNonExistentMember () throws KustvaktException {
+ MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+ form.add("groupId", "2");
+
+ ClientResponse response = resource().path("group").path("unsubscribe")
+ .type(MediaType.APPLICATION_FORM_URLENCODED)
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("bruce",
+ "pass"))
+ .entity(form).post(ClientResponse.class);
+
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ String entity = response.getEntity(String.class);
+ JsonNode node = JsonUtils.readTree(entity);
+
+ assertEquals(StatusCodes.GROUP_MEMBER_NOT_FOUND,
+ node.at("/errors/0/0").asInt());
+ assertEquals("bruce is not found in the group",
+ node.at("/errors/0/1").asText());
+ }
+
+ @Test
+ public void testUnsubscribeToNonExistentGroup () throws KustvaktException {
+ MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+ form.add("groupId", "100");
+
+ ClientResponse response = resource().path("group").path("unsubscribe")
+ .type(MediaType.APPLICATION_FORM_URLENCODED)
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("pearl",
+ "pass"))
+ .entity(form).post(ClientResponse.class);
+
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ String entity = response.getEntity(String.class);
+ JsonNode node = JsonUtils.readTree(entity);
+
+ assertEquals(StatusCodes.GROUP_NOT_FOUND,
+ node.at("/errors/0/0").asInt());
+ assertEquals("Group with id 100 is not found",
+ node.at("/errors/0/1").asText());
+ }
+
+ private void testUnsubscribeToDeletedGroup (String groupId)
+ throws UniformInterfaceException, ClientHandlerException,
+ KustvaktException {
+ MultivaluedMap<String, String> form = new MultivaluedMapImpl();
+ form.add("groupId", groupId);
+
+ ClientResponse response = resource().path("group").path("unsubscribe")
+ .type(MediaType.APPLICATION_FORM_URLENCODED)
+ .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+ .header(Attributes.AUTHORIZATION,
+ handler.createBasicAuthorizationHeaderValue("nemo",
+ "pass"))
+ .entity(form).post(ClientResponse.class);
+
+ assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ String entity = response.getEntity(String.class);
+ JsonNode node = JsonUtils.readTree(entity);
+ assertEquals(StatusCodes.GROUP_DELETED, node.at("/errors/0/0").asInt());
+ assertEquals("Group new user group has been deleted.",
+ node.at("/errors/0/1").asText());
+ }
}