Replace add-member-role to add-admin-role web-service

Change-Id: Ic0f41978b2fbed160f887d47f854c0dff299cc83
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerAdminTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerAdminTest.java
index b207fbc..138a562 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerAdminTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerAdminTest.java
@@ -27,8 +27,6 @@
  */
 public class UserGroupControllerAdminTest extends UserGroupTestBase {
 
-    private String sysAdminUser = "admin";
-
     private String testUser = "group-admin";
 
     private JsonNode listGroup (String username)
@@ -128,7 +126,7 @@
                 .header(Attributes.AUTHORIZATION,
                         HttpAuthorizationHandler
                                 .createBasicAuthorizationHeaderValue(
-                                        sysAdminUser, "pass"))
+                                        admin, "pass"))
                 .header(HttpHeaders.CONTENT_TYPE,
                         MediaType.APPLICATION_FORM_URLENCODED)
                 .post(Entity.form(f));
@@ -146,7 +144,7 @@
                 .header(Attributes.AUTHORIZATION,
                         HttpAuthorizationHandler
                                 .createBasicAuthorizationHeaderValue(
-                                        sysAdminUser, "pass"))
+                                        admin, "pass"))
                 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").get();
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
         String entity = response.readEntity(String.class);
@@ -161,7 +159,7 @@
                 .header(Attributes.AUTHORIZATION,
                         HttpAuthorizationHandler
                                 .createBasicAuthorizationHeaderValue(
-                                        sysAdminUser, "pass"))
+                                        admin, "pass"))
                 .header(HttpHeaders.CONTENT_TYPE,
                         MediaType.APPLICATION_FORM_URLENCODED)
                 .post(null);
@@ -197,28 +195,23 @@
         assertEquals(groupName, node.get("name").asText());
         testInviteMember(groupName);
         subscribe(groupName, "marlin");
-        testAddMemberRoles(groupName, "marlin");
+        testAddAdminRole(groupName, "marlin");
         testDeleteMemberRoles(groupName, "marlin");
         testDeleteMember(groupName);
         
         // delete group
-        deleteGroupByName(groupName, sysAdminUser);
+        deleteGroupByName(groupName, admin);
         // check group
         node = listGroup(testUser);
         assertEquals(0, node.size());
     }
 
 
-    private void testAddMemberRoles (String groupName, String memberUsername)
+    private void testAddAdminRole (String groupName, String memberUsername)
             throws ProcessingException, KustvaktException {
-        Form form = new Form();
-        form.param("memberUsername", memberUsername);
-        // USER_GROUP_ADMIN
-        form.param("role", PredefinedRole.GROUP_ADMIN.name());
-        // USER_GROUP_MEMBER
-        form.param("role", PredefinedRole.GROUP_MEMBER.name());
-        addMemberRole(groupName, sysAdminUser, form);
-
+        Response response = addAdminRole(groupName, memberUsername, admin);
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        
         JsonNode node = retrieveGroup(groupName).at("/members");
         JsonNode member;
         for (int i = 0; i < node.size(); i++) {
@@ -241,7 +234,7 @@
                 .header(Attributes.AUTHORIZATION,
                         HttpAuthorizationHandler
                                 .createBasicAuthorizationHeaderValue(
-                                        sysAdminUser, "password"))
+                                        admin, "password"))
                 .post(Entity.form(form));
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
         JsonNode node = retrieveGroup(groupName).at("/members");
@@ -262,7 +255,7 @@
                 .header(Attributes.AUTHORIZATION,
                         HttpAuthorizationHandler
                                 .createBasicAuthorizationHeaderValue(
-                                        sysAdminUser, "pass"))
+                                        admin, "pass"))
                 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").post(null);
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
         String entity = response.readEntity(String.class);
@@ -278,7 +271,7 @@
                 .header(Attributes.AUTHORIZATION,
                         HttpAuthorizationHandler
                                 .createBasicAuthorizationHeaderValue(
-                                        sysAdminUser, "pass"))
+                                        admin, "pass"))
                 .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32").delete();
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
         // check group member
@@ -300,7 +293,7 @@
                 .header(Attributes.AUTHORIZATION,
                         HttpAuthorizationHandler
                                 .createBasicAuthorizationHeaderValue(
-                                        sysAdminUser, "pass"))
+                                        admin, "pass"))
                 .post(Entity.form(form));
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
         // list group
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerTest.java
index 44019ae..7363257 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupControllerTest.java
@@ -10,7 +10,6 @@
 import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
 import de.ids_mannheim.korap.config.Attributes;
 import de.ids_mannheim.korap.constant.GroupMemberStatus;
-import de.ids_mannheim.korap.constant.PredefinedRole;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.utils.JsonUtils;
@@ -242,11 +241,7 @@
         inviteMember(marlinGroupName, "marlin", "dory");
         subscribe(marlinGroupName, "dory");
         
-        Form form = new Form();
-        form.param("memberUsername", "dory");
-        form.param("role", PredefinedRole.GROUP_ADMIN.name());
-        form.param("role", PredefinedRole.QUERY_ACCESS.name());
-        addMemberRole(marlinGroupName, "marlin", form);
+        addAdminRole(marlinGroupName, "dory", "marlin");
         
         // dory is a group admin in marlin-group
         Response response = target().path(API_VERSION).path("group")
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupMemberTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupMemberTest.java
index 6d81711..1611da9 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupMemberTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupMemberTest.java
@@ -98,27 +98,28 @@
 //        assertEquals(node.at("/errors/0/2").asText(), "deleted-group");
     }
     
