From 732a7ded1cffe9aa2551f1fa8cd02b9ca2e20fec Mon Sep 17 00:00:00 2001
From: Sonia Zorba <sonia.zorba@inaf.it>
Date: Tue, 9 Mar 2021 17:26:22 +0100
Subject: [PATCH] Added test case for task #3636

---
 .../oats/vospace/ListNodeControllerTest.java  | 39 +++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java b/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java
index 415e2b4..54dc45e 100644
--- a/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java
+++ b/src/test/java/it/inaf/oats/vospace/ListNodeControllerTest.java
@@ -1,5 +1,6 @@
 package it.inaf.oats.vospace;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import static it.inaf.oats.vospace.VOSpaceXmlTestUtil.loadDocument;
 import it.inaf.oats.vospace.datamodel.NodeProperties;
 import it.inaf.oats.vospace.persistence.NodeDAO;
@@ -35,6 +36,8 @@ public class ListNodeControllerTest {
 
     private static final String URI_PREFIX = "vos://example.com!vospace";
 
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+    
     @MockBean
     private NodeDAO dao;
 
@@ -107,6 +110,42 @@ public class ListNodeControllerTest {
                 .accept(MediaType.APPLICATION_XML))
                 .andExpect(status().is2xxSuccessful());       
     }
+    
+    //@Test
+    public void testListOnlyReadableChildren() throws Exception {
+
+        ContainerNode node = new ContainerNode();
+        node.setUri(URI_PREFIX + "/mynode");
+        Property creator = new Property();
+        creator.setUri(NodeProperties.CREATOR_URI);
+        creator.setValue("user1");
+        node.getProperties().add(creator);
+
+        // hidden node
+        Node child1 = getDataNodeByOwnership("user2", "group5");
+        child1.setUri(URI_PREFIX + "/mynode/child1");
+        node.getNodes().add(child1);
+        
+        // visible node
+        Node child2 = getDataNodeByOwnership("user1", "group1");
+        child2.setUri(URI_PREFIX + "/mynode/child2");
+        node.getNodes().add(child2);
+        
+        assertEquals(2, node.getNodes().size());
+
+        when(dao.listNode(eq("/mynode"))).thenReturn(Optional.of(node));
+
+        String response = mockMvc.perform(get("/nodes/mynode")
+                .header("Authorization", "Bearer user1_token")
+                .accept(MediaType.APPLICATION_JSON))
+                .andExpect(status().is2xxSuccessful())
+                .andReturn().getResponse().getContentAsString();
+        
+        ContainerNode result = MAPPER.readValue(response, ContainerNode.class);
+        
+        assertEquals(1, result.getNodes().size());
+        assertEquals(URI_PREFIX + "/mynode/child2", result.getNodes().get(0).getUri());
+    }
 
     private Optional<Node> getRootNode() {
         ContainerNode root = new ContainerNode();
-- 
GitLab