Loading src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -6,6 +6,7 @@ package it.inaf.oats.vospace.persistence; package it.inaf.oats.vospace.persistence; import it.inaf.oats.vospace.DeleteNodeController; import it.inaf.oats.vospace.DeleteNodeController; import it.inaf.oats.vospace.URIUtils; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeUtils; import it.inaf.oats.vospace.datamodel.NodeUtils; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.exception.InternalFaultException; Loading Loading @@ -57,9 +58,9 @@ public class NodeDAO { public void createNode(Node myNode, String jobId) { public void createNode(Node myNode, String jobId) { String nodeURI = myNode.getUri(); String nodeVosPath = URIUtils.returnVosPathFromNodeURI(myNode.getUri(), authority); List<NodePaths> paths = getNodePathsFromDB(nodeURI); List<NodePaths> paths = getNodePathsFromDB(nodeVosPath); if (paths.isEmpty()) { if (paths.isEmpty()) { throw new IllegalStateException("Unable to find parent node during node creation"); throw new IllegalStateException("Unable to find parent node during node creation"); Loading @@ -74,7 +75,7 @@ public class NodeDAO { jdbcTemplate.update(conn -> { jdbcTemplate.update(conn -> { PreparedStatement ps = conn.prepareStatement(sb.toString()); PreparedStatement ps = conn.prepareStatement(sb.toString()); int i = 0; int i = 0; ps.setString(++i, NodeUtils.getNodeName(myNode)); ps.setString(++i, NodeUtils.getNodeName(nodeVosPath)); if (jobId == null) { if (jobId == null) { ps.setNull(++i, Types.VARCHAR); ps.setNull(++i, Types.VARCHAR); } else { } else { Loading Loading @@ -581,9 +582,8 @@ public class NodeDAO { return diff; return diff; } } private List<NodePaths> getNodePathsFromDB(String nodeURI) { private List<NodePaths> getNodePathsFromDB(String path) { String path = nodeURI.replaceAll("vos://[^/]+", ""); String parentPath = NodeUtils.getParentPath(path); String parentPath = NodeUtils.getParentPath(path); String sql = "SELECT path, relative_path " String sql = "SELECT path, relative_path " Loading src/test/java/it/inaf/oats/vospace/URIUtilsTest.java +0 −9 Original line number Original line Diff line number Diff line Loading @@ -6,17 +6,8 @@ package it.inaf.oats.vospace; package it.inaf.oats.vospace; import it.inaf.oats.vospace.exception.InvalidURIException; import it.inaf.oats.vospace.exception.InvalidURIException; import java.util.ArrayList; import java.util.List; import net.ivoa.xml.vospace.v2.DataNode; import net.ivoa.xml.vospace.v2.LinkNode; import net.ivoa.xml.vospace.v2.Node; import net.ivoa.xml.vospace.v2.Property; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test; public class URIUtilsTest { public class URIUtilsTest { Loading src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java +74 −71 Original line number Original line Diff line number Diff line Loading @@ -8,6 +8,7 @@ package it.inaf.oats.vospace.persistence; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.persistence.NodeDAO.ShortNodeDescriptor; import it.inaf.oats.vospace.persistence.NodeDAO.ShortNodeDescriptor; import java.lang.reflect.Field; import java.util.HashSet; import java.util.HashSet; import java.util.List; import java.util.List; import java.util.Optional; import java.util.Optional; Loading @@ -30,12 +31,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.util.ReflectionTestUtils; @ExtendWith(SpringExtension.class) @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {DataSourceConfig.class}) @ContextConfiguration(classes = {DataSourceConfig.class}) @TestPropertySource(locations = "classpath:test.properties") @TestPropertySource(locations = "classpath:test.properties") public class NodeDAOTest { public class NodeDAOTest { private static final String AUTHORITY = "example.com!vospace"; @Autowired @Autowired private DataSource dataSource; private DataSource dataSource; private NodeDAO dao; private NodeDAO dao; Loading @@ -43,6 +47,7 @@ public class NodeDAOTest { @BeforeEach @BeforeEach public void init() { public void init() { dao = new NodeDAO(dataSource); dao = new NodeDAO(dataSource); ReflectionTestUtils.setField(dao, "authority", AUTHORITY); } } @Test @Test Loading Loading @@ -96,8 +101,8 @@ public class NodeDAOTest { String userName = "user3"; String userName = "user3"; List<String> userGroups = List.of(); List<String> userGroups = List.of(); Optional<ShortNodeDescriptor> snd1Opt = Optional<ShortNodeDescriptor> snd1Opt dao.getShortNodeDescriptor("/test3/mstick", userName, userGroups); = dao.getShortNodeDescriptor("/test3/mstick", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); ShortNodeDescriptor snd1 = snd1Opt.get(); ShortNodeDescriptor snd1 = snd1Opt.get(); Loading @@ -108,30 +113,30 @@ public class NodeDAOTest { assertEquals("9.13", snd1.getDestinationNodeLtreePath()); assertEquals("9.13", snd1.getDestinationNodeLtreePath()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/mbusy", userName, userGroups); = dao.getShortNodeDescriptor("/test3/mbusy", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isPermissionDenied()); assertTrue(snd1.isBusy()); assertTrue(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/masynctrans", userName, userGroups); = dao.getShortNodeDescriptor("/test3/masynctrans", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertFalse(snd1.isWritable()); assertFalse(snd1.isWritable()); assertFalse(snd1.isBusy()); assertFalse(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/asyncloc", userName, userGroups); = dao.getShortNodeDescriptor("/test3/asyncloc", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertFalse(snd1.isWritable()); assertFalse(snd1.isWritable()); assertFalse(snd1.isBusy()); assertFalse(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test1/f1/f2_renamed/f3", "user1", userGroups); = dao.getShortNodeDescriptor("/test1/f1/f2_renamed/f3", "user1", userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertFalse(snd1.isContainer()); assertFalse(snd1.isContainer()); Loading @@ -139,22 +144,22 @@ public class NodeDAOTest { assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isBusy()); assertFalse(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/group1", "user1", userGroups); = dao.getShortNodeDescriptor("/test3/group1", "user1", userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); assertTrue(snd1.isPermissionDenied()); assertTrue(snd1.isPermissionDenied()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/group1", "user3", List.of("group99")); = dao.getShortNodeDescriptor("/test3/group1", "user3", List.of("group99")); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isPermissionDenied()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/group1", "user1", List.of("group1", "group2")); = dao.getShortNodeDescriptor("/test3/group1", "user1", List.of("group1", "group2")); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); Loading Loading @@ -216,7 +221,6 @@ public class NodeDAOTest { optSnd = dao.getShortNodeDescriptor("/test3/group1/m1", "user3", List.of("group1")); optSnd = dao.getShortNodeDescriptor("/test3/group1/m1", "user3", List.of("group1")); assertEquals("9.17.10", optSnd.get().getDestinationNodeLtreePath()); assertEquals("9.17.10", optSnd.get().getDestinationNodeLtreePath()); Optional<Long> optResultIdChild = dao.getNodeId("/test3/group1/m1/m2"); Optional<Long> optResultIdChild = dao.getNodeId("/test3/group1/m1/m2"); optSnd = dao.getShortNodeDescriptor("/test3/group1/m1/m2", "user3", List.of("group1")); optSnd = dao.getShortNodeDescriptor("/test3/group1/m1/m2", "user3", List.of("group1")); assertEquals("9.17.10.11", optSnd.get().getDestinationNodeLtreePath()); assertEquals("9.17.10.11", optSnd.get().getDestinationNodeLtreePath()); Loading @@ -224,7 +228,6 @@ public class NodeDAOTest { } } @Test @Test public void testRenameNode() { public void testRenameNode() { String oldPath = "/test1/f1"; String oldPath = "/test1/f1"; Loading Loading
src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -6,6 +6,7 @@ package it.inaf.oats.vospace.persistence; package it.inaf.oats.vospace.persistence; import it.inaf.oats.vospace.DeleteNodeController; import it.inaf.oats.vospace.DeleteNodeController; import it.inaf.oats.vospace.URIUtils; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeUtils; import it.inaf.oats.vospace.datamodel.NodeUtils; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.exception.InternalFaultException; Loading Loading @@ -57,9 +58,9 @@ public class NodeDAO { public void createNode(Node myNode, String jobId) { public void createNode(Node myNode, String jobId) { String nodeURI = myNode.getUri(); String nodeVosPath = URIUtils.returnVosPathFromNodeURI(myNode.getUri(), authority); List<NodePaths> paths = getNodePathsFromDB(nodeURI); List<NodePaths> paths = getNodePathsFromDB(nodeVosPath); if (paths.isEmpty()) { if (paths.isEmpty()) { throw new IllegalStateException("Unable to find parent node during node creation"); throw new IllegalStateException("Unable to find parent node during node creation"); Loading @@ -74,7 +75,7 @@ public class NodeDAO { jdbcTemplate.update(conn -> { jdbcTemplate.update(conn -> { PreparedStatement ps = conn.prepareStatement(sb.toString()); PreparedStatement ps = conn.prepareStatement(sb.toString()); int i = 0; int i = 0; ps.setString(++i, NodeUtils.getNodeName(myNode)); ps.setString(++i, NodeUtils.getNodeName(nodeVosPath)); if (jobId == null) { if (jobId == null) { ps.setNull(++i, Types.VARCHAR); ps.setNull(++i, Types.VARCHAR); } else { } else { Loading Loading @@ -581,9 +582,8 @@ public class NodeDAO { return diff; return diff; } } private List<NodePaths> getNodePathsFromDB(String nodeURI) { private List<NodePaths> getNodePathsFromDB(String path) { String path = nodeURI.replaceAll("vos://[^/]+", ""); String parentPath = NodeUtils.getParentPath(path); String parentPath = NodeUtils.getParentPath(path); String sql = "SELECT path, relative_path " String sql = "SELECT path, relative_path " Loading
src/test/java/it/inaf/oats/vospace/URIUtilsTest.java +0 −9 Original line number Original line Diff line number Diff line Loading @@ -6,17 +6,8 @@ package it.inaf.oats.vospace; package it.inaf.oats.vospace; import it.inaf.oats.vospace.exception.InvalidURIException; import it.inaf.oats.vospace.exception.InvalidURIException; import java.util.ArrayList; import java.util.List; import net.ivoa.xml.vospace.v2.DataNode; import net.ivoa.xml.vospace.v2.LinkNode; import net.ivoa.xml.vospace.v2.Node; import net.ivoa.xml.vospace.v2.Property; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test; public class URIUtilsTest { public class URIUtilsTest { Loading
src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java +74 −71 Original line number Original line Diff line number Diff line Loading @@ -8,6 +8,7 @@ package it.inaf.oats.vospace.persistence; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.persistence.NodeDAO.ShortNodeDescriptor; import it.inaf.oats.vospace.persistence.NodeDAO.ShortNodeDescriptor; import java.lang.reflect.Field; import java.util.HashSet; import java.util.HashSet; import java.util.List; import java.util.List; import java.util.Optional; import java.util.Optional; Loading @@ -30,12 +31,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.util.ReflectionTestUtils; @ExtendWith(SpringExtension.class) @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {DataSourceConfig.class}) @ContextConfiguration(classes = {DataSourceConfig.class}) @TestPropertySource(locations = "classpath:test.properties") @TestPropertySource(locations = "classpath:test.properties") public class NodeDAOTest { public class NodeDAOTest { private static final String AUTHORITY = "example.com!vospace"; @Autowired @Autowired private DataSource dataSource; private DataSource dataSource; private NodeDAO dao; private NodeDAO dao; Loading @@ -43,6 +47,7 @@ public class NodeDAOTest { @BeforeEach @BeforeEach public void init() { public void init() { dao = new NodeDAO(dataSource); dao = new NodeDAO(dataSource); ReflectionTestUtils.setField(dao, "authority", AUTHORITY); } } @Test @Test Loading Loading @@ -96,8 +101,8 @@ public class NodeDAOTest { String userName = "user3"; String userName = "user3"; List<String> userGroups = List.of(); List<String> userGroups = List.of(); Optional<ShortNodeDescriptor> snd1Opt = Optional<ShortNodeDescriptor> snd1Opt dao.getShortNodeDescriptor("/test3/mstick", userName, userGroups); = dao.getShortNodeDescriptor("/test3/mstick", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); ShortNodeDescriptor snd1 = snd1Opt.get(); ShortNodeDescriptor snd1 = snd1Opt.get(); Loading @@ -108,30 +113,30 @@ public class NodeDAOTest { assertEquals("9.13", snd1.getDestinationNodeLtreePath()); assertEquals("9.13", snd1.getDestinationNodeLtreePath()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/mbusy", userName, userGroups); = dao.getShortNodeDescriptor("/test3/mbusy", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isPermissionDenied()); assertTrue(snd1.isBusy()); assertTrue(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/masynctrans", userName, userGroups); = dao.getShortNodeDescriptor("/test3/masynctrans", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertFalse(snd1.isWritable()); assertFalse(snd1.isWritable()); assertFalse(snd1.isBusy()); assertFalse(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/asyncloc", userName, userGroups); = dao.getShortNodeDescriptor("/test3/asyncloc", userName, userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertFalse(snd1.isWritable()); assertFalse(snd1.isWritable()); assertFalse(snd1.isBusy()); assertFalse(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test1/f1/f2_renamed/f3", "user1", userGroups); = dao.getShortNodeDescriptor("/test1/f1/f2_renamed/f3", "user1", userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertFalse(snd1.isContainer()); assertFalse(snd1.isContainer()); Loading @@ -139,22 +144,22 @@ public class NodeDAOTest { assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isBusy()); assertFalse(snd1.isBusy()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/group1", "user1", userGroups); = dao.getShortNodeDescriptor("/test3/group1", "user1", userGroups); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); assertTrue(snd1.isPermissionDenied()); assertTrue(snd1.isPermissionDenied()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/group1", "user3", List.of("group99")); = dao.getShortNodeDescriptor("/test3/group1", "user3", List.of("group99")); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); assertFalse(snd1.isPermissionDenied()); assertFalse(snd1.isPermissionDenied()); snd1Opt = snd1Opt dao.getShortNodeDescriptor("/test3/group1", "user1", List.of("group1", "group2")); = dao.getShortNodeDescriptor("/test3/group1", "user1", List.of("group1", "group2")); assertTrue(snd1Opt.isPresent()); assertTrue(snd1Opt.isPresent()); snd1 = snd1Opt.get(); snd1 = snd1Opt.get(); assertTrue(snd1.isWritable()); assertTrue(snd1.isWritable()); Loading Loading @@ -216,7 +221,6 @@ public class NodeDAOTest { optSnd = dao.getShortNodeDescriptor("/test3/group1/m1", "user3", List.of("group1")); optSnd = dao.getShortNodeDescriptor("/test3/group1/m1", "user3", List.of("group1")); assertEquals("9.17.10", optSnd.get().getDestinationNodeLtreePath()); assertEquals("9.17.10", optSnd.get().getDestinationNodeLtreePath()); Optional<Long> optResultIdChild = dao.getNodeId("/test3/group1/m1/m2"); Optional<Long> optResultIdChild = dao.getNodeId("/test3/group1/m1/m2"); optSnd = dao.getShortNodeDescriptor("/test3/group1/m1/m2", "user3", List.of("group1")); optSnd = dao.getShortNodeDescriptor("/test3/group1/m1/m2", "user3", List.of("group1")); assertEquals("9.17.10.11", optSnd.get().getDestinationNodeLtreePath()); assertEquals("9.17.10.11", optSnd.get().getDestinationNodeLtreePath()); Loading @@ -224,7 +228,6 @@ public class NodeDAOTest { } } @Test @Test public void testRenameNode() { public void testRenameNode() { String oldPath = "/test1/f1"; String oldPath = "/test1/f1"; Loading