diff --git a/api/src/main/resources/api.yaml b/api/src/main/resources/api.yaml index 242adb26ce4c19bef40aad454a2d436b985323a0..26f4b43913596ae5d39751eeadbefe7dc422b75b 100644 --- a/api/src/main/resources/api.yaml +++ b/api/src/main/resources/api.yaml @@ -248,7 +248,7 @@ paths: tags: - FDOs description: "Delete an FDO." - operationId: permanentlyDeleteFDO + operationId: purgeFDO parameters: - $ref: '#/components/parameters/Prefix' - $ref: '#/components/parameters/Suffix' diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/OperationsLogger.java b/application/src/main/java/com/indiscale/fdo/manager/service/OperationsLogger.java index 65e93d9543d6ccf86f8c6fbacc90e5771969d820..92ce1bebbe9631160973e383153925ad9032ae59 100644 --- a/application/src/main/java/com/indiscale/fdo/manager/service/OperationsLogger.java +++ b/application/src/main/java/com/indiscale/fdo/manager/service/OperationsLogger.java @@ -21,7 +21,7 @@ public class OperationsLogger { } } - public void permanentlyDeleteFDO(DigitalObject fdo, RepositoryConnection repository) { + public void purgeFDO(DigitalObject fdo, RepositoryConnection repository) { LogRecord rec = new LogRecord(LogRecord.DELETE).fdo(fdo).targetRepository(repository); for (OperationsLoggerSink sink : sinks) { sink.log(rec); 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 54e045df33ea7b17d607237c536d62362f98ff6a..6f1726fa080e8c9b12df907259565c97a69ac0a2 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,15 +108,15 @@ public class FDOApiImpl extends BaseController implements FdoApi { } @Override - public ResponseEntity<Void> permanentlyDeleteFDO(String prefix, String suffix) { + public ResponseEntity<Void> purgeFDO(String prefix, String suffix) { try (Manager manager = getManager()) { String pid = prefix + "/" + suffix; DigitalObject fdo = manager.resolvePID(pid); - String repoId = manager.permanentlyDeleteFDO(pid); + String repoId = manager.purgeFDO(pid); if (repoId != null && !repoId.isEmpty()) { RepositoryConnection repository = manager.getRepositoryRegistry().createRepositoryConnection(repoId); - getLogger().permanentlyDeleteFDO(fdo, repository); + getLogger().purgeFDO(fdo, repository); return ResponseEntity.noContent().build(); } else { throw new ResponseStatusException( 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 c1e858737cfd912f3959b6140cc1b0879d358faf..4a50e6c60f37e6cbb91423c87d65555c5574df26 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 @@ -50,7 +50,7 @@ public class FDOApiTest { @Test void testFDOApiWithMockitoManager() throws PidUnresolvableException, UnknownRepositoryException, UnknownRepositoryTypeException { - // Test FDOs + // Setup Mocks for Test FDOs DigitalObject mockDO = new DigitalObject() { @Override @@ -103,7 +103,7 @@ public class FDOApiTest { .thenThrow(PidUnresolvableException.class) .thenReturn(mockDO) .thenReturn(mockDO); - when(mockitoManager.permanentlyDeleteFDO("prefix/suffix")) + when(mockitoManager.purgeFDO("prefix/suffix")) .thenReturn("mock-repo-1") .thenReturn("mock-repo-1") // .thenReturn("mock-repo-1") will not be called as PidUnresolvableException was thrown @@ -116,24 +116,21 @@ public class FDOApiTest { when(mockRepositoryRegistry.createRepositoryConnection("mock-repo-1")) .thenReturn(mockRepositoryConnection); when(mockRepositoryConnection.getId()).thenReturn("mock-repo-1"); - // 1,2,4 should pass as resolvePID returns successfully and permanentlyDeleteFDO returns an id + // 1,2,4 should pass as resolvePID returns successfully and purgeFDO returns an id // 3 should fail because resolvePID throws PidUnresolvableException - // 5 should fail because permanentlyDeleteFDO returns null + // 5 should fail because purgeFDO returns null // 6 should fail because the mockitoManager is not configured for "random/string" - assertEquals( - api.permanentlyDeleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); - assertEquals( - api.permanentlyDeleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); - assertThrows(ResponseStatusException.class, () -> api.permanentlyDeleteFDO("prefix", "suffix")); - assertEquals( - api.permanentlyDeleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); - assertThrows(ResponseStatusException.class, () -> api.permanentlyDeleteFDO("prefix", "suffix")); - assertThrows(ResponseStatusException.class, () -> api.permanentlyDeleteFDO("random", "string")); + assertEquals(api.purgeFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); + assertEquals(api.purgeFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); + assertThrows(ResponseStatusException.class, () -> api.purgeFDO("prefix", "suffix")); + assertEquals(api.purgeFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204)); + assertThrows(ResponseStatusException.class, () -> api.purgeFDO("prefix", "suffix")); + assertThrows(ResponseStatusException.class, () -> api.purgeFDO("random", "string")); // resolvePID("prefix/suffix") is called from 1,2,3,4,5 // resolvePID("random/string") is called from 6 - // permanentlyDeleteFDO("prefix/suffix") is called from 1,2,4,5 + // purgeFDO("prefix/suffix") is called from 1,2,4,5 verify(mockitoManager, times(5)).resolvePID("prefix/suffix"); verify(mockitoManager, times(1)).resolvePID("random/string"); - verify(mockitoManager, times(4)).permanentlyDeleteFDO("prefix/suffix"); + verify(mockitoManager, times(4)).purgeFDO("prefix/suffix"); } }