Merge from ECOMP's repository
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / AAITreeNodeBuilderTest.java
1 package org.onap.vid.services;
2
3 import com.fasterxml.jackson.databind.JsonNode;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5 import org.mockito.Mock;
6 import org.mockito.MockitoAnnotations;
7 import org.onap.vid.aai.AaiClientInterface;
8 import org.onap.vid.model.aaiTree.AAITreeNode;
9 import org.onap.vid.utils.Unchecked;
10 import org.testng.Assert;
11 import org.testng.annotations.BeforeTest;
12 import org.testng.annotations.Test;
13
14 import java.io.IOException;
15 import java.util.HashMap;
16 import java.util.concurrent.ConcurrentLinkedQueue;
17 import java.util.concurrent.ConcurrentSkipListSet;
18 import java.util.concurrent.ThreadPoolExecutor;
19 import java.util.concurrent.atomic.AtomicInteger;
20
21 import static java.util.Comparator.comparing;
22 import static org.mockito.Mockito.when;
23 import static org.onap.vid.services.AAIServiceTree.AAI_TREE_PATHS;
24
25 public class AAITreeNodeBuilderTest {
26
27     AAITreeNodeBuilder aaiTreeNodeBuilder;
28
29     @Mock
30     AaiClientInterface aaiClientMock;
31
32     @Mock
33     ThreadPoolExecutor threadPoolMock;
34
35
36     @BeforeTest
37     public void initMocks() {
38         MockitoAnnotations.initMocks(this);
39         aaiTreeNodeBuilder = new AAITreeNodeBuilder(aaiClientMock);
40     }
41
42     @Test
43     public void buildNode_buildGroupNode_NodeIsAsExpected(){
44         ConcurrentSkipListSet<AAITreeNode> nodesAccumulator = new ConcurrentSkipListSet<>(comparing(AAITreeNode::getUniqueNodeKey));
45         ConcurrentLinkedQueue<String> visitedNodes = new ConcurrentLinkedQueue<>();
46         when(aaiClientMock.typedAaiGet(Unchecked.toURI("anyUrl"), JsonNode.class)).thenReturn(createGroupJson());
47
48         AAITreeNode groupNode = aaiTreeNodeBuilder.buildNode("instance-group",
49                 "anyUrl",
50                 nodesAccumulator,
51                 threadPoolMock,
52                 visitedNodes,
53                 new AtomicInteger(0),
54                 AAI_TREE_PATHS).get(0);
55
56         AAITreeNode expectedGroupNode = createExpectedGroupNode();
57         assertNodeIsAsExpected(expectedGroupNode,groupNode);
58     }
59
60     private void assertNodeIsAsExpected(AAITreeNode expectedGroupNode, AAITreeNode groupNode) {
61         Assert.assertEquals(groupNode.getId(), expectedGroupNode.getId());
62         Assert.assertEquals(groupNode.getType(), expectedGroupNode.getType());
63         Assert.assertEquals(groupNode.getName(), expectedGroupNode.getName());
64         Assert.assertEquals(groupNode.getModelVersionId(), expectedGroupNode.getModelVersionId());
65         Assert.assertEquals(groupNode.getModelInvariantId(), expectedGroupNode.getModelInvariantId());
66         Assert.assertEquals(groupNode.getInMaint(), expectedGroupNode.getInMaint());
67         Assert.assertEquals(groupNode.getAdditionalProperties(), expectedGroupNode.getAdditionalProperties());
68     }
69
70     private AAITreeNode createExpectedGroupNode() {
71         AAITreeNode expectedNode = new AAITreeNode();
72         expectedNode.setId("c4fcf022-31a0-470a-b5b8-c18335b7af32");
73         expectedNode.setType("instance-group");
74         expectedNode.setName("Test vE-Flex");
75         expectedNode.setModelVersionId("Test vE-Flex");
76         expectedNode.setModelInvariantId("dd182d7d-6949-4b90-b3cc-5befe400742e");
77         expectedNode.setInMaint(false);
78         HashMap<String,Object> additionalProperties = new HashMap<>();
79         additionalProperties.put("inMaint","false");
80         additionalProperties.put("description","Test vE-Flex instance-group");
81         additionalProperties.put("instance-group-type","ha");
82         additionalProperties.put("instance-group-role","test-IG-role");
83         additionalProperties.put("resource-version","1533315433086");
84         additionalProperties.put("instance-group-function","vTSBC Customer Landing Network Collection");
85         expectedNode.setAdditionalProperties(additionalProperties);
86
87
88         return expectedNode;
89     }
90
91     private JsonNode createGroupJson() {
92         ObjectMapper objectMapper = new ObjectMapper();
93         JsonNode groupNode = null;
94         try {
95             groupNode = objectMapper.readTree("" +
96                     "{" +
97                     "      \"id\": \"c4fcf022-31a0-470a-b5b8-c18335b7af32\"," +
98                     "      \"instance-group-role\": \"test-IG-role\"," +
99                     "      \"description\": \"Test vE-Flex instance-group\"," +
100                     "      \"instance-group-type\": \"ha\"," +
101                     "      \"resource-version\": \"1533315433086\"," +
102                     "      \"instance-group-name\": \"Test vE-Flex\"," +
103                     "      \"model-invariant-id\": \"dd182d7d-6949-4b90-b3cc-5befe400742e\"," +
104                     "      \"model-version-id\": \"Test vE-Flex\"," +
105                     "      \"inMaint\": \"false\"," +
106                     "      \"instance-group-function\": \"vTSBC Customer Landing Network Collection\"," +
107                     "      \"relationship-list\": {" +
108                     "      \"relationship\": [{" +
109                     "       \"related-to\": \"generic-vnf\"," +
110                     "       \"relationship-label\": \"org.onap.relationships.inventory.MemberOf\" ," +
111                     "       \"related-link\": \"/aai/v14/network/generic-vnfs/generic-vnf/8c54c369-2876-4423-9b33-80f783f29082\" ," +
112                     "       \"relationship-data\": [{" +
113                     "        \"relationship-key\": \"generic-vnf.vnf-id\"," +
114                     "        \"relationship-value\": \"8c54c369-2876-4423-9b33-80f783f29082\"" +
115                     "      }" +
116                     "    ]," +
117                     "      \"related-to-property\": [{" +
118                     "      \"property-key\": \"generic-vnf.vnf-name\"," +
119                     "      \"property-value\": \"zrdm5bffad01\"" +
120                     "    }" +
121                     "    ]" +
122                     "    }" +
123                     "    ]" +
124                     "    }" +
125                     "    }");
126         } catch (IOException e) {
127             e.printStackTrace();
128         }
129         return groupNode;
130     }
131 }