diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ProcessRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ProcessRestRepository.java index 15d5cf6530..283c062b7a 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ProcessRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ProcessRestRepository.java @@ -7,6 +7,7 @@ */ package org.dspace.app.rest.repository; +import java.io.IOException; import java.sql.SQLException; import java.util.Collections; import java.util.List; @@ -14,6 +15,7 @@ import java.util.stream.Collectors; import org.apache.log4j.Logger; import org.dspace.app.rest.converter.ConverterService; +import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException; import org.dspace.app.rest.model.BitstreamRest; import org.dspace.app.rest.model.ProcessFileWrapperRest; import org.dspace.app.rest.model.ProcessRest; @@ -167,6 +169,18 @@ public class ProcessRestRepository extends DSpaceRestRepository getDomainClass() { return ProcessRest.class; diff --git a/dspace-server-webapp/src/test/java/org/dspace/app/rest/ScriptRestRepositoryIT.java b/dspace-server-webapp/src/test/java/org/dspace/app/rest/ScriptRestRepositoryIT.java index ada6950056..8d98eeff57 100644 --- a/dspace-server-webapp/src/test/java/org/dspace/app/rest/ScriptRestRepositoryIT.java +++ b/dspace-server-webapp/src/test/java/org/dspace/app/rest/ScriptRestRepositoryIT.java @@ -10,6 +10,7 @@ package org.dspace.app.rest; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.is; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.fileUpload; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -21,8 +22,10 @@ import java.sql.SQLException; import java.util.Arrays; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import org.apache.commons.collections4.CollectionUtils; import org.dspace.app.rest.builder.CollectionBuilder; @@ -50,6 +53,7 @@ import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MvcResult; public class ScriptRestRepositoryIT extends AbstractControllerIntegrationTest { @@ -174,12 +178,22 @@ public class ScriptRestRepositoryIT extends AbstractControllerIntegrationTest { String token = getAuthToken(admin.getEmail(), password); - getClient(token).perform(post("/api/system/scripts/mock-script/processes").contentType("multipart/form-data")) - .andExpect(status().isAccepted()) - .andExpect(jsonPath("$", is( - ProcessMatcher.matchProcess("mock-script", - String.valueOf(admin.getID()), new LinkedList<>(), - ProcessStatus.FAILED)))); + MvcResult mvcResult = getClient(token) + .perform(post("/api/system/scripts/mock-script/processes").contentType("multipart/form-data")) + .andExpect(status().isAccepted()) + .andExpect(jsonPath("$", is( + ProcessMatcher.matchProcess("mock-script", + String.valueOf(admin.getID()), new LinkedList<>(), + ProcessStatus.FAILED)))).andReturn(); + + ObjectMapper mapper = new ObjectMapper(); + + String content = mvcResult.getResponse().getContentAsString(); + Map map = mapper.readValue(content, Map.class); + Integer processId = Integer.valueOf(String.valueOf(map.get("processId"))); + + getClient(token).perform(delete("/api/system/processes/" + processId)); + } @Test @@ -207,14 +221,22 @@ public class ScriptRestRepositoryIT extends AbstractControllerIntegrationTest { String token = getAuthToken(admin.getEmail(), password); - getClient(token).perform(post("/api/system/scripts/mock-script/processes").contentType("multipart/form-data") - .param("properties", - new Gson().toJson(list))) - .andExpect(status().isAccepted()) - .andExpect(jsonPath("$", is( - ProcessMatcher.matchProcess("mock-script", - String.valueOf(admin.getID()), parameters, - ProcessStatus.FAILED)))); + MvcResult mvcResult = getClient(token) + .perform(post("/api/system/scripts/mock-script/processes").contentType("multipart/form-data") + .param("properties", + new Gson().toJson(list))) + .andExpect(status().isAccepted()) + .andExpect(jsonPath("$", is( + ProcessMatcher.matchProcess("mock-script", + String.valueOf(admin.getID()), parameters, + ProcessStatus.FAILED)))).andReturn(); + ObjectMapper mapper = new ObjectMapper(); + + String content = mvcResult.getResponse().getContentAsString(); + Map map = mapper.readValue(content, Map.class); + Integer processId = Integer.valueOf(String.valueOf(map.get("processId"))); + + getClient(token).perform(delete("/api/system/processes/" + processId)); } @Test @@ -244,15 +266,24 @@ public class ScriptRestRepositoryIT extends AbstractControllerIntegrationTest { ProcessStatus.RUNNING, ProcessStatus.COMPLETED)); - getClient(token).perform(post("/api/system/scripts/mock-script/processes").contentType("multipart/form-data") - .param("properties", - new Gson().toJson(list))) - .andExpect(status().isAccepted()) - .andExpect(jsonPath("$", is( - ProcessMatcher.matchProcess("mock-script", - String.valueOf(admin.getID()), - parameters, - acceptableProcessStatuses)))); + MvcResult mvcResult = getClient(token) + .perform(post("/api/system/scripts/mock-script/processes").contentType("multipart/form-data") + .param("properties", + new Gson().toJson(list))) + .andExpect(status().isAccepted()) + .andExpect(jsonPath("$", is( + ProcessMatcher.matchProcess("mock-script", + String.valueOf(admin.getID()), + parameters, + acceptableProcessStatuses)))).andReturn(); + + ObjectMapper mapper = new ObjectMapper(); + + String content = mvcResult.getResponse().getContentAsString(); + Map map = mapper.readValue(content, Map.class); + Integer processId = Integer.valueOf(String.valueOf(map.get("processId"))); + + getClient(token).perform(delete("/api/system/processes/" + processId)); } @@ -293,9 +324,9 @@ public class ScriptRestRepositoryIT extends AbstractControllerIntegrationTest { String bitstreamContent = "Hello, World!"; MockMultipartFile bitstreamFile = new MockMultipartFile("file", - "hello.txt", MediaType.TEXT_PLAIN_VALUE, + "helloProcessFile.txt", MediaType.TEXT_PLAIN_VALUE, bitstreamContent.getBytes()); - parameters.add(new DSpaceCommandLineParameter("-f", "hello.txt")); + parameters.add(new DSpaceCommandLineParameter("-f", "helloProcessFile.txt")); List list = parameters.stream() .map(dSpaceCommandLineParameter -> dSpaceRunnableParameterConverter @@ -308,15 +339,24 @@ public class ScriptRestRepositoryIT extends AbstractControllerIntegrationTest { ProcessStatus.RUNNING, ProcessStatus.COMPLETED)); - getClient(token).perform(fileUpload("/api/system/scripts/mock-script/processes").file(bitstreamFile) - .param("properties", - new Gson().toJson(list))) - .andExpect(status().isAccepted()) - .andExpect(jsonPath("$", is( - ProcessMatcher.matchProcess("mock-script", - String.valueOf(admin.getID()), - parameters, - acceptableProcessStatuses)))); + MvcResult mvcResult = getClient(token) + .perform(fileUpload("/api/system/scripts/mock-script/processes").file(bitstreamFile) + .param("properties", + new Gson().toJson(list))) + .andExpect(status().isAccepted()) + .andExpect(jsonPath("$", is( + ProcessMatcher.matchProcess("mock-script", + String.valueOf(admin.getID()), + parameters, + acceptableProcessStatuses)))).andReturn(); + + ObjectMapper mapper = new ObjectMapper(); + + String content = mvcResult.getResponse().getContentAsString(); + Map map = mapper.readValue(content, Map.class); + Integer processId = Integer.valueOf(String.valueOf(map.get("processId"))); + + getClient(token).perform(delete("/api/system/processes/" + processId)); }