VNF's LCP regions found by Line-of-business (and owning-entity)
[vid.git] / vid-app-common / src / test / java / org / onap / vid / aai / AaiClientTest.java
index 9793862..cfebe1a 100644 (file)
@@ -56,7 +56,6 @@ import java.net.URI;
 import java.security.cert.CertificateException;
 import java.util.ArrayList;
 import java.util.Map;
-import java.util.Optional;
 import java.util.function.BiConsumer;
 import java.util.function.Function;
 import java.util.stream.Stream;
@@ -97,6 +96,7 @@ import org.onap.vid.model.probes.ExternalComponentStatus;
 import org.onap.vid.model.probes.HttpRequestMetadata;
 import org.onap.vid.model.probes.StatusMetadata;
 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.springframework.test.context.ContextConfiguration;
@@ -137,6 +137,43 @@ public class AaiClientTest {
         };
     }
 
+      private static String nfRoleOnly = "{\"start\":[\"/business/customers/customer/globalCustomerId1-360-as988q/service-subscriptions/service-subscription/TEST1-360/service-instances\"],\"query\":\"query/vnfs-fromServiceInstance-filter?nfRole=test360\"}";
+    private static String nfRoleAndCloudRegion = "{\"start\":[\"/business/customers/customer/globalCustomerId1-360-as988q/service-subscriptions/service-subscription/TEST1-360/service-instances\"],\"query\":\"query/vnfs-fromServiceInstance-filterByCloudRegion?nfRole=test360&cloudRegionID=cloudRegion-1\"}";
+    private static String cloudRegionOnly = "{\"start\":[\"/business/customers/customer/globalCustomerId1-360-as988q/service-subscriptions/service-subscription/TEST1-360/service-instances\"],\"query\":\"query/vnfs-fromServiceInstance-filterByCloudRegion?cloudRegionID=cloudRegion-1\"}";
+    private static String withoutNfroleAndCloudRegion = "{\"start\":[\"/business/customers/customer/globalCustomerId1-360-as988q/service-subscriptions/service-subscription/TEST1-360/service-instances\"],\"query\":\"query/vnfs-fromServiceInstance-filter\"}";
+    private static String withoutNfroleAndCloudRegionWithSpace = "{\"start\":[\"/business/customers/customer/globalCustomerId1with%20space%20360-as988q/service-subscriptions/service-subscription/TEST1%20360/service-instances\"],\"query\":\"query/vnfs-fromServiceInstance-filter\"}";
+
+    private static String responseJsonNfRole = "/payload_jsons/changeManagement/vnfs-fromServiceInstance-filterNfRole.json";
+    private static String responseJsonCloudRegion ="/payload_jsons/changeManagement/vnfs-fromServiceInstance-filterByCloudRegion.json";
+
+
+    @DataProvider
+    public static Object[][] aaiPutCustomQueryData() {
+        return new Object[][] {
+            {"globalCustomerId1-360-as988q", "TEST1-360", "test360", null, nfRoleOnly, responseJsonNfRole, "908419144", 200},
+            {"globalCustomerId1-360-as988q", "TEST1-360", null, "cloudRegion-1", cloudRegionOnly, responseJsonCloudRegion, "1165906024", 200},
+            {"globalCustomerId1-360-as988q", "TEST1-360", "test360", "cloudRegion-1", nfRoleAndCloudRegion,
+                responseJsonCloudRegion, "1165906024", 200},
+            {"globalCustomerId1with space 360-as988q", "TEST1 360", null, null, withoutNfroleAndCloudRegionWithSpace, responseJsonNfRole, "908419144", 200},
+                {"globalCustomerId1-360-as988q", "TEST1-360", null, null, withoutNfroleAndCloudRegion, responseJsonNfRole, "908419144", 200},
+        };
+    }
+
+    @Test(dataProvider = "aaiPutCustomQueryData")
+    public void testAaiPutCustomQueryByParams(String globalCustomerId, String serviceType, String nfRole, String cloudRegion, String expectedPayload, String responseBody, String expectedId, int responseHttpCode) {
+        String queryFormat = "query?format=simple";
+        final ResponseWithRequestInfo mockedResponseWithRequestInfo = mockedResponseWithRequestInfo(Response.Status.OK,
+            TestUtils.readFileAsString(responseBody),
+            "query?format=simple&Mock=True",
+            HttpMethod.PUT);
+        when(aaiClientMock.doAaiPut(eq(queryFormat), anyString(), anyBoolean(), anyBoolean())).thenReturn(mockedResponseWithRequestInfo);
+        when(aaiClientMock.getVnfsByParamsForChangeManagement(anyString(), anyString(), nullable(String.class), nullable(String.class))).thenCallRealMethod();
+        AaiResponse<AaiGetVnfResponse> response = aaiClientMock.getVnfsByParamsForChangeManagement(globalCustomerId, serviceType, nfRole, cloudRegion);
+        verify(aaiClientMock).doAaiPut(eq(queryFormat), eq(expectedPayload), eq(false), eq(false));
+        assertEquals(response.getHttpCode(), responseHttpCode);
+        assertEquals(response.getT().getResults().get(0).id, expectedId);
+    }
+
     @Test(dataProvider = "logicalLinkData")
     public void getLogicalLink_Link_Is_Empty(String link, String expectedUrl) {
 
@@ -518,7 +555,7 @@ public class AaiClientTest {
 
     }
     @Test(expectedExceptions = GenericUncheckedException.class, expectedExceptionsMessageRegExp = "A&AI has no homing data associated to vfModule 'vfModuleId' of vnf 'vnfInstanceId'")
-    public void getVfMoudule_Homing_Arguments_Are_Valid_But_Not_Exists() {
+    public void getVfModule_Homing_Arguments_Are_Valid_But_Not_Exists() {
         when(aaiClientMock.getHomingDataByVfModule(any(String.class), any(String.class))).thenCallRealMethod();
 
         Response generalEmptyResponse = mock(Response.class);
@@ -536,7 +573,7 @@ public class AaiClientTest {
     }
 
     @Test(dataProvider = "invalidDataId", expectedExceptions = GenericUncheckedException.class, expectedExceptionsMessageRegExp = "Failed to retrieve homing data associated to vfModule from A&AI, VNF InstanceId or VF Module Id is missing.")
-    public void getVfMoudule_Homing_Arguments_Are_Empty_Or_Null(String data) {
+    public void getVfModule_Homing_Arguments_Are_Empty_Or_Null(String data) {
         when(aaiClientMock.getHomingDataByVfModule(any(), any())).thenCallRealMethod();
              aaiClientMock.getHomingDataByVfModule(data, data);
     }
@@ -649,7 +686,10 @@ public class AaiClientTest {
         Response responseMock = mocks.getFakeResponse();
 
         // prepare real AAIRestInterface and AaiClient, and wire mocks
-        AAIRestInterface aaiRestInterface = new AAIRestInterface(httpsAuthClientMock, mock(ServletRequestHelper.class), mock(SystemPropertyHelper.class));
+        AAIRestInterface aaiRestInterface = new AAIRestInterface(httpsAuthClientMock,
+            mock(ServletRequestHelper.class),
+            mock(SystemPropertyHelper.class),
+            mock(Logging.class));
         final AaiClient aaiClient = new AaiClient(aaiRestInterface, null, null);
         when(httpsAuthClientMock.getClient(any())).thenReturn(javaxClientMock);
 
@@ -756,51 +796,6 @@ public class AaiClientTest {
         };
     }
 
-    @Test
-    public void testGetLatestVersionByInvariantId() throws IOException {
-
-        ModelVersions modelVersions = JACKSON_OBJECT_MAPPER.readValue("" +
-                "{\n" +
-                "    \"results\": [\n" +
-                "        {\n" +
-                "            \"model\": {\n" +
-                "                \"model-invariant-id\": \"f6342be5-d66b-4d03-a1aa-c82c3094c4ea\",\n" +
-                "                \"model-type\": \"service\",\n" +
-                "                \"resource-version\": \"1534274421300\"\n" +
-                "            }\n" +
-                "        },\n" +
-                "        {\n" +
-                "            \"model-ver\": {\n" +
-                "                \"model-version-id\": \"a92f899d-a3ec-465b-baed-1663b0a5aee1\",\n" +
-                "                \"model-name\": \"NCM_VLAN_SVC_ym161f\",\n" +
-                "                \"model-version\": \"bbb\",\n" +
-                "                \"distribution-status\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
-                "                \"model-description\": \"Network Collection service for vLAN tagging\",\n" +
-                "                \"resource-version\": \"1534788756086\"\n" +
-                "            }\n" +
-                "        },\n" +
-                "        {\n" +
-                "            \"model-ver\": {\n" +
-                "                \"model-version-id\": \"d2fda667-e92e-4cfa-9620-5da5de01a319\",\n" +
-                "                \"model-name\": \"NCM_VLAN_SVC_ym161f\",\n" +
-                "                \"model-version\": \"aaa\",\n" +
-                "                \"distribution-status\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
-                "                \"model-description\": \"Network Collection service for vLAN tagging\",\n" +
-                "                \"resource-version\": \"1534444087221\"\n" +
-                "            }\n" +
-                "        }]}", ModelVersions.class);
-
-
-        final AaiClient aaiClient = new AaiClient(null, null, null);
-
-        assertThat(aaiClient.toModelVerStream(modelVersions).collect(toList()),
-                containsInAnyOrder(
-                        hasProperty("modelVersionId", is("a92f899d-a3ec-465b-baed-1663b0a5aee1")),
-                        hasProperty("modelVersionId", is("d2fda667-e92e-4cfa-9620-5da5de01a319"))
-                ));
-
-    }
-
     @DataProvider
     public static Object[][]  versionsDataProvider() {
         return new Object[][] {
@@ -913,4 +908,75 @@ public class AaiClientTest {
         void acceptThrows(T t, U u) throws Exception;
     }
 
+    @Test
+    public void getLatestVersionByInvariantId_verifyCallingExpectedApi(){
+
+        when(aaiClientMock.getLatestVersionByInvariantId(anyString())).thenCallRealMethod();
+
+        aaiClientMock.getLatestVersionByInvariantId("model-invariant-id");
+
+        Mockito.verify(aaiClientMock).doAaiPut(argThat(url -> url.endsWith("query?format=resource&depth=0")),argThat(payload -> payload.contains("service-design-and-creation/models/model/model-invariant-id")),anyBoolean());
+
+    }
+
+    @DataProvider
+    public static Object[][]  getSubscriberDataDataProvider() {
+        return new Object[][] {
+            { "Some-ID", true },
+            { "another id 123", false },
+        };
+    }
+
+    @Test(dataProvider = "getSubscriberDataDataProvider")
+    public void getSubscriberDataParams(String subscriberId, boolean omitServiceInstances) {
+        String depth = omitServiceInstances ? "1" : "2";
+        when(aaiClientMock.getSubscriberData(anyString(),anyBoolean())).thenCallRealMethod();
+        aaiClientMock.getSubscriberData(subscriberId, omitServiceInstances);
+        Mockito.verify(aaiClientMock).doAaiGet(argThat(s -> s.contains("customer/" + subscriberId + "?") && s.contains("depth=" + depth)),any(Boolean.class));
+    }
+
+    @Test
+    public void testToModelVerStream() throws IOException {
+
+        ModelVersions modelVersions = JACKSON_OBJECT_MAPPER.readValue("" +
+            "{\n" +
+            "    \"results\": [\n" +
+            "        {\n" +
+            "            \"model\": {\n" +
+            "                \"model-invariant-id\": \"f6342be5-d66b-4d03-a1aa-c82c3094c4ea\",\n" +
+            "                \"model-type\": \"service\",\n" +
+            "                \"resource-version\": \"1534274421300\"\n" +
+            "            }\n" +
+            "        },\n" +
+            "        {\n" +
+            "            \"model-ver\": {\n" +
+            "                \"model-version-id\": \"a92f899d-a3ec-465b-baed-1663b0a5aee1\",\n" +
+            "                \"model-name\": \"NCM_VLAN_SVC_ym161f\",\n" +
+            "                \"model-version\": \"bbb\",\n" +
+            "                \"distribution-status\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
+            "                \"model-description\": \"Network Collection service for vLAN tagging\",\n" +
+            "                \"resource-version\": \"1534788756086\"\n" +
+            "            }\n" +
+            "        },\n" +
+            "        {\n" +
+            "            \"model-ver\": {\n" +
+            "                \"model-version-id\": \"d2fda667-e92e-4cfa-9620-5da5de01a319\",\n" +
+            "                \"model-name\": \"NCM_VLAN_SVC_ym161f\",\n" +
+            "                \"model-version\": \"aaa\",\n" +
+            "                \"distribution-status\": \"DISTRIBUTION_COMPLETE_OK\",\n" +
+            "                \"model-description\": \"Network Collection service for vLAN tagging\",\n" +
+            "                \"resource-version\": \"1534444087221\"\n" +
+            "            }\n" +
+            "        }]}", ModelVersions.class);
+
+
+        final AaiClient aaiClient = new AaiClient(null, null, null);
+
+        assertThat(aaiClient.toModelVerStream(modelVersions).collect(toList()),
+            containsInAnyOrder(
+                hasProperty("modelVersionId", is("a92f899d-a3ec-465b-baed-1663b0a5aee1")),
+                hasProperty("modelVersionId", is("d2fda667-e92e-4cfa-9620-5da5de01a319"))
+            ));
+
+    }
 }