From 5108f1c2493433699212ab59f68735adf8bfd02c Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria Date: Mon, 15 Mar 2021 17:25:26 +0100 Subject: [PATCH] Added unit tests for PutFileController --- .../controller/PutFileControllerTest.java | 83 +++++++++++++++++-- .../ia2/transfer/persistence/JobDAOTest.java | 1 + 2 files changed, 77 insertions(+), 7 deletions(-) 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 89170b8..a240884 100644 --- a/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java +++ b/src/test/java/it/inaf/ia2/transfer/controller/PutFileControllerTest.java @@ -1,20 +1,21 @@ package it.inaf.ia2.transfer.controller; import it.inaf.ia2.transfer.persistence.FileDAO; +import it.inaf.ia2.transfer.persistence.JobDAO; import it.inaf.ia2.transfer.persistence.ListOfFilesDAO; -//import it.inaf.oats.vospace.persistence.JobDAO; -//import net.ivoa.xml.uws.v1.JobSummary; import java.io.File; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.Collections; import java.util.Optional; import java.util.UUID; +import net.ivoa.xml.uws.v1.ExecutionPhase; import org.assertj.core.util.Files; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -39,15 +40,15 @@ public class PutFileControllerTest { @MockBean private FileDAO fileDao; - //@MockBean - //private JobDAO jobDao; - + @MockBean + private JobDAO jobDAO; + @MockBean private ListOfFilesDAO listOfFilesDAO; @Autowired - private MockMvc mockMvc; - + private MockMvc mockMvc; + @Test public void putGenericFile() throws Exception { @@ -65,6 +66,74 @@ public class PutFileControllerTest { assertTrue(file.exists()); assertEquals("content", Files.contentOf(file, StandardCharsets.UTF_8)); + assertTrue(file.delete()); + } + + @Test + public void putGenericFileWithNameConflict() throws Exception { + + String fileName = "pippoFile"; + createBaseFileInfo(fileName); + + MockMultipartFile fakeFile = new MockMultipartFile("file", "test.txt", "text/plain", "content".getBytes()); + + mockMvc.perform(putMultipart("/path/to/test.txt") + .file(fakeFile)) + .andDo(print()) + .andExpect(status().isOk()); + + File file = Path.of("/tmp", fileName).toFile(); + + assertTrue(file.exists()); + assertEquals("content", Files.contentOf(file, StandardCharsets.UTF_8)); + + MockMultipartFile fakeFile2 = new MockMultipartFile("file", "test.txt", "text/plain", "content2".getBytes()); + + mockMvc.perform(putMultipart("/path/to/test.txt") + .file(fakeFile2)) + .andDo(print()) + .andExpect(status().isOk()); + + File file2 = Path.of("/tmp", fileName+"-1").toFile(); + assertTrue(file.exists()); + assertEquals("content2", Files.contentOf(file2, StandardCharsets.UTF_8)); + assertTrue(file.delete()); + assertTrue(file2.delete()); + } + + + @Test + public void putGenericFileWithJobId() throws Exception { + + when(jobDAO.isJobExisting("pippo10")).thenReturn(false); + when(jobDAO.isJobExisting("pippo5")).thenReturn(true); + + String randomFileName = UUID.randomUUID().toString(); + createBaseFileInfo(randomFileName); + + MockMultipartFile fakeFile = new MockMultipartFile("file", "test.txt", "text/plain", "content".getBytes()); + + // Try with invalid jobid + mockMvc.perform(putMultipart("/path/to/test.txt") + .file(fakeFile).param("jobid", "pippo10")) + .andDo(print()) + .andExpect(status().is4xxClientError()); + + verify(jobDAO, times(1)).isJobExisting(eq("pippo10")); + + // Retry with valid jobid + mockMvc.perform(putMultipart("/path/to/test.txt") + .file(fakeFile).param("jobid", "pippo5")) + .andDo(print()) + .andExpect(status().is2xxSuccessful()); + + verify(jobDAO, times(1)).isJobExisting(eq("pippo5")); + verify(jobDAO, times(1)).updateJobPhase(eq(ExecutionPhase.COMPLETED), any()); + + File file = Path.of("/tmp", randomFileName).toFile(); + + assertTrue(file.exists()); + assertEquals("content", Files.contentOf(file, StandardCharsets.UTF_8)); assertTrue(file.delete()); } diff --git a/src/test/java/it/inaf/ia2/transfer/persistence/JobDAOTest.java b/src/test/java/it/inaf/ia2/transfer/persistence/JobDAOTest.java index 1eaf974..8261ecd 100644 --- a/src/test/java/it/inaf/ia2/transfer/persistence/JobDAOTest.java +++ b/src/test/java/it/inaf/ia2/transfer/persistence/JobDAOTest.java @@ -20,6 +20,7 @@ public class JobDAOTest { @Autowired private DataSource dataSource; + private JobDAO dao; @BeforeEach -- GitLab