]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10046 adding minimum length validation to api/permissions
authorGuillaume Jambet <guillaume.jambet@sonarsource.com>
Tue, 7 Nov 2017 16:26:58 +0000 (17:26 +0100)
committerGuillaume Jambet <guillaume.jambet@gmail.com>
Thu, 9 Nov 2017 15:07:06 +0000 (16:07 +0100)
server/sonar-server/src/main/java/org/sonar/server/permission/ws/GroupsAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/UsersAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/TemplateGroupsAction.java
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/UsersActionTest.java

index 1f6e95b0f23f8afaf47162ee7122fdb6ea1f45ab..27077a53d97ed3933a4a057a8b6cd0a62df23b2d 100644 (file)
@@ -81,11 +81,13 @@ public class GroupsAction implements PermissionsWsAction {
         "<li>'Administer' rights on the specified project</li>" +
         "</ul>")
       .addPagingParams(DEFAULT_PAGE_SIZE, RESULTS_MAX_SIZE)
-      .addSearchQuery("sonar", "names").setDescription("Limit search to group names that contain the supplied string. Must have at least %d characters.<br/>" +
-        "When this parameter is not set, only groups having at least one permission are returned.", SEARCH_QUERY_MIN_LENGTH)
       .setResponseExample(Resources.getResource(getClass(), "groups-example.json"))
       .setHandler(this);
 
+    action.createSearchQuery("sonar", "names")
+      .setDescription("Limit search to group names that contain the supplied string. When this parameter is not set, only groups having at least one permission are returned.")
+      .setMinimumLength(SEARCH_QUERY_MIN_LENGTH);
+
     createOrganizationParameter(action).setSince("6.2");
     createPermissionParameter(action).setRequired(false);
     createProjectParameters(action);
index f7538691c9620f240257f6e7af6fc0e7916240e4..40d4946820f56e7a10e77bb2f0f1311eddc05426 100644 (file)
@@ -54,7 +54,6 @@ import static org.sonar.server.permission.ws.PermissionRequestValidator.validate
 import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createOrganizationParameter;
 import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createPermissionParameter;
 import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createProjectParameters;
-import static org.sonar.server.ws.WsUtils.checkRequest;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ORGANIZATION;
 import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PERMISSION;
@@ -91,8 +90,9 @@ public class UsersAction implements PermissionsWsAction {
       .setHandler(this);
 
     action.createParam(Param.TEXT_QUERY)
-      .setDescription("Limit search to user names that contain the supplied string. Must have at least %d characters.<br/>" +
-        "When this parameter is not set, only users having at least one permission are returned.", SEARCH_QUERY_MIN_LENGTH)
+      .setMinimumLength(SEARCH_QUERY_MIN_LENGTH)
+      .setDescription("Limit search to user names that contain the supplied string. <br/>" +
+        "When this parameter is not set, only users having at least one permission are returned.")
       .setExampleValue("eri");
 
     createOrganizationParameter(action).setSince("6.2");
@@ -136,9 +136,6 @@ public class UsersAction implements PermissionsWsAction {
     }
     if (textQuery == null) {
       permissionQuery.withAtLeastOnePermission();
-    } else {
-      checkRequest(textQuery.length() >= SEARCH_QUERY_MIN_LENGTH,
-        "The '%s' parameter must have at least %d characters", Param.TEXT_QUERY, SEARCH_QUERY_MIN_LENGTH);
     }
     return permissionQuery.build();
   }
index f10ba0fa49a7574511e23d67f4e26da9dad6781f..44c44ce26555061fccf464e9d218bffc19b9b6a5 100644 (file)
@@ -78,8 +78,9 @@ public class TemplateGroupsAction implements PermissionsWsAction {
       .setHandler(this);
 
     action.createParam(TEXT_QUERY)
-      .setDescription("Limit search to group names that contain the supplied string. Must have at least %d characters.<br/>" +
-        "When this parameter is not set, only group having at least one permission are returned.", SEARCH_QUERY_MIN_LENGTH)
+      .setMinimumLength(SEARCH_QUERY_MIN_LENGTH)
+      .setDescription("Limit search to group names that contain the supplied string. <br/>" +
+        "When this parameter is not set, only group having at least one permission are returned.")
       .setExampleValue("eri");
 
     createProjectPermissionParameter(action);
index 0c37f59f1c00c776744f29520957bf5bedf2d85b..ce703cbd3d5068215201bfaf8c211008ce6758ed 100644 (file)
@@ -85,8 +85,9 @@ public class TemplateUsersAction implements PermissionsWsAction {
       .setHandler(this);
 
     action.createParam(Param.TEXT_QUERY)
-      .setDescription("Limit search to user names that contain the supplied string. Must have at least %d characters.<br/>" +
-        "When this parameter is not set, only users having at least one permission are returned.", SEARCH_QUERY_MIN_LENGTH)
+      .setMinimumLength(SEARCH_QUERY_MIN_LENGTH)
+      .setDescription("Limit search to user names that contain the supplied string. <br/>" +
+        "When this parameter is not set, only users having at least one permission are returned.")
       .setExampleValue("eri");
     createProjectPermissionParameter(action).setRequired(false);
     createTemplateParameters(action);
index c424b43fc9917bacbfbf085f257356ebe587546e..777a086ab053f56ccae66ffa4343dd7fb086b282 100644 (file)
@@ -347,8 +347,8 @@ public class UsersActionTest extends BasePermissionWsTest<UsersAction> {
   public void fail_if_search_query_is_too_short() throws Exception {
     loginAsAdmin(db.getDefaultOrganization());
 
-    expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("The 'q' parameter must have at least 3 characters");
+    expectedException.expect(IllegalArgumentException.class);
+    expectedException.expectMessage("'q' length (2) is shorter than the minimum authorized (3)");
 
     newRequest().setParam(TEXT_QUERY, "ab").execute();
   }