diff --git a/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java b/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java index be3a79ba93b6862f5244140633ad2e7ba7f4c22d..f7462f91f99e7e740f6bbde90ad4aa2532f057c6 100644 --- a/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java +++ b/src/main/java/it/inaf/ia2/transfer/service/PutFileService.java @@ -7,6 +7,7 @@ package it.inaf.ia2.transfer.service; import it.inaf.ia2.transfer.persistence.FileDAO; import it.inaf.ia2.transfer.persistence.model.FileInfo; +import it.inaf.oats.vospace.exception.InvalidArgumentException; import it.inaf.oats.vospace.exception.QuotaExceededException; import java.io.File; import java.io.IOException; @@ -96,9 +97,12 @@ public class PutFileService { // the first upload (fsPath not null) if(destinationFileInfo.getActualBasePath() != null) { if(destinationFileInfo.getFsPath() != null) { - LOG.warn("Node {} fsPath is not null: {}. Overwriting.", + LOG.error("Node {} fsPath is not null: {}. Overwriting.", destinationFileInfo.getVirtualPath(), destinationFileInfo.getFsPath()); + throw new InvalidArgumentException("Node " + + destinationFileInfo.getVirtualPath() + + " is already populated. Overwriting not allowed."); } destinationFileInfo.setFsPath(this.generateFsPath().toString()); diff --git a/src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java b/src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java index c084b25844d2956841a6a80898d5c5b8730f9d56..c75441897b9bf33351006d217a17daa80770a39c 100644 --- a/src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java +++ b/src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java @@ -34,9 +34,6 @@ public class CopyControllerTest { @Autowired private MockMvc mockMvc; - - @MockBean - private FileCopyService fileCopyService; private static String jobId; private static String sourceVosRootPath; diff --git a/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java b/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java index 58dbe07fd29b009311247f182a63d9367e26f30f..a4221b62a6be1e237561e854504a7fb0a0c77964 100644 --- a/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java +++ b/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java @@ -98,7 +98,23 @@ public class PutFileControllerTest { assertTrue(file.delete()); } + + @Test + public void putGenericFileOverwriteDenied() throws Exception { + + when(fileDao.getRemainingQuota(any())).thenReturn(null); + + String randomFileName = UUID.randomUUID().toString(); + FileInfo fileInfo = createBaseFileInfo(randomFileName); + fileInfo.setFsPath("year/month/date/UUID-whatever"); + MockMultipartFile fakeFile = new MockMultipartFile("file", "test.txt", "text/plain", "content".getBytes()); + + mockMvc.perform(putMultipart("/path/to/test.txt") + .file(fakeFile)) + .andDo(print()) + .andExpect(status().isBadRequest()); + } @Test public void putGenericFileWithJobId() throws Exception {