]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-17705 Remove 'groupId' and 'id' deprecated param from permission and usergroup...
authorLéo Geoffroy <99647462+leo-geoffroy-sonarsource@users.noreply.github.com>
Mon, 30 Jan 2023 13:01:01 +0000 (14:01 +0100)
committersonartech <sonartech@sonarsource.com>
Fri, 3 Feb 2023 14:26:00 +0000 (14:26 +0000)
33 files changed:
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/PermissionWsSupport.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/WsParameters.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/AddUserActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/RemoveUserActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UsersActionTest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsParameters.java
sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupToTemplateRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/PermissionsService.java
sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupFromTemplateRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/AddUserRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/DeleteRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/RemoveUserRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UpdateRequest.java
sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UserGroupsService.java
sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UsersRequest.java

index 5e6a7e45698600188a08cb181b229f23313b039a..845c5954d184df30dea814b483598b83e225d5a0 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.server.permission.PermissionService;
 import org.sonar.server.permission.PermissionUpdater;
 import org.sonar.server.user.UserSession;
 
-import static org.sonar.server.permission.ws.WsParameters.createGroupIdParameter;
 import static org.sonar.server.permission.ws.WsParameters.createGroupNameParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -65,7 +64,7 @@ public class AddGroupAction implements PermissionsWsAction {
     WebService.NewAction action = context.createAction(ACTION)
       .setDescription("Add a permission to a group.<br /> " +
         "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
-        "The group name or group id must be provided. <br />" +
+        "The group name must be provided. <br />" +
         "Requires one of the following permissions:" +
         "<ul>" +
         "<li>'Administer System'</li>" +
@@ -73,13 +72,13 @@ public class AddGroupAction implements PermissionsWsAction {
         "</ul>")
       .setSince("5.2")
       .setChangelog(
-        new Change("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'name' instead."))
+        new Change("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."),
+        new Change("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."))
       .setPost(true)
       .setHandler(this);
 
     wsParameters.createPermissionParameter(action, "The permission you would like to grant to the group.");
     createGroupNameParameter(action);
-    createGroupIdParameter(action);
     createProjectParameters(action);
   }
 
index 56ad588c35472c64a752eb2f753009dafbae1e82..e740e7410ce00a792050424164242301e44ef75a 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.permission.GroupUuidOrAnyone;
 import org.sonar.server.permission.ws.template.WsTemplateRef;
 import org.sonar.server.user.UserSession;
-import org.sonar.server.usergroups.ws.GroupWsRef;
 import org.sonar.server.usergroups.ws.GroupWsSupport;
 import org.sonarqube.ws.client.permission.PermissionsWsParameters;
 
