]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8297 organization in WS api/permissions/template_users
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Sun, 16 Oct 2016 21:13:12 +0000 (23:13 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Sun, 16 Oct 2016 21:16:40 +0000 (23:16 +0200)
server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateUsersAction.java
server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/TemplateUsersActionTest.java

index a5bd02eb378c0b5924caa939a1197d483bbce25b..cf0656f42abc355dd85a09d4fe64f6edf4e86ad8 100644 (file)
@@ -23,6 +23,7 @@ import com.google.common.collect.Multimap;
 import com.google.common.collect.Ordering;
 import com.google.common.collect.TreeMultimap;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
@@ -47,7 +48,7 @@ import static org.sonar.api.server.ws.WebService.Param.TEXT_QUERY;
 import static org.sonar.db.permission.PermissionQuery.DEFAULT_PAGE_SIZE;
 import static org.sonar.db.permission.PermissionQuery.RESULTS_MAX_SIZE;
 import static org.sonar.db.permission.PermissionQuery.SEARCH_QUERY_MIN_LENGTH;
-import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser;
+import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdmin;
 import static org.sonar.server.permission.ws.PermissionRequestValidator.validateProjectPermission;
 import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createProjectPermissionParameter;
 import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createTemplateParameters;
@@ -89,11 +90,10 @@ public class TemplateUsersAction implements PermissionsWsAction {
 
   @Override
   public void handle(Request wsRequest, Response wsResponse) throws Exception {
-    checkGlobalAdminUser(userSession);
-
     try (DbSession dbSession = dbClient.openSession(false)) {
       WsTemplateRef templateRef = WsTemplateRef.fromRequest(wsRequest);
       PermissionTemplateDto template = support.findTemplate(dbSession, templateRef);
+      checkProjectAdmin(userSession, template.getOrganizationUuid(), Optional.empty());
 
       PermissionQuery query = buildQuery(wsRequest, template);
       int total = dbClient.permissionTemplateDao().countUserLoginsByQueryAndTemplate(dbSession, query, template.getId());
index cfca5e411b2a94fb5a678ffbe327db6df066f87b..0f2df7b115dba9a3ec2b167714bf1058a0bcf963 100644 (file)
@@ -31,7 +31,6 @@ import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.exceptions.UnauthorizedException;
 import org.sonar.server.permission.ws.BasePermissionWsTest;
-import org.sonar.server.permission.ws.template.TemplateUsersAction;
 import org.sonar.server.ws.WsTester;
 import org.sonarqube.ws.WsPermissions;
 
@@ -40,7 +39,7 @@ import static org.sonar.api.web.UserRole.ADMIN;
 import static org.sonar.api.web.UserRole.CODEVIEWER;
 import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
 import static org.sonar.api.web.UserRole.USER;
-import static org.sonar.db.permission.template.PermissionTemplateTesting.newPermissionTemplateDto;
+import static org.sonar.core.permission.GlobalPermissions.SCAN_EXECUTION;
 import static org.sonar.db.permission.template.PermissionTemplateTesting.newPermissionTemplateUserDto;
 import static org.sonar.db.user.UserTesting.newUserDto;
 import static org.sonar.test.JsonAssert.assertJson;
@@ -62,31 +61,31 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
     UserDto user1 = insertUser(newUserDto().setLogin("admin").setName("Administrator").setEmail("admin@admin.com"));
     UserDto user2 = insertUser(newUserDto().setLogin("george.orwell").setName("George Orwell").setEmail("george.orwell@1984.net"));
 
-    PermissionTemplateDto template1 = insertTemplate("template-uuid-1");
+    PermissionTemplateDto template1 = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(CODEVIEWER, template1, user1));
     addUserToTemplate(newPermissionTemplateUser(CODEVIEWER, template1, user2));
     addUserToTemplate(newPermissionTemplateUser(ADMIN, template1, user2));
+    loginAsAdminOnDefaultOrganization();
 
-    loginAsAdmin();
     String result = newRequest(null, template1.getUuid()).execute().outputAsString();
     assertJson(result).isSimilarTo(getClass().getResource("template_users-example.json"));
   }
 
   @Test
   public void search_for_users_by_template_name() throws Exception {
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
 
     UserDto user1 = insertUser(newUserDto().setLogin("login-1").setName("name-1").setEmail("email-1"));
     UserDto user2 = insertUser(newUserDto().setLogin("login-2").setName("name-2").setEmail("email-2"));
     UserDto user3 = insertUser(newUserDto().setLogin("login-3").setName("name-3").setEmail("email-3"));
 
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, template, user1));
     addUserToTemplate(newPermissionTemplateUser(USER, template, user2));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user1));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user3));
 
-    PermissionTemplateDto anotherTemplate = insertTemplate("template-uuid-2");
+    PermissionTemplateDto anotherTemplate = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, anotherTemplate, user1));
 
     byte[] bytes = newRequest(null, null)
@@ -103,19 +102,19 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   @Test
   public void search_using_text_query() throws Exception {
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
 
     UserDto user1 = insertUser(newUserDto().setLogin("login-1").setName("name-1").setEmail("email-1"));
     UserDto user2 = insertUser(newUserDto().setLogin("login-2").setName("name-2").setEmail("email-2"));
     UserDto user3 = insertUser(newUserDto().setLogin("login-3").setName("name-3").setEmail("email-3"));
 
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, template, user1));
     addUserToTemplate(newPermissionTemplateUser(USER, template, user2));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user1));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user3));
 
