diff --git a/src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java b/src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..49155915e3eefb986ae2a97ec5f4b8650c28fb5c --- /dev/null +++ b/src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java @@ -0,0 +1,100 @@ +/* + * This file is part of vospace-file-service + * Copyright (C) 2021 Istituto Nazionale di Astrofisica + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package it.inaf.ia2.transfer.controller; + +import it.inaf.ia2.transfer.persistence.model.FileInfo; +import it.inaf.ia2.transfer.persistence.FileDAO; +import it.inaf.ia2.transfer.persistence.JobDAO; +import it.inaf.oats.vospace.exception.QuotaExceededException; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.Optional; +import java.util.UUID; +import javax.servlet.ServletInputStream; +import net.ivoa.xml.uws.v1.ExecutionPhase; +import org.assertj.core.util.Files; +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import org.mockito.Mockito; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.request.RequestPostProcessor; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import org.springframework.util.FileSystemUtils; + +@SpringBootTest +@AutoConfigureMockMvc +public class CopyControllerTest { + + @MockBean + private FileDAO fileDao; + + @MockBean + private JobDAO jobDAO; + + @Autowired + private MockMvc mockMvc; + + private static File sourceDirectory; + private static File destinationDirectory; + + @BeforeAll + public static void setUp() { + sourceDirectory = Files.newTemporaryFolder(); + destinationDirectory = Files.newTemporaryFolder(); + } + + @AfterAll + public static void tearDown() { + FileSystemUtils.deleteRecursively(sourceDirectory); + FileSystemUtils.deleteRecursively(destinationDirectory); + } + + // TODO: complete test + + private FileInfo createBaseFileInfo() { + String randomFileName = UUID.randomUUID().toString(); + return createBaseFileInfo(randomFileName); + } + + private FileInfo createBaseFileInfo(String fileName, File directory, String vosPath) { + FileInfo fileInfo = new FileInfo(); + fileInfo.setOsPath(getTestFilePath(fileName, directory)); + String virtualPath = vosPath + "/" + fileName; + fileInfo.setVirtualPath(vosPath + "/" + fileName); + fileInfo.setPublic(false); + + return fileInfo; + } + + private String getTestFilePath(String fileName, File directory) { + return directory.toPath().resolve("subdir").resolve(fileName).toFile().getAbsolutePath(); + } + +}