From 07899471d7d943a52c23c32780d38d7703b28337 Mon Sep 17 00:00:00 2001 From: "i.nueske" <i.nueske@indiscale.com> Date: Tue, 13 Aug 2024 16:52:03 +0200 Subject: [PATCH] API: Changed delete to fit JSON API schema --- api/src/main/resources/api.yaml | 12 +----------- .../fdo/manager/service/fdo/FDOApiImpl.java | 4 ++-- .../fdo/manager/service/fdo/FDOApiTest.java | 7 ++++--- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/api/src/main/resources/api.yaml b/api/src/main/resources/api.yaml index 38048fa..ae045ad 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 46596d9..749529f 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 37ed6d0..20184ac 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 -- GitLab