-    PermissionTemplateDto anotherTemplate = insertTemplate("template-uuid-2");
+    PermissionTemplateDto anotherTemplate = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, anotherTemplate, user1));
 
     byte[] bytes = newRequest(null, null)
@@ -134,16 +133,16 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
     UserDto user2 = insertUser(newUserDto().setLogin("login-2").setName("name-2").setEmail("email-2"));
     UserDto user3 = insertUser(newUserDto().setLogin("login-3").setName("name-3").setEmail("email-3"));
 
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, template, user1));
     addUserToTemplate(newPermissionTemplateUser(USER, template, user2));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user1));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user3));
 
-    PermissionTemplateDto anotherTemplate = insertTemplate("template-uuid-2");
+    PermissionTemplateDto anotherTemplate = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, anotherTemplate, user1));
 
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
     byte[] bytes = newRequest(USER, template.getUuid())
       .setMediaType(PROTOBUF)
       .execute().output();
@@ -159,16 +158,16 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
     UserDto user2 = insertUser(newUserDto().setLogin("login-2").setName("name-2").setEmail("email-2"));
     UserDto user3 = insertUser(newUserDto().setLogin("login-3").setName("name-3").setEmail("email-3"));
 
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, template, user1));
     addUserToTemplate(newPermissionTemplateUser(USER, template, user2));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user1));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user3));
 
-    PermissionTemplateDto anotherTemplate = insertTemplate("template-uuid-2");
+    PermissionTemplateDto anotherTemplate = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, anotherTemplate, user1));
 
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
     byte[] bytes = newRequest(USER, null)
       .setParam(PARAM_TEMPLATE_NAME, template.getName())
       .setParam(WebService.Param.SELECTED, "all")
@@ -187,12 +186,12 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
     UserDto user2 = insertUser(newUserDto().setLogin("login-3").setName("name-3"));
     UserDto user3 = insertUser(newUserDto().setLogin("login-1").setName("name-1"));
 
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, template, user1));
     addUserToTemplate(newPermissionTemplateUser(USER, template, user2));
     addUserToTemplate(newPermissionTemplateUser(ISSUE_ADMIN, template, user3));
 
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
     byte[] bytes = newRequest(null, null)
       .setParam(PARAM_TEMPLATE_NAME, template.getName())
       .setMediaType(PROTOBUF)
@@ -205,11 +204,11 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
   @Test
   public void empty_result_when_no_user_on_template() throws Exception {
     UserDto user = insertUser(newUserDto().setLogin("login-1").setName("name-1").setEmail("email-1"));
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
-    PermissionTemplateDto anotherTemplate = insertTemplate("template-uuid-2");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
+    PermissionTemplateDto anotherTemplate = addTemplateToDefaultOrganization();
     addUserToTemplate(newPermissionTemplateUser(USER, anotherTemplate, user));
 
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
     byte[] bytes = newRequest(null, null)
       .setParam(PARAM_TEMPLATE_NAME, template.getName())
       .setMediaType(PROTOBUF)
@@ -222,8 +221,8 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   @Test
   public void fail_if_not_a_project_permission() throws Exception {
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
-    loginAsAdmin();
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
+    loginAsAdminOnDefaultOrganization();
 
     expectedException.expect(IllegalArgumentException.class);
 
@@ -233,7 +232,7 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   @Test
   public void fail_if_no_template_param() throws Exception {
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
 
     expectedException.expect(BadRequestException.class);
 
@@ -243,7 +242,7 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   @Test
   public void fail_if_template_does_not_exist() throws Exception {
-    loginAsAdmin();
+    loginAsAdminOnDefaultOrganization();
 
     expectedException.expect(NotFoundException.class);
 
@@ -253,8 +252,8 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   @Test
   public void fail_if_template_uuid_and_name_provided() throws Exception {
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
-    loginAsAdmin();
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
+    loginAsAdminOnDefaultOrganization();
 
     expectedException.expect(BadRequestException.class);
 
@@ -265,7 +264,7 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   @Test
   public void fail_if_not_logged_in() throws Exception {
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
     userSession.anonymous();
 
     expectedException.expect(UnauthorizedException.class);
@@ -275,8 +274,8 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
 
   @Test
   public void fail_if_insufficient_privileges() throws Exception {
-    PermissionTemplateDto template = insertTemplate("template-uuid-1");
-    userSession.login("login");
+    PermissionTemplateDto template = addTemplateToDefaultOrganization();
+    userSession.login().addOrganizationPermission(db.getDefaultOrganization().getUuid(), SCAN_EXECUTION);
 
     expectedException.expect(ForbiddenException.class);
 
@@ -287,12 +286,6 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
     return db.users().insertUser(userDto);
   }
 
-  private PermissionTemplateDto insertTemplate(String uuid) {
-    PermissionTemplateDto dto = db.getDbClient().permissionTemplateDao().insert(db.getSession(), newPermissionTemplateDto().setUuid(uuid));
-    db.commit();
-    return dto;
-  }
-
   private void addUserToTemplate(PermissionTemplateUserDto dto) {
     db.getDbClient().permissionTemplateDao().insertUserPermission(db.getSession(), dto.getTemplateId(), dto.getUserId(), dto.getPermission());
     db.commit();
@@ -316,7 +309,4 @@ public class TemplateUsersActionTest extends BasePermissionWsTest<TemplateUsersA
     return request;
   }
 
-  private void loginAsAdmin() {
-    userSession.login("login").setGlobalPermissions(ADMIN);
-  }
 }