diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2016-02-15 13:35:44 +0100 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2016-02-15 14:23:55 +0100 |
commit | e5047e3c19e5c021a4ea775a5a05d301368ff6c5 (patch) | |
tree | f00acf4b44bd09374f3b2a8c02512cdc8f501f58 | |
parent | 89a93e795af89c98f5e99de60620c21287f7889e (diff) | |
download | sonarqube-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.java | 5 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/computation/ws/ActivityActionTest.java | 18 |
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() |