Commit 42401fc4 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Fixed issue in paths of tar/zip archive requests

parent 88e4cf2a
Loading
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -45,7 +45,8 @@ public class FileServiceClient {
            throw new IllegalArgumentException("Target size is " + transfer.getTarget().size());
        }

        String target = transfer.getTarget().get(0);
        String target = transfer.getTarget().get(0)
                .substring("vos://".length() + authority.length());

        String viewUri = transfer.getView().getUri();

@@ -65,7 +66,7 @@ public class FileServiceClient {

        if (vosPaths.isEmpty()) {
            // Add target path
            vosPaths.add(target.substring("vos://".length() + authority.length()));
            vosPaths.add(target);
        }

        ArchiveRequest archiveRequest = new ArchiveRequest();
@@ -91,7 +92,7 @@ public class FileServiceClient {
        }, new Object[]{});
    }

    private static class ArchiveRequest {
    public static class ArchiveRequest {

        private String type;
        private String jobId;
+25 −4
Original line number Diff line number Diff line
@@ -5,10 +5,14 @@
 */
package it.inaf.oats.vospace;

import com.fasterxml.jackson.databind.ObjectMapper;
import it.inaf.ia2.aa.data.User;
import it.inaf.oats.vospace.FileServiceClient.ArchiveRequest;
import it.inaf.oats.vospace.datamodel.Views;
import it.inaf.oats.vospace.exception.InvalidArgumentException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.net.URI;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
@@ -44,6 +48,8 @@ import org.springframework.web.client.RestTemplate;
@MockitoSettings(strictness = Strictness.LENIENT)
public class FileServiceClientTest {

    private static final ObjectMapper MAPPER = new ObjectMapper();

    @Mock
    private RestTemplate restTemplate;

@@ -88,7 +94,10 @@ public class FileServiceClientTest {
        view.setUri(Views.ZIP_VIEW_URI);
        transfer.setView(view);

        testStartArchiveJob(transfer);
        ArchiveRequest archiveRequest = testStartArchiveJob(transfer);

        assertEquals(1, archiveRequest.getPaths().size());
        assertEquals("/mydir", archiveRequest.getPaths().get(0));
    }

    @Test
@@ -146,20 +155,26 @@ public class FileServiceClientTest {
        param2.setValue("file2");
        view.getParam().add(param2);

        testStartArchiveJob(transfer);
        ArchiveRequest archiveRequest = testStartArchiveJob(transfer);

        assertEquals(2, archiveRequest.getPaths().size());
        assertEquals("/parent_dir/file1", archiveRequest.getPaths().get(0));
        assertEquals("/parent_dir/file2", archiveRequest.getPaths().get(1));
    }

    private void testStartArchiveJob(Transfer transfer) {
    private ArchiveRequest testStartArchiveJob(Transfer transfer) {

        User user = mock(User.class);
        when(user.getAccessToken()).thenReturn("<token>");
        when(request.getUserPrincipal()).thenReturn(user);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        doAnswer(invocation -> {
            RequestCallback requestCallback = invocation.getArgument(2);
            ClientHttpRequest mockedRequest = mock(ClientHttpRequest.class);
            HttpHeaders mockedRequestHeaders = mock(HttpHeaders.class);
            when(mockedRequest.getBody()).thenReturn(new ByteArrayOutputStream());
            when(mockedRequest.getBody()).thenReturn(baos);
            when(mockedRequest.getHeaders()).thenReturn(mockedRequestHeaders);
            requestCallback.doWithRequest(mockedRequest);

@@ -176,5 +191,11 @@ public class FileServiceClientTest {
        String redirect = fileServiceClient.startArchiveJob(transfer, "job123");

        assertEquals("http://file-service/archive/result", redirect);

        try {
            return MAPPER.readValue(baos.toByteArray(), ArchiveRequest.class);
        } catch (IOException ex) {
            throw new UncheckedIOException(ex);
        }
    }
}