Allow admin to create groups with name length less than 3 characters

to support existing groups from C2

Change-Id: I79d8642ebc1379a5a4d412ff212200aee4cf76a5
diff --git a/Changes b/Changes
index 6739ef1..a3b2545 100644
--- a/Changes
+++ b/Changes
@@ -4,6 +4,8 @@
 - Fix deprecated URL constructor (AI assisted)
 - Fix Jackson and serialization deprecated methods (AI assisted)
 - Change Userdata to use String username instead of integer userId
+- Allow admin to create groups with name length less than 3 characters 
+  to support existing groups from C2
 
 # version 1.1
 
diff --git a/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java b/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java
index 6362d25..897bd20 100644
--- a/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java
+++ b/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java
@@ -198,7 +198,10 @@
      */
     public boolean createUpdateUserGroup (String groupName, String description,
             String createdBy) throws KustvaktException {
-        ParameterChecker.checkNameValue(groupName, "groupName");
+    	
+    	if (!adminDao.isAdmin(createdBy)) {
+    		ParameterChecker.checkNameValue(groupName, "groupName");
+        }        
         ParameterChecker.checkStringValue(createdBy, "createdBy");
 
         if (!groupNamePattern.matcher(groupName).matches()) {
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 a1754fd..a82736b 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
@@ -80,6 +80,20 @@
             node.at("/errors/0/1").asText());
         assertEquals("groupName", node.at("/errors/0/2").asText());
     }
+    
+    @Test
+    public void testCreateGroupShortNameAdmin ()
+            throws KustvaktException {
+        String groupName = "ab";
+        Response response = target().path(API_VERSION).path("group")
+                .path("@" + groupName).request()
+                .header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
+                        .createBasicAuthorizationHeaderValue(admin, "pass"))
+                .header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
+                .put(Entity.form(new Form()));
+        assertEquals(Status.CREATED.getStatusCode(), response.getStatus());
+		deleteGroupByName(groupName,admin);
+    }
 
     @Test
     public void testUserGroup () throws KustvaktException {