@@ -44,7 +43,6 @@ import static java.lang.String.format;
 import static java.util.Optional.ofNullable;
 import static org.sonar.server.exceptions.NotFoundException.checkFound;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
 
 public class PermissionWsSupport {
@@ -80,10 +78,8 @@ public class PermissionWsSupport {
   }
 
   public GroupUuidOrAnyone findGroup(DbSession dbSession, Request request) {
-    String groupUuid = request.param(PARAM_GROUP_ID);
-    String groupName = request.param(PARAM_GROUP_NAME);
-    GroupWsRef groupRef = GroupWsRef.create(groupUuid, groupName);
-    return groupWsSupport.findGroupOrAnyone(dbSession, groupRef);
+    String groupName = request.mandatoryParam(PARAM_GROUP_NAME);
+    return groupWsSupport.findGroupOrAnyone(dbSession, groupName);
   }
 
   public UserId findUser(DbSession dbSession, String login) {
index 2a9ab686ab9ca59db070e28cab2f0faef2d434a3..d150cfc5d4b3c794d652e604c5ef1ae6e9c705a9 100644 (file)
@@ -35,7 +35,6 @@ import org.sonar.server.permission.PermissionUpdater;
 import org.sonar.server.user.UserSession;
 
 import static java.util.Collections.singletonList;
-import static org.sonar.server.permission.ws.WsParameters.createGroupIdParameter;
 import static org.sonar.server.permission.ws.WsParameters.createGroupNameParameter;
 import static org.sonar.server.permission.ws.WsParameters.createProjectParameters;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -66,7 +65,7 @@ public class RemoveGroupAction implements PermissionsWsAction {
     WebService.NewAction action = context.createAction(ACTION)
       .setDescription("Remove a permission from a group.<br /> " +
         "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
-        "The group id or group name must be provided, not both.<br />" +
+        "The group name must be provided.<br />" +
         "Requires one of the following permissions:" +
         "<ul>" +
         "<li>'Administer System'</li>" +
@@ -75,12 +74,12 @@ public class RemoveGroupAction implements PermissionsWsAction {
       .setSince("5.2")
       .setPost(true)
       .setChangelog(
+        new Change("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."),
         new Change("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."))
       .setHandler(this);
 
     wsParameters.createPermissionParameter(action, "The permission you would like to revoke from the group.");
     createGroupNameParameter(action);
-    createGroupIdParameter(action);
     createProjectParameters(action);
   }
 
index c0bdc0dc432baad1f1856bc3505ecede2e40ad4b..21040aadc7a5ee1716d2a357502caf9e1b792ee6 100644 (file)
@@ -27,7 +27,6 @@ import org.sonar.server.permission.PermissionService;
 import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
 import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -83,17 +82,11 @@ public class WsParameters {
 
   public static void createGroupNameParameter(WebService.NewAction action) {
     action.createParam(PARAM_GROUP_NAME)
+      .setRequired(true)
       .setDescription("Group name or 'anyone' (case insensitive)")
       .setExampleValue("sonar-administrators");
   }
 
-  public static void createGroupIdParameter(WebService.NewAction action) {
-    action.createParam(PARAM_GROUP_ID)
-      .setDescription("Group id, use 'name' param instead")
-      .setDeprecatedSince("8.4")
-      .setExampleValue(UUID_EXAMPLE_01);
-  }
-
   public static void createProjectParameters(WebService.NewAction action) {
     action.createParam(PARAM_PROJECT_ID)
       .setDescription("Project id")
index a62ce8019c2d595379b895e352e3b754739abf23..491f9fcde3fc3a3052955c7e52bc0ab075572f66 100644 (file)
@@ -36,7 +36,6 @@ import static java.lang.String.format;
 import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.server.exceptions.BadRequestException.checkRequest;
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
-import static org.sonar.server.permission.ws.WsParameters.createGroupIdParameter;
 import static org.sonar.server.permission.ws.WsParameters.createGroupNameParameter;
 import static org.sonar.server.permission.ws.WsParameters.createTemplateParameters;
 import static org.sonar.server.permission.ws.template.WsTemplateRef.fromRequest;
@@ -63,15 +62,15 @@ public class AddGroupToTemplateAction implements PermissionsWsAction {
       .setPost(true)
       .setSince("5.2")
       .setDescription("Add a group to a permission template.<br /> " +
-        "The group id or group name must be provided. <br />" +
+        "The group name must be provided. <br />" +
         "Requires the following permission: 'Administer System'.")
       .setChangelog(
+        new Change("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."),
         new Change("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."))
       .setHandler(this);
 
     createTemplateParameters(action);
     wsParameters.createProjectPermissionParameter(action);
-    createGroupIdParameter(action);
     createGroupNameParameter(action);
   }
 
index c1359a28aa4af312a9e9bb170ca8697c72333c8a..396c198c3ffafd52055cba252300d53a280925a9 100644 (file)
@@ -33,7 +33,6 @@ import org.sonar.server.permission.ws.WsParameters;
 import org.sonar.server.user.UserSession;
 
 import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdmin;
-import static org.sonar.server.permission.ws.WsParameters.createGroupIdParameter;
 import static org.sonar.server.permission.ws.WsParameters.createGroupNameParameter;
 import static org.sonar.server.permission.ws.WsParameters.createTemplateParameters;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
@@ -59,15 +58,15 @@ public class RemoveGroupFromTemplateAction implements PermissionsWsAction {
       .setPost(true)
       .setSince("5.2")
       .setDescription("Remove a group from a permission template.<br /> " +
-        "The group id or group name must be provided. <br />" +
+        "The group name must be provided. <br />" +
         "Requires the following permission: 'Administer System'.")
       .setChangelog(
+        new Change("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."),
         new Change("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."))
       .setHandler(this);
 
     createTemplateParameters(action);
     wsParameters.createProjectPermissionParameter(action);
-    createGroupIdParameter(action);
     createGroupNameParameter(action);
   }
 
index 858418096518533c3cd8fb22b286d7f54fcf2ebf..51ddfd119bca62735f47672aae5a10d8661174cf 100644 (file)
@@ -34,7 +34,6 @@ import org.sonar.server.user.UserSession;
 import static java.lang.String.format;
 import static org.sonar.db.permission.GlobalPermission.ADMINISTER;
 import static org.sonar.server.exceptions.NotFoundException.checkFound;
-import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_LOGIN;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.defineGroupWsParameters;
@@ -56,12 +55,13 @@ public class AddUserAction implements UserGroupsWsAction {
   public void define(NewController context) {
     NewAction action = context.createAction("add_user")
       .setDescription(format("Add a user to a group.<br />" +
-        "'%s' or '%s' must be provided.<br />" +
-        "Requires the following permission: 'Administer System'.", PARAM_GROUP_ID, PARAM_GROUP_NAME))
+        "'%s' must be provided.<br />" +
+        "Requires the following permission: 'Administer System'.", PARAM_GROUP_NAME))
       .setHandler(this)
       .setPost(true)
       .setSince("5.2")
       .setChangelog(
+        new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
         new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
 
     defineGroupWsParameters(action);
index d072ae02460fa1da609ba2d1b06411a8bfc79f13..c726a7dd37e486af4d15cc3d977eef7375ccd98e 100644 (file)
@@ -32,7 +32,6 @@ import org.sonar.server.user.UserSession;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.lang.String.format;
-import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.defineGroupWsParameters;
 
@@ -52,13 +51,13 @@ public class DeleteAction implements UserGroupsWsAction {
   public void define(NewController context) {
     WebService.NewAction action = context.createAction("delete")
       .setDescription(format("Delete a group. The default groups cannot be deleted.<br/>" +
-          "'%s' or '%s' must be provided.<br />" +
-          "Requires the following permission: 'Administer System'.",
-        PARAM_GROUP_ID, PARAM_GROUP_NAME))
+        "'%s' must be provided.<br />" +
+        "Requires the following permission: 'Administer System'.", PARAM_GROUP_NAME))
       .setHandler(this)
       .setSince("5.2")
       .setPost(true)
       .setChangelog(
+        new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
         new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
 
     defineGroupWsParameters(action);
index af328ed8d4e750db0a31bcf9ec764ba43aa9eea5..b330843613e754b2985192350b42ff5e4c34a571 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.server.usergroups.ws;
 
 import java.util.Optional;
+import org.sonar.api.security.DefaultGroups;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.db.DbClient;
@@ -33,9 +34,7 @@ import org.sonarqube.ws.UserGroups;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Optional.ofNullable;
-import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
 import static org.sonar.server.exceptions.BadRequestException.checkRequest;
-import static org.sonar.server.exceptions.NotFoundException.checkFound;
 import static org.sonar.server.exceptions.NotFoundException.checkFoundWithOptional;
 
 /**
@@ -45,6 +44,7 @@ public class GroupWsSupport {
 
   static final String PARAM_GROUP_ID = "id";
   static final String PARAM_GROUP_NAME = "name";
+  static final String PARAM_GROUP_CURRENT_NAME = "currentName";
   static final String PARAM_GROUP_DESCRIPTION = "description";
   static final String PARAM_LOGIN = "login";
 
@@ -62,7 +62,7 @@ public class GroupWsSupport {
   }
 
   /**
-   * Find a group by its id (parameter {@link #PARAM_GROUP_ID}) or group name (parameter {@link #PARAM_GROUP_NAME}). The virtual
+   * Find a group by its  group name (parameter {@link #PARAM_GROUP_NAME}). The virtual
    * group "Anyone" is not supported.
    *
    * @throws NotFoundException if parameters are missing/incorrect, if the requested group does not exist
@@ -73,36 +73,25 @@ public class GroupWsSupport {
   }
 
   public GroupDto findGroupDto(DbSession dbSession, Request request) {
-    String uuid = request.param(PARAM_GROUP_ID);
-    String name = request.param(PARAM_GROUP_NAME);
-    return findGroupDto(dbSession, GroupWsRef.create(uuid, name));
+    String groupName = request.mandatoryParam(PARAM_GROUP_NAME);
+    return findGroupDto(dbSession, groupName);
   }
 
-  public GroupDto findGroupDto(DbSession dbSession, GroupWsRef ref) {
-    if (ref.hasUuid()) {
-      GroupDto group = dbClient.groupDao().selectByUuid(dbSession, ref.getUuid());
-      checkFound(group, "No group with id '%s'", ref.getUuid());
-      return group;
-    }
+  public GroupDto findGroupDto(DbSession dbSession, String groupName) {
 
-    Optional<GroupDto> group = dbClient.groupDao().selectByName(dbSession, ref.getName());
-    checkFoundWithOptional(group, "No group with name '%s'", ref.getName());
+    Optional<GroupDto> group = dbClient.groupDao().selectByName(dbSession, groupName);
+    checkFoundWithOptional(group, "No group with name '%s'", groupName);
     return group.get();
   }
 
-  public GroupUuidOrAnyone findGroupOrAnyone(DbSession dbSession, GroupWsRef ref) {
-    if (ref.hasUuid()) {
-      GroupDto group = dbClient.groupDao().selectByUuid(dbSession, ref.getUuid());
-      checkFound(group, "No group with id '%s'", ref.getUuid());
-      return GroupUuidOrAnyone.from(group);
-    }
+  public GroupUuidOrAnyone findGroupOrAnyone(DbSession dbSession, String groupName) {
 
-    if (ref.isAnyone()) {
+    if (DefaultGroups.isAnyone(groupName)) {
       return GroupUuidOrAnyone.forAnyone();
     }
 
-    Optional<GroupDto> group = dbClient.groupDao().selectByName(dbSession, ref.getName());
-    checkFoundWithOptional(group, "No group with name '%s'", ref.getName());
+    Optional<GroupDto> group = dbClient.groupDao().selectByName(dbSession, groupName);
+    checkFoundWithOptional(group, "No group with name '%s'", groupName);
     return GroupUuidOrAnyone.from(group.get());
   }
 
@@ -129,19 +118,12 @@ public class GroupWsSupport {
   }
 
   static void defineGroupWsParameters(WebService.NewAction action) {
-    defineGroupIdWsParameter(action);
     defineGroupNameWsParameter(action);
   }
 
-  private static void defineGroupIdWsParameter(WebService.NewAction action) {
-    action.createParam(PARAM_GROUP_ID)
-      .setDescription("Group id, use 'name' instead")
-      .setDeprecatedSince("8.4")
-      .setExampleValue(UUID_EXAMPLE_01);
-  }
-
   private static void defineGroupNameWsParameter(WebService.NewAction action) {
     action.createParam(PARAM_GROUP_NAME)
+      .setRequired(true)
       .setDescription("Group name")
       .setExampleValue("sonar-administrators");
   }
index 32e5ddc97887d93a5192a96e7ba56da791c41284..a7ef68faaa8bad25909510e93b7c7c6a93179220 100644 (file)
@@ -34,7 +34,6 @@ import org.sonar.server.user.UserSession;
 import static java.lang.String.format;
 import static org.sonar.server.exceptions.BadRequestException.checkRequest;
 import static org.sonar.server.exceptions.NotFoundException.checkFound;
-import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_LOGIN;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.defineGroupWsParameters;
@@ -56,13 +55,13 @@ public class RemoveUserAction implements UserGroupsWsAction {
   public void define(NewController context) {
     NewAction action = context.createAction("remove_user")
       .setDescription(format("Remove a user from a group.<br />" +
-          "'%s' or '%s' must be provided.<br>" +
-          "Requires the following permission: 'Administer System'.",
-        PARAM_GROUP_ID, PARAM_GROUP_NAME))
+        "'%s' must be provided.<br>" +
+        "Requires the following permission: 'Administer System'.", PARAM_GROUP_NAME))
       .setHandler(this)
       .setPost(true)
       .setSince("5.2")
       .setChangelog(
+        new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
         new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
 
     defineGroupWsParameters(action);
index 095863c11cb66d47cf22580ae3c14338d950853d..4ecba2eca7f3c1ceaffc801a98570d84b6f08ee4 100644 (file)
@@ -34,14 +34,12 @@ import org.sonar.server.user.UserSession;
 import org.sonarqube.ws.UserGroups;
 
 import static java.lang.String.format;
-import static java.util.Optional.ofNullable;
 import static org.sonar.api.user.UserGroupValidation.GROUP_NAME_MAX_LENGTH;
 import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
 import static org.sonar.db.permission.GlobalPermission.ADMINISTER;
-import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_CURRENT_NAME;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.DESCRIPTION_MAX_LENGTH;
+import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_CURRENT_NAME;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_DESCRIPTION;
-import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.toProtobuf;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -68,17 +66,14 @@ public class UpdateAction implements UserGroupsWsAction {
       .setResponseExample(getClass().getResource("update.example.json"))
       .setSince("5.2")
       .setChangelog(
+        new Change("10.0", "Parameter 'id' is removed in favor of 'currentName'"),
         new Change("8.5", "Parameter 'id' deprecated in favor of 'currentName'"),
         new Change("8.4", "Parameter 'id' format changes from integer to string"),
         new Change("6.4", "The default group is no longer editable"));
 
-    action.createParam(PARAM_GROUP_ID)
-      .setDescription("Identifier of the group. Use '" + PARAM_CURRENT_NAME + "' instead.")
-      .setExampleValue(UUID_EXAMPLE_01)
-      .setDeprecatedSince("8.5");
-
-    action.createParam(PARAM_CURRENT_NAME)
-      .setDescription("Name of the group to be updated. Mandatory unless '" + PARAM_GROUP_ID + "' is used.")
+    action.createParam(PARAM_GROUP_CURRENT_NAME)
+      .setDescription("Name of the group to be updated.")
+      .setRequired(true)
       .setExampleValue(UUID_EXAMPLE_01)
       .setSince("8.5");
 
@@ -98,21 +93,10 @@ public class UpdateAction implements UserGroupsWsAction {
   @Override
   public void handle(Request request, Response response) throws Exception {
     try (DbSession dbSession = dbClient.openSession(false)) {
-      String groupUuid = request.param(PARAM_GROUP_ID);
-      String currentName = request.param(PARAM_CURRENT_NAME);
+      String currentName = request.mandatoryParam(PARAM_GROUP_CURRENT_NAME);
 
-      if ((groupUuid == null && currentName == null) || (groupUuid != null && currentName != null)) {
-        throw new IllegalArgumentException(format("Need to specify one and only one of '%s' or '%s'", PARAM_GROUP_ID, PARAM_CURRENT_NAME));
-      }
-
-      GroupDto group;
-      if (groupUuid != null) {
-        group = ofNullable(dbClient.groupDao().selectByUuid(dbSession, groupUuid))
-          .orElseThrow(() -> new NotFoundException(format("Could not find a user group with id '%s'.", groupUuid)));
-      } else {
-        group = dbClient.groupDao().selectByName(dbSession, currentName)
+      GroupDto group = dbClient.groupDao().selectByName(dbSession, currentName)
           .orElseThrow(() -> new NotFoundException(format("Could not find a user group with name '%s'.", currentName)));
-      }
 
       userSession.checkPermission(ADMINISTER);
       support.checkGroupIsNotDefault(dbSession, group);
index 8f8ee102ad2e80ba9df49ddd89509616a26a1ba3..29aa783f329cb192a912b4b334418279158a695b 100644 (file)
@@ -68,6 +68,7 @@ public class UsersAction implements UserGroupsWsAction {
       .addSearchQuery("freddy", "names", "logins")
       .addPagingParams(25)
       .setChangelog(
+        new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
         new Change("9.8", "response fields 'total', 's', 'ps' have been deprecated, please use 'paging' object instead."),
         new Change("9.8", "The field 'paging' has been added to the response."),
         new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
index d7fea01e926aad0c16c0f7a9694a175fa06cabb8..968fd1c956ab70210baccedbc79a35029072049b 100644 (file)
@@ -52,7 +52,6 @@ import static org.sonar.db.component.ComponentTesting.newSubPortfolio;
 import static org.sonar.db.permission.GlobalPermission.ADMINISTER;
 import static org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS;
 import static org.sonar.db.permission.GlobalPermission.SCAN;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
@@ -80,7 +79,8 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isTrue();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
-      tuple("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'name' instead."));
+      tuple("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."),
+      tuple("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."));
   }
 
   @Test
@@ -109,18 +109,6 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
     assertThat(db.users().selectGroupPermissions(group, null)).containsOnly("provisioning");
   }
 
-  @Test
-  public void add_permission_to_group_referenced_by_its_id() {
-    GroupDto group = db.users().insertGroup("sonar-administrators");
-    loginAsAdmin();
-
-    newRequest()
-      .setParam(PARAM_GROUP_ID, group.getUuid())
-      .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
-      .execute();
-
-    assertThat(db.users().selectGroupPermissions(group, null)).containsOnly(SYSTEM_ADMIN);
-  }
 
   @Test
   public void add_permission_to_project_referenced_by_its_id() {
@@ -267,7 +255,7 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
   }
 
   @Test
-  public void fail_when_group_name_and_group_id_are_missing() {
+  public void fail_when_group_name_is_missing() {
     loginAsAdmin();
 
     assertThatThrownBy(() -> {
@@ -275,8 +263,8 @@ public class AddGroupActionTest extends BasePermissionWsTest<AddGroupAction> {
         .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
         .execute();
     })
-      .isInstanceOf(BadRequestException.class)
-      .hasMessage("Group name or group id must be provided");
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'groupName' parameter is missing");
   }
 
   @Test
index fc3ac3bafa24b81d33887d3b5c2ee680a5240bbb..3212c34a75aa618d37e91eb2c5b49a17a43d3585 100644 (file)
@@ -52,7 +52,6 @@ import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.component.ComponentTesting.newSubPortfolio;
 import static org.sonar.db.permission.GlobalPermission.ADMINISTER;
 import static org.sonar.db.permission.GlobalPermission.PROVISION_PROJECTS;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_ID;
@@ -83,6 +82,7 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isTrue();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
+      tuple("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."),
       tuple("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."));
   }
 
@@ -100,20 +100,6 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
     assertThat(db.users().selectGroupPermissions(aGroup, null)).containsOnly(ADMINISTER.getKey());
   }
 
-  @Test
-  public void remove_permission_using_group_id() {
-    db.users().insertPermissionOnGroup(aGroup, ADMINISTER);
-    db.users().insertPermissionOnGroup(aGroup, PROVISION_PROJECTS);
-    loginAsAdmin();
-
-    newRequest()
-      .setParam(PARAM_GROUP_ID, aGroup.getUuid())
-      .setParam(PARAM_PERMISSION, PROVISION_PROJECTS.getKey())
-      .execute();
-
-    assertThat(db.users().selectGroupPermissions(aGroup, null)).containsOnly(ADMINISTER.getKey());
-  }
-
   @Test
   public void remove_project_permission() {
     ComponentDto project = db.components().insertPrivateProject();
@@ -252,8 +238,8 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
         .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
         .execute();
     })
-      .isInstanceOf(BadRequestException.class)
-      .hasMessage("Group name or group id must be provided");
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'groupName' parameter is missing");
   }
 
   @Test
@@ -269,20 +255,6 @@ public class RemoveGroupActionTest extends BasePermissionWsTest<RemoveGroupActio
       .hasMessage("The 'permission' parameter is missing");
   }
 
-  @Test
-  public void fail_when_group_id_does_not_exist() {
-    loginAsAdmin();
-
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
-        .setParam(PARAM_GROUP_ID, "999999")
-        .execute();
-    })
-      .isInstanceOf(NotFoundException.class)
-      .hasMessage("No group with id '999999'");
-  }
-
   @Test
   public void fail_when_project_uuid_and_project_key_are_provided() {
     ComponentDto project = db.components().insertPrivateProject();
index b3bdb9144edc0a1732d81e46e390be67b15e3722..82fec864e276687a04fe88f7d87f6ee74e5dee5d 100644 (file)
@@ -49,7 +49,6 @@ import static org.sonar.api.security.DefaultGroups.ANYONE;
 import static org.sonar.api.web.UserRole.ADMIN;
 import static org.sonar.api.web.UserRole.CODEVIEWER;
 import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
@@ -82,7 +81,8 @@ public class AddGroupToTemplateActionTest extends BasePermissionWsTest<AddGroupT
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isTrue();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
-      tuple("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."));
+      tuple("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."),
+      tuple("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."));
   }
 
   @Test
@@ -107,19 +107,6 @@ public class AddGroupToTemplateActionTest extends BasePermissionWsTest<AddGroupT
     assertThat(getGroupNamesInTemplateAndPermission(template, CODEVIEWER)).containsExactly(group.getName());
   }
 
-  @Test
-  public void add_with_group_id() {
-    loginAsAdmin();
-
-    newRequest()
-      .setParam(PARAM_TEMPLATE_ID, template.getUuid())
-      .setParam(PARAM_PERMISSION, CODEVIEWER)
-      .setParam(PARAM_GROUP_ID, String.valueOf(group.getUuid()))
-      .execute();
-
-    assertThat(getGroupNamesInTemplateAndPermission(template, CODEVIEWER)).containsExactly(group.getName());
-  }
-
   @Test
   public void does_not_add_a_group_twice() {
     loginAsAdmin();
@@ -169,7 +156,7 @@ public class AddGroupToTemplateActionTest extends BasePermissionWsTest<AddGroupT
     loginAsAdmin();
 
     assertThatThrownBy(() -> newRequest(null, template.getUuid(), CODEVIEWER))
-      .isInstanceOf(BadRequestException.class);
+      .isInstanceOf(IllegalArgumentException.class);
   }
 
   @Test
index ebc87af6478f6ffc4f5f9080b60a212aa50e91c1..d437507c05931d512770b975b60af0617676f353 100644 (file)
@@ -48,7 +48,6 @@ import static org.assertj.core.api.Assertions.tuple;
 import static org.sonar.api.security.DefaultGroups.ANYONE;
 import static org.sonar.api.web.UserRole.CODEVIEWER;
 import static org.sonar.db.permission.GlobalPermission.SCAN;
-import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_ID;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_GROUP_NAME;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_TEMPLATE_ID;
@@ -86,6 +85,7 @@ public class RemoveGroupFromTemplateActionTest extends BasePermissionWsTest<Remo
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isTrue();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
+      tuple("10.0", "Parameter 'groupId' is removed. Use 'groupName' instead."),
       tuple("8.4", "Parameter 'groupId' is deprecated. Format changes from integer to string. Use 'groupName' instead."));
   }
 
@@ -107,17 +107,6 @@ public class RemoveGroupFromTemplateActionTest extends BasePermissionWsTest<Remo
     assertThat(getGroupNamesInTemplateAndPermission(template, PERMISSION)).isEmpty();
   }
 
-  @Test
-  public void remove_group_with_group_id() {
-    newRequest()
-      .setParam(PARAM_TEMPLATE_ID, template.getUuid())
-      .setParam(PARAM_PERMISSION, PERMISSION)
-      .setParam(PARAM_GROUP_ID, String.valueOf(group.getUuid()))
-      .execute();
-
-    assertThat(getGroupNamesInTemplateAndPermission(template, PERMISSION)).isEmpty();
-  }
-
   @Test
   public void remove_group_twice_without_error() {
     newRequest(group.getName(), template.getUuid(), PERMISSION);
@@ -163,7 +152,8 @@ public class RemoveGroupFromTemplateActionTest extends BasePermissionWsTest<Remo
     assertThatThrownBy(() ->  {
       newRequest(null, template.getUuid(), PERMISSION);
     })
-      .isInstanceOf(BadRequestException.class);
+      .isInstanceOf(IllegalArgumentException.class)
+      .hasMessage("The 'groupName' parameter is missing");
   }
 
   @Test
index 99bdbd78f2eb952be475be673ddfd5915f3c62ea..e1f680570042a54635c69c598e7517bcfa6c16a1 100644 (file)
@@ -60,23 +60,10 @@ public class AddUserActionTest {
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isTrue();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
+      tuple("10.0", "Parameter 'id' is removed. Use 'name' instead."),
       tuple("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
   }
 
-  @Test
-  public void add_user_to_group_referenced_by_its_id() {
-    insertDefaultGroup();
-    GroupDto group = db.users().insertGroup();
-    UserDto user = db.users().insertUser();
-    loginAsAdmin();
-
-    newRequest()
-      .setParam("id", group.getUuid())
-      .setParam("login", user.getLogin())
-      .execute();
-
-    assertThat(db.users().selectGroupUuidsOfUser(user)).containsOnly(group.getUuid());
-  }
 
   @Test
   public void add_user_to_group_referenced_by_its_name() {
@@ -103,8 +90,8 @@ public class AddUserActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", admins.getUuid())
-      .setParam("login", user.getLogin())
+      .setParam(PARAM_GROUP_NAME, admins.getName())
+      .setParam(PARAM_LOGIN, user.getLogin())
       .execute();
 
     assertThat(db.users().selectGroupUuidsOfUser(user)).containsOnly(admins.getUuid(), users.getUuid());
@@ -119,8 +106,8 @@ public class AddUserActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", users.getUuid())
-      .setParam("login", user.getLogin())
+      .setParam(PARAM_GROUP_NAME, users.getName())
+      .setParam(PARAM_LOGIN, user.getLogin())
       .execute();
 
     // do not insert duplicated row
@@ -137,8 +124,8 @@ public class AddUserActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", users.getUuid())
-      .setParam("login", user2.getLogin())
+      .setParam(PARAM_GROUP_NAME, users.getName())
+      .setParam(PARAM_LOGIN, user2.getLogin())
       .execute();
 
     assertThat(db.users().selectGroupUuidsOfUser(user1)).containsOnly(users.getUuid());
@@ -153,8 +140,8 @@ public class AddUserActionTest {
     loginAsAdmin();
 
     TestResponse response = newRequest()
-      .setParam("id", group.getUuid())
-      .setParam("login", user.getLogin())
+      .setParam(PARAM_GROUP_NAME, group.getName())
+      .setParam(PARAM_LOGIN, user.getLogin())
       .execute();
 
     assertThat(response.getStatus()).isEqualTo(HTTP_NO_CONTENT);
@@ -164,28 +151,24 @@ public class AddUserActionTest {
   public void fail_if_group_does_not_exist() {
     UserDto user = db.users().insertUser();
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, "unknown")
+      .setParam(PARAM_LOGIN, user.getLogin());
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", "42")
-        .setParam("login", user.getLogin())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(NotFoundException.class)
-      .hasMessage("No group with id '42'");
+      .hasMessage("No group with name 'unknown'");
   }
 
   @Test
   public void fail_if_user_does_not_exist() {
     GroupDto group = db.users().insertGroup("admins");
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, group.getName())
+      .setParam(PARAM_LOGIN, "my-admin");
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("login", "my-admin")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(NotFoundException.class)
       .hasMessage("Could not find a user with login 'my-admin'");
   }
@@ -206,13 +189,11 @@ public class AddUserActionTest {
     UserDto user = db.users().insertUser();
     GroupDto defaultGroup = db.users().insertDefaultGroup();
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, defaultGroup.getName())
+      .setParam(PARAM_LOGIN, user.getLogin());
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", defaultGroup.getUuid())
-        .setParam(PARAM_LOGIN, user.getLogin())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
       .hasMessage("Default group 'sonar-users' cannot be used to perform this action");
   }
@@ -222,21 +203,19 @@ public class AddUserActionTest {
     GroupDto group = db.users().insertGroup();
     UserDto user = db.users().insertUser();
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_LOGIN, user.getLogin())
+      .setParam(PARAM_GROUP_NAME, group.getName());
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam(PARAM_LOGIN, user.getLogin())
-        .setParam(PARAM_GROUP_NAME, group.getName())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalStateException.class)
       .hasMessage("Default group cannot be found");
   }
 
   private void executeRequest(GroupDto groupDto, UserDto userDto) {
     newRequest()
-      .setParam("id", groupDto.getUuid())
-      .setParam("login", userDto.getLogin())
+      .setParam(PARAM_GROUP_NAME, groupDto.getName())
+      .setParam(PARAM_LOGIN, userDto.getLogin())
       .execute();
   }
 
index 3cc903e0f5bff58883b54cbc210e33689893b3e3..c321e4eb55f2136cb0a34135b5ab7f8b862a04c0 100644 (file)
@@ -34,7 +34,6 @@ import org.sonar.db.qualitygate.QualityGateDto;
 import org.sonar.db.qualityprofile.QProfileDto;
 import org.sonar.db.user.GroupDto;
 import org.sonar.db.user.UserDto;
-import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.tester.UserSessionRule;
 import org.sonar.server.usergroups.DefaultGroupFinder;
 import org.sonar.server.ws.TestRequest;
@@ -46,7 +45,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.api.Assertions.tuple;
 import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.db.permission.GlobalPermission.ADMINISTER;
-import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
 import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
 
 public class DeleteActionTest {
@@ -67,6 +65,7 @@ public class DeleteActionTest {
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isTrue();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
+      tuple("10.0", "Parameter 'id' is removed. Use 'name' instead."),
       tuple("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
   }
 
@@ -78,26 +77,12 @@ public class DeleteActionTest {
     loginAsAdmin();
 
     TestResponse response = newRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute();
 
     assertThat(response.getStatus()).isEqualTo(204);
   }
 
-  @Test
-  public void delete_by_id() {
-    addAdmin();
-    insertDefaultGroup();
-    GroupDto group = db.users().insertGroup();
-    loginAsAdmin();
-
-    newRequest()
-      .setParam("id", group.getUuid())
-      .execute();
-
-    assertThat(db.users().selectGroupByUuid(group.getUuid())).isNull();
-  }
-
   @Test
   public void delete_by_name() {
     addAdmin();
@@ -122,7 +107,7 @@ public class DeleteActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute();
 
     assertThat(db.countRowsOfTable("groups_users")).isZero();
@@ -138,7 +123,7 @@ public class DeleteActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute();
 
     assertThat(db.countRowsOfTable("group_roles")).isZero();
@@ -158,7 +143,7 @@ public class DeleteActionTest {
     assertThat(db.countRowsOfTable("perm_templates_groups")).isOne();
 
     newRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute();
 
     assertThat(db.countRowsOfTable("perm_templates_groups")).isZero();
@@ -174,7 +159,7 @@ public class DeleteActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute();
 
     assertThat(db.countRowsOfTable("qprofile_edit_groups")).isZero();
@@ -190,26 +175,12 @@ public class DeleteActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute();
 
     assertThat(db.countRowsOfTable("qgate_group_permissions")).isZero();
   }
 
-  @Test
-  public void fail_if_id_does_not_exist() {
-    addAdmin();
-    loginAsAdmin();
-    int groupId = 123;
-
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", String.valueOf(groupId))
-        .execute();
-    })
-      .isInstanceOf(NotFoundException.class)
-      .hasMessage("No group with id '" + groupId + "'");
-  }
 
   @Test
   public void fail_to_delete_default_group() {
@@ -218,7 +189,7 @@ public class DeleteActionTest {
 
     assertThatThrownBy(() -> {
       newRequest()
-        .setParam("id", defaultGroup.getUuid())
+        .setParam(PARAM_GROUP_NAME, defaultGroup.getName())
         .execute();
     })
       .isInstanceOf(IllegalArgumentException.class)
@@ -231,12 +202,10 @@ public class DeleteActionTest {
     GroupDto group = db.users().insertGroup();
     db.users().insertPermissionOnGroup(group, SYSTEM_ADMIN);
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, group.getName());
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam(PARAM_GROUP_NAME, group.getName())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
       .hasMessage("The last system admin group cannot be deleted");
   }
@@ -276,7 +245,7 @@ public class DeleteActionTest {
 
   private void executeDeleteGroupRequest(GroupDto adminGroup1) {
     newRequest()
-      .setParam(PARAM_GROUP_ID, adminGroup1.getUuid())
+      .setParam(PARAM_GROUP_NAME, adminGroup1.getName())
       .execute();
   }
 
index e009200fc98003ac11c12074cb0e80dfa6e9e2a0..658b74e50aaec0e6072c348ec3f4123962d574aa 100644 (file)
@@ -63,6 +63,7 @@ public class RemoveUserActionTest {
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isTrue();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
+      tuple("10.0", "Parameter 'id' is removed. Use 'name' instead."),
       tuple("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
   }
 
@@ -77,26 +78,8 @@ public class RemoveUserActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", group.getUuid())
-      .setParam("login", user.getLogin())
-      .execute();
-
-    assertThat(db.users().selectGroupUuidsOfUser(user)).isEmpty();
-  }
-
-  @Test
-  public void remove_user_by_group_id() {
-    // keep an administrator
-    insertAnAdministrator();
-    insertDefaultGroup();
-    GroupDto users = db.users().insertGroup("users");
-    UserDto user = db.users().insertUser("my-admin");
-    db.users().insertMember(users, user);
-    loginAsAdmin();
-
-    newRequest()
-      .setParam("id", users.getUuid())
-      .setParam("login", user.getLogin())
+      .setParam(PARAM_GROUP_NAME, group.getName())
+      .setParam(PARAM_LOGIN, user.getLogin())
       .execute();
 
     assertThat(db.users().selectGroupUuidsOfUser(user)).isEmpty();
@@ -133,8 +116,8 @@ public class RemoveUserActionTest {
     loginAsAdmin();
 
     newRequest()
-      .setParam("id", admins.getUuid())
-      .setParam("login", user.getLogin())
+      .setParam(PARAM_GROUP_NAME, admins.getName())
+      .setParam(PARAM_LOGIN, user.getLogin())
       .execute();
 
     assertThat(db.users().selectGroupUuidsOfUser(user)).containsOnly(users.getUuid());
@@ -151,8 +134,8 @@ public class RemoveUserActionTest {
     loginAsAdmin();
 
     TestResponse response = newRequest()
-      .setParam("id", users.getUuid())
-      .setParam("login", user.getLogin())
+      .setParam(PARAM_GROUP_NAME, users.getName())
+      .setParam(PARAM_LOGIN, user.getLogin())
       .execute();
 
     assertThat(response.getStatus()).isEqualTo(HTTP_NO_CONTENT);
@@ -161,14 +144,12 @@ public class RemoveUserActionTest {
   @Test
   public void fail_if_unknown_group() {
     UserDto user = db.users().insertUser("my-admin");
+    loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, "unknown")
+      .setParam(PARAM_LOGIN, user.getLogin());
 
-    assertThatThrownBy(() -> {
-      loginAsAdmin();
-      newRequest()
-        .setParam("id", "42")
-        .setParam("login", user.getLogin())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(NotFoundException.class);
   }
 
@@ -176,14 +157,12 @@ public class RemoveUserActionTest {
   public void fail_if_unknown_user() {
     insertDefaultGroup();
     GroupDto group = db.users().insertGroup("admins");
+    loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, group.getName())
+      .setParam(PARAM_LOGIN, "my-admin");
 
-    assertThatThrownBy(() -> {
-      loginAsAdmin();
-      newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("login", "my-admin")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(NotFoundException.class);
   }
 
@@ -193,13 +172,11 @@ public class RemoveUserActionTest {
     UserDto user = db.users().insertUser();
     db.users().insertMember(group, user);
     userSession.logIn("admin");
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, group.getName())
+      .setParam(PARAM_LOGIN, user.getLogin());
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("login", user.getLogin())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(ForbiddenException.class)
       .hasMessage("Insufficient privileges");
   }
@@ -212,13 +189,11 @@ public class RemoveUserActionTest {
     UserDto adminUser = db.users().insertUser("the-single-admin");
     db.users().insertMember(adminGroup, adminUser);
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, adminGroup.getName())
+      .setParam(PARAM_LOGIN, adminUser.getLogin());
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", adminGroup.getUuid())
-        .setParam("login", adminUser.getLogin())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(BadRequestException.class)
       .hasMessage("The last administrator user cannot be removed");
   }
@@ -229,13 +204,11 @@ public class RemoveUserActionTest {
     GroupDto defaultGroup = db.users().insertDefaultGroup();
     db.users().insertMember(defaultGroup, user);
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, defaultGroup.getName())
+      .setParam(PARAM_LOGIN, user.getLogin());
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", defaultGroup.getUuid())
-        .setParam(PARAM_LOGIN, user.getLogin())
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
       .hasMessage("Default group 'sonar-users' cannot be used to perform this action");
   }
index 049b96987543338f2966f25e873340c26eebdf42..47dc31b26f9e8e5d1e92a4d0b9920500cc936d52 100644 (file)
@@ -38,6 +38,9 @@ import org.sonar.server.ws.WsActionTester;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.sonar.db.permission.GlobalPermission.ADMINISTER;
+import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_CURRENT_NAME;
+import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_DESCRIPTION;
+import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
 import static org.sonar.test.JsonAssert.assertJson;
 
 public class UpdateActionTest {
@@ -69,18 +72,19 @@ public class UpdateActionTest {
     loginAsAdmin();
 
     String result = newRequest()
-      .setParam("id", group.getUuid())
-      .setParam("name", "new-name")
-      .setParam("description", "New Description")
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_NAME, "new-name")
+      .setParam(PARAM_GROUP_DESCRIPTION, "New Description")
       .execute().getInput();
 
-    assertJson(result).isSimilarTo("{" +
-      "  \"group\": {" +
-      "    \"name\": \"new-name\"," +
-      "    \"description\": \"New Description\"," +
-      "    \"membersCount\": 1" +
-      "  }" +
-      "}");
+    assertJson(result).isSimilarTo("""
+      {
+        "group": {
+          "name": "new-name",
+          "description": "New Description",
+          "membersCount": 1
+        }
+      }""");
   }
 
   @Test
@@ -90,37 +94,18 @@ public class UpdateActionTest {
     loginAsAdmin();
 
     String result = newRequest()
-      .setParam("id", group.getUuid())
-      .setParam("name", "new-name")
-      .execute().getInput();
-
-    assertJson(result).isSimilarTo("{" +
-      "  \"group\": {" +
-      "    \"name\": \"new-name\"," +
-      "    \"description\": \"" + group.getDescription() + "\"," +
-      "    \"membersCount\": 0" +
-      "  }" +
-      "}");
-  }
-
-  @Test
-  public void update_only_name_by_name() {
-    insertDefaultGroup();
-    GroupDto group = db.users().insertGroup();
-    loginAsAdmin();
-
-    String result = newRequest()
-      .setParam("currentName", group.getName())
-      .setParam("name", "new-name")
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_NAME, "new-name")
       .execute().getInput();
 
-    assertJson(result).isSimilarTo("{" +
-      "  \"group\": {" +
-      "    \"name\": \"new-name\"," +
-      "    \"description\": \"" + group.getDescription() + "\"," +
-      "    \"membersCount\": 0" +
-      "  }" +
-      "}");
+    assertJson(result).isSimilarTo(String.format("""
+      {
+        "group": {
+          "name": "new-name",
+          "description": "%s",
+          "membersCount": 0
+        }
+      }""", group.getDescription()));
   }
 
   @Test
@@ -130,17 +115,18 @@ public class UpdateActionTest {
     loginAsAdmin();
 
     String result = newRequest()
-      .setParam("id", group.getUuid())
-      .setParam("description", "New Description")
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_DESCRIPTION, "New Description")
       .execute().getInput();
 
-    assertJson(result).isSimilarTo("{" +
-      "  \"group\": {" +
-      "    \"name\": \"" + group.getName() + "\"," +
-      "    \"description\": \"New Description\"," +
-      "    \"membersCount\": 0" +
-      "  }" +
-      "}");
+    assertJson(result).isSimilarTo(String.format("""
+      {
+        "group": {
+          "name": "%s",
+          "description": "New Description",
+          "membersCount": 0
+        }
+      }""", group.getName()));
   }
 
   @Test
@@ -150,8 +136,8 @@ public class UpdateActionTest {
     loginAsAdmin();
 
     String result = newRequest()
-      .setParam("id", group.getUuid())
-      .setParam("name", "new-name")
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_NAME, "new-name")
       .execute().getInput();
 
     assertJson(result).isSimilarTo("{" +
@@ -172,9 +158,9 @@ public class UpdateActionTest {
 
     assertThatThrownBy(() -> {
       newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("name", "some-product-bu")
-        .setParam("description", "Business Unit for Some Awesome Product")
+        .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+        .setParam(PARAM_GROUP_NAME, "some-product-bu")
+        .setParam(PARAM_GROUP_DESCRIPTION, "Business Unit for Some Awesome Product")
         .execute();
     })
       .isInstanceOf(ForbiddenException.class);
@@ -185,42 +171,24 @@ public class UpdateActionTest {
     insertDefaultGroup();
     GroupDto group = db.users().insertGroup();
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_NAME, "");
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("name", "")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
       .hasMessage("Group name cannot be empty");
   }
 
   @Test
-  public void fail_if_no_id_and_no_currentname_are_provided() {
+  public void fail_if_no_currentname_are_provided() {
     insertDefaultGroup();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_NAME, "newname");
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("name", "newname")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
-      .hasMessage("Need to specify one and only one of 'id' or 'currentName'");
-  }
-
-  @Test
-  public void fail_if_both_id_and_currentname_are_provided() {
-    insertDefaultGroup();
-
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", "id")
-        .setParam("currentName", "name")
-        .execute();
-    })
-      .isInstanceOf(IllegalArgumentException.class)
-      .hasMessage("Need to specify one and only one of 'id' or 'currentName'");
+      .hasMessage("The 'currentName' parameter is missing");
   }
 
   @Test
@@ -228,13 +196,11 @@ public class UpdateActionTest {
     insertDefaultGroup();
     GroupDto group = db.users().insertGroup();
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_NAME, "AnYoNe");
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("name", "AnYoNe")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
       .hasMessage("Anyone group cannot be used");
   }
@@ -246,39 +212,22 @@ public class UpdateActionTest {
     String newName = "new-name";
     db.users().insertGroup(newName);
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_CURRENT_NAME, groupToBeRenamed.getName())
+      .setParam(PARAM_GROUP_NAME, newName);
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", groupToBeRenamed.getUuid())
-        .setParam("name", newName)
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(ServerException.class)
       .hasMessage("Group 'new-name' already exists");
   }
 
-  @Test
-  public void fail_if_unknown_group_id() {
-    loginAsAdmin();
-
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", "42")
-        .execute();
-    })
-      .isInstanceOf(NotFoundException.class)
-      .hasMessage("Could not find a user group with id '42'.");
-  }
-
   @Test
   public void fail_if_unknown_group_name() {
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_CURRENT_NAME, "42");
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("currentName", "42")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(NotFoundException.class)
       .hasMessage("Could not find a user group with name '42'.");
   }
@@ -287,13 +236,11 @@ public class UpdateActionTest {
   public void fail_to_update_default_group_name() {
     GroupDto group = db.users().insertDefaultGroup();
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_NAME, "new name");
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("name", "new name")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
       .hasMessage("Default group 'sonar-users' cannot be used to perform this action");
   }
@@ -302,13 +249,11 @@ public class UpdateActionTest {
   public void fail_to_update_default_group_description() {
     GroupDto group = db.users().insertDefaultGroup();
     loginAsAdmin();
+    TestRequest request = newRequest()
+      .setParam(PARAM_GROUP_CURRENT_NAME, group.getName())
+      .setParam(PARAM_GROUP_DESCRIPTION, "new description");
 
-    assertThatThrownBy(() -> {
-      newRequest()
-        .setParam("id", group.getUuid())
-        .setParam("description", "new description")
-        .execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(IllegalArgumentException.class)
       .hasMessage("Default group 'sonar-users' cannot be used to perform this action");
   }
index 3557102ea51ed3c9569b22271e197ab93ce17de0..aabd7b1818997d844187a6362b584892da632866 100644 (file)
@@ -41,7 +41,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.assertj.core.api.Assertions.tuple;
 import static org.sonar.db.permission.GlobalPermission.ADMINISTER;
 import static org.sonar.db.user.UserTesting.newUserDto;
-import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_ID;
+import static org.sonar.server.usergroups.ws.GroupWsSupport.PARAM_GROUP_NAME;
 import static org.sonar.test.JsonAssert.assertJson;
 
 public class UsersActionTest {
@@ -61,6 +61,7 @@ public class UsersActionTest {
     assertThat(wsDef.since()).isEqualTo("5.2");
     assertThat(wsDef.isPost()).isFalse();
     assertThat(wsDef.changelog()).extracting(Change::getVersion, Change::getDescription).containsOnly(
+      tuple("10.0", "Parameter 'id' is removed. Use 'name' instead."),
       tuple("9.8", "response fields 'total', 's', 'ps' have been deprecated, please use 'paging' object instead."),
       tuple("9.8", "The field 'paging' has been added to the response."),
       tuple("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."));
@@ -69,26 +70,24 @@ public class UsersActionTest {
   @Test
   public void fail_if_unknown_group_uuid() {
     loginAsAdmin();
+    TestRequest request = newUsersRequest()
+      .setParam(PARAM_GROUP_NAME, "unknown")
+      .setParam("login", "john");
 
-    assertThatThrownBy(() -> {
-      newUsersRequest()
-        .setParam("id", "42")
-        .setParam("login", "john").execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(NotFoundException.class)
-      .hasMessage("No group with id '42'");
+      .hasMessage("No group with name 'unknown'");
   }
 
   @Test
   public void fail_if_not_admin() {
     GroupDto group = db.users().insertGroup();
     userSession.logIn("not-admin");
+    TestRequest request = newUsersRequest()
+      .setParam(PARAM_GROUP_NAME, group.getName())
+      .setParam("login", "john");
 
-    assertThatThrownBy(() -> {
-      newUsersRequest()
-        .setParam("id", group.getUuid())
-        .setParam("login", "john").execute();
-    })
+    assertThatThrownBy(request::execute)
       .isInstanceOf(ForbiddenException.class);
   }
 
@@ -99,42 +98,20 @@ public class UsersActionTest {
 
     String result = newUsersRequest()
       .setParam("login", "john")
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute()
       .getInput();
 
-    assertJson(result).isSimilarTo("{\n" +
-      "  \"p\": 1,\n" +
-      "  \"total\": 0,\n" +
-      "  \"paging\": {\n" +
-      "    \"pageIndex\": 1,\n" +
-      "    \"pageSize\": 25,\n" +
-      "    \"total\": 0\n" +
-      "  }," +
-      "  \"users\": []\n" +
-      "}");
-  }
-
-  @Test
-  public void return_members_by_group_uuid() {
-    GroupDto group = db.users().insertGroup();
-    UserDto lovelace = db.users().insertUser(newUserDto().setLogin("ada.login").setName("Ada Lovelace"));
-    UserDto hopper = db.users().insertUser(newUserDto().setLogin("grace").setName("Grace Hopper"));
-    db.users().insertMember(group, lovelace);
-    loginAsAdmin();
-
-    String result = newUsersRequest()
-      .setParam("id", group.getUuid())
-      .setParam(Param.SELECTED, SelectionMode.ALL.value())
-      .execute()
-      .getInput();
-
-    assertJson(result).isSimilarTo("{\n" +
-      "  \"users\": [\n" +
-      "    {\"login\": \"ada.login\", \"name\": \"Ada Lovelace\", \"selected\": true},\n" +
-      "    {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
-      "  ]\n" +
-      "}\n");
+    assertJson(result).isSimilarTo("""
+      {
+        "p": 1,
+        "total": 0,
+        "paging": {
+          "pageIndex": 1,
+          "pageSize": 25,
+          "total": 0
+        },  "users": []
+      }""");
   }
 
   @Test
@@ -146,17 +123,19 @@ public class UsersActionTest {
     loginAsAdmin();
 
     String result = newUsersRequest()
-      .setParam("name", group.getName())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(Param.SELECTED, SelectionMode.ALL.value())
       .execute()
       .getInput();
 
-    assertJson(result).isSimilarTo("{\n" +
-      "  \"users\": [\n" +
-      "    {\"login\": \"ada.login\", \"name\": \"Ada Lovelace\", \"selected\": true},\n" +
-      "    {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
-      "  ]\n" +
-      "}\n");
+    assertJson(result).isSimilarTo("""
+      {
+        "users": [
+          {"login": "ada.login", "name": "Ada Lovelace", "selected": true},
+          {"login": "grace", "name": "Grace Hopper", "selected": false}
+        ]
+      }
+      """);
   }
 
   @Test
@@ -168,7 +147,7 @@ public class UsersActionTest {
     db.users().insertMember(group, graceHopper);
     loginAsAdmin();
 
-    String response = newUsersRequest().setParam(PARAM_GROUP_ID, group.getUuid()).execute().getInput();
+    String response = newUsersRequest().setParam(PARAM_GROUP_NAME, group.getName()).execute().getInput();
 
     assertThat(response).contains("Ada Lovelace", "Grace Hopper");
   }
@@ -182,23 +161,25 @@ public class UsersActionTest {
     loginAsAdmin();
 
     assertJson(newUsersRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"users\": [\n" +
-        "    {\"login\": \"ada\", \"name\": \"Ada Lovelace\", \"selected\": true}\n" +
-        "  ]\n" +
-        "}");
+      .getInput()).isSimilarTo("""
+      {
+        "users": [
+          {"login": "ada", "name": "Ada Lovelace", "selected": true}
+        ]
+      }""");
 
     assertJson(newUsersRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(Param.SELECTED, SelectionMode.SELECTED.value())
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"users\": [\n" +
-        "    {\"login\": \"ada\", \"name\": \"Ada Lovelace\", \"selected\": true}\n" +
-        "  ]\n" +
-        "}");
+      .getInput()).isSimilarTo("""
+      {
+        "users": [
+          {"login": "ada", "name": "Ada Lovelace", "selected": true}
+        ]
+      }""");
   }
 
   @Test
@@ -210,16 +191,17 @@ public class UsersActionTest {
     loginAsAdmin();
 
     String result = newUsersRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(Param.SELECTED, SelectionMode.DESELECTED.value())
       .execute()
       .getInput();
 
-    assertJson(result).isSimilarTo("{\n" +
-      "  \"users\": [\n" +
-      "    {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
-      "  ]\n" +
-      "}");
+    assertJson(result).isSimilarTo("""
+      {
+        "users": [
+          {"login": "grace", "name": "Grace Hopper", "selected": false}
+        ]
+      }""");
   }
 
   @Test
@@ -231,43 +213,43 @@ public class UsersActionTest {
     loginAsAdmin();
 
     assertJson(newUsersRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam("ps", "1")
       .setParam(Param.SELECTED, SelectionMode.ALL.value())
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"p\": 1,\n" +
-        "  \"ps\": 1,\n" +
-        "  \"total\": 2,\n" +
-        "  \"paging\": {\n" +
-        "    \"pageIndex\": 1,\n" +
-        "    \"pageSize\": 1,\n" +
-        "    \"total\": 2\n" +
-        "  }," +
-        "  \"users\": [\n" +
-        "    {\"login\": \"ada\", \"name\": \"Ada Lovelace\", \"selected\": true}\n" +
-        "  ]\n" +
-        "}");
+      .getInput()).isSimilarTo("""
+      {
+        "p": 1,
+        "ps": 1,
+        "total": 2,
+        "paging": {
+          "pageIndex": 1,
+          "pageSize": 1,
+          "total": 2
+        },  "users": [
+          {"login": "ada", "name": "Ada Lovelace", "selected": true}
+        ]
+      }""");
 
     assertJson(newUsersRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam("ps", "1")
       .setParam("p", "2")
       .setParam(Param.SELECTED, SelectionMode.ALL.value())
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"p\": 2,\n" +
-        "  \"ps\": 1,\n" +
-        "  \"total\": 2,\n" +
-        "  \"paging\": {\n" +
-        "    \"pageIndex\": 2,\n" +
-        "    \"pageSize\": 1,\n" +
-        "    \"total\": 2\n" +
-        "  }," +
-        "  \"users\": [\n" +
-        "    {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
-        "  ]\n" +
-        "}");
+      .getInput()).isSimilarTo("""
+      {
+        "p": 2,
+        "ps": 1,
+        "total": 2,
+        "paging": {
+          "pageIndex": 2,
+          "pageSize": 1,
+          "total": 2
+        },  "users": [
+          {"login": "grace", "name": "Grace Hopper", "selected": false}
+        ]
+      }""");
   }
 
   @Test
@@ -279,55 +261,63 @@ public class UsersActionTest {
     loginAsAdmin();
 
     assertJson(newUsersRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam("q", "ace")
       .setParam(Param.SELECTED, SelectionMode.ALL.value())
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"users\": [\n" +
-        "    {\"login\": \"ada.login\", \"name\": \"Ada Lovelace\", \"selected\": true},\n" +
-        "    {\"login\": \"grace\", \"name\": \"Grace Hopper\", \"selected\": false}\n" +
-        "  ]\n" +
-        "}\n");
-
-    assertJson(newUsersRequest().setParam("id", group.getUuid())
+      .getInput()).isSimilarTo("""
+      {
+        "users": [
+          {"login": "ada.login", "name": "Ada Lovelace", "selected": true},
+          {"login": "grace", "name": "Grace Hopper", "selected": false}
+        ]
+      }
+      """);
+
+    assertJson(newUsersRequest().setParam(PARAM_GROUP_NAME, group.getName())
       .setParam("q", ".logi")
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"users\": [\n" +
-        "    {\n" +
-        "      \"login\": \"ada.login\",\n" +
-        "      \"name\": \"Ada Lovelace\",\n" +
-        "      \"selected\": true\n" +
-        "    }\n" +
-        "  ]\n" +
-        "}\n");
-
-    assertJson(newUsersRequest().setParam("id", group.getUuid())
+      .getInput()).isSimilarTo("""
+      {
+        "users": [
+          {
+            "login": "ada.login",
+            "name": "Ada Lovelace",
+            "selected": true
+          }
+        ]
+      }
+      """);
+
+    assertJson(newUsersRequest().setParam(PARAM_GROUP_NAME, group.getName())
       .setParam("q", "OvE")
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"users\": [\n" +
-        "    {\n" +
-        "      \"login\": \"ada.login\",\n" +
-        "      \"name\": \"Ada Lovelace\",\n" +
-        "      \"selected\": true\n" +
-        "    }\n" +
-        "  ]\n" +
-        "}\n");
-
-    assertJson(newUsersRequest().setParam("id", group.getUuid())
+      .getInput()).isSimilarTo("""
+      {
+        "users": [
+          {
+            "login": "ada.login",
+            "name": "Ada Lovelace",
+            "selected": true
+          }
+        ]
+      }
+      """);
+
+    assertJson(newUsersRequest().setParam(PARAM_GROUP_NAME, group.getName())
       .setParam("q", "mail")
       .execute()
-      .getInput()).isSimilarTo("{\n" +
-        "  \"users\": [\n" +
-        "    {\n" +
-        "      \"login\": \"ada.login\",\n" +
-        "      \"name\": \"Ada Lovelace\",\n" +
-        "      \"selected\": true\n" +
-        "    }\n" +
-        "  ]\n" +
-        "}\n");
+      .getInput()).isSimilarTo("""
+      {
+        "users": [
+          {
+            "login": "ada.login",
+            "name": "Ada Lovelace",
+            "selected": true
+          }
+        ]
+      }
+      """);
   }
 
   @Test
@@ -340,7 +330,7 @@ public class UsersActionTest {
     loginAsAdmin();
 
     String result = newUsersRequest()
-      .setParam("id", group.getUuid())
+      .setParam(PARAM_GROUP_NAME, group.getName())
       .setParam(Param.SELECTED, SelectionMode.ALL.value())
       .execute()
       .getInput();
index 6187dbeff8c797285114211cd22c22d4252189d4..52ca02cdbfa1bced8d75b8afc9306bda1436f5c8 100644 (file)
@@ -24,7 +24,7 @@ public class PermissionsWsParameters {
 
   public static final String PARAM_PERMISSION = "permission";
   public static final String PARAM_GROUP_NAME = "groupName";
-  public static final String PARAM_GROUP_ID = "groupId";
+
   public static final String PARAM_PROJECT_ID = "projectId";
   public static final String PARAM_PROJECT_KEY = "projectKey";
   public static final String PARAM_USER_LOGIN = "login";
index 56879fe73fe36194783b834dbd512fd0c82677f8..233a7b388be1640a5cfeecff36361d13e1a19187 100644 (file)
@@ -30,24 +30,11 @@ import javax.annotation.Generated;
 @Generated("sonar-ws-generator")
 public class AddGroupRequest {
 
-  private String groupId;
   private String groupName;
   private String permission;
   private String projectId;
   private String projectKey;
 
-  /**
-   * Example value: "42"
-   */
-  public AddGroupRequest setGroupId(String groupId) {
-    this.groupId = groupId;
-    return this;
-  }
-
-  public String getGroupId() {
-    return groupId;
-  }
-
   /**
    * Example value: "sonar-administrators"
    */
index b74e6957579d899b6e19c627ef6d9ea3a1fd414c..2529a8be87cdaf3bb1a0662dfe7293bfdb865d02 100644 (file)
@@ -30,24 +30,11 @@ import javax.annotation.Generated;
 @Generated("sonar-ws-generator")
 public class AddGroupToTemplateRequest {
 
-  private String groupId;
   private String groupName;
   private String permission;
   private String templateId;
   private String templateName;
 
-  /**
-   * Example value: "42"
-   */
-  public AddGroupToTemplateRequest setGroupId(String groupId) {
-    this.groupId = groupId;
-    return this;
-  }
-
-  public String getGroupId() {
-    return groupId;
-  }
-
   /**
    * Example value: "sonar-administrators"
    */
index c7d6c708f4808ddce4f1d10e79cc0e374eef1fbc..6191f1650fbfbb175f53a06c1d4cbc0fa360a57d 100644 (file)
@@ -53,7 +53,6 @@ public class PermissionsService extends BaseService {
   public void addGroup(AddGroupRequest request) {
     call(
       new PostRequest(path("add_group"))
-        .setParam("groupId", request.getGroupId())
         .setParam("groupName", request.getGroupName())
         .setParam("permission", request.getPermission())
         .setParam("projectId", request.getProjectId())
@@ -72,7 +71,6 @@ public class PermissionsService extends BaseService {
   public void addGroupToTemplate(AddGroupToTemplateRequest request) {
     call(
       new PostRequest(path("add_group_to_template"))
-        .setParam("groupId", request.getGroupId())
         .setParam("groupName", request.getGroupName())
         .setParam("permission", request.getPermission())
         .setParam("templateId", request.getTemplateId())
@@ -235,7 +233,6 @@ public class PermissionsService extends BaseService {
   public void removeGroup(RemoveGroupRequest request) {
     call(
       new PostRequest(path("remove_group"))
-        .setParam("groupId", request.getGroupId())
         .setParam("groupName", request.getGroupName())
         .setParam("permission", request.getPermission())
         .setParam("projectId", request.getProjectId())
@@ -254,7 +251,6 @@ public class PermissionsService extends BaseService {
   public void removeGroupFromTemplate(RemoveGroupFromTemplateRequest request) {
     call(
       new PostRequest(path("remove_group_from_template"))
-        .setParam("groupId", request.getGroupId())
         .setParam("groupName", request.getGroupName())
         .setParam("permission", request.getPermission())
         .setParam("templateId", request.getTemplateId())
index f9ee5a10ef59fa758e3361b50fe5bede7cc63ef1..94acee72b1c12e75507da6bc045be4534436d6f9 100644 (file)
@@ -29,25 +29,11 @@ import javax.annotation.Generated;
  */
 @Generated("sonar-ws-generator")
 public class RemoveGroupFromTemplateRequest {
-
-  private String groupId;
   private String groupName;
   private String permission;
   private String templateId;
   private String templateName;
 
-  /**
-   * Example value: "42"
-   */
-  public RemoveGroupFromTemplateRequest setGroupId(String groupId) {
-    this.groupId = groupId;
-    return this;
-  }
-
-  public String getGroupId() {
-    return groupId;
-  }
-
   /**
    * Example value: "sonar-administrators"
    */
index fb2f61b5255bb5e9fa12ea9968fd1ecd35d824c1..388267c3c9937542518802200edb8f30eeaff8d7 100644 (file)
@@ -30,24 +30,11 @@ import javax.annotation.Generated;
 @Generated("sonar-ws-generator")
 public class RemoveGroupRequest {
 
-  private String groupId;
   private String groupName;
   private String permission;
   private String projectId;
   private String projectKey;
 
-  /**
-   * Example value: "42"
-   */
-  public RemoveGroupRequest setGroupId(String groupId) {
-    this.groupId = groupId;
-    return this;
-  }
-
-  public String getGroupId() {
-    return groupId;
-  }
-
   /**
    * Example value: "sonar-administrators"
    */
index 905ef950605a6fb759d0326ad3393f2cb62ae230..7e61bb369a1a184f3a667c70340d9322eb73263d 100644 (file)
@@ -30,22 +30,9 @@ import javax.annotation.Generated;
 @Generated("sonar-ws-generator")
 public class AddUserRequest {
 
-  private String id;
   private String login;
   private String name;
 
-  /**
-   * Example value: "42"
-   */
-  public AddUserRequest setId(String id) {
-    this.id = id;
-    return this;
-  }
-
-  public String getId() {
-    return id;
-  }
-
   /**
    * Example value: "g.hopper"
    */
index 09bbb5e903222e4f01df42c304412b9fe226c496..ac8a05ed62661d737a473edbf660a21caf2581dc 100644 (file)
@@ -30,21 +30,8 @@ import javax.annotation.Generated;
 @Generated("sonar-ws-generator")
 public class DeleteRequest {
 
-  private String id;
   private String name;
 
-  /**
-   * Example value: "42"
-   */
-  public DeleteRequest setId(String id) {
-    this.id = id;
-    return this;
-  }
-
-  public String getId() {
-    return id;
-  }
-
   /**
    * Example value: "sonar-administrators"
    */
index a9abb77f0ee17ff083c163dd36c9e4406461d131..80292c4919a1a841ea0fd94d05d5cd27cd2b2eed 100644 (file)
@@ -30,22 +30,9 @@ import javax.annotation.Generated;
 @Generated("sonar-ws-generator")
 public class RemoveUserRequest {
 
-  private String id;
   private String login;
   private String name;
 
-  /**
-   * Example value: "42"
-   */
-  public RemoveUserRequest setId(String id) {
-    this.id = id;
-    return this;
-  }
-
-  public String getId() {
-    return id;
-  }
-
   /**
    * Example value: "g.hopper"
    */
index 69ec572fb182837fd43988eb1b0c04755ead5a8c..6b5eca0c82daa57e986e1d7043c3754b651351bd 100644 (file)
@@ -31,7 +31,6 @@ import javax.annotation.Generated;
 public class UpdateRequest {
 
   private String description;
-  private String id;
   private String name;
 
   /**
@@ -46,19 +45,6 @@ public class UpdateRequest {
     return description;
   }
 
-  /**
-   * This is a mandatory parameter.
-   * Example value: "42"
-   */
-  public UpdateRequest setId(String id) {
-    this.id = id;
-    return this;
-  }
-
-  public String getId() {
-    return id;
-  }
-
   /**
    * Example value: "my-group"
    */
index 33d478d35667dc1ba9a79ee82cdefd06fa630571..e36367e5fd0783f393b3aed7df29a2929b5dd205 100644 (file)
@@ -50,7 +50,6 @@ public class UserGroupsService extends BaseService {
   public void addUser(AddUserRequest request) {
     call(
       new PostRequest(path("add_user"))
-        .setParam("id", request.getId())
         .setParam("login", request.getLogin())
         .setParam("name", request.getName())
         .setMediaType(MediaTypes.JSON)).content();
@@ -81,7 +80,6 @@ public class UserGroupsService extends BaseService {
   public void delete(DeleteRequest request) {
     call(
       new PostRequest(path("delete"))
-        .setParam("id", request.getId())
         .setParam("name", request.getName())
         .setMediaType(MediaTypes.JSON)).content();
   }
@@ -96,7 +94,6 @@ public class UserGroupsService extends BaseService {
   public void removeUser(RemoveUserRequest request) {
     call(
       new PostRequest(path("remove_user"))
-        .setParam("id", request.getId())
         .setParam("login", request.getLogin())
         .setParam("name", request.getName())
         .setMediaType(MediaTypes.JSON)).content();
@@ -130,7 +127,6 @@ public class UserGroupsService extends BaseService {
     call(
       new PostRequest(path("update"))
         .setParam("description", request.getDescription())
-        .setParam("id", request.getId())
         .setParam("name", request.getName()),
       UpdateWsResponse.parser());
   }
@@ -145,7 +141,6 @@ public class UserGroupsService extends BaseService {
   public String users(UsersRequest request) {
     return call(
       new GetRequest(path("users"))
-        .setParam("id", request.getId())
         .setParam("name", request.getName())
         .setParam("p", request.getP())
         .setParam("ps", request.getPs())
index 9fbaa8b534427ae00626bf2114239611979272ef..2b710099787187d77561f9be134a98e552dc3974 100644 (file)
@@ -30,25 +30,12 @@ import javax.annotation.Generated;
 @Generated("sonar-ws-generator")
 public class UsersRequest {
 
-  private String id;
   private String name;
   private String p;
   private String ps;
   private String q;
   private String selected;
 
-  /**
-   * Example value: "42"
-   */
-  public UsersRequest setId(String id) {
-    this.id = id;
-    return this;
-  }
-
-  public String getId() {
-    return id;
-  }
-
   /**
    * Example value: "sonar-administrators"
    */