regression unit test for getServicesByProjectNames 40/101140/1
authorEylon Malin <eylon.malin@intl.att.com>
Tue, 4 Feb 2020 21:21:33 +0000 (23:21 +0200)
committerEylon Malin <eylon.malin@intl.att.com>
Tue, 4 Feb 2020 21:21:33 +0000 (23:21 +0200)
Issue-ID: VID-758
Signed-off-by: Eylon Malin <eylon.malin@intl.att.com>
Change-Id: Ibb4f6b63448dfb53bae5c262b3d8ce4f253935e0

vid-app-common/src/main/java/org/onap/vid/aai/AaiClient.java
vid-app-common/src/main/java/org/onap/vid/aai/AaiClientInterface.java
vid-app-common/src/main/java/org/onap/vid/services/AaiServiceImpl.java
vid-app-common/src/test/java/org/onap/vid/services/AaiServiceTest.java
vid-app-common/src/test/resources/responses/aai/listServicesByProject.json [new file with mode: 0644]

index 1baca9f..7816446 100644 (file)
@@ -149,7 +149,7 @@ public class AaiClient implements AaiClientInterface {
     }
 
     @Override
-    public AaiResponse getServicesByProjectNames(List<String> projectNames){
+    public AaiResponse<ProjectResponse> getServicesByProjectNames(List<String> projectNames){
         Response resp = doAaiGet(getUrlFromLIst("business/projects?", "project-name=",  projectNames), false);
         return processAaiResponse(resp, ProjectResponse.class, null);
     }
index b39b809..b4b908c 100644 (file)
@@ -31,6 +31,7 @@ import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
 import org.onap.vid.aai.model.ModelVer;
 import org.onap.vid.aai.model.OwningEntityResponse;
 import org.onap.vid.aai.model.PortDetailsTranslator;
+import org.onap.vid.aai.model.ProjectResponse;
 import org.onap.vid.aai.model.Properties;
 import org.onap.vid.aai.model.ResourceType;
 import org.onap.vid.model.SubscriberList;
@@ -76,7 +77,7 @@ public interface AaiClientInterface extends ProbeInterface {
 
     ModelVer getLatestVersionByInvariantId(String modelInvariantId);
 
-    AaiResponse getServicesByProjectNames(List<String> projectNames);
+    AaiResponse<ProjectResponse> getServicesByProjectNames(List<String> projectNames);
 
     AaiResponse getServiceModelsByDistributionStatus();
 
index a992519..a73d690 100644 (file)
@@ -186,7 +186,7 @@ public class AaiServiceImpl implements AaiService {
         return serviceInstanceSearchResultList;
     }
 
-    private List<ServiceInstanceSearchResult> getServicesByProjectNames(List<String> projectNames, RoleValidator roleValidator) {
+    List<ServiceInstanceSearchResult> getServicesByProjectNames(List<String> projectNames, RoleValidator roleValidator) {
         AaiResponse<ProjectResponse> projectByIdResponse = aaiClient.getServicesByProjectNames(projectNames);
         List<ServiceInstanceSearchResult> serviceInstanceSearchResultList = new ArrayList<>();
         if (projectByIdResponse.getT() != null) {
index 663d862..9026174 100644 (file)
@@ -43,6 +43,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import org.jetbrains.annotations.NotNull;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
@@ -55,6 +56,7 @@ import org.onap.vid.aai.model.AaiGetPnfs.Pnf;
 import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
 import org.onap.vid.aai.model.LogicalLinkResponse;
 import org.onap.vid.aai.model.OwningEntityResponse;
+import org.onap.vid.aai.model.ProjectResponse;
 import org.onap.vid.aai.model.Relationship;
 import org.onap.vid.aai.model.RelationshipData;
 import org.onap.vid.aai.model.RelationshipList;
@@ -286,15 +288,17 @@ public class AaiServiceTest {
 
     @Test
     public void testGetServicesByOwningEntityId() {
-        List<String>  owningEntityIds = ImmutableList.of("43b8a85a-0421-4265-9069-117dd6526b8a", "26dcc4aa-725a-447d-8346-aa26dfaa4eb7");
-        RoleValidator roleValidator  = mock(RoleValidator.class);
 
+        //given
+        List<String>  owningEntityIds = ImmutableList.of("43b8a85a-0421-4265-9069-117dd6526b8a", "26dcc4aa-725a-447d-8346-aa26dfaa4eb7");
         OwningEntityResponse owningEntityResponse = TestUtils.readJsonResourceFileAsObject("/responses/aai/listServicesByOwningEntity.json", OwningEntityResponse.class);
-        when(roleValidator.isServicePermitted(any(WithPermissionProperties.class))).thenReturn(true);
         when(aaiClientInterface.getServicesByOwningEntityId(owningEntityIds)).thenReturn(new AaiResponse<>(owningEntityResponse, "", 200));
-        List<ServiceInstanceSearchResult> result = aaiService.getServicesByOwningEntityId(owningEntityIds, roleValidator);
+        RoleValidator roleValidator = createAlwaysTrueRoleValidator();
 
+        //when
+        List<ServiceInstanceSearchResult> result = aaiService.getServicesByOwningEntityId(owningEntityIds, roleValidator);
 
+        //then
         ServiceInstanceSearchResult expected1 = new ServiceInstanceSearchResult(
             "af9d52f9-13b2-4657-a198-463677f82dc0", "256cddb4-3aa1-43cc-a08f-315bb50b275e", "MSO-dev-service-type", "xbghrftgr_shani", null, null, null, null, true);
         ServiceInstanceSearchResult expected2 = new ServiceInstanceSearchResult(
@@ -305,4 +309,34 @@ public class AaiServiceTest {
         assertThat(result, jsonEquals(ImmutableList.of(expected1, expected2, expected3)).when(IGNORING_ARRAY_ORDER).whenIgnoringPaths("[*].subscriberName")); //ignore in array
     }
 
+    @NotNull
+    private RoleValidator createAlwaysTrueRoleValidator() {
+        RoleValidator roleValidator  = mock(RoleValidator.class);
+        when(roleValidator.isServicePermitted(any(WithPermissionProperties.class))).thenReturn(true);
+        return roleValidator;
+    }
+
+    @Test
+    public void testGetServicesByProjectNames() {
+
+        //given
+        List<String>  projectNames = ImmutableList.of("x1", "y2");
+        ProjectResponse projectResponse = TestUtils.readJsonResourceFileAsObject("/responses/aai/listServicesByProject.json", ProjectResponse.class);
+        when(aaiClientInterface.getServicesByProjectNames(projectNames)).thenReturn(new AaiResponse<>(projectResponse, "", 200));
+        RoleValidator roleValidator = createAlwaysTrueRoleValidator();
+
+        //when
+        List<ServiceInstanceSearchResult> result = aaiService.getServicesByProjectNames(projectNames, roleValidator);
+
+        //then
+        ServiceInstanceSearchResult expected1 = new ServiceInstanceSearchResult(
+            "3f826016-3ac9-4928-9561-beee75fd91d5", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", "Emanuel", "Lital_SRIOV2_001", null, null, null, null, true);
+        ServiceInstanceSearchResult expected2 = new ServiceInstanceSearchResult(
+            "7e4f8130-5dee-47c4-8770-1abc5f5ded83", "3d15d7ea-4174-49b6-89ec-e569381f7231", "vMOG", "justAname",  null, null, null, null, true);
+        ServiceInstanceSearchResult expected3 = new ServiceInstanceSearchResult(
+            "ff2d9326-1ef5-4760-aba0-0eaf372ae675", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", "Yoda", "anotherName", null, null, null, null, true);
+
+        assertThat(result, jsonEquals(ImmutableList.of(expected1, expected2, expected3)).when(IGNORING_ARRAY_ORDER).whenIgnoringPaths("[*].subscriberName")); //ignore in array
+    }
+
 }
diff --git a/vid-app-common/src/test/resources/responses/aai/listServicesByProject.json b/vid-app-common/src/test/resources/responses/aai/listServicesByProject.json
new file mode 100644 (file)
index 0000000..6d6b09f
--- /dev/null
@@ -0,0 +1,95 @@
+{
+  "project": [
+    {
+      "project-name": "x1",
+      "resource-version": "1527026201826",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "service-instance",
+            "relationship-label": "org.onap.relationships.inventory.Uses",
+            "related-link": "/aai/v12/business/customers/customer/a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb/service-subscriptions/service-subscription/Emanuel/service-instances/service-instance/3f826016-3ac9-4928-9561-beee75fd91d5",
+            "relationship-data": [
+              {
+                "relationship-key": "customer.global-customer-id",
+                "relationship-value": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+              },
+              {
+                "relationship-key": "service-subscription.service-type",
+                "relationship-value": "Emanuel"
+              },
+              {
+                "relationship-key": "service-instance.service-instance-id",
+                "relationship-value": "3f826016-3ac9-4928-9561-beee75fd91d5"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "service-instance.service-instance-name",
+                "property-value": "Lital_SRIOV2_001"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    {
+      "project-name": "y2",
+      "resource-version": "1527026341826",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "service-instance",
+            "relationship-label": "org.onap.relationships.inventory.BelongsTo",
+            "related-link": "/aai/v12/business/customers/customer/3d15d7ea-4174-49b6-89ec-e569381f7231/service-subscriptions/service-subscription/vMOG/service-instances/service-instance/7e4f8130-5dee-47c4-8770-1abc5f5ded83",
+            "relationship-data": [
+              {
+                "relationship-key": "customer.global-customer-id",
+                "relationship-value": "3d15d7ea-4174-49b6-89ec-e569381f7231"
+              },
+              {
+                "relationship-key": "service-subscription.service-type",
+                "relationship-value": "vMOG"
+              },
+              {
+                "relationship-key": "service-instance.service-instance-id",
+                "relationship-value": "7e4f8130-5dee-47c4-8770-1abc5f5ded83"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "service-instance.service-instance-name",
+                "property-value": "justAname"
+              }
+            ]
+          },
+          {
+            "related-to": "service-instance",
+            "relationship-label": "org.onap.relationships.inventory.Uses",
+            "related-link": "/aai/v12/business/customers/customer/a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb/service-subscriptions/service-subscription/Yoda/service-instances/service-instance/ff2d9326-1ef5-4760-aba0-0eaf372ae675",
+            "relationship-data": [
+              {
+                "relationship-key": "customer.global-customer-id",
+                "relationship-value": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+              },
+              {
+                "relationship-key": "service-subscription.service-type",
+                "relationship-value": "Yoda"
+              },
+              {
+                "relationship-key": "service-instance.service-instance-id",
+                "relationship-value": "ff2d9326-1ef5-4760-aba0-0eaf372ae675"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "service-instance.service-instance-name",
+                "property-value": "anotherName"
+              }
+            ]
+          }
+        ]
+      }
+    }
+  ]
+}