aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2016-02-15 13:35:44 +0100
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2016-02-15 14:23:55 +0100
commite5047e3c19e5c021a4ea775a5a05d301368ff6c5 (patch)
treef00acf4b44bd09374f3b2a8c02512cdc8f501f58
parent89a93e795af89c98f5e99de60620c21287f7889e (diff)
downloadsonarqube-e5047e3c19e5c021a4ea775a5a05d301368ff6c5.tar.gz
sonarqube-e5047e3c19e5c021a4ea775a5a05d301368ff6c5.zip
SONAR-7187 WS api/ce/activity limit pagination to 1000 tasks
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActivityAction.java5
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActivityActionTest.java18
2 files changed, 18 insertions, 5 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActivityAction.java b/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActivityAction.java
index fca135da732..2e1d60a9d5e 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActivityAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/ws/ActivityAction.java
@@ -69,6 +69,8 @@ import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_STATUS;
import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_TYPE;
public class ActivityAction implements CeWsAction {
+ private static final int MAX_PAGE_SIZE = 1000;
+
private final UserSession userSession;
private final DbClient dbClient;
private final TaskFormatter formatter;
@@ -128,7 +130,7 @@ public class ActivityAction implements CeWsAction {
action.createParam(PARAM_MAX_EXECUTED_AT)
.setDescription("Maximum date of end of task processing")
.setExampleValue(DateUtils.formatDateTime(new Date()));
- action.addPagingParams(100);
+ action.addPagingParams(100, MAX_PAGE_SIZE);
}
@Override
@@ -262,6 +264,7 @@ public class ActivityAction implements CeWsAction {
checkRequest(activityWsRequest.getComponentId() == null || activityWsRequest.getComponentQuery() == null, "%s and %s must not be set at the same time",
PARAM_COMPONENT_ID, PARAM_COMPONENT_QUERY);
+ checkRequest(activityWsRequest.getPageSize() <= MAX_PAGE_SIZE, "The '%s' parameter must be less than %d", Param.PAGE_SIZE, MAX_PAGE_SIZE);
return activityWsRequest;
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActivityActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActivityActionTest.java
index 967c93dcb75..44385edf3bd 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActivityActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActivityActionTest.java
@@ -29,7 +29,7 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.sonar.api.server.ws.WebService;
+import org.sonar.api.server.ws.WebService.Param;
import org.sonar.api.utils.System2;
import org.sonar.api.web.UserRole;
import org.sonar.core.util.Protobuf;
@@ -72,7 +72,7 @@ public class ActivityActionTest {
CeLogging ceLogging = mock(CeLogging.class);
TaskFormatter formatter = new TaskFormatter(dbTester.getDbClient(), ceLogging, System2.INSTANCE);
- ActivityAction underTest = new ActivityAction(userSession, dbTester.getDbClient(), formatter, new CeTaskProcessor[] {mock(CeTaskProcessor.class)});
+ ActivityAction underTest = new ActivityAction(userSession, dbTester.getDbClient(), formatter, new CeTaskProcessor[]{mock(CeTaskProcessor.class)});
WsActionTester ws = new WsActionTester(underTest);
@Before
@@ -159,8 +159,8 @@ public class ActivityActionTest {
private void assertPage(int pageIndex, int pageSize, int expectedTotal, List<String> expectedOrderedTaskIds) {
TestResponse wsResponse = ws.newRequest()
.setMediaType(MediaTypes.PROTOBUF)
- .setParam(WebService.Param.PAGE, Integer.toString(pageIndex))
- .setParam(WebService.Param.PAGE_SIZE, Integer.toString(pageSize))
+ .setParam(Param.PAGE, Integer.toString(pageIndex))
+ .setParam(Param.PAGE_SIZE, Integer.toString(pageSize))
.setParam(PARAM_STATUS, "SUCCESS,FAILED,CANCELED,IN_PROGRESS,PENDING")
.execute();
@@ -229,6 +229,16 @@ public class ActivityActionTest {
}
@Test
+ public void fail_if_page_size_greater_than_1000() {
+ expectedException.expect(BadRequestException.class);
+ expectedException.expectMessage("The 'ps' parameter must be less than 1000");
+
+ ws.newRequest()
+ .setParam(Param.PAGE_SIZE, "1001")
+ .execute();
+ }
+
+ @Test
public void support_json_response() {
userSession.setGlobalPermissions(UserRole.ADMIN);
TestResponse wsResponse = ws.newRequest()