From: Teryk Bellahsene Date: Mon, 5 Oct 2015 15:20:56 +0000 (+0200) Subject: SONAR-6474 WS usergroups/delete handles group name X-Git-Tag: 5.2-RC1~61 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5b439efe9f8560c2377a1d1656394c0cbd63f730;p=sonarqube.git SONAR-6474 WS usergroups/delete handles group name --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java index 4958fa1c812..187ba67d49a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java @@ -30,6 +30,7 @@ import org.sonar.db.permission.PermissionTemplateDto; import org.sonar.db.user.GroupDto; import org.sonar.db.user.UserDto; import org.sonar.server.component.ComponentFinder; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.usergroups.ws.WsGroupRef; import static java.lang.String.format; @@ -40,11 +41,13 @@ import static org.sonar.server.ws.WsUtils.checkFound; public class PermissionDependenciesFinder { private final DbClient dbClient; private final ComponentFinder componentFinder; + private final UserGroupFinder userGroupFinder; private final ResourceTypes resourceTypes; - public PermissionDependenciesFinder(DbClient dbClient, ComponentFinder componentFinder, ResourceTypes resourceTypes) { + public PermissionDependenciesFinder(DbClient dbClient, ComponentFinder componentFinder, UserGroupFinder userGroupFinder, ResourceTypes resourceTypes) { this.dbClient = dbClient; this.componentFinder = componentFinder; + this.userGroupFinder = userGroupFinder; this.resourceTypes = resourceTypes; } @@ -76,26 +79,11 @@ public class PermissionDependenciesFinder { */ @CheckForNull public GroupDto getGroup(DbSession dbSession, WsGroupRef group) { - Long groupId = group.id(); - String groupName = group.name(); - - if (isAnyone(groupName)) { + if (isAnyone(group.name())) { return null; } - GroupDto groupDto = null; - - if (groupId != null) { - groupDto = checkFound(dbClient.groupDao().selectById(dbSession, groupId), - format("Group with id '%d' is not found", groupId)); - } - - if (groupName != null) { - groupDto = checkFound(dbClient.groupDao().selectByName(dbSession, groupName), - format("Group with name '%s' is not found", groupName)); - } - - return groupDto; + return userGroupFinder.getGroup(dbSession, group); } public UserDto getUser(DbSession dbSession, String userLogin) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/CreateAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/CreateAction.java index 309ea6a5d0d..ef07490631b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/CreateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/CreateAction.java @@ -31,18 +31,18 @@ import org.sonar.db.user.GroupDto; import org.sonar.server.user.UserSession; import static org.sonar.db.MyBatis.closeQuietly; -import static org.sonar.server.usergroups.ws.GroupUpdater.DESCRIPTION_MAX_LENGTH; -import static org.sonar.server.usergroups.ws.GroupUpdater.NAME_MAX_LENGTH; -import static org.sonar.server.usergroups.ws.GroupUpdater.PARAM_DESCRIPTION; -import static org.sonar.server.usergroups.ws.GroupUpdater.PARAM_NAME; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.DESCRIPTION_MAX_LENGTH; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.NAME_MAX_LENGTH; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.PARAM_DESCRIPTION; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.PARAM_NAME; public class CreateAction implements UserGroupsWsAction { private final DbClient dbClient; private final UserSession userSession; - private final GroupUpdater groupUpdater; + private final UserGroupUpdater groupUpdater; - public CreateAction(DbClient dbClient, UserSession userSession, GroupUpdater groupUpdater) { + public CreateAction(DbClient dbClient, UserSession userSession, UserGroupUpdater groupUpdater) { this.dbClient = dbClient; this.groupUpdater = groupUpdater; this.userSession = userSession; diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java index e0ea69526ff..4eeacd5a21f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/DeleteAction.java @@ -19,64 +19,67 @@ */ package org.sonar.server.usergroups.ws; -import com.google.common.base.Preconditions; import org.sonar.api.CoreProperties; import org.sonar.api.config.Settings; import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; +import org.sonar.api.server.ws.WebService; import org.sonar.api.server.ws.WebService.NewController; import org.sonar.core.permission.GlobalPermissions; +import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.MyBatis; import org.sonar.db.user.GroupDto; -import org.sonar.server.db.DbClient; -import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.user.UserSession; -public class DeleteAction implements UserGroupsWsAction { +import static com.google.common.base.Preconditions.checkArgument; +import static java.lang.String.format; +import static org.sonar.server.usergroups.ws.UserGroupsWsParameters.PARAM_GROUP_ID; +import static org.sonar.server.usergroups.ws.UserGroupsWsParameters.PARAM_GROUP_NAME; - private static final String PARAM_ID = "id"; +public class DeleteAction implements UserGroupsWsAction { private final DbClient dbClient; + private final UserGroupFinder userGroupFinder; private final UserSession userSession; private final Settings settings; - public DeleteAction(DbClient dbClient, UserSession userSession, Settings settings) { + public DeleteAction(DbClient dbClient, UserGroupFinder userGroupFinder, UserSession userSession, Settings settings) { this.dbClient = dbClient; + this.userGroupFinder = userGroupFinder; this.userSession = userSession; this.settings = settings; } @Override public void define(NewController context) { - context.createAction("delete") - .setDescription("Delete a group. The default group cannot be deleted. Requires System Administrator permission.") + WebService.NewAction action = context.createAction("delete") + .setDescription(format("Delete a group. The default groups cannot be deleted.
" + + "'%s' or '%s' must be provided." + + "Requires System Administrator permission.", + PARAM_GROUP_ID, PARAM_GROUP_NAME)) .setHandler(this) .setSince("5.2") - .setPost(true) - .createParam(PARAM_ID) - .setDescription("ID of the group to delete.") - .setRequired(true); + .setPost(true); + + UserGroupsWsParameters.createGroupParameters(action); } @Override public void handle(Request request, Response response) throws Exception { userSession.checkLoggedIn().checkGlobalPermission(GlobalPermissions.SYSTEM_ADMIN); - long groupId = request.mandatoryParamAsLong(PARAM_ID); - + WsGroupRef groupRef = WsGroupRef.fromUserGroupsRequest(request); DbSession dbSession = dbClient.openSession(false); try { - if (dbClient.groupDao().selectById(dbSession, groupId) == null) { - throw new NotFoundException(String.format("Could not find a group with id=%d", groupId)); - } + GroupDto group = userGroupFinder.getGroup(dbSession, groupRef); + long groupId = group.getId(); checkNotTryingToDeleteDefaultGroup(dbSession, groupId); - - removeGroupMembers(groupId, dbSession); - removeGroupPermissions(groupId, dbSession); - removeFromPermissionTemplates(groupId, dbSession); + removeGroupMembers(dbSession, groupId); + removeGroupPermissions(dbSession, groupId); + removeFromPermissionTemplates(dbSession, groupId); dbClient.groupDao().deleteById(dbSession, groupId); dbSession.commit(); @@ -89,19 +92,19 @@ public class DeleteAction implements UserGroupsWsAction { private void checkNotTryingToDeleteDefaultGroup(DbSession dbSession, long groupId) { String defaultGroupName = settings.getString(CoreProperties.CORE_DEFAULT_GROUP); GroupDto defaultGroup = dbClient.groupDao().selectOrFailByName(dbSession, defaultGroupName); - Preconditions.checkArgument(groupId != defaultGroup.getId(), - String.format("Default group '%s' cannot be deleted", defaultGroupName)); + checkArgument(groupId != defaultGroup.getId(), + format("Default group '%s' cannot be deleted", defaultGroupName)); } - private void removeGroupMembers(long groupId, DbSession dbSession) { + private void removeGroupMembers(DbSession dbSession, long groupId) { dbClient.userGroupDao().deleteMembersByGroupId(dbSession, groupId); } - private void removeGroupPermissions(long groupId, DbSession dbSession) { + private void removeGroupPermissions(DbSession dbSession, long groupId) { dbClient.roleDao().deleteGroupRolesByGroupId(dbSession, groupId); } - private void removeFromPermissionTemplates(long groupId, DbSession dbSession) { + private void removeFromPermissionTemplates(DbSession dbSession, long groupId) { dbClient.permissionTemplateDao().deleteByGroup(dbSession, groupId); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupUpdater.java deleted file mode 100644 index e67c605bae1..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/GroupUpdater.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.server.usergroups.ws; - -import com.google.common.base.Preconditions; -import org.sonar.api.security.DefaultGroups; -import org.sonar.api.server.ServerSide; -import org.sonar.api.utils.text.JsonWriter; -import org.sonar.db.DbSession; -import org.sonar.db.user.GroupDto; -import org.sonar.server.db.DbClient; -import org.sonar.server.exceptions.BadRequestException; - -@ServerSide -public class GroupUpdater { - - static final String PARAM_ID = "id"; - static final String PARAM_DESCRIPTION = "description"; - static final String PARAM_NAME = "name"; - - // Database column size should be 500 (since migration #353), - // but on some instances, column size is still 255, - // hence the validation is done with 255 - static final int NAME_MAX_LENGTH = 255; - static final int DESCRIPTION_MAX_LENGTH = 200; - - private final DbClient dbClient; - - public GroupUpdater(DbClient dbClient) { - this.dbClient = dbClient; - } - - protected void validateName(String name) { - checkNameLength(name); - checkNameNotAnyone(name); - } - - private void checkNameLength(String name) { - Preconditions.checkArgument(!name.isEmpty(), "Name cannot be empty"); - Preconditions.checkArgument(name.length() <= NAME_MAX_LENGTH, String.format("Name cannot be longer than %d characters", NAME_MAX_LENGTH)); - } - - private void checkNameNotAnyone(String name) { - Preconditions.checkArgument(!DefaultGroups.isAnyone(name), String.format("Name '%s' is reserved (regardless of case)", DefaultGroups.ANYONE)); - } - - protected void checkNameIsUnique(String name, DbSession session) { - // There is no database constraint on column groups.name - // because MySQL cannot create a unique index - // on a UTF-8 VARCHAR larger than 255 characters on InnoDB - if (dbClient.groupDao().selectByName(session, name) != null) { - throw new BadRequestException(String.format("Name '%s' is already taken", name)); - } - } - - protected void validateDescription(String description) { - Preconditions.checkArgument(description.length() <= DESCRIPTION_MAX_LENGTH, String.format("Description cannot be longer than %d characters", DESCRIPTION_MAX_LENGTH)); - } - - protected void writeGroup(JsonWriter json, GroupDto group, int membersCount) { - json.name("group").beginObject() - .prop(PARAM_ID, group.getId().toString()) - .prop(PARAM_NAME, group.getName()) - .prop(PARAM_DESCRIPTION, group.getDescription()) - .prop("membersCount", membersCount) - .endObject(); - } -} diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java index 9aa000b9104..eb5b66210f0 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UpdateAction.java @@ -33,19 +33,19 @@ import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.user.UserSession; import static org.sonar.db.MyBatis.closeQuietly; -import static org.sonar.server.usergroups.ws.GroupUpdater.DESCRIPTION_MAX_LENGTH; -import static org.sonar.server.usergroups.ws.GroupUpdater.NAME_MAX_LENGTH; -import static org.sonar.server.usergroups.ws.GroupUpdater.PARAM_DESCRIPTION; -import static org.sonar.server.usergroups.ws.GroupUpdater.PARAM_ID; -import static org.sonar.server.usergroups.ws.GroupUpdater.PARAM_NAME; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.DESCRIPTION_MAX_LENGTH; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.NAME_MAX_LENGTH; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.PARAM_DESCRIPTION; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.PARAM_ID; +import static org.sonar.server.usergroups.ws.UserGroupUpdater.PARAM_NAME; public class UpdateAction implements UserGroupsWsAction { private final DbClient dbClient; private final UserSession userSession; - private final GroupUpdater groupUpdater; + private final UserGroupUpdater groupUpdater; - public UpdateAction(DbClient dbClient, UserSession userSession, GroupUpdater groupUpdater) { + public UpdateAction(DbClient dbClient, UserSession userSession, UserGroupUpdater groupUpdater) { this.dbClient = dbClient; this.groupUpdater = groupUpdater; this.userSession = userSession; diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupFinder.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupFinder.java new file mode 100644 index 00000000000..470aa8aeee7 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupFinder.java @@ -0,0 +1,55 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonar.server.usergroups.ws; + +import org.sonar.db.DbClient; +import org.sonar.db.DbSession; +import org.sonar.db.user.GroupDto; + +import static java.lang.String.format; +import static org.sonar.server.ws.WsUtils.checkFound; + +public class UserGroupFinder { + private final DbClient dbClient; + + public UserGroupFinder(DbClient dbClient) { + this.dbClient = dbClient; + } + + public GroupDto getGroup(DbSession dbSession, WsGroupRef group) { + Long groupId = group.id(); + String groupName = group.name(); + + GroupDto groupDto = null; + + if (groupId != null) { + groupDto = checkFound(dbClient.groupDao().selectById(dbSession, groupId), + format("Group with id '%d' is not found", groupId)); + } + + if (groupName != null) { + groupDto = checkFound(dbClient.groupDao().selectByName(dbSession, groupName), + format("Group with name '%s' is not found", groupName)); + } + + return groupDto; + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupUpdater.java new file mode 100644 index 00000000000..9924563740a --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupUpdater.java @@ -0,0 +1,85 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.server.usergroups.ws; + +import com.google.common.base.Preconditions; +import org.sonar.api.security.DefaultGroups; +import org.sonar.api.server.ServerSide; +import org.sonar.api.utils.text.JsonWriter; +import org.sonar.db.DbSession; +import org.sonar.db.user.GroupDto; +import org.sonar.server.db.DbClient; +import org.sonar.server.exceptions.BadRequestException; + +@ServerSide +public class UserGroupUpdater { + + static final String PARAM_ID = "id"; + static final String PARAM_DESCRIPTION = "description"; + static final String PARAM_NAME = "name"; + + // Database column size should be 500 (since migration #353), + // but on some instances, column size is still 255, + // hence the validation is done with 255 + static final int NAME_MAX_LENGTH = 255; + static final int DESCRIPTION_MAX_LENGTH = 200; + + private final DbClient dbClient; + + public UserGroupUpdater(DbClient dbClient) { + this.dbClient = dbClient; + } + + protected void validateName(String name) { + checkNameLength(name); + checkNameNotAnyone(name); + } + + private void checkNameLength(String name) { + Preconditions.checkArgument(!name.isEmpty(), "Name cannot be empty"); + Preconditions.checkArgument(name.length() <= NAME_MAX_LENGTH, String.format("Name cannot be longer than %d characters", NAME_MAX_LENGTH)); + } + + private void checkNameNotAnyone(String name) { + Preconditions.checkArgument(!DefaultGroups.isAnyone(name), String.format("Name '%s' is reserved (regardless of case)", DefaultGroups.ANYONE)); + } + + protected void checkNameIsUnique(String name, DbSession session) { + // There is no database constraint on column groups.name + // because MySQL cannot create a unique index + // on a UTF-8 VARCHAR larger than 255 characters on InnoDB + if (dbClient.groupDao().selectByName(session, name) != null) { + throw new BadRequestException(String.format("Name '%s' is already taken", name)); + } + } + + protected void validateDescription(String description) { + Preconditions.checkArgument(description.length() <= DESCRIPTION_MAX_LENGTH, String.format("Description cannot be longer than %d characters", DESCRIPTION_MAX_LENGTH)); + } + + protected void writeGroup(JsonWriter json, GroupDto group, int membersCount) { + json.name("group").beginObject() + .prop(PARAM_ID, group.getId().toString()) + .prop(PARAM_NAME, group.getName()) + .prop(PARAM_DESCRIPTION, group.getDescription()) + .prop("membersCount", membersCount) + .endObject(); + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupsModule.java b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupsModule.java index 68334a09948..e2f01e13f93 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupsModule.java +++ b/server/sonar-server/src/main/java/org/sonar/server/usergroups/ws/UserGroupsModule.java @@ -26,8 +26,10 @@ public class UserGroupsModule extends Module { @Override protected void configureModule() { add( - GroupUpdater.class, UserGroupsWs.class, + UserGroupUpdater.class, + UserGroupFinder.class, + // actions SearchAction.class, CreateAction.class, DeleteAction.class, diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java index 3c3779189d8..787fab250e7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java @@ -42,6 +42,7 @@ import org.sonar.server.exceptions.ServerException; import org.sonar.server.permission.PermissionChange; import org.sonar.server.permission.PermissionUpdater; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsTester; import org.sonar.test.DbTests; @@ -52,12 +53,12 @@ import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN; import static org.sonar.db.component.ComponentTesting.newProjectDto; import static org.sonar.db.component.ComponentTesting.newView; import static org.sonar.server.permission.ws.AddGroupAction.ACTION; +import static org.sonar.server.permission.ws.PermissionsWs.ENDPOINT; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_GROUP_ID; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_GROUP_NAME; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_PERMISSION; -import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_PROJECT_KEY; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_PROJECT_ID; -import static org.sonar.server.permission.ws.PermissionsWs.ENDPOINT; +import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_PROJECT_KEY; @Category(DbTests.class) public class AddGroupActionTest { @@ -79,7 +80,12 @@ public class AddGroupActionTest { dbClient = db.getDbClient(); ComponentFinder componentFinder = new ComponentFinder(dbClient); ws = new WsTester(new PermissionsWs( - new AddGroupAction(dbClient, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder, resourceTypes)), permissionUpdater))); + new AddGroupAction(dbClient, new PermissionChangeBuilder(new PermissionDependenciesFinder( + dbClient, + componentFinder, + new UserGroupFinder(dbClient), + resourceTypes)), + permissionUpdater))); userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java index 48e3b6d7bc8..4281848a89c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java @@ -41,6 +41,7 @@ import org.sonar.server.exceptions.ServerException; import org.sonar.server.permission.PermissionChange; import org.sonar.server.permission.PermissionUpdater; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsTester; import org.sonar.test.DbTests; @@ -81,7 +82,8 @@ public class AddUserActionTest { dbSession = db.getSession(); ComponentFinder componentFinder = new ComponentFinder(dbClient); ws = new WsTester(new PermissionsWs( - new AddUserAction(dbClient, permissionUpdater, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder, resourceTypes))))); + new AddUserAction(dbClient, permissionUpdater, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder, new UserGroupFinder(dbClient), + resourceTypes))))); userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java index 3d5ea0755a2..8b7ed74c2a1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java @@ -47,6 +47,7 @@ import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.PermissionFinder; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -85,7 +86,7 @@ public class GroupsActionTest { dbClient = db.getDbClient(); dbSession = db.getSession(); PermissionFinder permissionFinder = new PermissionFinder(dbClient); - underTest = new GroupsAction(dbClient, userSession, permissionFinder, new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes)); + underTest = new GroupsAction(dbClient, userSession, permissionFinder, new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes)); ws = new WsActionTester(underTest); userSession.login("login").setGlobalPermissions(SYSTEM_ADMIN); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java index 7a485b6660c..2b4f3323eed 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java @@ -42,6 +42,7 @@ import org.sonar.server.exceptions.ServerException; import org.sonar.server.permission.PermissionChange; import org.sonar.server.permission.PermissionUpdater; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsTester; import org.sonar.test.DbTests; @@ -78,7 +79,7 @@ public class RemoveGroupActionTest { DbClient dbClient = db.getDbClient(); ComponentFinder componentFinder = new ComponentFinder(dbClient); ws = new WsTester(new PermissionsWs( - new RemoveGroupAction(dbClient, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder, resourceTypes)), permissionUpdater))); + new RemoveGroupAction(dbClient, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder, new UserGroupFinder(dbClient), resourceTypes)), permissionUpdater))); userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserActionTest.java index 6557350bc68..eb29e8bb8a7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserActionTest.java @@ -41,6 +41,7 @@ import org.sonar.server.exceptions.ServerException; import org.sonar.server.permission.PermissionChange; import org.sonar.server.permission.PermissionUpdater; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsTester; import org.sonar.test.DbTests; @@ -79,7 +80,7 @@ public class RemoveUserActionTest { dbSession = db.getSession(); ComponentFinder componentFinder = new ComponentFinder(dbClient); ws = new WsTester(new PermissionsWs( - new RemoveUserAction(dbClient, permissionUpdater, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder, resourceTypes))))); + new RemoveUserAction(dbClient, permissionUpdater, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder, new UserGroupFinder(dbClient), resourceTypes))))); userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java index 8368c1276cd..3e88bffa8a9 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/SearchProjectPermissionsActionTest.java @@ -45,6 +45,7 @@ import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.i18n.I18nRule; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsActionTester; import static java.util.Arrays.asList; @@ -85,7 +86,7 @@ public class SearchProjectPermissionsActionTest { resourceTypes = mock(ResourceTypes.class); when(resourceTypes.getRoots()).thenReturn(rootResourceTypes()); ComponentFinder componentFinder = new ComponentFinder(dbClient); - PermissionDependenciesFinder finder = new PermissionDependenciesFinder(dbClient, componentFinder, resourceTypes); + PermissionDependenciesFinder finder = new PermissionDependenciesFinder(dbClient, componentFinder, new UserGroupFinder(dbClient), resourceTypes); i18n.setProjectPermissions(); dataLoader = new SearchProjectPermissionsDataLoader(dbClient, finder, resourceTypes); @@ -225,7 +226,8 @@ public class SearchProjectPermissionsActionTest { insertComponent(newDeveloper("developer-name")); insertComponent(newProjectDto("project-uuid")); commit(); - dataLoader = new SearchProjectPermissionsDataLoader(dbClient, new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes), resourceTypes); + dataLoader = new SearchProjectPermissionsDataLoader(dbClient, new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes), + resourceTypes); underTest = new SearchProjectPermissionsAction(dbClient, userSession, i18n, dataLoader); ws = new WsActionTester(underTest); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateGroupsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateGroupsActionTest.java index 53ed5888aa5..f05da6003ab 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateGroupsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateGroupsActionTest.java @@ -47,6 +47,7 @@ import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.plugins.MimeTypes; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; import org.sonarqube.ws.WsPermissions.WsGroupsResponse; @@ -61,8 +62,8 @@ import static org.sonar.db.permission.PermissionTemplateTesting.newPermissionTem import static org.sonar.db.permission.PermissionTemplateTesting.newPermissionTemplateGroupDto; import static org.sonar.db.user.GroupTesting.newGroupDto; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_PERMISSION; -import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_TEMPLATE_UUID; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_TEMPLATE_NAME; +import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_TEMPLATE_UUID; import static org.sonar.test.JsonAssert.assertJson; @Category(DbTests.class) @@ -88,7 +89,12 @@ public class TemplateGroupsActionTest { public void setUp() { dbClient = db.getDbClient(); dbSession = db.getSession(); - underTest = new TemplateGroupsAction(dbClient, userSession, new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes)); + underTest = new TemplateGroupsAction(dbClient, userSession, + new PermissionDependenciesFinder( + dbClient, + new ComponentFinder(dbClient), + new UserGroupFinder(dbClient), + resourceTypes)); ws = new WsActionTester(underTest); userSession.login("login").setGlobalPermissions(SYSTEM_ADMIN); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateUsersActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateUsersActionTest.java index bfd1f1f51e7..6c10b5d6174 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateUsersActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/TemplateUsersActionTest.java @@ -46,6 +46,7 @@ import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -80,7 +81,7 @@ public class TemplateUsersActionTest { @Before public void setUp() { - PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); underTest = new TemplateUsersAction(dbClient, userSession, dependenciesFinder); ws = new WsActionTester(underTest); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UsersActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UsersActionTest.java index 9b24ebd01f3..397a495ca35 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UsersActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/UsersActionTest.java @@ -43,6 +43,7 @@ import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.PermissionFinder; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -76,7 +77,7 @@ public class UsersActionTest { @Before public void setUp() { PermissionFinder permissionFinder = new PermissionFinder(dbClient); - PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); underTest = new UsersAction(dbClient, userSession, permissionFinder, dependenciesFinder); ws = new WsActionTester(underTest); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java index 1d26b5ae5d8..8c9516723aa 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddGroupToTemplateActionTest.java @@ -49,6 +49,7 @@ import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.permission.ws.WsPermissionParameters; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -92,7 +93,7 @@ public class AddGroupToTemplateActionTest { dbSession = db.getSession(); userSession.login().setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); - PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); ws = new WsActionTester(new AddGroupToTemplateAction(dbClient, dependenciesFinder, userSession)); group = insertGroup(newGroupDto().setName(GROUP_NAME)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddUserToTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddUserToTemplateActionTest.java index 6bc89246c15..e42476b4c2a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddUserToTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/AddUserToTemplateActionTest.java @@ -48,6 +48,7 @@ import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.permission.ws.WsPermissionParameters; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -87,7 +88,7 @@ public class AddUserToTemplateActionTest { dbSession = db.getSession(); userSession.login().setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); - PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); ws = new WsActionTester(new AddUserToTemplateAction(dbClient, dependenciesFinder, userSession)); user = insertUser(newUserDto().setLogin(USER_LOGIN)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java index 5f676494966..ec227d9ec14 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java @@ -58,6 +58,7 @@ import org.sonar.server.permission.PermissionFinder; import org.sonar.server.permission.PermissionService; import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.TestResponse; import org.sonar.server.ws.WsActionTester; @@ -110,7 +111,7 @@ public class ApplyTemplateActionTest { PermissionFinder permissionFinder = new PermissionFinder(dbClient); ComponentFinder componentFinder = new ComponentFinder(dbClient); PermissionService permissionService = new PermissionService(dbClient, repository, issueAuthorizationIndexer, userSession, componentFinder); - PermissionDependenciesFinder permissionDependenciesFinder = new PermissionDependenciesFinder(dbClient, componentFinder, resourceTypes); + PermissionDependenciesFinder permissionDependenciesFinder = new PermissionDependenciesFinder(dbClient, componentFinder, new UserGroupFinder(dbClient), resourceTypes); ApplyTemplateAction underTest = new ApplyTemplateAction(dbClient, permissionService, permissionDependenciesFinder); ws = new WsActionTester(underTest); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/DeleteTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/DeleteTemplateActionTest.java index 2a6ecc9d7b0..6021d9a6649 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/DeleteTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/DeleteTemplateActionTest.java @@ -47,6 +47,7 @@ import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.ws.DeleteTemplateAction; import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.TestResponse; import org.sonar.server.ws.WsActionTester; @@ -86,7 +87,7 @@ public class DeleteTemplateActionTest { dbSession = db.getSession(); defaultTemplatePermissionFinder = mock(DefaultPermissionTemplateFinder.class); when(defaultTemplatePermissionFinder.getDefaultTemplateUuids()).thenReturn(Collections.emptySet()); - PermissionDependenciesFinder finder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder finder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); ws = new WsActionTester(new DeleteTemplateAction(dbClient, userSession, finder, defaultTemplatePermissionFinder)); permissionTemplate = insertTemplateAndAssociatedPermissions(newPermissionTemplateDto().setUuid(TEMPLATE_UUID)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java index cbb9772b6c4..8ba57d49b72 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveGroupFromTemplateActionTest.java @@ -48,6 +48,7 @@ import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.permission.ws.WsPermissionParameters; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -62,8 +63,8 @@ import static org.sonar.db.user.GroupTesting.newGroupDto; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_GROUP_ID; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_GROUP_NAME; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_PERMISSION; -import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_TEMPLATE_UUID; import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_TEMPLATE_NAME; +import static org.sonar.server.permission.ws.WsPermissionParameters.PARAM_TEMPLATE_UUID; @Category(DbTests.class) public class RemoveGroupFromTemplateActionTest { @@ -90,7 +91,7 @@ public class RemoveGroupFromTemplateActionTest { dbSession = db.getSession(); userSession.login().setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); - PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); ws = new WsActionTester(new RemoveGroupFromTemplateAction(dbClient, dependenciesFinder, userSession)); group = insertGroup(newGroupDto().setName(GROUP_NAME)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveUserFromTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveUserFromTemplateActionTest.java index 7bda0f44f05..b50d28d0a2e 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveUserFromTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/RemoveUserFromTemplateActionTest.java @@ -48,6 +48,7 @@ import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.permission.ws.WsPermissionParameters; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -88,7 +89,7 @@ public class RemoveUserFromTemplateActionTest { dbSession = db.getSession(); userSession.login().setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); - PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); ws = new WsActionTester(new RemoveUserFromTemplateAction(dbClient, dependenciesFinder, userSession)); user = insertUser(newUserDto().setLogin(USER_LOGIN)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/SetDefaultTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/SetDefaultTemplateActionTest.java index cd7dde8c148..6c40baada03 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/SetDefaultTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/SetDefaultTemplateActionTest.java @@ -48,6 +48,7 @@ import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.platform.PersistentSettings; import org.sonar.server.platform.ServerSettings; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.WsActionTester; import org.sonar.test.DbTests; @@ -94,7 +95,7 @@ public class SetDefaultTemplateActionTest { ws = new WsActionTester(new SetDefaultTemplateAction( dbClient, - new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes), + new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes), resourceTypes, persistentSettings, userSession, i18n)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/UpdateTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/UpdateTemplateActionTest.java index b882b9f82e5..1193571351c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/UpdateTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/UpdateTemplateActionTest.java @@ -42,6 +42,7 @@ import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.exceptions.UnauthorizedException; import org.sonar.server.permission.ws.PermissionDependenciesFinder; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.usergroups.ws.UserGroupFinder; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.TestResponse; import org.sonar.server.ws.WsActionTester; @@ -80,7 +81,7 @@ public class UpdateTemplateActionTest { dbClient = db.getDbClient(); dbSession = db.getSession(); - PermissionDependenciesFinder finder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), resourceTypes); + PermissionDependenciesFinder finder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient), new UserGroupFinder(dbClient), resourceTypes); ws = new WsActionTester(new UpdateTemplateAction(dbClient, userSession, system, finder)); diff --git a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/CreateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/CreateActionTest.java index 8ee28e049c7..2411ad91327 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/CreateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/CreateActionTest.java @@ -67,7 +67,7 @@ public class CreateActionTest { DbClient dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), groupDao); - tester = new WsTester(new UserGroupsWs(new CreateAction(dbClient, userSession, new GroupUpdater(dbClient)))); + tester = new WsTester(new UserGroupsWs(new CreateAction(dbClient, userSession, new UserGroupUpdater(dbClient)))); session = dbClient.openSession(false); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java index ca7bc0f9cb8..e835f5b1598 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/DeleteActionTest.java @@ -20,7 +20,6 @@ package org.sonar.server.usergroups.ws; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -30,6 +29,7 @@ import org.sonar.api.config.Settings; import org.sonar.api.utils.System2; import org.sonar.api.web.UserRole; import org.sonar.core.permission.GlobalPermissions; +import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.permission.PermissionTemplateDao; @@ -39,121 +39,126 @@ import org.sonar.db.user.GroupRoleDto; import org.sonar.db.user.RoleDao; import org.sonar.db.user.UserGroupDao; import org.sonar.db.user.UserGroupDto; -import org.sonar.server.db.DbClient; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsTester; import org.sonar.test.DbTests; import static org.assertj.core.api.Assertions.assertThat; +import static org.sonar.db.user.GroupTesting.newGroupDto; +import static org.sonar.server.usergroups.ws.UserGroupsWsParameters.PARAM_GROUP_NAME; @Category(DbTests.class) public class DeleteActionTest { @Rule - public DbTester dbTester = DbTester.create(System2.INSTANCE); - + public DbTester db = DbTester.create(System2.INSTANCE); @Rule public UserSessionRule userSession = UserSessionRule.standalone(); private WsTester ws; - private GroupDao groupDao; - private UserGroupDao userGroupDao; - private RoleDao roleDao; - private PermissionTemplateDao permissionTemplateDao; - private DbSession session; - + private DbSession dbSession; private Long defaultGroupId; @Before public void setUp() { - dbTester.truncateTables(); - - groupDao = new GroupDao(System2.INSTANCE); - userGroupDao = new UserGroupDao(); - roleDao = new RoleDao(); - permissionTemplateDao = new PermissionTemplateDao(dbTester.myBatis(), System2.INSTANCE); - - DbClient dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), - groupDao, userGroupDao, roleDao, permissionTemplateDao); - session = dbClient.openSession(false); + DbClient dbClient = db.getDbClient(); + groupDao = dbClient.groupDao(); + userGroupDao = dbClient.userGroupDao(); + roleDao = dbClient.roleDao(); + permissionTemplateDao = dbClient.permissionTemplateDao(); + dbSession = db.getSession(); Settings settings = new Settings().setProperty(CoreProperties.CORE_DEFAULT_GROUP, CoreProperties.CORE_DEFAULT_GROUP_DEFAULT_VALUE); - GroupDto defaultGroup = groupDao.insert(session, new GroupDto().setName(CoreProperties.CORE_DEFAULT_GROUP_DEFAULT_VALUE)); + GroupDto defaultGroup = groupDao.insert(dbSession, new GroupDto().setName(CoreProperties.CORE_DEFAULT_GROUP_DEFAULT_VALUE)); defaultGroupId = defaultGroup.getId(); - session.commit(); - - ws = new WsTester(new UserGroupsWs(new DeleteAction(dbClient, userSession, settings))); - } - - @After - public void after() { - session.close(); + dbSession.commit(); + + ws = new WsTester(new UserGroupsWs( + new DeleteAction( + dbClient, + new UserGroupFinder(dbClient), + userSession, + settings))); } @Test public void delete_simple() throws Exception { - GroupDto group = groupDao.insert(session, new GroupDto().setName("to-delete")); - session.commit(); + GroupDto group = groupDao.insert(dbSession, new GroupDto().setName("to-delete")); + dbSession.commit(); loginAsAdmin(); - ws.newPostRequest("api/usergroups", "delete") + newRequest() .setParam("id", group.getId().toString()) .execute().assertNoContent(); } + @Test + public void delete_with_group_name() throws Exception { + GroupDto group = groupDao.insert(dbSession, newGroupDto().setName("group_name")); + assertThat(groupDao.selectById(dbSession, group.getId())).isNotNull(); + dbSession.commit(); + + loginAsAdmin(); + newRequest() + .setParam(PARAM_GROUP_NAME, group.getName()) + .execute().assertNoContent(); + + assertThat(groupDao.selectById(dbSession, group.getId())).isNull(); + } + @Test public void delete_with_members() throws Exception { - GroupDto group = groupDao.insert(session, new GroupDto().setName("to-delete")); - userGroupDao.insert(session, new UserGroupDto().setGroupId(group.getId()).setUserId(42L)); - session.commit(); + GroupDto group = groupDao.insert(dbSession, new GroupDto().setName("to-delete")); + userGroupDao.insert(dbSession, new UserGroupDto().setGroupId(group.getId()).setUserId(42L)); + dbSession.commit(); loginAsAdmin(); - ws.newPostRequest("api/usergroups", "delete") + newRequest() .setParam("id", group.getId().toString()) .execute().assertNoContent(); - assertThat(dbTester.select("SELECT group_id FROM groups_users")).isEmpty(); + assertThat(db.select("SELECT group_id FROM groups_users")).isEmpty(); } @Test public void delete_with_permissions() throws Exception { - GroupDto group = groupDao.insert(session, new GroupDto().setName("to-delete")); - roleDao.insertGroupRole(session, new GroupRoleDto().setGroupId(group.getId()).setResourceId(42L).setRole(UserRole.ADMIN)); - session.commit(); + GroupDto group = groupDao.insert(dbSession, new GroupDto().setName("to-delete")); + roleDao.insertGroupRole(dbSession, new GroupRoleDto().setGroupId(group.getId()).setResourceId(42L).setRole(UserRole.ADMIN)); + dbSession.commit(); loginAsAdmin(); - ws.newPostRequest("api/usergroups", "delete") + newRequest() .setParam("id", group.getId().toString()) .execute().assertNoContent(); - assertThat(dbTester.select("SELECT group_id FROM group_roles")).isEmpty(); + assertThat(db.select("SELECT group_id FROM group_roles")).isEmpty(); } @Test public void delete_with_permission_templates() throws Exception { - GroupDto group = groupDao.insert(session, new GroupDto().setName("to-delete")); + GroupDto group = groupDao.insert(dbSession, new GroupDto().setName("to-delete")); permissionTemplateDao.insertGroupPermission(42L, group.getId(), UserRole.ADMIN); - session.commit(); + dbSession.commit(); loginAsAdmin(); - ws.newPostRequest("api/usergroups", "delete") + newRequest() .setParam("id", group.getId().toString()) .execute().assertNoContent(); - assertThat(dbTester.select("SELECT group_id FROM perm_templates_groups")).isEmpty(); + assertThat(db.select("SELECT group_id FROM perm_templates_groups")).isEmpty(); } @Test(expected = NotFoundException.class) public void not_found() throws Exception { loginAsAdmin(); - ws.newPostRequest("api/usergroups", "delete") + newRequest() .setParam("id", String.valueOf(defaultGroupId + 1L)) .execute(); } @@ -161,7 +166,7 @@ public class DeleteActionTest { @Test(expected = IllegalArgumentException.class) public void cannot_delete_default_group() throws Exception { loginAsAdmin(); - ws.newPostRequest("api/usergroups", "delete") + newRequest() .setParam("id", defaultGroupId.toString()) .execute(); } @@ -169,4 +174,8 @@ public class DeleteActionTest { private void loginAsAdmin() { userSession.login("admin").setGlobalPermissions(GlobalPermissions.SYSTEM_ADMIN); } + + private WsTester.TestRequest newRequest() { + return ws.newPostRequest("api/usergroups", "delete"); + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java index e03e5329b52..9cc1145e08a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UpdateActionTest.java @@ -76,7 +76,7 @@ public class UpdateActionTest { DbClient dbClient = new DbClient(dbTester.database(), dbTester.myBatis(), groupDao, new GroupMembershipDao(dbTester.myBatis()), userGroupDao); - tester = new WsTester(new UserGroupsWs(new UpdateAction(dbClient, userSession, new GroupUpdater(dbClient)))); + tester = new WsTester(new UserGroupsWs(new UpdateAction(dbClient, userSession, new UserGroupUpdater(dbClient)))); session = dbClient.openSession(false); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UserGroupsModuleTest.java b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UserGroupsModuleTest.java new file mode 100644 index 00000000000..3e61a5195bb --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UserGroupsModuleTest.java @@ -0,0 +1,35 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.sonar.server.usergroups.ws; + +import org.junit.Test; +import org.sonar.core.platform.ComponentContainer; + +import static org.assertj.core.api.Assertions.assertThat; + +public class UserGroupsModuleTest { + @Test + public void verify_count_of_added_components() { + ComponentContainer container = new ComponentContainer(); + new UserGroupsModule().configure(container); + assertThat(container.size()).isEqualTo(12); + } +} diff --git a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UserGroupsWsTest.java b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UserGroupsWsTest.java index d739480aa9a..88e66c1a01a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UserGroupsWsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/usergroups/ws/UserGroupsWsTest.java @@ -41,7 +41,7 @@ public class UserGroupsWsTest { public void setUp() { WsTester tester = new WsTester(new UserGroupsWs( new SearchAction(mock(DbClient.class)), - new CreateAction(mock(DbClient.class), mock(UserSession.class), mock(GroupUpdater.class)))); + new CreateAction(mock(DbClient.class), mock(UserSession.class), mock(UserGroupUpdater.class)))); controller = tester.controller("api/usergroups"); }