Respect permissions by owning-entity-id when searching instances by owning entity
[vid.git] / vid-automation / src / test / java / org / onap / vid / api / AaiApiTest.java
index 952aa52..54300c2 100644 (file)
@@ -1,36 +1,53 @@
 package org.onap.vid.api;
 
+import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
 import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.defaultPlacement;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.ofL3Network;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.ofServiceInstance;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.ofVlanTag;
 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.ofVnf;
+import static org.onap.simulator.presetGenerator.presets.aai.PresetBaseAAICustomQuery.FORMAT.SIMPLE;
 import static org.onap.simulator.presetGenerator.presets.ecompportal_att.EcompPortalPresetsUtils.getEcompPortalPresets;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static vid.automation.test.Constants.RegisterToSimulator.SearchForServiceInstance.GET_SUBSCRIBERS_FOR_CUSTOMER_CRAIG_ROBERTS;
 import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.APPEND;
 import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET;
+import static vid.automation.test.services.SimulatorApi.registerExpectationFromPresets;
 import static vid.automation.test.utils.TestHelper.GET_SERVICE_MODELS_BY_DISTRIBUTION_STATUS;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMultimap;
 import java.io.IOException;
 import java.lang.reflect.Method;
 import java.net.URISyntaxException;
+import java.util.List;
 import java.util.UUID;
 import net.javacrumbs.jsonunit.JsonAssert;
 import net.javacrumbs.jsonunit.core.Configuration;
 import net.javacrumbs.jsonunit.core.Option;
 import org.apache.commons.text.StringEscapeUtils;
+import org.apache.http.client.utils.URIBuilder;
+import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset;
+import org.onap.simulator.presetGenerator.presets.aai.AAIBaseGetL3NetworksByCloudRegionPreset;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIBadBodyForGetServicesGet;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAICloudRegionAndSourceFromConfigurationPut;
+import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetHomingForVfModule;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetInstanceGroupsByCloudRegion;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetInstanceGroupsByCloudRegionInvalidRequest;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetInstanceGroupsByCloudRegionRequiredMissing;
+import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetL3NetworksByCloudRegion;
+import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetL3NetworksByCloudRegionSpecificState;
+import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetModelsByOwningEntity;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkCollectionDetails;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkCollectionDetailsInvalidRequest;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetNetworkCollectionDetailsRequiredMissing;
@@ -38,12 +55,16 @@ import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetPortMirroringS
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetPortMirroringSourcePortsError;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetRelatedInstanceGroupsByVnfId;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet;
+import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetVpnsByType;
+import org.onap.simulator.presetGenerator.presets.aai.PresetAAIModelVersionsByInvariantId;
 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet;
+import org.onap.simulator.presetGenerator.presets.aai.PresetBaseAAICustomQuery;
 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet;
 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet;
 import org.onap.vid.model.aai.AaiResponse;
 import org.onap.vid.model.mso.OperationalEnvironmentList;
 import org.onap.vid.more.LoggerFormatTest;
+import org.onap.vid.more.LoggerFormatTest.LogName;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
@@ -51,6 +72,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.HttpServerErrorException;
 import org.springframework.web.util.UriComponentsBuilder;
