Loading src/main/java/it/inaf/oats/vospace/FileServiceClient.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -54,7 +54,7 @@ public class FileServiceClient { public String startArchiveJob(Transfer transfer, String jobId) { public String startArchiveJob(Transfer transfer, String jobId) { String target = transfer.getTarget().substring("vos://".length() + authority.length()); String target = NodeUtils.getVosPath(transfer.getTarget()); String viewUri = transfer.getView().getUri(); String viewUri = transfer.getView().getUri(); Loading src/main/java/it/inaf/oats/vospace/UriService.java +1 −3 Original line number Original line Diff line number Diff line Loading @@ -181,8 +181,7 @@ public class UriService { private String getEndpoint(JobSummary job, Transfer transfer) { private String getEndpoint(JobSummary job, Transfer transfer) { String relativePath = StringUtils.uriDecode(URIUtils String relativePath = NodeUtils.getVosPath(transfer.getTarget()); .returnVosPathFromNodeURI(transfer.getTarget(), authority), StandardCharsets.UTF_8); User user = (User) servletRequest.getUserPrincipal(); User user = (User) servletRequest.getUserPrincipal(); String creator = user.getName(); String creator = user.getName(); Loading @@ -204,7 +203,6 @@ public class UriService { case pullFromVoSpace: case pullFromVoSpace: // Refresh relative path: it can differ in case of links followed // Refresh relative path: it can differ in case of links followed relativePath = NodeUtils.getVosPath(node); relativePath = NodeUtils.getVosPath(node); relativePath = StringUtils.uriDecode(relativePath, StandardCharsets.UTF_8); if (!NodeUtils.checkIfReadable(node, creator, groups)) { if (!NodeUtils.checkIfReadable(node, creator, groups)) { throw PermissionDeniedException.forPath(relativePath); throw PermissionDeniedException.forPath(relativePath); } } Loading src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -101,23 +101,23 @@ public class FileServiceClientTest { Transfer transfer = new Transfer(); Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); transfer.setDirection("pullFromVoSpace"); transfer.setTarget("vos://example.com!vospace/mydir"); transfer.setTarget("vos://example.com!vospace/mydir(%20+%20)x"); View view = new View(); View view = new View(); view.setUri(Views.ZIP_VIEW_URI); view.setUri(Views.ZIP_VIEW_URI); transfer.setView(view); transfer.setView(view); ContainerNode node = Mockito.mock(ContainerNode.class); ContainerNode node = Mockito.mock(ContainerNode.class); when(node.getNodes()).thenReturn(List.of()); when(node.getNodes()).thenReturn(List.of()); when(node.getUri()).thenReturn("vos://example.com!vospace/mydir"); when(node.getUri()).thenReturn("vos://example.com!vospace/mydir(%20+%20)x"); when(nodeDAO.listNode(eq("/mydir"))).thenReturn(Optional.of(node)); when(nodeDAO.listNode(eq("/mydir( + )x"))).thenReturn(Optional.of(node)); when(linkService.followLinksForArchiveService(any())) when(linkService.followLinksForArchiveService(any())) .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir"))); .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir( + )x"))); ArchiveRequest archiveRequest = testStartArchiveJob(transfer); ArchiveRequest archiveRequest = testStartArchiveJob(transfer); assertEquals(1, archiveRequest.getEntryDescriptors().size()); assertEquals(1, archiveRequest.getEntryDescriptors().size()); assertEquals("/mydir", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath()); assertEquals("/mydir( + )x", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath()); } } @Test @Test Loading Loading
src/main/java/it/inaf/oats/vospace/FileServiceClient.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -54,7 +54,7 @@ public class FileServiceClient { public String startArchiveJob(Transfer transfer, String jobId) { public String startArchiveJob(Transfer transfer, String jobId) { String target = transfer.getTarget().substring("vos://".length() + authority.length()); String target = NodeUtils.getVosPath(transfer.getTarget()); String viewUri = transfer.getView().getUri(); String viewUri = transfer.getView().getUri(); Loading
src/main/java/it/inaf/oats/vospace/UriService.java +1 −3 Original line number Original line Diff line number Diff line Loading @@ -181,8 +181,7 @@ public class UriService { private String getEndpoint(JobSummary job, Transfer transfer) { private String getEndpoint(JobSummary job, Transfer transfer) { String relativePath = StringUtils.uriDecode(URIUtils String relativePath = NodeUtils.getVosPath(transfer.getTarget()); .returnVosPathFromNodeURI(transfer.getTarget(), authority), StandardCharsets.UTF_8); User user = (User) servletRequest.getUserPrincipal(); User user = (User) servletRequest.getUserPrincipal(); String creator = user.getName(); String creator = user.getName(); Loading @@ -204,7 +203,6 @@ public class UriService { case pullFromVoSpace: case pullFromVoSpace: // Refresh relative path: it can differ in case of links followed // Refresh relative path: it can differ in case of links followed relativePath = NodeUtils.getVosPath(node); relativePath = NodeUtils.getVosPath(node); relativePath = StringUtils.uriDecode(relativePath, StandardCharsets.UTF_8); if (!NodeUtils.checkIfReadable(node, creator, groups)) { if (!NodeUtils.checkIfReadable(node, creator, groups)) { throw PermissionDeniedException.forPath(relativePath); throw PermissionDeniedException.forPath(relativePath); } } Loading
src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java +5 −5 Original line number Original line Diff line number Diff line Loading @@ -101,23 +101,23 @@ public class FileServiceClientTest { Transfer transfer = new Transfer(); Transfer transfer = new Transfer(); transfer.setDirection("pullFromVoSpace"); transfer.setDirection("pullFromVoSpace"); transfer.setTarget("vos://example.com!vospace/mydir"); transfer.setTarget("vos://example.com!vospace/mydir(%20+%20)x"); View view = new View(); View view = new View(); view.setUri(Views.ZIP_VIEW_URI); view.setUri(Views.ZIP_VIEW_URI); transfer.setView(view); transfer.setView(view); ContainerNode node = Mockito.mock(ContainerNode.class); ContainerNode node = Mockito.mock(ContainerNode.class); when(node.getNodes()).thenReturn(List.of()); when(node.getNodes()).thenReturn(List.of()); when(node.getUri()).thenReturn("vos://example.com!vospace/mydir"); when(node.getUri()).thenReturn("vos://example.com!vospace/mydir(%20+%20)x"); when(nodeDAO.listNode(eq("/mydir"))).thenReturn(Optional.of(node)); when(nodeDAO.listNode(eq("/mydir( + )x"))).thenReturn(Optional.of(node)); when(linkService.followLinksForArchiveService(any())) when(linkService.followLinksForArchiveService(any())) .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir"))); .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir( + )x"))); ArchiveRequest archiveRequest = testStartArchiveJob(transfer); ArchiveRequest archiveRequest = testStartArchiveJob(transfer); assertEquals(1, archiveRequest.getEntryDescriptors().size()); assertEquals(1, archiveRequest.getEntryDescriptors().size()); assertEquals("/mydir", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath()); assertEquals("/mydir( + )x", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath()); } } @Test @Test Loading