diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaController.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaController.java index 2788f4f1c33e4adb8a772611077d08309eb56dea..c966af20e49776f0a8fba55e50415959b4fc886e 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaController.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaController.java @@ -8,8 +8,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import lcsb.mapviewer.annotation.services.MiRNASearchException; -import lcsb.mapviewer.api.BaseController; -import lcsb.mapviewer.api.QueryException; +import lcsb.mapviewer.api.*; @RestController @RequestMapping(value = "/projects/{projectId}/", produces = MediaType.APPLICATION_JSON_VALUE) @@ -43,7 +42,7 @@ public class MiRnaController extends BaseController { @PreAuthorize("hasAnyAuthority('IS_ADMIN', 'READ_PROJECT:' + #projectId)") @GetMapping(value = "miRnas/suggestedQueryList") public List<String> getSuggestedQueryList(@PathVariable(value = "projectId") String projectId) - throws MiRNASearchException { + throws MiRNASearchException, ObjectNotFoundException { return miRnaController.getSuggestedQueryList(projectId); } diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java index 82250cbc06f0e4d42be597685e4683ada869113a..16afb53e4b06cb11e11c0de95af3b8f3ea89ef5c 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/mirnas/MiRnaRestImpl.java @@ -42,7 +42,7 @@ public class MiRnaRestImpl extends BaseRestImpl { throws QueryException { Model model = getModelService().getLastModelByProjectId(projectId); if (model == null) { - throw new QueryException("Project with given id doesn't exist"); + throw new ObjectNotFoundException("Project with given id doesn't exist"); } Project project = getProjectService().getProjectByProjectId(projectId); @@ -103,7 +103,7 @@ public class MiRnaRestImpl extends BaseRestImpl { String columns) throws QueryException { Model model = getModelService().getLastModelByProjectId(projectId); if (model == null) { - throw new QueryException("Project with given id doesn't exist"); + throw new ObjectNotFoundException("Project with given id doesn't exist"); } Project project = getProjectService().getProjectByProjectId(projectId); @@ -144,8 +144,11 @@ public class MiRnaRestImpl extends BaseRestImpl { return result; } - public List<String> getSuggestedQueryList(String projectId) throws MiRNASearchException { + public List<String> getSuggestedQueryList(String projectId) throws MiRNASearchException, ObjectNotFoundException { Project project = getProjectService().getProjectByProjectId(projectId); + if (project == null) { + throw new ObjectNotFoundException("Project with given id doesn't exist"); + } return miRNAParser.getSuggestedQueryList(project); } diff --git a/web/src/test/java/lcsb/mapviewer/web/MiRnaControllerIntegrationTest.java b/web/src/test/java/lcsb/mapviewer/web/MiRnaControllerIntegrationTest.java index 92b63aad1745a7666c4c6372606c37099bd4f5ba..68c606137dc4e15984f23ea11ed241e2ad4cfba1 100644 --- a/web/src/test/java/lcsb/mapviewer/web/MiRnaControllerIntegrationTest.java +++ b/web/src/test/java/lcsb/mapviewer/web/MiRnaControllerIntegrationTest.java @@ -50,6 +50,30 @@ public class MiRnaControllerIntegrationTest extends ControllerIntegrationTest { .andExpect(status().is2xxSuccessful()); } + @Test + public void testSearchMiRnasInUndefinedProject() throws Exception { + MockHttpSession session = createSession(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); + + RequestBuilder request = get("/projects/*/miRnas:search?query=xyz") + .contentType(MediaType.APPLICATION_FORM_URLENCODED) + .session(session); + + mockMvc.perform(request) + .andExpect(status().isNotFound()); + } + + @Test + public void testSearchMiRnasByTargetInUndefinedProject() throws Exception { + MockHttpSession session = createSession(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); + + RequestBuilder request = get("/projects/*/miRnas:search?target=ALIAS:123") + .contentType(MediaType.APPLICATION_FORM_URLENCODED) + .session(session); + + mockMvc.perform(request) + .andExpect(status().isNotFound()); + } + @Test public void testGetSuggestedList() throws Exception { MockHttpSession session = createSession(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); @@ -61,5 +85,17 @@ public class MiRnaControllerIntegrationTest extends ControllerIntegrationTest { mockMvc.perform(request) .andExpect(status().is2xxSuccessful()); } + + @Test + public void testGetSuggestedListForUndefinedProject() throws Exception { + MockHttpSession session = createSession(TEST_ADMIN_LOGIN, TEST_ADMIN_PASSWORD); + + RequestBuilder request = get("/projects/*/miRnas/suggestedQueryList") + .contentType(MediaType.APPLICATION_FORM_URLENCODED) + .session(session); + + mockMvc.perform(request) + .andExpect(status().isNotFound()); + } }