diff --git a/api/src/main/resources/api.yaml b/api/src/main/resources/api.yaml index 38048fa52935fe1d774ba1c73737d9ef414c1a96..ae045ada7fb6c8147b79fed39fffe84e7121a281 100644 --- a/api/src/main/resources/api.yaml +++ b/api/src/main/resources/api.yaml @@ -256,18 +256,8 @@ paths: - $ref: '#/components/parameters/Prefix' - $ref: '#/components/parameters/Suffix' responses: - "200": + "204": description: "Content of deleted FDO." - content: - application/json: - schema: - type: object - required: ["data"] - properties: - data: - $ref: '#/components/schemas/DigitalObject' - links: - $ref: '#/components/schemas/Links' "404": description: "Could not resolve pid." content: diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java index 46596d9860fef6a3c9b3d4c5b648b1a6ec1ba4a5..749529f4f0557e527288d69fdacc283f0efad291 100644 --- a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java +++ b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java @@ -108,13 +108,13 @@ public class FDOApiImpl extends BaseController implements FdoApi { } @Override - public ResponseEntity<ResolvePID200Response> deleteFDO(String prefix, String suffix) { + public ResponseEntity<Void> deleteFDO(String prefix, String suffix) { try (Manager manager = getManager()) { String pid = prefix + "/" + suffix; DigitalObject fdo = manager.resolvePID(pid); boolean success = manager.deleteFDO(pid); if (success) { - return ResponseEntity.ok(createResponse(fdo)); + return ResponseEntity.noContent().build(); } else { throw new ResponseStatusException( HttpStatus.INTERNAL_SERVER_ERROR, "Could not delete PID " + pid); diff --git a/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java b/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java index 37ed6d0cf2d2d808552eaf82aa506d4c3a3c6db2..20184ac25c54d00fd4ecb58f4cc1e402e8c22183 100644 --- a/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java +++ b/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java @@ -15,6 +15,7 @@ import com.indiscale.fdo.manager.api.PidUnresolvableException; import com.indiscale.fdo.manager.mock.MockManager; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatusCode; import org.springframework.web.server.ResponseStatusException; /** Test the {@link FDOApiImpl} class */ @@ -97,10 +98,10 @@ public class FDOApiTest { // 3 should fail because resolvePID throws PidUnresolvableException // 5 should fail because deleteFDO returns false // 6 should fail because the mockitoManager is not configured for "random/string" - assertEquals(api.deleteFDO("prefix", "suffix").getBody().getData().getPid(), "prefix/suffix"); - assertEquals(api.deleteFDO("prefix", "suffix").getBody().getData().getPid(), "suffix/prefix"); + assertEquals(api.deleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); + assertEquals(api.deleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); assertThrows(ResponseStatusException.class, () -> api.deleteFDO("prefix", "suffix")); - assertEquals(api.deleteFDO("prefix", "suffix").getBody().getData().getPid(), "prefix/suffix"); + assertEquals(api.deleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); assertThrows(ResponseStatusException.class, () -> api.deleteFDO("prefix", "suffix")); assertThrows(ResponseStatusException.class, () -> api.deleteFDO("random", "string")); // resolvePID("prefix/suffix") is called from 1,2,3,4,5