+import org.testng.AssertJUnit;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 import vid.automation.test.infra.FeatureTogglingTest;
@@ -66,6 +88,7 @@ public class AaiApiTest extends BaseApiAaiTest {
     public static final String[] AAI_GET_SERVICES_ERROR_SIMULATOR_RESPONSES = {"getServicesAaiErrorResp.json", "create_new_instance/aai_get_full_subscribers.json"};
     public static final String[] AAI_GET_SERVICES_FINE_SIMULATOR_RESPONSES = {"getServicesAaiFineResp.json", "create_new_instance/aai_get_full_subscribers.json"};
     public static final String AAI_VNFS_FOR_CHANGE_MANAGEMENT_JSON = "changeManagement/get_vnf_data_by_globalid_and_service_type.json";
+    public static final String AAI_VNFS_FOR_CHANGE_MANAGEMENT_JSON_BY_PARAMS = "registration_to_simulator/changeManagement/get_vnf_data_by_globalid_and_service_type_reduced_response.json";
     public static final String OPERATIONAL_ENVIRONMENT_TYPE = "VNF";
     public static final String OPERATIONAL_ENVIRONMENT_STATUS = "Activate";
     public static final String GET_INSTANCE_GROUPS_BY_CLOUDREGION_EXPECTED_RESPONSE = "{\"results\":[{\"instance-group\":{\"id\":\"AAI-12002-test3-vm230w\",\"description\":\"a9DEa0kpY\",\"instance-group-role\":\"JZmha7QSS4tJ\",\"model-invariant-id\":\"model-id3\",\"model-version-id\":\"a0efd5fc-f7be-4502-936a-a6c6392b958f\",\"instance-group-type\":\"type\",\"resource-version\":\"1520888659539\",\"instance-group-name\":\"wKmBXiO1xm8bK\",\"instance-group-function\":\"testfunction2\",\"relationship-list\":{\"relationship\":[{\"relationDataList\":[{\"relationship-key\":\"cloud-region.cloud-owner\",\"relationship-value\":\"AAI-12002-vm230w\"},{\"relationship-key\":\"cloud-region.cloud-region-id\",\"relationship-value\":\"AAI-region-vm230w\"}],\"relatedToPropertyList\":[{\"property-key\":\"cloud-region.owner-defined-type\",\"property-value\":null}],\"related-to\":\"cloud-region\",\"related-link\":\"/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/AAI-12002-vm230w/AAI-region-vm230w\",\"relationship-label\":\"org.onap.relationships.inventory.Uses\",\"relationship-data\":[{\"relationship-key\":\"cloud-region.cloud-owner\",\"relationship-value\":\"AAI-12002-vm230w\"},{\"relationship-key\":\"cloud-region.cloud-region-id\",\"relationship-value\":\"AAI-region-vm230w\"}],\"related-to-property\":[{\"property-key\":\"cloud-region.owner-defined-type\",\"property-value\":null}]}]}}},{\"instance-group\":{\"id\":\"AAI-12002-test1-vm230w\",\"description\":\"a9DEa0kpY\",\"instance-group-role\":\"JZmha7QSS4tJ\",\"model-invariant-id\":\"model-id1\",\"model-version-id\":\"a0efd5fc-f7be-4502-936a-a6c6392b958f\",\"instance-group-type\":\"type\",\"resource-version\":\"1520886467989\",\"instance-group-name\":\"wKmBXiO1xm8bK\",\"instance-group-function\":\"testfunction2\",\"relationship-list\":{\"relationship\":[{\"relationDataList\":[{\"relationship-key\":\"cloud-region.cloud-owner\",\"relationship-value\":\"AAI-12002-vm230w\"},{\"relationship-key\":\"cloud-region.cloud-region-id\",\"relationship-value\":\"AAI-region-vm230w\"}],\"relatedToPropertyList\":[{\"property-key\":\"cloud-region.owner-defined-type\",\"property-value\":null}],\"related-to\":\"cloud-region\",\"related-link\":\"/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/AAI-12002-vm230w/AAI-region-vm230w\",\"relationship-label\":\"org.onap.relationships.inventory.Uses\",\"relationship-data\":[{\"relationship-key\":\"cloud-region.cloud-owner\",\"relationship-value\":\"AAI-12002-vm230w\"},{\"relationship-key\":\"cloud-region.cloud-region-id\",\"relationship-value\":\"AAI-region-vm230w\"}],\"related-to-property\":[{\"property-key\":\"cloud-region.owner-defined-type\",\"property-value\":null}]}]}}},{\"instance-group\":{\"id\":\"AAI-12002-test2-vm230w\",\"description\":\"a9DEa0kpY\",\"instance-group-role\":\"JZmha7QSS4tJ\",\"model-invariant-id\":\"model-id2\",\"model-version-id\":\"version2\",\"instance-group-type\":\"type\",\"resource-version\":\"1520888629970\",\"instance-group-name\":\"wKmBXiO1xm8bK\",\"instance-group-function\":\"testfunction2\",\"relationship-list\":{\"relationship\":[{\"relationDataList\":[{\"relationship-key\":\"cloud-region.cloud-owner\",\"relationship-value\":\"AAI-12002-vm230w\"},{\"relationship-key\":\"cloud-region.cloud-region-id\",\"relationship-value\":\"AAI-region-vm230w\"}],\"relatedToPropertyList\":[{\"property-key\":\"cloud-region.owner-defined-type\",\"property-value\":null}],\"related-to\":\"cloud-region\",\"related-link\":\"/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/AAI-12002-vm230w/AAI-region-vm230w\",\"relationship-label\":\"org.onap.relationships.inventory.Uses\",\"relationship-data\":[{\"relationship-key\":\"cloud-region.cloud-owner\",\"relationship-value\":\"AAI-12002-vm230w\"},{\"relationship-key\":\"cloud-region.cloud-region-id\",\"relationship-value\":\"AAI-region-vm230w\"}],\"related-to-property\":[{\"property-key\":\"cloud-region.owner-defined-type\",\"property-value\":null}]}]}}}]}\n";
@@ -82,6 +105,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
             "  }, {\n" +
@@ -95,6 +120,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_ERROR\",\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
             "  }, {\n" +
@@ -107,6 +134,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lifecycleState\": null,\n" +
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
@@ -121,6 +150,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
             "  }, {\n" +
@@ -134,6 +165,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
             "  }, {\n" +
@@ -146,6 +179,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lifecycleState\": null,\n" +
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
@@ -159,6 +194,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lifecycleState\": null,\n" +
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
@@ -172,6 +209,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lifecycleState\": null,\n" +
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
@@ -185,6 +224,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lifecycleState\": null,\n" +
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
@@ -198,6 +239,8 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lifecycleState\": null,\n" +
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
@@ -211,12 +254,15 @@ public class AaiApiTest extends BaseApiAaiTest {
             "    \"lifecycleState\": null,\n" +
             "    \"lastUpdaterUserId\": null,\n" +
             "    \"lastUpdaterFullName\": null,\n" +
+            "    \"orchestrationType\": null,\n" +
+            "    \"isInstantiationTemplateExists\": false,\n" +
             "    \"distributionStatus\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
             "    \"artifacts\": null,\n" +
             "    \"resources\": null\n" +
             "  }],\n" +
             "  \"readOnly\": false\n" +
             "}";
+    private static final String AAI_GET_ACTIVE_NETWORKS = "/aai_get_active_networks";
 
     private String getGetOperationEnvironmentsUri() {
         return uri.toASCIIString() + "/get_operational_environments";
@@ -270,7 +316,7 @@ public class AaiApiTest extends BaseApiAaiTest {
         AaiResponse<OperationalEnvironmentList> response = loginAndDoGetWithUrl(url);
         assertEquals(HttpStatus.OK.value(), response.getHttpCode());
         OperationalEnvironmentList list = response.getT();
-        assertNotEquals(null, list.getOperationalEnvironment());
+        assertNotNull(list.getOperationalEnvironment());
         assertEquals(2, list.getOperationalEnvironment().size());
         assertEquals(uuidOfOperationalEnvironment, list.getOperationalEnvironment().get(0).getOperationalEnvironmentId());
         assertEquals(1, list.getOperationalEnvironment().get(0).getRelationshipList().getRelationship().size());
@@ -325,7 +371,7 @@ public class AaiApiTest extends BaseApiAaiTest {
         SimulatorApi.registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), APPEND);
 
         restTemplateErrorAgnostic.getForEntity(uri + "/aai_get_services", String.class);
-        String logLines = LoggerFormatTest.getLogLines("error", 15, 0, restTemplate, uri);
+        String logLines = LoggerFormatTest.getLogLines(LogName.error, 15, 0, restTemplate, uri);
 
         assertThat("not found in error log", logLines, containsString("Failed to parse aai response"));
         assertThat("not found in error log", logLines, containsString(notAJson));
@@ -681,12 +727,14 @@ public class AaiApiTest extends BaseApiAaiTest {
                 ImmutableMultimap.of("vlan-tag", vlanTagPreset3.getReqPath(), "vlan-tag", vlanTagPreset4.getReqPath()), "Created");
 
         PresetAAIStandardQueryGet vnfPreset1 = ofVnf("c015cc0f-0f37-4488-aabf-53795fd93cd3",
-                ImmutableMultimap.of("l3-network", l3NetworkPreset1.getReqPath() , "l3-network", l3NetworkPreset2.getReqPath()));
+                ImmutableMultimap.of("l3-network", l3NetworkPreset1.getReqPath() , "l3-network", l3NetworkPreset2.getReqPath()),
+                defaultPlacement());
 
         PresetAAIStandardQueryGet l3NetworkPreset3 = ofL3Network("12aa7f3d-2bc2-48f5-aaf8-418520c54330","XXXYYYZZZ", "Network",
                 ImmutableMultimap.of("vlan-tag", vlanTagPreset5.getReqPath(), "vlan-tag", vlanTagPreset6.getReqPath()), "Created");
 
-        PresetAAIStandardQueryGet vnfPreset2 = ofVnf("c55da606-cf38-42c7-bc3c-be8e23b19299", ImmutableMultimap.of("l3-network", l3NetworkPreset3.getReqPath()));
+        PresetAAIStandardQueryGet vnfPreset2 = ofVnf("c55da606-cf38-42c7-bc3c-be8e23b19299", ImmutableMultimap.of("l3-network", l3NetworkPreset3.getReqPath()),
+                defaultPlacement());
 
         PresetAAIStandardQueryGet serviceInstance = ofServiceInstance("9cdd1b2a-43a7-47bc-a88e-759ba2399f0b",
                 "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "6e59c5de-f052-46fa-aa7e-2fca9d674c44", globalCustomerId, serviceType,
@@ -711,20 +759,191 @@ public class AaiApiTest extends BaseApiAaiTest {
                 response);
     }
 
+    @FeatureTogglingTest(value = Features.FLAG_FLASH_REDUCED_RESPONSE_CHANGEMG, flagActive = false)
     @Test
     public void getVnfDataByGlobalIdAndServiceType() {
 
-        SimulatorApi.registerExpectation(AAI_VNFS_FOR_CHANGE_MANAGEMENT_JSON, APPEND);
+        SimulatorApi.registerExpectationFromPreset(new PresetBaseAAICustomQuery(
+            SIMPLE,
+            "business/customers/customer/a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb/service-subscriptions/service-subscription/vRichardson/service-instances",
+            "query/vnf-topology-fromServiceInstance"
+        ) {
+            @Override
+            public Object getResponseBody() {
+                return getResourceAsString(
+                    "registration_to_simulator/changeManagement/get_vnf_data_by_globalid_and_service_type_response.json");
+            }
+        }, CLEAR_THEN_SET);
 
-        String url = uri + "/get_vnf_data_by_globalid_and_service_type/a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb/vFlowLogic";
+        String url = uri + "/get_vnf_data_by_globalid_and_service_type/a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb/vRichardson";
 
         ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
-//reduced_vnf_data_by_globalid_and_service_type.json
-        assertTrue(false == response.getBody().contains("generic-vfmodule"));
+
         assertResponse(JsonAssert.when(Option.IGNORING_ARRAY_ORDER),
-                getResourceAsString("changeManagement/reduced_vnf_data_by_globalid_and_service_type.json"),
+                getResourceAsString("registration_to_simulator/changeManagement/get_vnf_data_by_globalid_and_service_type_response.json"),
+                response.getBody());
+    }
+
+    @Test
+    public void whenCallAaiThroughAAIRestInterface_thenRequestRecordedInMetricsLog() {
+        registerExpectationFromPresets(ImmutableList.of(
+            new PresetAAIGetVpnsByType(),
+            new PresetAAIGetSubscribersGet()
+        ),CLEAR_THEN_SET);
+        String internalPath = "/aai_get_vpn_list";
+        String url = uri + internalPath;
+        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
+        final String requestId = response.getHeaders().getFirst("X-ECOMP-RequestID-echo");
+        LoggerFormatTest.assertHeadersAndMetricLogs(restTemplate, uri, requestId,"/network/vpn-bindings" , 1);
+        LoggerFormatTest.verifyExistenceOfIncomingReqsInAuditLogs(restTemplate, uri, requestId, internalPath);
+    }
+
+    @Test
+    public void getVpnList() {
+        SimulatorApi.registerExpectationFromPreset(new PresetAAIGetVpnsByType(), CLEAR_THEN_SET);
+        String url = uri + "/aai_get_vpn_list";
+        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
+        String expected = getResourceAsString("viewEdit/aaiGetVpnList.json");
+        assertThat(response.getBody(), jsonEquals(expected).when(Option.IGNORING_ARRAY_ORDER).when(Option.IGNORING_EXTRA_FIELDS));
+    }
+
+    @DataProvider
+    public static Object[][] getActiveNetworkAaiStates() {
+        return new Object[][] {
+                {1, "viewEdit/aaiGetActiveNetworks.json"},
+                {2, "viewEdit/aaiGetActiveNetworks2.json"}
+        };
+    }
+
+    @Test(dataProvider = "getActiveNetworkAaiStates")
+    public void getActiveNetworks_givenSpecificAAIState_cypressPresetMatch(int state, String expectedResultFileName) {
+        SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
+            new PresetAAIGetL3NetworksByCloudRegionSpecificState(state),
+            PresetAAIGetCloudOwnersByCloudRegionId.PRESET_AUK51A_TO_ATT_NC
+        ), CLEAR_THEN_SET);
+        String url = uri + AAI_GET_ACTIVE_NETWORKS
+            + "?cloudRegion=" + AAIBaseGetL3NetworksByCloudRegionPreset.DEFAULT_CLOUD_REGION_ID
+            + "&tenantId=" + AAIBaseGetL3NetworksByCloudRegionPreset.DEFAULT_TENANT_ID;
+        String response = restTemplate.getForObject(url, String.class);
+        System.out.println("response = " + response);
+        String expected = getResourceAsString(expectedResultFileName);
+        assertThat(response, jsonEquals(expected));
+    }
+
+    @Test
+    public void getActiveNetworks() throws JsonProcessingException {
+        String networkRole = "Some role";
+        PresetAAIGetL3NetworksByCloudRegion presetAAIGetL3NetworksByCloudRegion = new PresetAAIGetL3NetworksByCloudRegion(networkRole);
+        List<BasePreset> presets = ImmutableList.of(
+                presetAAIGetL3NetworksByCloudRegion,
+                PresetAAIGetCloudOwnersByCloudRegionId.PRESET_AUK51A_TO_ATT_NC
+        );
+        SimulatorApi.registerExpectationFromPresets(presets, CLEAR_THEN_SET);
+        String url = uri + AAI_GET_ACTIVE_NETWORKS +
+                "?cloudRegion=" + presetAAIGetL3NetworksByCloudRegion.getCloudRegionId() +
+                "&tenantId=" + presetAAIGetL3NetworksByCloudRegion.getTenantId() +
+                 "&networkRole=" + networkRole;
+        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
+
+        assertResponse(JsonAssert.when(Option.IGNORING_EXTRA_FIELDS, Option.IGNORING_ARRAY_ORDER),
+                presetAAIGetL3NetworksByCloudRegion.getActiveNetworksWithNameAndRelatedToVpnBindingAsJsonString(),
                 response.getBody());
+    }
+
+    @Test
+    public void getNewestModelVersionByInvariant() throws JsonProcessingException {
+        String invariantId = "f6342be5-d66b-4d03-a1aa-c82c3094c4ea";
+
+        SimulatorApi.registerExpectationFromPreset(new PresetAAIModelVersionsByInvariantId(), CLEAR_THEN_SET );
+
+        String url = uri +
+                "/aai_get_newest_model_version_by_invariant/" + invariantId;
+        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
+
+        assertTrue(response.toString().contains("the-newest-version"));
+    }
+
+    @Test
+    public void getNewestModelVersionByInvariant_modelNotExist_thenEmptyResponse() {
+        String invariantId = "f6342be5-d66b-4d03-a1aa-c82c3094c4ea";
+
+        SimulatorApi.registerExpectationFromPreset(new PresetAAIModelVersionsByInvariantId(), CLEAR_THEN_SET );
+
+        String url = uri +
+                "/aai_get_newest_model_version_by_invariant/" + "model-not-exist";
+        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
+
+        assertTrue(response.getStatusCode().is2xxSuccessful());
+        AssertJUnit.assertNull(response.getBody());
+    }
+
+    @Test
+    @FeatureTogglingTest(Features.FLAG_FLASH_REDUCED_RESPONSE_CHANGEMG)
+    public void getVnfsWithCustomQueryNewReducedResponse() throws URISyntaxException {
+
+        String globalCustomerId = "globalCustomerId1-360-as988q";
+        String serviceType = "TEST1-360";
+        String nfRole = "test360";
+        SimulatorApi.registerExpectationFromPreset(new PresetBaseAAICustomQuery(
+            SIMPLE,
+            "/business/customers/customer/" + globalCustomerId + "/service-subscriptions/service-subscription/"
+                + serviceType + "/service-instances",
+            "query/vnfs-fromServiceInstance-filter?nfRole=" + nfRole
+            ) {
+            @Override
+            public Object getResponseBody() {
+                return getResourceAsString(
+                    AAI_VNFS_FOR_CHANGE_MANAGEMENT_JSON_BY_PARAMS);
+            }
+        }, CLEAR_THEN_SET);
+        URIBuilder urlBuilder  = new URIBuilder(uri + "/get_vnf_data_by_globalid_and_service_type/" + globalCustomerId + "/" + serviceType);
+        urlBuilder.addParameter("nfRole", nfRole);
+        ResponseEntity<String> response = restTemplate.getForEntity(urlBuilder.build().toString(), String.class);
+        assertTrue(response.getStatusCode().is2xxSuccessful());
+        assertThat(response.getBody(), jsonEquals(getResourceAsString(AAI_VNFS_FOR_CHANGE_MANAGEMENT_JSON_BY_PARAMS)));
+    }
+
+    @Test
+    public void searchServiceInstancesBySubscriber_serviceInstanceOfAnotherSubscriber_authIsFollowingFeatureToggle() {
+        String craigRobertsSubscriberId = "31739f3e-526b-11e6-beb8-9e71128cae77";
+        String aServiceOwningEntityId = "f160c875-ddd1-4ef5-84d8-d098784daa3a";
+        String currentUserAuthorizedOwningEntityId = "SILVIA ROBBINS"; // this will need to change with translateOwningEntityNameToOwningEntityId
+
+        SimulatorApi.registerExpectation(GET_SUBSCRIBERS_FOR_CUSTOMER_CRAIG_ROBERTS,
+            ImmutableMap.of(aServiceOwningEntityId, currentUserAuthorizedOwningEntityId), CLEAR_THEN_SET);
+
+        searchServicesAndAssertIsPermitted("subscriberId=" + craigRobertsSubscriberId, "4ea864f2-b946-473a-b51c-51a7c10b8391");
+    }
+
+    @Test
+    public void searchServiceInstancesByOwningEntity_serviceInstanceOfAnotherSubscriber_authIsFollowingFeatureToggle() {
+        String owningEntityName = "someOwning";
+        String owningEntityId = "SILVIA ROBBINS"; // this will need to change with translateOwningEntityNameToOwningEntityId
+
+        SimulatorApi.registerExpectationFromPreset(new PresetAAIGetModelsByOwningEntity(owningEntityName, owningEntityId, "fakeSubscriberId"), CLEAR_THEN_SET);
+
+        searchServicesAndAssertIsPermitted("owningEntity=" + owningEntityName, "af9d52f9-13b2-4657-a198-463677f82dc0");
+    }
+
+    private void searchServicesAndAssertIsPermitted(String queryParams, String aServiceInstanceId) {
+        boolean expectedPermission = Features.FLAG_2006_USER_PERMISSIONS_BY_OWNING_ENTITY.isActive();
+
+        SimulatorApi.registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), APPEND);
+
+        JsonNode serviceInstancesResult = restTemplate
+            .getForObject(uri + "/search_service_instances?" + queryParams, JsonNode.class);
+
+        assertThat(serviceInstancesResult.path("service-instances").isArray(), is(true));
+
+        ArrayNode servicesArray = ((ArrayNode) serviceInstancesResult.path("service-instances"));
+
+        JsonNode aServiceResult = Streams.fromIterator(servicesArray.iterator())
+            .filter(it -> it.path("serviceInstanceId").asText().equals(aServiceInstanceId))
+            .findAny()
+            .orElseThrow(() -> new AssertionError("could not find serviceInstanceId=" + aServiceInstanceId));
 
+        assertThat(aServiceResult.toString(),
+            aServiceResult.path("isPermitted").booleanValue(), is(expectedPermission));
     }
 
     private void assertResponse(Object expected, String response) {