This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit e7842ce0fc5b96cd9687e4622ee203a1d5658b88 Author: KmCherry0 <86766775+kmcher...@users.noreply.github.com> AuthorDate: Mon Oct 10 09:59:28 2022 +0800 KYLIN-5334 Add verification to the parameters about post get api/jobs --- .../kylin/rest/controller/v2/JobControllerV2.java | 5 --- .../rest/controller/v2/JobControllerV2Test.java | 41 +++++++++++++++++++++- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java b/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java index acc02883b4..0ca032a5c2 100644 --- a/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java +++ b/src/data-loading-server/src/main/java/org/apache/kylin/rest/controller/v2/JobControllerV2.java @@ -32,7 +32,6 @@ import org.apache.kylin.job.constant.JobActionEnum; import org.apache.kylin.job.constant.JobStatusEnum; import org.apache.kylin.rest.controller.BaseController; import org.apache.kylin.rest.request.JobFilter; -import org.apache.kylin.rest.response.DataResult; import org.apache.kylin.rest.response.EnvelopeResponse; import org.apache.kylin.rest.response.ExecutableResponse; import org.apache.kylin.rest.service.JobService; @@ -90,10 +89,6 @@ public class JobControllerV2 extends BaseController { @RequestParam(value = "sortBy", required = false, defaultValue = "last_modified") String sortBy, @RequestParam(value = "sortby", required = false) String sortby, //param for 3x @RequestParam(value = "reverse", required = false, defaultValue = "true") Boolean reverse) { - // 3x default last_modify - if (!StringUtils.isEmpty(sortby) && !"last_modify".equals(sortby)) { - sortBy = sortby; - } checkNonNegativeIntegerArg("pageOffset", pageOffset); checkNonNegativeIntegerArg("pageSize", pageSize); List<String> statuses = Lists.newArrayList(); diff --git a/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java b/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java index a2ed9db17d..d027f6bad3 100644 --- a/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java +++ b/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/v2/JobControllerV2Test.java @@ -33,7 +33,6 @@ import org.apache.kylin.rest.response.ExecutableResponse; import org.apache.kylin.rest.service.JobService; import org.apache.kylin.rest.util.AclEvaluate; import org.apache.kylin.rest.util.AclUtil; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; @@ -206,4 +205,44 @@ public class JobControllerV2Test extends NLocalFileMetadataTestCase { } + @Test + public void testGetJobsException_pageOffset_pageSize() throws Exception { + List<ExecutableResponse> jobs = new ArrayList<>(); + List<String> jobNames = Lists.newArrayList(); + JobFilter jobFilter = new JobFilter(Lists.newArrayList("NEW"), jobNames, 4, "", "", "default", "job_name", + false); + Mockito.when(jobService.listJobs(jobFilter)).thenReturn(jobs); + mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON) + .param("projectName", "default").param("pageOffset", "a").param("pageSize", "10") + .param("timeFilter", "1").param("jobName", "").param("status", "0") + .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON))) + .andExpect(MockMvcResultMatchers.status().isBadRequest()); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON) + .param("projectName", "default").param("pageOffset", "-1").param("pageSize", "10") + .param("timeFilter", "1").param("jobName", "").param("status", "0") + .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON))) + .andExpect(MockMvcResultMatchers.status().is5xxServerError()); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON) + .param("projectName", "default").param("pageOffset", "1").param("pageSize", "-1") + .param("timeFilter", "1").param("jobName", "").param("status", "0") + .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON))) + .andExpect(MockMvcResultMatchers.status().is5xxServerError()); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON) + .param("projectName", "default").param("pageOffset", "1").param("pageSize", "a") + .param("timeFilter", "1").param("jobName", "").param("status", "0") + .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON))) + .andExpect(MockMvcResultMatchers.status().isBadRequest()); + + mockMvc.perform(MockMvcRequestBuilders.get("/api/jobs").contentType(MediaType.APPLICATION_JSON) + .param("projectName", "default").param("pageOffset", "1").param("pageSize", "10") + .param("timeFilter", "1").param("jobName", "").param("status", "0") + .accept(MediaType.parseMediaType(HTTP_VND_APACHE_KYLIN_V2_JSON))) + .andExpect(MockMvcResultMatchers.status().isOk()); + + + } + }