Commit 84f6c57e authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

Added test cases for PermissionDeniedException and NodeBusyException in

UriServiceTest class
parent d9a1f20e
Loading
Loading
Loading
Loading
+74 −1
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@ import it.inaf.ia2.aa.ServletRapClient;
import it.inaf.ia2.aa.data.User;
import it.inaf.oats.vospace.datamodel.NodeProperties;
import it.inaf.oats.vospace.exception.InvalidArgumentException;
import it.inaf.oats.vospace.exception.NodeBusyException;
import it.inaf.oats.vospace.exception.PermissionDeniedException;
import it.inaf.oats.vospace.exception.ProtocolNotSupportedException;
import it.inaf.oats.vospace.persistence.LocationDAO;
import it.inaf.oats.vospace.persistence.NodeDAO;
@@ -19,6 +21,7 @@ import net.ivoa.xml.vospace.v2.Property;
import net.ivoa.xml.vospace.v2.Protocol;
import net.ivoa.xml.vospace.v2.Transfer;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.fail;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -136,6 +139,76 @@ public class UriServiceTest {
        assertEquals("http://file-service/mydata1?jobId=job-id&token=<new-token>", job.getResults().get(0).getHref());
    }
    
    @Test
    public void testPrivateUrlPermissionDenied() {

        Node node = new DataNode();
        Property creator = new Property();
        creator.setUri(NodeProperties.CREATOR_URI);
        creator.setValue("user3");
        node.getProperties().add(creator);

        Property readgroup = new Property();
        readgroup.setUri(NodeProperties.GROUP_READ_URI);
        readgroup.setValue("group1000");
        node.getProperties().add(readgroup);

        when(nodeDAO.listNode(eq("/mydata1"))).thenReturn(Optional.of(node));

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

        when(servletRequest.getUserPrincipal()).thenReturn(user);

        when(rapClient.exchangeToken(argThat(req -> {
            assertEquals("<token>", req.getSubjectToken());
            assertEquals("http://file-service/mydata1", req.getResource());
            return true;
        }), any())).thenReturn("<new-token>");

        JobSummary job = getJob();
        Transfer tr = uriService.getTransfer(job);
        assertThrows(PermissionDeniedException.class, 
                ()->{ uriService.setTransferJobResult(job, tr);});        
    }
    
    @Test
    public void testPrivateUrlNodeBusy() {

        DataNode node = new DataNode();
        Property creator = new Property();
        creator.setUri(NodeProperties.CREATOR_URI);
        creator.setValue("user1");
        node.getProperties().add(creator);

        Property readgroup = new Property();
        readgroup.setUri(NodeProperties.GROUP_READ_URI);
        readgroup.setValue("group1");
        node.getProperties().add(readgroup);
        
        node.setBusy(Boolean.TRUE);        

        when(nodeDAO.listNode(eq("/mydata1"))).thenReturn(Optional.of(node));

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

        when(servletRequest.getUserPrincipal()).thenReturn(user);

        when(rapClient.exchangeToken(argThat(req -> {
            assertEquals("<token>", req.getSubjectToken());
            assertEquals("http://file-service/mydata1", req.getResource());
            return true;
        }), any())).thenReturn("<new-token>");

        JobSummary job = getJob();
        Transfer tr = uriService.getTransfer(job);
        assertThrows(NodeBusyException.class, 
                ()->{ uriService.setTransferJobResult(job, tr);});        
    }

    @Test
    public void pushToNonexistentNode() {