Commit 5108f1c2 authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

Added unit tests for PutFileController

parent 2b2915e0
Loading
Loading
Loading
Loading
Loading
+76 −7
Original line number Diff line number Diff line
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,8 +40,8 @@ public class PutFileControllerTest {
    @MockBean
    private FileDAO fileDao;
    
    //@MockBean
    //private JobDAO jobDao;
    @MockBean
    private JobDAO jobDAO;
        
    @MockBean
    private ListOfFilesDAO listOfFilesDAO;
@@ -68,6 +69,74 @@ public class PutFileControllerTest {
        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());
    }

    @Test
    public void putListOfFiles() throws Exception {

+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ public class JobDAOTest {
    
    @Autowired
    private DataSource dataSource;
    
    private JobDAO dao;

    @BeforeEach