Test aai_get_service_instance_topology with vf-module placement data

Issue-ID: VID-603

Change-Id: I2ce89cac91417ef4b60a3943da80f0ff03f865ad
Signed-off-by: Ittay Stern <ittay.stern@att.com>
diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/Placement.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/Placement.java
index b665fc3..3018f5f 100644
--- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/Placement.java
+++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/Placement.java
@@ -10,5 +10,51 @@
         this.lcpRegionId = lcpRegionId;
         this.tenantId = tenantId;
     }
+
+    public static class Util {
+        static String placementRelationship(String relatedTo, Placement placement) {
+            return "" +
+                "{" +
+                "    \"related-to\": \"" + relatedTo + "\"," +
+                "    \"relationship-label\": \"org.onap.relationships.inventory.Uses\"," +
+                "    \"related-link\": " + relatedLink(placement) + "," +
+                "    \"relationship-data\": [" +
+                "        {" +
+                "            \"relationship-key\": \"cloud-region.cloud-owner\"," +
+                "            \"relationship-value\": \"" + placement.cloudOwner + "\"" +
+                "        }," +
+                "        {" +
+                "            \"relationship-key\": \"cloud-region.cloud-region-id\"," +
+                "            \"relationship-value\": \"" + placement.lcpRegionId + "\"" +
+                "        }," +
+                "        {" +
+                "            \"relationship-key\": \"tenant.tenant-id\"," +
+                "            \"relationship-value\": \"" + placement.tenantId + "\"" +
+                "        }," +
+                "        {" +
+                "            \"relationship-key\": \"vserver.vserver-id\"," +
+                "            \"relationship-value\": \"5eef9f6d-9933-4bc6-9a1a-862d61309437\"" +
+                "        }" +
+                "    ]," +
+                "    \"related-to-property\": [" +
+                "        {" +
+                "            \"property-key\": \"vserver.vserver-name\"," +
+                "            \"property-value\": \"zolson5bfapn01dns002\"" +
+                "        }" +
+                "    ]" +
+                "}";
+        }
+
+        private static String relatedLink(Placement placement) {
+            return ""
+                + "\""
+                + "/aai/v12/cloud-infrastructure/cloud-regions/cloud-region/irma-aic/"
+                + placement.lcpRegionId
+                + "/tenants/tenant/"
+                + placement.tenantId
+                + "/vservers/vserver/5eef9f6d-9933-4bc6-9a1a-862d61309437"
+                + "\"";
+        }
+    }
 }
 
diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIGetVfModulesByVnf.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIGetVfModulesByVnf.java
index 798a026..7a35abc 100644
--- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIGetVfModulesByVnf.java
+++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIGetVfModulesByVnf.java
@@ -5,9 +5,16 @@
 
 public class PresetAAIGetVfModulesByVnf extends BaseAAIPreset {
     private final String vnfInstanceId;
+    private final Placement vfModule1Placement;
 
     public PresetAAIGetVfModulesByVnf(String vnfInstanceId) {
         this.vnfInstanceId = vnfInstanceId;
+        vfModule1Placement = null;
+    }
+
+    public PresetAAIGetVfModulesByVnf(String vnfInstanceId, Placement vfModule2Placement) {
+        this.vnfInstanceId = vnfInstanceId;
+        this.vfModule1Placement = vfModule2Placement;
     }
 
     @Override
@@ -20,6 +27,14 @@
         return getRootPath() + "/network/generic-vnfs/generic-vnf/" + this.vnfInstanceId + "/vf-modules";
     }
 