-    @Test
-    public void testAddMutipleRoles () throws KustvaktException {
-        createDoryGroup();
-        inviteMember(doryGroupName, "dory", "marlin");
-        subscribe(doryGroupName, "marlin");
-        JsonNode marlinGroup = listUserGroups("marlin");
-        int groupId = marlinGroup.at("/0/id").asInt();
-        
-        Form form = new Form();
-        form.param("memberUsername", "marlin");
-        form.param("role", PredefinedRole.GROUP_ADMIN.name());
-        form.param("role", PredefinedRole.QUERY_ACCESS.name());
-        addMemberRole(doryGroupName, "dory", form);
-        
-        UserGroupMember member = memberDao.retrieveMemberById("marlin",
-                groupId);
-        Set<Role> roles = member.getRoles();
-        assertEquals(6, roles.size());
-        
-        deleteGroupByName(doryGroupName, "dory");
-    }
+//    @Deprecated
+//    @Test
+//    public void testAddMutipleRoles () throws KustvaktException {
+//        createDoryGroup();
+//        inviteMember(doryGroupName, "dory", "marlin");
+//        subscribe(doryGroupName, "marlin");
+//        JsonNode marlinGroup = listUserGroups("marlin");
+//        int groupId = marlinGroup.at("/0/id").asInt();
+//        
+//        Form form = new Form();
+//        form.param("memberUsername", "marlin");
+//        form.param("role", PredefinedRole.GROUP_ADMIN.name());
+//        form.param("role", PredefinedRole.QUERY_ACCESS.name());
+//        addMemberRole(doryGroupName, "dory", form);
+//        
+//        UserGroupMember member = memberDao.retrieveMemberById("marlin",
+//                groupId);
+//        Set<Role> roles = member.getRoles();
+//        assertEquals(6, roles.size());
+//        
+//        deleteGroupByName(doryGroupName, "dory");
+//    }
     
     @Test
     public void testAddMemberRole () throws KustvaktException {
@@ -132,7 +133,8 @@
         Set<Role> roles = member.getRoles();
         assertEquals(1, roles.size());
         
-        addAdminRole(marlinGroupName, "dory", "marlin");
+        Response response = addAdminRole(marlinGroupName, "dory", "marlin");
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
         
         member = memberDao.retrieveMemberById("dory", groupId);
         roles = member.getRoles();
@@ -148,8 +150,14 @@
 
     private void testAddSameMemberRole (int groupId)
             throws ProcessingException, KustvaktException {
-        addAdminRole(marlinGroupName, "dory", "marlin");
-
+        Response response = addAdminRole(marlinGroupName, "dory", "marlin");
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        
+        String entity = response.readEntity(String.class);
+        JsonNode node = JsonUtils.readTree(entity);
+        assertEquals(StatusCodes.GROUP_ADMIN_EXISTS,
+                node.at("/errors/0/0").asInt());
+        
         UserGroupMember member = memberDao.retrieveMemberById("dory", groupId);
         Set<Role> roles = member.getRoles();
         assertEquals(6, roles.size());
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupSubscriptionTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupSubscriptionTest.java
index 57c4227..2d675e3 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupSubscriptionTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupSubscriptionTest.java
@@ -116,7 +116,6 @@
         for (int i = 0; i < node.size(); i++) {
             member = node.get(i);
             if (deletedMemberName.equals(member.at("/userId").asText())) {
-                System.out.println(deletedMemberName);
                 assertEquals(0, node.at("/roles").size());
                 break;
             }
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupTestBase.java b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupTestBase.java
index cc1c1b7..e5e46c4 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupTestBase.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/usergroup/UserGroupTestBase.java
@@ -23,6 +23,7 @@
 
     protected String doryGroupName = "dory-group";
     protected String marlinGroupName = "marlin-group";
+    protected String admin = "admin";
 
     protected Response createUserGroup (String groupName, String description,
             String username) throws ProcessingException, KustvaktException {
@@ -110,22 +111,19 @@
 //        assertEquals(Status.OK.getStatusCode(), response.getStatus());
     }
 
-    protected void addAdminRole (String groupName, String memberName,
+    protected Response addAdminRole (String groupName, String memberName,
             String addedBy) throws KustvaktException {
         Form form = new Form();
         form.param("memberUsername", memberName);
         form.param("role", PredefinedRole.GROUP_ADMIN.name());
-        addMemberRole(groupName, addedBy, form);
-    }
-    
-    protected void addMemberRole (String groupName, String addedBy,
-            Form form) throws KustvaktException {
+
         Response response = target().path(API_VERSION).path("group")
-                .path("@"+groupName).path("role").path("add").request()
+                .path("@" + groupName).path("role").path("add").path("admin")
+                .request()
                 .header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
                         .createBasicAuthorizationHeaderValue(addedBy, "pass"))
                 .post(Entity.form(form));
-        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        return response;
     }
 
     protected Response deleteMember (String groupName, String memberName,
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusSharingTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusSharingTest.java
index 9898475..2107491 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusSharingTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusSharingTest.java
@@ -69,11 +69,8 @@
                 marlinGroupName);
         testResponseUnauthorized(response, "nemo");
 
-        Form form = new Form();
-        form.param("memberUsername", "nemo");
-        form.param("role", PredefinedRole.GROUP_ADMIN.name());
-        addMemberRole(marlinGroupName, "marlin", form);
-
+        addAdminRole(marlinGroupName, "nemo", "marlin");
+        
         response = shareVCByCreator("nemo", "nemo-vc", marlinGroupName);
         assertEquals(Status.OK.getStatusCode(), response.getStatus());