]> source.dussan.org Git - sonarqube.git/commitdiff
Create PermissionDependenciesFinder
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 20 Aug 2015 13:14:35 +0000 (15:14 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Mon, 24 Aug 2015 08:09:51 +0000 (10:09 +0200)
17 files changed:
server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddGroupAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/AddUserAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionChangeBuilder.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionDependenciesFinder.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionWsCommons.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionsWsModule.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveGroupAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/RemoveUserAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddGroupActionTest.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/AddUserActionTest.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/GroupsActionTest.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/PermissionsWsModuleTest.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveGroupActionTest.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/RemoveUserActionTest.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/UsersActionTest.java

index 337d07e51d112a3d6c84ea23be6b93902190176e..cec958a2ebd2d1b943c40efca968778eef8c20d0 100644 (file)
@@ -40,11 +40,11 @@ public class AddGroupAction implements PermissionsWsAction {
   public static final String ACTION = "add_group";
 
   private final DbClient dbClient;
-  private final PermissionWsCommons permissionWsCommons;
+  private final PermissionChangeBuilder permissionChangeBuilder;
   private final PermissionUpdater permissionUpdater;
 
-  public AddGroupAction(DbClient dbClient, PermissionWsCommons permissionWsCommons, PermissionUpdater permissionUpdater) {
-    this.permissionWsCommons = permissionWsCommons;
+  public AddGroupAction(DbClient dbClient, PermissionChangeBuilder permissionChangeBuilder, PermissionUpdater permissionUpdater) {
+    this.permissionChangeBuilder = permissionChangeBuilder;
     this.permissionUpdater = permissionUpdater;
     this.dbClient = dbClient;
   }
@@ -72,7 +72,7 @@ public class AddGroupAction implements PermissionsWsAction {
     DbSession dbSession = dbClient.openSession(false);
     try {
       PermissionRequest permissionRequest = new Builder(request).withGroup().build();
-      PermissionChange permissionChange = permissionWsCommons.buildGroupPermissionChange(dbSession, permissionRequest);
+      PermissionChange permissionChange = permissionChangeBuilder.buildGroupPermissionChange(dbSession, permissionRequest);
       permissionUpdater.addPermission(permissionChange);
     } finally {
       dbClient.closeSession(dbSession);
index b919651ae01f93b8232175256f3b9a6b94557c80..7812f82795bb248eb0e5db2d35cfcf767d80ddf5 100644 (file)
@@ -40,12 +40,12 @@ public class AddUserAction implements PermissionsWsAction {
 
   private final DbClient dbClient;
   private final PermissionUpdater permissionUpdater;
-  private final PermissionWsCommons permissionWsCommons;
+  private final PermissionChangeBuilder permissionChangeBuilder;
 
-  public AddUserAction(DbClient dbClient, PermissionUpdater permissionUpdater, PermissionWsCommons permissionWsCommons) {
+  public AddUserAction(DbClient dbClient, PermissionUpdater permissionUpdater, PermissionChangeBuilder permissionWsCommons) {
     this.dbClient = dbClient;
     this.permissionUpdater = permissionUpdater;
-    this.permissionWsCommons = permissionWsCommons;
+    this.permissionChangeBuilder = permissionWsCommons;
   }
 
   @Override
@@ -69,7 +69,7 @@ public class AddUserAction implements PermissionsWsAction {
     DbSession dbSession = dbClient.openSession(false);
     try {
       PermissionRequest permissionRequest = new Builder(request).withUser().build();
-      PermissionChange permissionChange = permissionWsCommons.buildUserPermissionChange(dbSession, permissionRequest);
+      PermissionChange permissionChange = permissionChangeBuilder.buildUserPermissionChange(dbSession, permissionRequest);
       permissionUpdater.addPermission(permissionChange);
 
       response.noContent();
index cd9733afcd25d26ec6adb3f562137d5ab2f54066..49eeb05154089e41672731fdf652fbaef505072a 100644 (file)
@@ -29,6 +29,8 @@ import org.sonar.api.server.ws.WebService;
 import org.sonar.api.server.ws.WebService.Param;
 import org.sonar.api.server.ws.WebService.SelectionMode;
 import org.sonar.core.permission.GroupWithPermission;
+import org.sonar.db.DbClient;
+import org.sonar.db.DbSession;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.permission.PermissionQuery;
 import org.sonar.server.permission.GroupWithPermissionQueryResult;
@@ -47,14 +49,16 @@ import static org.sonar.server.permission.ws.Parameters.createProjectUuidParamet
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 
 public class GroupsAction implements PermissionsWsAction {
+  private final DbClient dbClient;
   private final UserSession userSession;
   private final PermissionFinder permissionFinder;
-  private final PermissionWsCommons permissionWsCommons;
+  private final PermissionDependenciesFinder dependenciesFinder;
 
-  public GroupsAction(UserSession userSession, PermissionFinder permissionFinder, PermissionWsCommons permissionWsCommons) {
+  public GroupsAction(DbClient dbClient, UserSession userSession, PermissionFinder permissionFinder, PermissionDependenciesFinder dependenciesFinder) {
+    this.dbClient = dbClient;
     this.userSession = userSession;
     this.permissionFinder = permissionFinder;
-    this.permissionWsCommons = permissionWsCommons;
+    this.dependenciesFinder = dependenciesFinder;
   }
 
   @Override
@@ -80,14 +84,19 @@ public class GroupsAction implements PermissionsWsAction {
 
   @Override
   public void handle(Request wsRequest, Response wsResponse) throws Exception {
-    PermissionRequest request = new Builder(wsRequest).withPagination().build();
-    Optional<ComponentDto> project = permissionWsCommons.searchProject(request);
-    checkProjectAdminUserByComponentDto(userSession, project);
-
-    PermissionQuery permissionQuery = buildPermissionQuery(request, project);
-    Permissions.GroupsResponse groupsResponse = groupsResponse(permissionQuery, request);
-
-    writeProtobuf(groupsResponse, wsRequest, wsResponse);
+    DbSession dbSession = dbClient.openSession(false);
+    try {
+      PermissionRequest request = new Builder(wsRequest).withPagination().build();
+      Optional<ComponentDto> project = dependenciesFinder.searchProject(dbSession, request);
+      checkProjectAdminUserByComponentDto(userSession, project);
+
+      PermissionQuery permissionQuery = buildPermissionQuery(request, project);
+      Permissions.GroupsResponse groupsResponse = groupsResponse(permissionQuery, request);
+
+      writeProtobuf(groupsResponse, wsRequest, wsResponse);
+    } finally {
+      dbClient.closeSession(dbSession);
+    }
   }
 
   private Permissions.GroupsResponse groupsResponse(PermissionQuery permissionQuery, PermissionRequest permissionRequest) {
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionChangeBuilder.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionChangeBuilder.java
new file mode 100644 (file)
index 0000000..53b2e06
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * 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.permission.ws;
+
+import com.google.common.base.Optional;
+import org.sonar.db.DbSession;
+import org.sonar.db.component.ComponentDto;
+import org.sonar.server.permission.PermissionChange;
+
+public class PermissionChangeBuilder {
+
+  private final PermissionDependenciesFinder dependenciesFinder;
+
+  public PermissionChangeBuilder(PermissionDependenciesFinder dependenciesFinder) {
+    this.dependenciesFinder = dependenciesFinder;
+  }
+
+  PermissionChange buildUserPermissionChange(DbSession dbSession, PermissionRequest request) {
+    PermissionChange permissionChange = new PermissionChange()
+      .setPermission(request.permission())
+      .setUserLogin(request.userLogin());
+    addProjectToPermissionChange(dbSession, permissionChange, request);
+
+    return permissionChange;
+  }
+
+  PermissionChange buildGroupPermissionChange(DbSession dbSession, PermissionRequest request) {
+    String groupName = dependenciesFinder.getGroup(dbSession, request).getName();
+
+    PermissionChange permissionChange = new PermissionChange()
+      .setPermission(request.permission())
+      .setGroupName(groupName);
+    addProjectToPermissionChange(dbSession, permissionChange, request);
+
+    return permissionChange;
+  }
+
+  private void addProjectToPermissionChange(DbSession dbSession, PermissionChange permissionChange, PermissionRequest request) {
+    Optional<ComponentDto> project = dependenciesFinder.searchProject(dbSession, request);
+    if (project.isPresent()) {
+      permissionChange.setComponentKey(project.get().key());
+    }
+  }
+}
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
new file mode 100644 (file)
index 0000000..6a18cce
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * 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.permission.ws;
+
+import com.google.common.base.Optional;
+import org.sonar.db.DbClient;
+import org.sonar.db.DbSession;
+import org.sonar.db.component.ComponentDto;
+import org.sonar.db.user.GroupDto;
+import org.sonar.server.component.ComponentFinder;
+import org.sonar.server.exceptions.NotFoundException;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+public class PermissionDependenciesFinder {
+  private final DbClient dbClient;
+  private final ComponentFinder componentFinder;
+
+  public PermissionDependenciesFinder(DbClient dbClient, ComponentFinder componentFinder) {
+    this.dbClient = dbClient;
+    this.componentFinder = componentFinder;
+  }
+
+  GroupDto getGroup(DbSession dbSession, PermissionRequest request) {
+    GroupDto group = null;
+
+    Long groupId = request.groupId();
+    if (groupId != null) {
+      group = dbClient.groupDao().selectById(dbSession, groupId);
+      if (group == null) {
+        throw new NotFoundException(String.format("Group with id '%d' is not found", groupId));
+      }
+    }
+
+    String groupName = request.groupName();
+    if (groupName != null) {
+      group = dbClient.groupDao().selectByKey(dbSession, groupName);
+      if (group == null) {
+        throw new NotFoundException(String.format("Group with name '%s' is not found", groupName));
+      }
+    }
+
+    return checkNotNull(group);
+  }
+
+  Optional<ComponentDto> searchProject(DbSession dbSession, PermissionRequest request) {
+    if (!request.hasProject()) {
+      return Optional.absent();
+    }
+
+    return Optional.of(componentFinder.getProjectByUuidOrKey(dbSession, request.projectUuid(), request.projectKey()));
+  }
+}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionWsCommons.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionWsCommons.java
deleted file mode 100644 (file)
index c04dd1a..0000000
+++ /dev/null
@@ -1,95 +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.permission.ws;
-
-import com.google.common.base.Optional;
-import javax.annotation.Nullable;
-import org.sonar.db.DbClient;
-import org.sonar.db.DbSession;
-import org.sonar.db.component.ComponentDto;
-import org.sonar.db.user.GroupDto;
-import org.sonar.server.component.ComponentFinder;
-import org.sonar.server.exceptions.NotFoundException;
-import org.sonar.server.permission.PermissionChange;
-
-public class PermissionWsCommons {
-
-  private final DbClient dbClient;
-  private final ComponentFinder componentFinder;
-
-  public PermissionWsCommons(DbClient dbClient, ComponentFinder componentFinder) {
-    this.dbClient = dbClient;
-    this.componentFinder = componentFinder;
-  }
-
-  String searchGroupName(DbSession dbSession, @Nullable String groupNameParam, @Nullable Long groupId) {
-    if (groupNameParam != null) {
-      return groupNameParam;
-    }
-
-    GroupDto group = dbClient.groupDao().selectById(dbSession, groupId);
-    if (group == null) {
-      throw new NotFoundException(String.format("Group with id '%d' is not found", groupId));
-    }
-
-    return group.getName();
-  }
-
-  PermissionChange buildUserPermissionChange(DbSession dbSession, PermissionRequest request) {
-    PermissionChange permissionChange = new PermissionChange()
-      .setPermission(request.permission())
-      .setUserLogin(request.userLogin());
-    addProjectToPermissionChange(dbSession, permissionChange, request);
-
-    return permissionChange;
-  }
-
-  PermissionChange buildGroupPermissionChange(DbSession dbSession, PermissionRequest request) {
-    String groupName = searchGroupName(dbSession, request.groupName(), request.groupId());
-
-    PermissionChange permissionChange = new PermissionChange()
-      .setPermission(request.permission())
-      .setGroupName(groupName);
-    addProjectToPermissionChange(dbSession, permissionChange, request);
-
-    return permissionChange;
-  }
-
-  private void addProjectToPermissionChange(DbSession dbSession, PermissionChange permissionChange, PermissionRequest request) {
-    if (request.hasProject()) {
-      ComponentDto project = componentFinder.getProjectByUuidOrKey(dbSession, request.projectUuid(), request.projectKey());
-      permissionChange.setComponentKey(project.key());
-    }
-  }
-
-  Optional<ComponentDto> searchProject(PermissionRequest request) {
-    if (!request.hasProject()) {
-      return Optional.absent();
-    }
-
-    DbSession dbSession = dbClient.openSession(false);
-    try {
-      return Optional.of(componentFinder.getProjectByUuidOrKey(dbSession, request.projectUuid(), request.projectKey()));
-    } finally {
-      dbClient.closeSession(dbSession);
-    }
-  }
-}
index ba5478077487debf8269e71a5c82ba79220b5910..cbc4905d635d785cf444222917471e267cb987e5 100644 (file)
@@ -34,8 +34,9 @@ public class PermissionsWsModule extends Module {
       UsersAction.class,
       GroupsAction.class,
       SearchGlobalPermissionsAction.class,
-      PermissionWsCommons.class,
+      PermissionChangeBuilder.class,
       SearchProjectPermissionsAction.class,
-      SearchProjectPermissionsDataLoader.class);
+      SearchProjectPermissionsDataLoader.class,
+      PermissionDependenciesFinder.class);
   }
 }
index 0e98be73719ebf2852854343d740a9e0eb75bfe2..8f9e9cfe77659cbecc57006d69c70e69b622d785 100644 (file)
@@ -40,12 +40,12 @@ public class RemoveGroupAction implements PermissionsWsAction {
   public static final String ACTION = "remove_group";
 
   private final DbClient dbClient;
-  private final PermissionWsCommons permissionWsCommons;
+  private final PermissionChangeBuilder permissionChangeBuilder;
   private final PermissionUpdater permissionUpdater;
 
-  public RemoveGroupAction(DbClient dbClient, PermissionWsCommons permissionWsCommons, PermissionUpdater permissionUpdater) {
+  public RemoveGroupAction(DbClient dbClient, PermissionChangeBuilder permissionChangeBuilder, PermissionUpdater permissionUpdater) {
     this.dbClient = dbClient;
-    this.permissionWsCommons = permissionWsCommons;
+    this.permissionChangeBuilder = permissionChangeBuilder;
     this.permissionUpdater = permissionUpdater;
   }
 
@@ -72,7 +72,7 @@ public class RemoveGroupAction implements PermissionsWsAction {
     DbSession dbSession = dbClient.openSession(false);
     try {
       PermissionRequest permissionRequest = new Builder(request).withGroup().build();
-      PermissionChange permissionChange = permissionWsCommons.buildGroupPermissionChange(dbSession, permissionRequest);
+      PermissionChange permissionChange = permissionChangeBuilder.buildGroupPermissionChange(dbSession, permissionRequest);
       permissionUpdater.removePermission(permissionChange);
     } finally {
       dbClient.closeSession(dbSession);
index 17a7dc38f32ca8d0223de1fb216d01e23f389f56..0a50c443ed2b488c602c5cf30df85933862891d0 100644 (file)
@@ -40,12 +40,12 @@ public class RemoveUserAction implements PermissionsWsAction {
 
   private final DbClient dbClient;
   private final PermissionUpdater permissionUpdater;
-  private final PermissionWsCommons permissionWsCommons;
+  private final PermissionChangeBuilder permissionChangeBuilder;
 
-  public RemoveUserAction(DbClient dbClient, PermissionUpdater permissionUpdater, PermissionWsCommons permissionWsCommons) {
+  public RemoveUserAction(DbClient dbClient, PermissionUpdater permissionUpdater, PermissionChangeBuilder permissionChangeBuilder) {
     this.dbClient = dbClient;
     this.permissionUpdater = permissionUpdater;
-    this.permissionWsCommons = permissionWsCommons;
+    this.permissionChangeBuilder = permissionChangeBuilder;
   }
 
   @Override
@@ -69,7 +69,7 @@ public class RemoveUserAction implements PermissionsWsAction {
     DbSession dbSession = dbClient.openSession(false);
     try {
       PermissionRequest permissionRequest = new Builder(request).withUser().build();
-      PermissionChange permissionChange = permissionWsCommons.buildUserPermissionChange(dbSession, permissionRequest);
+      PermissionChange permissionChange = permissionChangeBuilder.buildUserPermissionChange(dbSession, permissionRequest);
       permissionUpdater.removePermission(permissionChange);
 
       response.noContent();
index b6d7d62300eb02be982f14ffa0d22a8d234ab325..0931ab9b32d202107d69fc5baa7ad81525910b21 100644 (file)
@@ -28,6 +28,8 @@ import org.sonar.api.server.ws.WebService;
 import org.sonar.api.server.ws.WebService.Param;
 import org.sonar.api.server.ws.WebService.SelectionMode;
 import org.sonar.core.permission.UserWithPermission;
+import org.sonar.db.DbClient;
+import org.sonar.db.DbSession;
 import org.sonar.db.component.ComponentDto;
 import org.sonar.db.permission.PermissionQuery;
 import org.sonar.server.permission.PermissionFinder;
@@ -47,14 +49,16 @@ import static org.sonar.server.ws.WsUtils.writeProtobuf;
 
 public class UsersAction implements PermissionsWsAction {
 
+  private final DbClient dbClient;
   private final UserSession userSession;
   private final PermissionFinder permissionFinder;
-  private final PermissionWsCommons permissionWsCommons;
+  private final PermissionDependenciesFinder dependenciesFinder;
 
-  public UsersAction(UserSession userSession, PermissionFinder permissionFinder, PermissionWsCommons permissionWsCommons) {
+  public UsersAction(DbClient dbClient, UserSession userSession, PermissionFinder permissionFinder, PermissionDependenciesFinder dependenciesFinder) {
+    this.dbClient = dbClient;
     this.userSession = userSession;
-    this.permissionWsCommons = permissionWsCommons;
     this.permissionFinder = permissionFinder;
+    this.dependenciesFinder = dependenciesFinder;
   }
 
   @Override
@@ -80,13 +84,18 @@ public class UsersAction implements PermissionsWsAction {
 
   @Override
   public void handle(Request wsRequest, Response wsResponse) throws Exception {
-    PermissionRequest request = new Builder(wsRequest).withPagination().build();
-    Optional<ComponentDto> project = permissionWsCommons.searchProject(request);
-    checkProjectAdminUserByComponentDto(userSession, project);
-    PermissionQuery permissionQuery = buildPermissionQuery(request, project);
-    UsersResponse usersResponse = usersResponse(permissionQuery, request.page(), request.pageSize());
+    DbSession dbSession = dbClient.openSession(false);
+    try {
+      PermissionRequest request = new Builder(wsRequest).withPagination().build();
+      Optional<ComponentDto> project = dependenciesFinder.searchProject(dbSession, request);
+      checkProjectAdminUserByComponentDto(userSession, project);
+      PermissionQuery permissionQuery = buildPermissionQuery(request, project);
+      UsersResponse usersResponse = usersResponse(permissionQuery, request.page(), request.pageSize());
 
-    writeProtobuf(usersResponse, wsRequest, wsResponse);
+      writeProtobuf(usersResponse, wsRequest, wsResponse);
+    } finally {
+      dbClient.closeSession(dbSession);
+    }
   }
 
   private UsersResponse usersResponse(PermissionQuery permissionQuery, int page, int pageSize) {
index 39bcbd53351339e9e1bebd509d2c292bc2159794..5243d1d1fcc998fd903ad0216ab1840e3294eec6 100644 (file)
@@ -49,12 +49,12 @@ import static org.mockito.Mockito.verify;
 import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.db.component.ComponentTesting.newProjectDto;
 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.Parameters.PARAM_GROUP_ID;
 import static org.sonar.server.permission.ws.Parameters.PARAM_GROUP_NAME;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PERMISSION;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_KEY;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_UUID;
+import static org.sonar.server.permission.ws.PermissionsWs.ENDPOINT;
 
 @Category(DbTests.class)
 public class AddGroupActionTest {
@@ -73,13 +73,17 @@ public class AddGroupActionTest {
     permissionUpdater = mock(PermissionUpdater.class);
     permissionChangeCaptor = ArgumentCaptor.forClass(PermissionChange.class);
     dbClient = db.getDbClient();
+    ComponentFinder componentFinder = new ComponentFinder(dbClient);
     ws = new WsTester(new PermissionsWs(
-      new AddGroupAction(dbClient, new PermissionWsCommons(dbClient, new ComponentFinder(dbClient)), permissionUpdater)));
+      new AddGroupAction(dbClient, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder)), permissionUpdater)));
     userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN);
   }
 
   @Test
   public void call_permission_service_with_right_data() throws Exception {
+    insertGroup("sonar-administrators");
+    commit();
+
     newRequest()
       .setParam(PARAM_GROUP_NAME, "sonar-administrators")
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
index accadb3fb654ba390c016d70ba873b6703848e2e..69f9523beddc77e1aaadc9c80d02950315c5e742 100644 (file)
@@ -49,11 +49,11 @@ import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.component.ComponentTesting.newProjectDto;
 import static org.sonar.server.permission.ws.AddUserAction.ACTION;
-import static org.sonar.server.permission.ws.PermissionsWs.ENDPOINT;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PERMISSION;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_KEY;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_UUID;
 import static org.sonar.server.permission.ws.Parameters.PARAM_USER_LOGIN;
+import static org.sonar.server.permission.ws.PermissionsWs.ENDPOINT;
 
 @Category(DbTests.class)
 public class AddUserActionTest {
@@ -73,8 +73,9 @@ public class AddUserActionTest {
     permissionUpdater = mock(PermissionUpdater.class);
     dbClient = db.getDbClient();
     dbSession = db.getSession();
+    ComponentFinder componentFinder = new ComponentFinder(dbClient);
     ws = new WsTester(new PermissionsWs(
-      new AddUserAction(dbClient, permissionUpdater, new PermissionWsCommons(dbClient, new ComponentFinder(dbClient)))));
+      new AddUserAction(dbClient, permissionUpdater, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder)))));
     userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN);
   }
 
index 9e042d8ede15567f8d1ee609cfd8eb80d9d6c016..6fa7c5211c1d7bef93374948f02f5329049bdd4f 100644 (file)
@@ -77,8 +77,7 @@ public class GroupsActionTest {
     dbClient = db.getDbClient();
     dbSession = db.getSession();
     PermissionFinder permissionFinder = new PermissionFinder(dbClient);
-    PermissionWsCommons permissionWsCommons = new PermissionWsCommons(dbClient, new ComponentFinder(dbClient));
-    underTest = new GroupsAction(userSession, permissionFinder, permissionWsCommons);
+    underTest = new GroupsAction(dbClient, userSession, permissionFinder, new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient)));
     ws = new WsActionTester(underTest);
 
     userSession.login("login").setGlobalPermissions(SYSTEM_ADMIN);
index 4181321730c12593ad97e6c079ffd63b4586f78b..29496c25b3f027ad092be4b359d2fbe9a4d4194a 100644 (file)
@@ -30,6 +30,6 @@ public class PermissionsWsModuleTest {
   public void verify_count_of_added_components() {
     ComponentContainer container = new ComponentContainer();
     new PermissionsWsModule().configure(container);
-    assertThat(container.size()).isEqualTo(13);
+    assertThat(container.size()).isEqualTo(14);
   }
 }
index 2ed6b19c6e3a632996b70aa1788d4755a394c4db..4e85fdb1efe636e867466b481eef22e27986b510 100644 (file)
@@ -28,6 +28,7 @@ import org.junit.rules.ExpectedException;
 import org.mockito.ArgumentCaptor;
 import org.sonar.api.utils.System2;
 import org.sonar.api.web.UserRole;
+import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.DbTester;
 import org.sonar.db.component.ComponentDto;
@@ -48,12 +49,12 @@ import static org.mockito.Mockito.verify;
 import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.component.ComponentTesting.newProjectDto;
-import static org.sonar.server.permission.ws.RemoveGroupAction.ACTION;
 import static org.sonar.server.permission.ws.Parameters.PARAM_GROUP_ID;
 import static org.sonar.server.permission.ws.Parameters.PARAM_GROUP_NAME;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PERMISSION;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_KEY;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_UUID;
+import static org.sonar.server.permission.ws.RemoveGroupAction.ACTION;
 
 @Category(DbTests.class)
 public class RemoveGroupActionTest {
@@ -70,13 +71,18 @@ public class RemoveGroupActionTest {
   @Before
   public void setUp() {
     permissionUpdater = mock(PermissionUpdater.class);
+    DbClient dbClient = db.getDbClient();
+    ComponentFinder componentFinder = new ComponentFinder(dbClient);
     ws = new WsTester(new PermissionsWs(
-      new RemoveGroupAction(db.getDbClient(), new PermissionWsCommons(db.getDbClient(), new ComponentFinder(db.getDbClient())), permissionUpdater)));
+      new RemoveGroupAction(dbClient, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder)), permissionUpdater)));
     userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN);
   }
 
   @Test
   public void call_permission_service_with_right_data() throws Exception {
+    insertGroup("sonar-administrators");
+    commit();
+
     newRequest()
       .setParam(PARAM_GROUP_NAME, "sonar-administrators")
       .setParam(PARAM_PERMISSION, SYSTEM_ADMIN)
@@ -106,6 +112,7 @@ public class RemoveGroupActionTest {
   @Test
   public void remove_with_project_uuid() throws Exception {
     insertComponent(newProjectDto("project-uuid").setKey("project-key"));
+    insertGroup("sonar-administrators");
     commit();
 
     newRequest()
@@ -122,6 +129,7 @@ public class RemoveGroupActionTest {
   @Test
   public void remove_with_project_key() throws Exception {
     insertComponent(newProjectDto("project-uuid").setKey("project-key"));
+    insertGroup("sonar-administrators");
     commit();
 
     newRequest()
@@ -160,6 +168,7 @@ public class RemoveGroupActionTest {
   public void fail_when_component_is_not_a_project() throws Exception {
     expectedException.expect(BadRequestException.class);
     insertComponent(newFileDto(newProjectDto("project-uuid"), "file-uuid"));
+    insertGroup("sonar-administrators");
     commit();
 
     newRequest()
index f1d6a3b75089145ea49e4421c326bdba8d4aa9e2..4970e7912108967679b0449540e444fcbf532eae 100644 (file)
@@ -48,12 +48,12 @@ import static org.mockito.Mockito.verify;
 import static org.sonar.core.permission.GlobalPermissions.SYSTEM_ADMIN;
 import static org.sonar.db.component.ComponentTesting.newFileDto;
 import static org.sonar.db.component.ComponentTesting.newProjectDto;
-import static org.sonar.server.permission.ws.PermissionsWs.ENDPOINT;
-import static org.sonar.server.permission.ws.RemoveUserAction.ACTION;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PERMISSION;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_KEY;
 import static org.sonar.server.permission.ws.Parameters.PARAM_PROJECT_UUID;
 import static org.sonar.server.permission.ws.Parameters.PARAM_USER_LOGIN;
+import static org.sonar.server.permission.ws.PermissionsWs.ENDPOINT;
+import static org.sonar.server.permission.ws.RemoveUserAction.ACTION;
 
 @Category(DbTests.class)
 public class RemoveUserActionTest {
@@ -73,8 +73,9 @@ public class RemoveUserActionTest {
     permissionUpdater = mock(PermissionUpdater.class);
     dbClient = db.getDbClient();
     dbSession = db.getSession();
+    ComponentFinder componentFinder = new ComponentFinder(dbClient);
     ws = new WsTester(new PermissionsWs(
-      new RemoveUserAction(dbClient, permissionUpdater, new PermissionWsCommons(dbClient, new ComponentFinder(dbClient)))));
+      new RemoveUserAction(dbClient, permissionUpdater, new PermissionChangeBuilder(new PermissionDependenciesFinder(dbClient, componentFinder)))));
     userSession.login("admin").setGlobalPermissions(SYSTEM_ADMIN);
   }
 
index af5c8f33e724ee9b38e72be1596ca5ea94b4dd85..dc496247c027fc3be49d863c141692d6289b3db5 100644 (file)
@@ -72,8 +72,8 @@ public class UsersActionTest {
   @Before
   public void setUp() {
     PermissionFinder permissionFinder = new PermissionFinder(dbClient);
-    PermissionWsCommons permissionWsCommons = new PermissionWsCommons(dbClient, new ComponentFinder(dbClient));
-    underTest = new UsersAction(userSession, permissionFinder, permissionWsCommons);
+    PermissionDependenciesFinder dependenciesFinder = new PermissionDependenciesFinder(dbClient, new ComponentFinder(dbClient));
+    underTest = new UsersAction(dbClient, userSession, permissionFinder, dependenciesFinder);
     ws = new WsActionTester(underTest);
 
     userSession.login("login").setGlobalPermissions(SYSTEM_ADMIN);