From 84f6c57ebaf26dfb198475a33825df99cb9118ce Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Thu, 15 Apr 2021 18:01:49 +0200 Subject: [PATCH] Added test cases for PermissionDeniedException and NodeBusyException in UriServiceTest class --- .../it/inaf/oats/vospace/UriServiceTest.java | 75 ++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/src/test/java/it/inaf/oats/vospace/UriServiceTest.java b/src/test/java/it/inaf/oats/vospace/UriServiceTest.java index 9fbe034..10f5423 100644 --- a/src/test/java/it/inaf/oats/vospace/UriServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/UriServiceTest.java @@ -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; @@ -135,6 +138,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() { @@ -326,7 +399,7 @@ public class UriServiceTest { node.getProperties().add(publicProperty); when(nodeDAO.listNode(eq("/mydata1"))).thenReturn(Optional.of(node)); return node; - } + } private JobSummary getJob() { -- GitLab