+    private String placementRelationship(Placement placement) {
+        if (placement != null) {
+            return "," + Placement.Util.placementRelationship("vserver", placement);
+        } else {
+            return "";
+        }
+    }
+
     @Override
     public Object getResponseBody() {
         return "" +
@@ -72,6 +87,7 @@
                 "              }" +
                 "            ]" +
                 "          }" +
+            placementRelationship(vfModule1Placement) +
                 "        ]" +
                 "      }" +
                 "    }" +
diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIStandardQueryGet.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIStandardQueryGet.java
index 642f941..7709a0a 100644
--- a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIStandardQueryGet.java
+++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/aai/PresetAAIStandardQueryGet.java
@@ -1,23 +1,22 @@
 package org.onap.simulator.presetGenerator.presets.aai;
 
+import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
+import static org.apache.commons.text.StringEscapeUtils.escapeJson;
+import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.ATT_AIC;
+import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.hvf6;
+
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Multimap;
+import java.util.UUID;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.text.StrSubstitutor;
 import org.onap.simulator.presetGenerator.presets.BasePresets.BaseAAIPreset;
 import org.springframework.http.HttpMethod;
 
-import java.util.UUID;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
-import static org.apache.commons.text.StringEscapeUtils.escapeJson;
-import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.ATT_AIC;
-import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.hvf6;
-
 public class PresetAAIStandardQueryGet extends BaseAAIPreset {
     private final String instanceId;
     private final String instanceName;
@@ -289,36 +288,7 @@
 
     private String buildPlacementRelationship() {
         String relatedTo = StringUtils.equals(instanceType,"vf-module")? "vserver": "tenant";
-        return "" +
-                "            {" +
-                "                \"related-to\": \"" + relatedTo + "\"," +
-                "                \"relationship-label\": \"org.onap.relationships.inventory.Uses\"," +
-                "                \"related-link\": \"/aai/v12/cloud-infrastructure/cloud-regions/cloud-region/irma-aic/" +  this.placement.lcpRegionId + "/tenants/tenant/" + this.placement.tenantId+ "/vservers/vserver/5eef9f6d-9933-4bc6-9a1a-862d61309437\"," +
-                "                \"relationship-data\": [" +
-                "                    {" +
-                "                        \"relationship-key\": \"cloud-region.cloud-owner\"," +
-                "                        \"relationship-value\": \""+ this.placement.cloudOwner+"\"" +
-                "                    }," +
-                "                    {" +
-                "                        \"relationship-key\": \"cloud-region.cloud-region-id\"," +
-                "                        \"relationship-value\": \"" +  this.placement.lcpRegionId + "\"" +
-                "                    }," +
-                "                    {" +
-                "                        \"relationship-key\": \"tenant.tenant-id\"," +
-                "                        \"relationship-value\": \"" +  this.placement.tenantId + "\"" +
-                "                    }," +
-                "                    {" +
-                "                        \"relationship-key\": \"vserver.vserver-id\"," +
-                "                        \"relationship-value\": \"5eef9f6d-9933-4bc6-9a1a-862d61309437\"" +
-                "                    }" +
-                "                ]," +
-                "                \"related-to-property\": [" +
-                "                    {" +
-                "                        \"property-key\": \"vserver.vserver-name\"," +
-                "                        \"property-value\": \"zolson5bfapn01dns002\"" +
-                "                    }" +
-                "                ]" +
-                "            }" ;
+        return Placement.Util.placementRelationship(relatedTo, placement);
     }
 
     @Override
diff --git a/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java
index a563bd7..e5a2a73 100644
--- a/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java
+++ b/vid-automation/src/test/java/org/onap/vid/api/ServiceTreeApiTest.java
@@ -9,6 +9,7 @@
 import static org.hamcrest.Matchers.containsString;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.ATT_AIC;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.ATT_NC;
+import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.AUK51A;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.hvf6;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.olson3;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.defaultPlacement;
@@ -240,7 +241,12 @@
                         "\"in-maint\": true,", ImmutableMultimap.of("volume-group", volumeGroup1.getReqPath()),
                         new Placement(ATT_AIC, hvf6, "88a6ca3ee0394ade9403f075db23167e"));
 
-        PresetAAIGetVfModulesByVnf vfModules2 = new PresetAAIGetVfModulesByVnf(vnfPreset2.getInstanceId());
+
+        Placement vfModule2Placement
+            = new Placement(ATT_NC, AUK51A, "73bb4c548dc048d78eccecd445ac06fc");
+
+        PresetAAIGetVfModulesByVnf twoVfModulesPreset =
+            new PresetAAIGetVfModulesByVnf(vnfPreset2.getInstanceId(), vfModule2Placement);
 
         final PresetAAIStandardQueryGet serviceInstance =
                 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "6e59c5de-f052-46fa-aa7e-2fca9d674c44", "d27e42cf-087e-4d31-88ac-6c4b7585f800", "global-customer-id", "service-instance-type",
@@ -255,7 +261,7 @@
                 serviceInstance,
                 l3NetworkPreset3, l3NetworkPreset4, vnfPreset1, vnfPreset2, collection1,
                 volumeGroup1, l3NetworkPreset1, l3NetworkPreset2, instanceGroup1,
-                vlanTag1, vfModules2,
+                vlanTag1, twoVfModulesPreset,
                 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("d27e42cf-087e-4d31-88ac-6c4b7585f800")),
                 new PresetGetSessionSlotCheckIntervalGet(),
                 new PresetAAIGetSubscribersGet(),
diff --git a/vid-automation/src/test/resources/aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json b/vid-automation/src/test/resources/aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json
index 50786d3..d20760b 100644
--- a/vid-automation/src/test/resources/aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json
+++ b/vid-automation/src/test/resources/aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json
@@ -160,9 +160,10 @@
             },
             "uuid": "dc229cd8-c132-4455-8517-5c1787c18b14",
             "productFamilyId": null,
-            "lcpCloudRegionId": null,
+            "cloudOwner": "att-nc",
+            "lcpCloudRegionId": "auk51a",
             "legacyRegion": null,
-            "tenantId": null,
+            "tenantId": "73bb4c548dc048d78eccecd445ac06fc",
             "lineOfBusiness": null,
             "platformName": null,
             "isBase": true,