Loading src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java +23 −79 Original line number Diff line number Diff line Loading @@ -7,23 +7,11 @@ package it.inaf.ia2.transfer.controller; import com.fasterxml.jackson.databind.ObjectMapper; import it.inaf.ia2.transfer.auth.TokenPrincipal; import it.inaf.ia2.transfer.persistence.model.FileInfo; import it.inaf.ia2.transfer.persistence.FileDAO; import it.inaf.ia2.transfer.persistence.JobDAO; import java.io.File; import java.util.List; import org.apache.commons.io.FileUtils; import org.assertj.core.util.Files; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import it.inaf.ia2.transfer.service.FileCopyService; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.springframework.beans.factory.annotation.Autowired; Loading @@ -32,28 +20,24 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 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 @AutoConfigureMockMvc(addFilters = false) public class CopyControllerTest { @MockBean private FileDAO fileDao; @MockBean private JobDAO jobDAO; private JobDAO jobDao; @Autowired private MockMvc mockMvc; private static File sourceDirectory; private static File destinationDirectory; private static File sourceFile; @MockBean private FileCopyService fileCopyService; private static String jobId; private static String sourceVosRootPath; private static String destVosRootPath; Loading @@ -69,67 +53,37 @@ public class CopyControllerTest { destVosRootPath = "/destination/" + filename; } @BeforeEach public void setUpPerTest() throws Exception { sourceDirectory = Files.newTemporaryFolder(); destinationDirectory = Files.newTemporaryFolder(); sourceFile = this.createFile(sourceDirectory, filename); } @AfterEach public void tearDown() { FileSystemUtils.deleteRecursively(sourceDirectory); FileSystemUtils.deleteRecursively(destinationDirectory); } // TODO: complete test @Test public void testCopyController() throws Exception { public void testCopyControllerNoJobMatching() throws Exception { CopyRequest copyRequest = this.getCopyRequest(jobId, sourceVosRootPath, destVosRootPath); when(fileDao.getBranchFileInfos(eq(sourceVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, sourceDirectory, sourceVosRootPath))); when(fileDao.getBranchFileInfos(eq(destVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, destinationDirectory, destVosRootPath))); when(fileDao.getRemainingQuota(any())).thenReturn(null); assertTrue(sourceFile.exists()); File destinationFile = destinationDirectory.toPath().resolve(filename).toFile(); assertFalse(destinationFile.exists()); when(jobDao.isJobExisting(eq(jobId))).thenReturn(false); mockMvc.perform(post("/copy") .principal(fakePrincipal("user_copy")) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(copyRequest))) .andDo(print()) .andExpect(status().isOk()); assertTrue(sourceFile.exists()); assertTrue(destinationFile.exists()); assertTrue(FileUtils.contentEquals(sourceFile, destinationFile)); .andExpect(status().is4xxClientError()); } private FileInfo createBaseFileInfo(String fileName, File directory, String vosPath) { FileInfo fileInfo = new FileInfo(); fileInfo.setOsPath(getTestFilePath(fileName, directory)); fileInfo.setVirtualPath(vosPath); fileInfo.setPublic(false); @Test public void testCopyControllerAnonymousForbidden() throws Exception { return fileInfo; } CopyRequest copyRequest = this.getCopyRequest(jobId, sourceVosRootPath, destVosRootPath); private String getTestFilePath(String fileName, File directory) { return directory.toPath().resolve("subdir").resolve(fileName).toFile().getAbsolutePath(); when(jobDao.isJobExisting(eq(jobId))).thenReturn(true); mockMvc.perform(post("/copy") .principal(fakePrincipal("anonymous")) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(copyRequest))) .andDo(print()) .andExpect(status().is4xxClientError()); } private CopyRequest getCopyRequest(String jobId, Loading @@ -147,14 +101,4 @@ public class CopyControllerTest { return principal; } private File createFile(File parent, String filename) throws Exception { parent.mkdir(); File file = parent.toPath().resolve(filename).toFile(); file.createNewFile(); java.nio.file.Files.write(file.toPath(), "content_of_file".getBytes()); return file; } } src/test/java/it/inaf/ia2/transfer/service/CopyServiceTest.java 0 → 100644 +140 −0 Original line number Diff line number Diff line /* * 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.service; import it.inaf.ia2.transfer.auth.TokenPrincipal; import it.inaf.ia2.transfer.persistence.model.FileInfo; import it.inaf.ia2.transfer.persistence.FileDAO; import it.inaf.ia2.transfer.persistence.JobDAO; import java.io.File; import java.util.List; import org.apache.commons.io.FileUtils; import org.assertj.core.util.Files; import org.junit.jupiter.api.AfterEach; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; 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.test.web.servlet.MockMvc; import org.springframework.util.FileSystemUtils; @SpringBootTest @AutoConfigureMockMvc(addFilters = false) public class CopyServiceTest { @MockBean private FileDAO fileDao; @MockBean private JobDAO jobDao; @Autowired private MockMvc mockMvc; @Autowired private FileCopyService fileCopyService; private static File sourceDirectory; private static File destinationDirectory; private static File sourceFile; private static String jobId; private static String sourceVosRootPath; private static String destVosRootPath; private static String filename; private static String userId; @BeforeAll public static void setUp() { jobId = "pippo_copy"; userId = "user_copy"; filename = "file.txt"; sourceVosRootPath = "/source/" + filename; destVosRootPath = "/destination/" + filename; } @BeforeEach public void setUpPerTest() throws Exception { sourceDirectory = Files.newTemporaryFolder(); destinationDirectory = Files.newTemporaryFolder(); sourceFile = this.createFile(sourceDirectory, filename); } @AfterEach public void tearDown() { FileSystemUtils.deleteRecursively(sourceDirectory); FileSystemUtils.deleteRecursively(destinationDirectory); } @Test public void testCopyService() throws Exception { when(fileDao.getBranchFileInfos(eq(sourceVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, sourceDirectory, sourceVosRootPath))); when(fileDao.getBranchFileInfos(eq(destVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, destinationDirectory, destVosRootPath))); when(fileDao.getRemainingQuota(any())).thenReturn(null); assertTrue(sourceFile.exists()); File destinationFile = destinationDirectory.toPath().resolve(filename).toFile(); assertFalse(destinationFile.exists()); fileCopyService.copyFiles( sourceVosRootPath, destVosRootPath, jobId, fakePrincipal(userId)); assertTrue(sourceFile.exists()); assertTrue(destinationFile.exists()); assertTrue(FileUtils.contentEquals(sourceFile, destinationFile)); } private FileInfo createBaseFileInfo(String fileName, File directory, String vosPath) { FileInfo fileInfo = new FileInfo(); fileInfo.setOsPath(getTestFilePath(fileName, directory)); fileInfo.setVirtualPath(vosPath); fileInfo.setPublic(false); fileInfo.setOwnerId("user_copy"); return fileInfo; } private String getTestFilePath(String fileName, File directory) { return directory.toPath().resolve("subdir").resolve(fileName).toFile().getAbsolutePath(); } private File createFile(File parent, String filename) throws Exception { parent.mkdir(); File file = parent.toPath().resolve(filename).toFile(); file.createNewFile(); java.nio.file.Files.write(file.toPath(), "content_of_file".getBytes()); return file; } private TokenPrincipal fakePrincipal(String name) { TokenPrincipal principal = mock(TokenPrincipal.class); when(principal.getName()).thenReturn(name); return principal; } } Loading
src/test/java/it/inaf/ia2/transfer/controller/CopyControllerTest.java +23 −79 Original line number Diff line number Diff line Loading @@ -7,23 +7,11 @@ package it.inaf.ia2.transfer.controller; import com.fasterxml.jackson.databind.ObjectMapper; import it.inaf.ia2.transfer.auth.TokenPrincipal; import it.inaf.ia2.transfer.persistence.model.FileInfo; import it.inaf.ia2.transfer.persistence.FileDAO; import it.inaf.ia2.transfer.persistence.JobDAO; import java.io.File; import java.util.List; import org.apache.commons.io.FileUtils; import org.assertj.core.util.Files; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import it.inaf.ia2.transfer.service.FileCopyService; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.springframework.beans.factory.annotation.Autowired; Loading @@ -32,28 +20,24 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 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 @AutoConfigureMockMvc(addFilters = false) public class CopyControllerTest { @MockBean private FileDAO fileDao; @MockBean private JobDAO jobDAO; private JobDAO jobDao; @Autowired private MockMvc mockMvc; private static File sourceDirectory; private static File destinationDirectory; private static File sourceFile; @MockBean private FileCopyService fileCopyService; private static String jobId; private static String sourceVosRootPath; private static String destVosRootPath; Loading @@ -69,67 +53,37 @@ public class CopyControllerTest { destVosRootPath = "/destination/" + filename; } @BeforeEach public void setUpPerTest() throws Exception { sourceDirectory = Files.newTemporaryFolder(); destinationDirectory = Files.newTemporaryFolder(); sourceFile = this.createFile(sourceDirectory, filename); } @AfterEach public void tearDown() { FileSystemUtils.deleteRecursively(sourceDirectory); FileSystemUtils.deleteRecursively(destinationDirectory); } // TODO: complete test @Test public void testCopyController() throws Exception { public void testCopyControllerNoJobMatching() throws Exception { CopyRequest copyRequest = this.getCopyRequest(jobId, sourceVosRootPath, destVosRootPath); when(fileDao.getBranchFileInfos(eq(sourceVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, sourceDirectory, sourceVosRootPath))); when(fileDao.getBranchFileInfos(eq(destVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, destinationDirectory, destVosRootPath))); when(fileDao.getRemainingQuota(any())).thenReturn(null); assertTrue(sourceFile.exists()); File destinationFile = destinationDirectory.toPath().resolve(filename).toFile(); assertFalse(destinationFile.exists()); when(jobDao.isJobExisting(eq(jobId))).thenReturn(false); mockMvc.perform(post("/copy") .principal(fakePrincipal("user_copy")) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(copyRequest))) .andDo(print()) .andExpect(status().isOk()); assertTrue(sourceFile.exists()); assertTrue(destinationFile.exists()); assertTrue(FileUtils.contentEquals(sourceFile, destinationFile)); .andExpect(status().is4xxClientError()); } private FileInfo createBaseFileInfo(String fileName, File directory, String vosPath) { FileInfo fileInfo = new FileInfo(); fileInfo.setOsPath(getTestFilePath(fileName, directory)); fileInfo.setVirtualPath(vosPath); fileInfo.setPublic(false); @Test public void testCopyControllerAnonymousForbidden() throws Exception { return fileInfo; } CopyRequest copyRequest = this.getCopyRequest(jobId, sourceVosRootPath, destVosRootPath); private String getTestFilePath(String fileName, File directory) { return directory.toPath().resolve("subdir").resolve(fileName).toFile().getAbsolutePath(); when(jobDao.isJobExisting(eq(jobId))).thenReturn(true); mockMvc.perform(post("/copy") .principal(fakePrincipal("anonymous")) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(copyRequest))) .andDo(print()) .andExpect(status().is4xxClientError()); } private CopyRequest getCopyRequest(String jobId, Loading @@ -147,14 +101,4 @@ public class CopyControllerTest { return principal; } private File createFile(File parent, String filename) throws Exception { parent.mkdir(); File file = parent.toPath().resolve(filename).toFile(); file.createNewFile(); java.nio.file.Files.write(file.toPath(), "content_of_file".getBytes()); return file; } }
src/test/java/it/inaf/ia2/transfer/service/CopyServiceTest.java 0 → 100644 +140 −0 Original line number Diff line number Diff line /* * 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.service; import it.inaf.ia2.transfer.auth.TokenPrincipal; import it.inaf.ia2.transfer.persistence.model.FileInfo; import it.inaf.ia2.transfer.persistence.FileDAO; import it.inaf.ia2.transfer.persistence.JobDAO; import java.io.File; import java.util.List; import org.apache.commons.io.FileUtils; import org.assertj.core.util.Files; import org.junit.jupiter.api.AfterEach; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; 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.test.web.servlet.MockMvc; import org.springframework.util.FileSystemUtils; @SpringBootTest @AutoConfigureMockMvc(addFilters = false) public class CopyServiceTest { @MockBean private FileDAO fileDao; @MockBean private JobDAO jobDao; @Autowired private MockMvc mockMvc; @Autowired private FileCopyService fileCopyService; private static File sourceDirectory; private static File destinationDirectory; private static File sourceFile; private static String jobId; private static String sourceVosRootPath; private static String destVosRootPath; private static String filename; private static String userId; @BeforeAll public static void setUp() { jobId = "pippo_copy"; userId = "user_copy"; filename = "file.txt"; sourceVosRootPath = "/source/" + filename; destVosRootPath = "/destination/" + filename; } @BeforeEach public void setUpPerTest() throws Exception { sourceDirectory = Files.newTemporaryFolder(); destinationDirectory = Files.newTemporaryFolder(); sourceFile = this.createFile(sourceDirectory, filename); } @AfterEach public void tearDown() { FileSystemUtils.deleteRecursively(sourceDirectory); FileSystemUtils.deleteRecursively(destinationDirectory); } @Test public void testCopyService() throws Exception { when(fileDao.getBranchFileInfos(eq(sourceVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, sourceDirectory, sourceVosRootPath))); when(fileDao.getBranchFileInfos(eq(destVosRootPath), eq(jobId))) .thenReturn( List.of(this.createBaseFileInfo( filename, destinationDirectory, destVosRootPath))); when(fileDao.getRemainingQuota(any())).thenReturn(null); assertTrue(sourceFile.exists()); File destinationFile = destinationDirectory.toPath().resolve(filename).toFile(); assertFalse(destinationFile.exists()); fileCopyService.copyFiles( sourceVosRootPath, destVosRootPath, jobId, fakePrincipal(userId)); assertTrue(sourceFile.exists()); assertTrue(destinationFile.exists()); assertTrue(FileUtils.contentEquals(sourceFile, destinationFile)); } private FileInfo createBaseFileInfo(String fileName, File directory, String vosPath) { FileInfo fileInfo = new FileInfo(); fileInfo.setOsPath(getTestFilePath(fileName, directory)); fileInfo.setVirtualPath(vosPath); fileInfo.setPublic(false); fileInfo.setOwnerId("user_copy"); return fileInfo; } private String getTestFilePath(String fileName, File directory) { return directory.toPath().resolve("subdir").resolve(fileName).toFile().getAbsolutePath(); } private File createFile(File parent, String filename) throws Exception { parent.mkdir(); File file = parent.toPath().resolve(filename).toFile(); file.createNewFile(); java.nio.file.Files.write(file.toPath(), "content_of_file".getBytes()); return file; } private TokenPrincipal fakePrincipal(String name) { TokenPrincipal principal = mock(TokenPrincipal.class); when(principal.getName()).thenReturn(name); return principal; } }