From e3af60e9b9045ac532b0cf977504ed90725248c1 Mon Sep 17 00:00:00 2001
From: =?utf8?q?L=C3=A9o=20Geoffroy?=
<99647462+leo-geoffroy-sonarsource@users.noreply.github.com>
Date: Mon, 30 Jan 2023 14:01:01 +0100
Subject: [PATCH] SONAR-17705 Remove 'groupId' and 'id' deprecated param from
permission and usergroup endpoints
---
.../server/permission/ws/AddGroupAction.java | 7 +-
.../permission/ws/PermissionWsSupport.java | 8 +-
.../permission/ws/RemoveGroupAction.java | 5 +-
.../server/permission/ws/WsParameters.java | 9 +-
.../ws/template/AddGroupToTemplateAction.java | 5 +-
.../RemoveGroupFromTemplateAction.java | 5 +-
.../server/usergroups/ws/AddUserAction.java | 6 +-
.../server/usergroups/ws/DeleteAction.java | 7 +-
.../server/usergroups/ws/GroupWsSupport.java | 44 +--
.../usergroups/ws/RemoveUserAction.java | 7 +-
.../server/usergroups/ws/UpdateAction.java | 30 +-
.../server/usergroups/ws/UsersAction.java | 1 +
.../permission/ws/AddGroupActionTest.java | 22 +-
.../permission/ws/RemoveGroupActionTest.java | 34 +--
.../AddGroupToTemplateActionTest.java | 19 +-
.../RemoveGroupFromTemplateActionTest.java | 16 +-
.../usergroups/ws/AddUserActionTest.java | 77 ++---
.../usergroups/ws/DeleteActionTest.java | 55 +---
.../usergroups/ws/RemoveUserActionTest.java | 85 ++----
.../usergroups/ws/UpdateActionTest.java | 189 +++++-------
.../server/usergroups/ws/UsersActionTest.java | 270 +++++++++---------
.../permission/PermissionsWsParameters.java | 2 +-
.../client/permissions/AddGroupRequest.java | 13 -
.../AddGroupToTemplateRequest.java | 13 -
.../permissions/PermissionsService.java | 4 -
.../RemoveGroupFromTemplateRequest.java | 14 -
.../permissions/RemoveGroupRequest.java | 13 -
.../ws/client/usergroups/AddUserRequest.java | 13 -
.../ws/client/usergroups/DeleteRequest.java | 13 -
.../client/usergroups/RemoveUserRequest.java | 13 -
.../ws/client/usergroups/UpdateRequest.java | 14 -
.../client/usergroups/UserGroupsService.java | 5 -
.../ws/client/usergroups/UsersRequest.java | 13 -
33 files changed, 323 insertions(+), 708 deletions(-)
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java
index 5e6a7e45698..845c5954d18 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java
@@ -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.
" +
"This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.
" +
- "The group name or group id must be provided.
" +
+ "The group name must be provided.
" +
"Requires one of the following permissions:" +
"
" +
"- 'Administer System'
" +
@@ -73,13 +72,13 @@ public class AddGroupAction implements PermissionsWsAction {
"
")
.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);
}
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/PermissionWsSupport.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/PermissionWsSupport.java
index 56ad588c354..e740e7410ce 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/PermissionWsSupport.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/PermissionWsSupport.java
@@ -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) {
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java
index 2a9ab686ab9..d150cfc5d4b 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java
@@ -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.
" +
"This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.
" +
- "The group id or group name must be provided, not both.
" +
+ "The group name must be provided.
" +
"Requires one of the following permissions:" +
"" +
"- 'Administer System'
" +
@@ -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);
}
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/WsParameters.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/WsParameters.java
index c0bdc0dc432..21040aadc7a 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/WsParameters.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/WsParameters.java
@@ -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")
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java
index a62ce8019c2..491f9fcde3f 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddGroupToTemplateAction.java
@@ -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.
" +
- "The group id or group name must be provided.
" +
+ "The group name must be provided.
" +
"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);
}
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java
index c1359a28aa4..396c198c3ff 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateAction.java
@@ -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.
" +
- "The group id or group name must be provided.
" +
+ "The group name must be provided.
" +
"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);
}
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java
index 85841809651..51ddfd119bc 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/AddUserAction.java
@@ -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.
" +
- "'%s' or '%s' must be provided.
" +
- "Requires the following permission: 'Administer System'.", PARAM_GROUP_ID, PARAM_GROUP_NAME))
+ "'%s' must be provided.
" +
+ "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);
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
index d072ae02460..c726a7dd37e 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java
@@ -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.
" +
- "'%s' or '%s' must be provided.
" +
- "Requires the following permission: 'Administer System'.",
- PARAM_GROUP_ID, PARAM_GROUP_NAME))
+ "'%s' must be provided.
" +
+ "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);
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
index af328ed8d4e..b330843613e 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/GroupWsSupport.java
@@ -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 group = dbClient.groupDao().selectByName(dbSession, ref.getName());
- checkFoundWithOptional(group, "No group with name '%s'", ref.getName());
+ Optional 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 group = dbClient.groupDao().selectByName(dbSession, ref.getName());
- checkFoundWithOptional(group, "No group with name '%s'", ref.getName());
+ Optional 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");
}
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java
index 32e5ddc9788..a7ef68faaa8 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/RemoveUserAction.java
@@ -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.
" +
- "'%s' or '%s' must be provided.
" +
- "Requires the following permission: 'Administer System'.",
- PARAM_GROUP_ID, PARAM_GROUP_NAME))
+ "'%s' must be provided.
" +
+ "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);
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
index 095863c11cb..4ecba2eca7f 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java
@@ -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);
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java
index 8f8ee102ad2..29aa783f329 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/usergroups/ws/UsersAction.java
@@ -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."));
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java
index d7fea01e926..968fd1c956a 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java
@@ -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 {
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 {
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 {
}
@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 {
.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
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
index fc3ac3bafa2..3212c34a75a 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
@@ -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 {
- 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();
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java
index b3bdb9144ed..82fec864e27 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java
@@ -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 newRequest(null, template.getUuid(), CODEVIEWER))
- .isInstanceOf(BadRequestException.class);
+ .isInstanceOf(IllegalArgumentException.class);
}
@Test
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java
index ebc87af6478..d437507c059 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java
@@ -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 {
newRequest(null, template.getUuid(), PERMISSION);
})
- .isInstanceOf(BadRequestException.class);
+ .isInstanceOf(IllegalArgumentException.class)
+ .hasMessage("The 'groupName' parameter is missing");
}
@Test
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/AddUserActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/AddUserActionTest.java
index 99bdbd78f2e..e1f68057004 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/AddUserActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/AddUserActionTest.java
@@ -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();
}
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
index 3cc903e0f5b..c321e4eb55f 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java
@@ -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();
}
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/RemoveUserActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/RemoveUserActionTest.java
index e009200fc98..658b74e50aa 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/RemoveUserActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/RemoveUserActionTest.java
@@ -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");
}
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
index 049b9698754..47dc31b26f9 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java
@@ -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");
}
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UsersActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UsersActionTest.java
index 3557102ea51..aabd7b18189 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UsersActionTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/usergroups/ws/UsersActionTest.java
@@ -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();
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsParameters.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsParameters.java
index 6187dbeff8c..52ca02cdbfa 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsParameters.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permission/PermissionsWsParameters.java
@@ -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";
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupRequest.java
index 56879fe73fe..233a7b388be 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupToTemplateRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupToTemplateRequest.java
index b74e6957579..2529a8be87c 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupToTemplateRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/AddGroupToTemplateRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/PermissionsService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/PermissionsService.java
index c7d6c708f48..6191f1650fb 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/PermissionsService.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/PermissionsService.java
@@ -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())
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupFromTemplateRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupFromTemplateRequest.java
index f9ee5a10ef5..94acee72b1c 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupFromTemplateRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupFromTemplateRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupRequest.java
index fb2f61b5255..388267c3c99 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/permissions/RemoveGroupRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/AddUserRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/AddUserRequest.java
index 905ef950605..7e61bb369a1 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/AddUserRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/AddUserRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/DeleteRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/DeleteRequest.java
index 09bbb5e9032..ac8a05ed626 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/DeleteRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/DeleteRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/RemoveUserRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/RemoveUserRequest.java
index a9abb77f0ee..80292c4919a 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/RemoveUserRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/RemoveUserRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UpdateRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UpdateRequest.java
index 69ec572fb18..6b5eca0c82d 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UpdateRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UpdateRequest.java
@@ -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"
*/
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UserGroupsService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UserGroupsService.java
index 33d478d3566..e36367e5fd0 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UserGroupsService.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UserGroupsService.java
@@ -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())
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UsersRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UsersRequest.java
index 9fbaa8b5344..2b710099787 100644
--- a/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UsersRequest.java
+++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/usergroups/UsersRequest.java
@@ -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"
*/
--
2.39.5