Topology tree: extract AAITreeNodesEnricher out of AAIServiceTree
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / AAIServiceTreeTest.java
index 815c6b9..ca3e98e 100644 (file)
@@ -1,30 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.vid.services;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Streams;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.jetbrains.annotations.NotNull;
+import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.onap.vid.services.AAITreeNodeBuilderTest.createExpectedVnfTreeNode;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.util.concurrent.MoreExecutors;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import net.javacrumbs.jsonunit.core.Option;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.onap.vid.aai.AaiClient;
+import org.onap.vid.aai.util.AAITreeConverter;
 import org.onap.vid.asdc.parser.ServiceModelInflator;
-import org.onap.vid.asdc.parser.ServiceModelInflator.Names;
+import org.onap.vid.model.ModelUtil;
 import org.onap.vid.model.aaiTree.AAITreeNode;
+import org.onap.vid.model.aaiTree.NodeType;
+import org.onap.vid.mso.model.CloudConfiguration;
+import org.onap.vid.testUtils.TestUtils;
+import org.onap.vid.utils.Logging;
+import org.onap.vid.utils.Unchecked;
+import org.springframework.http.HttpMethod;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
-import java.util.List;
-
-import static java.util.Collections.emptyList;
-import static java.util.Collections.emptyMap;
-import static java.util.stream.Collectors.toList;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.when;
-
 public class AAIServiceTreeTest {
 
     @Mock
@@ -39,122 +63,28 @@ public class AAIServiceTreeTest {
         MockitoAnnotations.initMocks(this);
     }
 
-    private final static String nullString = "null placeholder";
-
-
-
     @Test
-    public void enrichNodesWithModelCustomizationName_simple3NodesCase_nodesEnriched() {
-
-        when(serviceModelInflator.toNamesByVersionId(any())).thenReturn(ImmutableMap.of(
-                "version id a", new Names("name a", "key a"),
-                "version id b", new Names("name b", "key b"),
-                "version id c", new Names("name c", "key c")
-        ));
-
-        final ImmutableList<String> versionIds = ImmutableList.of("version id a", "version id b", "version id c");
-        final ImmutableList<Names> expectedNames = ImmutableList.of(
-                new Names("name a", "key a"),
-                new Names("name b", "key b"),
-                new Names("name c", "key c"));
-
-
-        final List<AAITreeNode> nodesUnderTest = nodesWithVersionIds(versionIds);
-        aaiServiceTree.enrichNodesWithModelCustomizationName(nodesUnderTest, null);
-
-        assertThat(toStrings(nodesUnderTest), containsInAnyOrder(toStringsArray(nodesWithVersionIdsAndCustomizationNames(versionIds, expectedNames))));
-    }
-
-    @Test
-    public void enrichNodesWithModelCustomizationName_noNodes_noError() {
-
-        when(serviceModelInflator.toNamesByVersionId(any())).thenReturn(ImmutableMap.of(
-                "11c6dc3e-cd6a-41b3-a50e-b5a10f7157d0", new Names("my model cust name", "my key")
-        ));
-
-        aaiServiceTree.enrichNodesWithModelCustomizationName(emptyList(), null);
-    }
-
-    @Test
-    public void enrichNodesWithModelCustomizationName_nothingInModel_nodesUnchanged() {
-
-        when(serviceModelInflator.toNamesByVersionId(any())).thenReturn(emptyMap());
-
-        final ImmutableList<String> versionIds = ImmutableList.of("version id a", "version id b", "version id c");
-        final Names nullNames = new Names(nullString, nullString);
-        final ImmutableList<Names> expectedNames = ImmutableList.of(nullNames, nullNames, nullNames);
-
-        
-        final List<AAITreeNode> nodesUnderTest = nodesWithVersionIds(versionIds);
-
-        aaiServiceTree.enrichNodesWithModelCustomizationName(nodesUnderTest, null);
-
-        assertThat(toStrings(nodesUnderTest), containsInAnyOrder(toStringsArray(nodesWithVersionIdsAndCustomizationNames(versionIds, expectedNames))));
-    }
-
-    @Test
-    public void enrichNodesWithModelCustomizationName_staggered4NodesAndNull_3nodesEnriched2isNull() {
-
-        when(serviceModelInflator.toNamesByVersionId(any())).thenReturn(ImmutableMap.of(
-                "version id Z", new Names("name Z", "key Z"),
-                "version id d", new Names(null, "key d"),
-                "version id c", new Names("name c", null),
-                "version id a", new Names("name a", "key a")
-        ));
-
-        final ImmutableList<String> versionIds = ImmutableList.of("version id a", "version id b", "version id c", "version id d", nullString);
-        final ImmutableList<Names> expectedNames = ImmutableList.of(
-                new Names("name a", "key a"),
-                new Names(nullString, nullString),
-                new Names("name c", nullString),
-                new Names(nullString, "key d"),
-                new Names(nullString, nullString)
+    public void whenBuildTreeForOneResource_resultAsExpected() {
+
+        AaiClient aaiClientMock = mock(AaiClient.class);
+        ExecutorService executorService = MoreExecutors.newDirectExecutorService();
+        AAIServiceTree aaiServiceTree = new AAIServiceTree(
+            new AAITreeNodeBuilder(aaiClientMock, new Logging()),
+            null,
+            new AAITreeConverter(new ModelUtil()), null,
+            executorService
         );
 
+        String url = "anyUrl/vnf";
 
-        final List<AAITreeNode> nodesUnderTest = nodesWithVersionIds(versionIds);
-
-        aaiServiceTree.enrichNodesWithModelCustomizationName(nodesUnderTest, null);
+        JsonNode mockedAaiGetVnfResponse = TestUtils.readJsonResourceFileAsObject("/getTopology/vnf.json", JsonNode.class);
+        when(aaiClientMock.typedAaiRest(Unchecked.toURI(url), JsonNode.class, null, HttpMethod.GET, false)).thenReturn(mockedAaiGetVnfResponse);
 
-        assertThat(toStrings(nodesUnderTest), containsInAnyOrder(toStringsArray(nodesWithVersionIdsAndCustomizationNames(versionIds, expectedNames))));
-    }
-
-
-
-    @NotNull
-    private String[] toStringsArray(List<AAITreeNode> nodes) {
-        return toStrings(nodes).toArray(new String[] {});
-    }
-
-    @NotNull
-    private List<String> toStrings(List<AAITreeNode> nodes) {
-        return nodes.stream().map(n -> {
-            final ReflectionToStringBuilder reflectionToStringBuilder = new ReflectionToStringBuilder(n, ToStringStyle.SHORT_PREFIX_STYLE);
-            reflectionToStringBuilder.setExcludeNullValues(true);
-            return reflectionToStringBuilder.toString();
-        }).collect(toList());
-    }
-
-    @NotNull
-    private List<AAITreeNode> nodesWithVersionIdsAndCustomizationNames(List<String> versionIds, List<Names> customizationNames) {
-        return Streams
-                .zip(versionIds.stream(), customizationNames.stream(), this::nodeWithVersionIdAndCustomizationName)
-                .collect(toList());
-    }
+        CloudConfiguration expectedCloudConfiguration = new CloudConfiguration("dyh3b", "c8035f5ee95d4c62bbc8074c044122b9", "irma-aic");
+        AAITreeNode expectedVnfNode = createExpectedVnfTreeNode(expectedCloudConfiguration);
 
-    @NotNull
-    private List<AAITreeNode> nodesWithVersionIds(List<String> versionIds) {
-        return versionIds.stream()
-                .map(versionId -> nodeWithVersionIdAndCustomizationName(versionId, new Names(nullString, nullString)))
-                .collect(toList());
+        List<AAITreeNode> aaiTreeNodes = aaiServiceTree.buildAAITreeForUniqueResource(url, NodeType.GENERIC_VNF);
+        assertEquals(1, aaiTreeNodes.size());
+        assertThat(aaiTreeNodes.get(0), jsonEquals(expectedVnfNode).when(Option.IGNORING_EXTRA_FIELDS).whenIgnoringPaths("relationshipList", "children[0].relationshipList"));
     }
-
-    private AAITreeNode nodeWithVersionIdAndCustomizationName(String versionId, Names names) {
-        AAITreeNode newNode = new AAITreeNode();
-        newNode.setModelVersionId(versionId.equals(nullString) ? null : versionId);
-        newNode.setModelCustomizationName(names.getModelCustomizationName().equals(nullString) ? null : names.getModelCustomizationName());
-        newNode.setKeyInModel(names.getModelKey().equals(nullString) ? null : names.getModelKey());
-        return newNode;
-    }
-
 }
\ No newline at end of file