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;
}
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);
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
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();
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;
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
@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) {
--- /dev/null
+/*
+ * 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());
+ }
+ }
+}
--- /dev/null
+/*
+ * 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()));
+ }
+}
+++ /dev/null
-/*
- * 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);
- }
- }
-}
UsersAction.class,
GroupsAction.class,
SearchGlobalPermissionsAction.class,
- PermissionWsCommons.class,
+ PermissionChangeBuilder.class,
SearchProjectPermissionsAction.class,
- SearchProjectPermissionsDataLoader.class);
+ SearchProjectPermissionsDataLoader.class,
+ PermissionDependenciesFinder.class);
}
}
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;
}
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);
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
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();
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;
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
@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) {
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 {
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)
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 {
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);
}
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);
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);
}
}
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;
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 {
@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)
@Test
public void remove_with_project_uuid() throws Exception {
insertComponent(newProjectDto("project-uuid").setKey("project-key"));
+ insertGroup("sonar-administrators");
commit();
newRequest()
@Test
public void remove_with_project_key() throws Exception {
insertComponent(newProjectDto("project-uuid").setKey("project-key"));
+ insertGroup("sonar-administrators");
commit();
newRequest()
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()
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 {
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);
}
@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);