]> source.dussan.org Git - sonarqube.git/commitdiff
Add consistency in error messages of permissions WS
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Tue, 18 Aug 2015 15:57:29 +0000 (17:57 +0200)
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Tue, 18 Aug 2015 16:07:39 +0000 (18:07 +0200)
15 files changed:
server/sonar-server/src/main/java/org/sonar/server/component/ComponentFinder.java
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/PermissionRequest.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/PermissionWsCommons.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/SearchGlobalPermissionsAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java
server/sonar-server/src/test/java/org/sonar/server/plugins/ws/InstallActionTest.java
server/sonar-server/src/test/java/org/sonar/server/plugins/ws/UninstallActionTest.java
server/sonar-server/src/test/java/org/sonar/server/plugins/ws/UpdateActionTest.java
server/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java
sonar-plugin-api/src/main/java/org/sonar/api/server/ws/Request.java
sonar-plugin-api/src/test/java/org/sonar/api/server/ws/RequestTest.java

index aadbf41dfa7ebc4e6882335e61bdc24816af7cd9..19c594d22891300aa851d775491eadde204e5405 100644 (file)
@@ -57,7 +57,12 @@ public class ComponentFinder {
   }
 
   public ComponentDto getProjectByUuidOrKey(DbSession dbSession, @Nullable String projectUuid, @Nullable String projectKey) {
-    ComponentDto project = getByUuidOrKey(dbSession, projectUuid, projectKey);
+    ComponentDto project;
+    if (projectUuid != null) {
+      project = getIfPresentOrFail(dbClient.componentDao().selectByUuid(dbSession, projectUuid), String.format("Project id '%s' not found", projectUuid));
+    } else {
+      project = getIfPresentOrFail(dbClient.componentDao().selectByKey(dbSession, projectKey), String.format("Project key '%s' not found", projectKey));
+    }
     checkIsProjectOrModule(project);
 
     return project;
index 6e7ec7c6afcf51ae00fe28c522fbc65349a7e5b7..0d52a7e2e44d7e56f38bbc95962cd7d462e6a469 100644 (file)
@@ -53,9 +53,9 @@ public class AddGroupAction implements PermissionsWsAction {
   public void define(WebService.NewController context) {
     WebService.NewAction action = context.createAction(ACTION)
       .setDescription("Add permission to a group.<br /> " +
-        "If the project id is provided, a project permission is created.<br />" +
+        "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
         "The group name or group id must be provided. <br />" +
-        "Requires 'Administer System' permission.")
+        "It requires administration permissions to access.")
       .setSince("5.2")
       .setPost(true)
       .setHandler(this);
index 525bb3a98c5c15d14385ce62e4051ad99d4ed291..56516f8cae931f48d65ba0fca66736495288fa8c 100644 (file)
@@ -52,8 +52,8 @@ public class AddUserAction implements PermissionsWsAction {
   public void define(WebService.NewController context) {
     WebService.NewAction action = context.createAction(ACTION)
       .setDescription("Add permission to a user.<br /> " +
-        "If the project id or project key is provided, a project permission is created.<br />" +
-        "Requires 'Administer System' permission.")
+        "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br />" +
+        "It requires administration permissions to access.")
       .setSince("5.2")
       .setPost(true)
       .setHandler(this);
index 43431e0be3d227b7a70c1c472cbcdccad851e61d..96f3661ea20bf480bf1ecfe2ff319b281bde47fe 100644 (file)
@@ -175,12 +175,13 @@ public class PermissionRequest {
     private void checkPermissionParameter() {
       if (_hasProject) {
         if (!ComponentPermissions.ALL.contains(_permission)) {
-          throw new BadRequestException(String.format("Value of parameter '%s' (%s) for project permissions must be one of %s.", PARAM_PERMISSION, _permission,
-            PROJECT_PERMISSIONS_ONE_LINE));
+          throw new BadRequestException(String.format("The '%s' parameter for project permissions must be one of %s. '%s' was passed.", PARAM_PERMISSION,
+            PROJECT_PERMISSIONS_ONE_LINE, _permission));
         }
       } else if (!GlobalPermissions.ALL.contains(_permission)) {
-        throw new BadRequestException(String.format("Value of parameter '%s' (%s) for global permissions must be one of: %s.", PARAM_PERMISSION, _permission,
-          GLOBAL_PERMISSIONS_ONE_LINE));
+        throw new BadRequestException(String.format("The '%s' parameter for global permissions must be one of %s. '%s' was passed.", PARAM_PERMISSION, GLOBAL_PERMISSIONS_ONE_LINE,
+          _permission
+          ));
       }
     }
   }
index a825a075c716240aeb3570be788754575c5f3525..8a0a5f7ed344d9fa8a4cc8deec8c958f6bf190ed 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.permission.ws;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableSortedSet;
 import javax.annotation.Nullable;
 import org.sonar.api.server.ws.WebService.NewAction;
 import org.sonar.api.web.UserRole;
@@ -56,10 +55,6 @@ public class PermissionWsCommons {
     "</ul>",
     GLOBAL_PERMISSIONS_ONE_LINE,
     PROJECT_PERMISSIONS_ONE_LINE);
-  private static final ImmutableSortedSet<Comparable<?>> POSSIBLE_PERMISSIONS = ImmutableSortedSet.naturalOrder()
-    .addAll(GlobalPermissions.ALL)
-    .addAll(ComponentPermissions.ALL)
-    .build();
 
   private final DbClient dbClient;
   private final ComponentFinder componentFinder;
@@ -141,8 +136,7 @@ public class PermissionWsCommons {
   static void createPermissionParameter(NewAction action) {
     action.createParam(PARAM_PERMISSION)
       .setDescription(PERMISSION_PARAM_DESCRIPTION)
-      .setRequired(true)
-      .setPossibleValues(POSSIBLE_PERMISSIONS);
+      .setRequired(true);
   }
 
   static void createGroupNameParameter(NewAction action) {
index 0df209ca6ba92ae017261fa9dad1d08f3376f638..a95ce9dbc0bebe698c8189c8d628ca9d7c877ff7 100644 (file)
@@ -52,10 +52,10 @@ public class RemoveGroupAction implements PermissionsWsAction {
   @Override
   public void define(WebService.NewController context) {
     WebService.NewAction action = context.createAction(ACTION)
-      .setDescription("Remove permission from a group.<br /> " +
+      .setDescription("Remove a permission from a group.<br /> " +
+        "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
         "The group id or group name must be provided, not both.<br />" +
-        "If the project id or project key is provided, a project permission is removed.<br />" +
-        "Requires 'Administer System' permission.")
+        "It requires administration permissions to access.")
       .setSince("5.2")
       .setPost(true)
       .setHandler(this);
index ae94c3b133b80cabc3a16faf994311326a5f3667..cf5a3509744220b9648833d4f0f1c49bc96193e8 100644 (file)
@@ -52,8 +52,8 @@ public class RemoveUserAction implements PermissionsWsAction {
   public void define(WebService.NewController context) {
     WebService.NewAction action = context.createAction(ACTION)
       .setDescription("Remove permission from a user.<br /> " +
-        "If the project id or project key is provided, a project permission is removed.<br />" +
-        "Requires 'Administer System' permission.")
+        "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
+        "It requires administration permissions to access.")
       .setSince("5.2")
       .setPost(true)
       .setHandler(this);
index 04f7ebffcdf380d535c900679e3508a53e0dbeb9..6d5591a5c5b7309660416095b25b7981294e5928 100644 (file)
@@ -52,7 +52,7 @@ public class SearchGlobalPermissionsAction implements PermissionsWsAction {
   public void define(WebService.NewController context) {
     context.createAction("search_global_permissions")
       .setDescription("List global permissions. <br />" +
-        "Requires 'Administer System' permission.")
+        "It requires administration permissions to access.")
       .setResponseExample(getClass().getResource("search_global_permissions-example.json"))
       .setSince("5.2")
       .setHandler(this);
index 45978a3680f555cf1436b7140546821d78b75adc..3160673efead84ac1660a01fe087d674dc5ed05c 100644 (file)
@@ -60,7 +60,7 @@ public class UsersAction implements PermissionsWsAction {
       .setDescription(String.format("Lists the users that have been granted the specified permission as individual users rather than through group affiliation. <br />" +
         "This service defaults to global permissions, but can be limited to project permissions by providing project id or project key.<br /> " +
         "If the query parameter '%s' is specified, the '%s' parameter is forced to '%s'.<br />" +
-        "It requires administration permissions to access.<br /> ",
+        "It requires administration permissions to access.<br />",
         Param.TEXT_QUERY, Param.SELECTED, SelectionMode.ALL.value()))
       .addPagingParams(100)
       .addSearchQuery("stas", "names")
index fd4d2cd478f41a218d46461ce93376e32a620f20..284b780b238c845390b9d328be0319bf25346296 100644 (file)
@@ -111,7 +111,6 @@ public class InstallActionTest {
   @Test
   public void IAE_is_raised_when_key_param_is_not_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Parameter 'key' is missing");
 
     invalidRequest.execute();
   }
index 4bf85e00f1b259f15f89d0eb4a63f0058f0e266f..6fe4c07ceb4742445f048f3f89db4cc012817486 100644 (file)
@@ -92,7 +92,6 @@ public class UninstallActionTest {
   @Test
   public void IAE_is_raised_when_key_param_is_not_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Parameter 'key' is missing");
 
     underTest.handle(invalidRequest, response);
   }
index 4f840c72b4961f1d5a3a5b9758c6a34df92829a9..d56aae153f07e86420c1975054316a8a2cb8eae2 100644 (file)
@@ -113,7 +113,6 @@ public class UpdateActionTest {
   @Test
   public void IAE_is_raised_when_key_param_is_not_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Parameter 'key' is missing");
 
     underTest.handle(invalidRequest, response);
   }
index 3a95eefd30b48491e28af142c8778e778c24ba37..1dc9fa46239ef990d5b3855d60ef0cd5c89fe0bf 100644 (file)
@@ -187,7 +187,7 @@ public class WebServiceEngineTest {
     ServletResponse response = new ServletResponse();
     engine.execute(request, response, "api/system", "print");
 
-    assertThat(response.stream().outputAsString()).isEqualTo("{\"errors\":[{\"msg\":\"Parameter 'message' is missing\"}]}");
+    assertThat(response.stream().outputAsString()).isEqualTo("{\"errors\":[{\"msg\":\"The 'message' parameter is missing\"}]}");
   }
 
   @Test
index 5c6eb1d4b4cb310e09506dbf80a0b72a00590f04..53ada6440c5b9cf1e58b78fe9b30164557af95cc 100644 (file)
@@ -59,7 +59,7 @@ public abstract class Request {
   public String mandatoryParam(String key) {
     String value = param(key);
     if (value == null) {
-      throw new IllegalArgumentException(String.format("Parameter '%s' is missing", key));
+      throw new IllegalArgumentException(String.format("The '%s' parameter is missing", key));
     }
     return value;
   }
@@ -101,7 +101,7 @@ public abstract class Request {
   public List<String> mandatoryParamAsStrings(String key) {
     List<String> values = paramAsStrings(key);
     if (values == null) {
-      throw new IllegalArgumentException(String.format("Parameter '%s' is missing", key));
+      throw new IllegalArgumentException(String.format("The '%s' parameter is missing", key));
     }
     return values;
   }
index 6e86a7c9be30b9ac71b3c04b5f61950e228d2c6b..5cae0e2cdda13a6b6361356d650c5e1183d28fc9 100644 (file)
@@ -137,7 +137,7 @@ public class RequestTest {
       request.mandatoryParam("required_param");
       fail();
     } catch (IllegalArgumentException e) {
-      assertThat(e).hasMessage("Parameter 'required_param' is missing");
+      assertThat(e).hasMessage("The 'required_param' parameter is missing");
     }
   }
 
@@ -160,7 +160,7 @@ public class RequestTest {
     try {
       request.mandatoryParamAsStrings("a_required_string");
     } catch (IllegalArgumentException e) {
-      assertThat(e).hasMessage("Parameter 'a_required_string' is missing");
+      assertThat(e).hasMessage("The 'a_required_string' parameter is missing");
     }
 
     request.setParam("a_required_string", "foo,bar");