Loading vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/UploadController.java +5 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,11 @@ public class UploadController extends BaseController { public CompletableFuture<String> prepareForDownload(String parentPath, String fileName) { return CompletableFuture.supplyAsync(() -> { String nodeUri = "vos://" + authority + parentPath + "/" + fileName; String nodeUri = "vos://" + authority + parentPath; if (!nodeUri.endsWith("/")) { nodeUri += "/"; } nodeUri += fileName; createDataNode(nodeUri, getUser().getName()); Loading vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/controller/UploadControllerTest.java 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * This file is part of vospace-ui * Copyright (C) 2021 Istituto Nazionale di Astrofisica * SPDX-License-Identifier: GPL-3.0-or-later */ package it.inaf.ia2.vospace.ui.controller; import com.fasterxml.jackson.databind.ObjectMapper; import it.inaf.ia2.aa.data.User; import it.inaf.ia2.vospace.ui.client.VOSpaceClient; import it.inaf.ia2.vospace.ui.data.UploadFilesData; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.mockito.ArgumentMatchers.any; import org.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.http.MediaType; import org.springframework.test.context.TestPropertySource; import org.springframework.test.web.servlet.MockMvc; 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.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @SpringBootTest @AutoConfigureMockMvc @TestPropertySource(properties = {"vospace-authority=example.com!vospace"}) public class UploadControllerTest { private static final ObjectMapper MAPPER = new ObjectMapper(); @MockBean private VOSpaceClient client; @Autowired private MockMvc mockMvc; @Mock private User user; @BeforeEach public void setUp() { when(user.getName()).thenReturn("user_id"); } @Test public void testPreUpload() throws Exception { UploadFilesData data = new UploadFilesData(); data.setParentPath("/mynode"); data.setFiles(List.of("test.txt")); when(client.getFileServiceEndpoint(any())).thenReturn("http://files/mynode/test.txt"); mockMvc.perform(post("/preupload") .sessionAttr("user_data", user) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(data))) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$[0]").value("http://files/mynode/test.txt")); } @Test public void testPreUploadRoot() throws Exception { UploadFilesData data = new UploadFilesData(); data.setParentPath("/"); data.setFiles(List.of("test.txt")); when(client.getFileServiceEndpoint(any())).thenReturn("http://files/test.txt"); mockMvc.perform(post("/preupload") .sessionAttr("user_data", user) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(data))) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$[0]").value("http://files/test.txt")); } @Test public void testUploadNotAllowedToAnonymous() throws Exception { UploadFilesData data = new UploadFilesData(); data.setParentPath("/"); data.setFiles(List.of("test.txt")); mockMvc.perform(post("/preupload") .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(data))) .andExpect(status().isForbidden()); } } Loading
vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/UploadController.java +5 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,11 @@ public class UploadController extends BaseController { public CompletableFuture<String> prepareForDownload(String parentPath, String fileName) { return CompletableFuture.supplyAsync(() -> { String nodeUri = "vos://" + authority + parentPath + "/" + fileName; String nodeUri = "vos://" + authority + parentPath; if (!nodeUri.endsWith("/")) { nodeUri += "/"; } nodeUri += fileName; createDataNode(nodeUri, getUser().getName()); Loading
vospace-ui-backend/src/test/java/it/inaf/ia2/vospace/ui/controller/UploadControllerTest.java 0 → 100644 +99 −0 Original line number Diff line number Diff line /* * This file is part of vospace-ui * Copyright (C) 2021 Istituto Nazionale di Astrofisica * SPDX-License-Identifier: GPL-3.0-or-later */ package it.inaf.ia2.vospace.ui.controller; import com.fasterxml.jackson.databind.ObjectMapper; import it.inaf.ia2.aa.data.User; import it.inaf.ia2.vospace.ui.client.VOSpaceClient; import it.inaf.ia2.vospace.ui.data.UploadFilesData; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.mockito.ArgumentMatchers.any; import org.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.http.MediaType; import org.springframework.test.context.TestPropertySource; import org.springframework.test.web.servlet.MockMvc; 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.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @SpringBootTest @AutoConfigureMockMvc @TestPropertySource(properties = {"vospace-authority=example.com!vospace"}) public class UploadControllerTest { private static final ObjectMapper MAPPER = new ObjectMapper(); @MockBean private VOSpaceClient client; @Autowired private MockMvc mockMvc; @Mock private User user; @BeforeEach public void setUp() { when(user.getName()).thenReturn("user_id"); } @Test public void testPreUpload() throws Exception { UploadFilesData data = new UploadFilesData(); data.setParentPath("/mynode"); data.setFiles(List.of("test.txt")); when(client.getFileServiceEndpoint(any())).thenReturn("http://files/mynode/test.txt"); mockMvc.perform(post("/preupload") .sessionAttr("user_data", user) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(data))) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$[0]").value("http://files/mynode/test.txt")); } @Test public void testPreUploadRoot() throws Exception { UploadFilesData data = new UploadFilesData(); data.setParentPath("/"); data.setFiles(List.of("test.txt")); when(client.getFileServiceEndpoint(any())).thenReturn("http://files/test.txt"); mockMvc.perform(post("/preupload") .sessionAttr("user_data", user) .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(data))) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$[0]").value("http://files/test.txt")); } @Test public void testUploadNotAllowedToAnonymous() throws Exception { UploadFilesData data = new UploadFilesData(); data.setParentPath("/"); data.setFiles(List.of("test.txt")); mockMvc.perform(post("/preupload") .contentType(MediaType.APPLICATION_JSON) .content(MAPPER.writeValueAsString(data))) .andExpect(status().isForbidden()); } }