diff options
Diffstat (limited to 'vid-app-common/src/test/java/org/onap/vid/services/AaiServiceTest.java')
-rw-r--r-- | vid-app-common/src/test/java/org/onap/vid/services/AaiServiceTest.java | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceTest.java new file mode 100644 index 000000000..92a55f0b8 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/services/AaiServiceTest.java @@ -0,0 +1,230 @@ +/*- + * ============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 static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.arrayWithSize; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.equalTo; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; + +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.vid.aai.AaiClientInterface; +import org.onap.vid.aai.AaiGetVnfResponse; +import org.onap.vid.aai.AaiResponse; +import org.onap.vid.aai.model.AaiGetPnfResponse; +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.Relationship; +import org.onap.vid.aai.model.RelationshipData; +import org.onap.vid.aai.model.RelationshipList; +import org.onap.vid.aai.model.ServiceRelationships; +import org.onap.vid.aai.model.VnfResult; +import org.onap.vid.model.aaiTree.AAITreeNode; +import org.onap.vid.roles.Role; +import org.onap.vid.roles.RoleValidator; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +public class AaiServiceTest { + + @InjectMocks + private AaiServiceImpl aaiService; + + @Mock + private AaiClientInterface aaiClientInterface; + + @BeforeMethod + public void initMocks(){ + MockitoAnnotations.initMocks(this); + } + + @Test + public void testGetSpecificPnf(){ + Pnf pnf = new Pnf("11111", null, null, null, null, null, null); + AaiResponse<Pnf> aaiResponse = new AaiResponse<>(pnf, "aaaa", 200); + Mockito.doReturn(aaiResponse).when(aaiClientInterface).getSpecificPnf(Mockito.anyString()); + AaiResponse<Pnf> specificPnf = aaiService.getSpecificPnf("1345667"); + assertNotNull(specificPnf); + pnf = specificPnf.getT(); + assertNotNull(pnf); + assertEquals("11111",pnf.getPnfId()); + assertEquals("aaaa",specificPnf.getErrorMessage()); + assertEquals(200,specificPnf.getHttpCode()); + } + + @Test + public void testPnfByRegion(){ + AaiGetPnfResponse aaiGetPnfResponse = new AaiGetPnfResponse(); + AaiResponse<AaiGetPnfResponse> aaiResponse = new AaiResponse<>(aaiGetPnfResponse, "", 200); + Mockito.doReturn(aaiResponse).when(aaiClientInterface).getPNFData(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString()); + AaiResponse<AaiGetPnfResponse> aaiGetPnfResponseWrapper = aaiService.getPNFData("1345667", "1345667", "1345667", "1345667", "1345667", "1345667", "1345667"); + assertNotNull(aaiGetPnfResponseWrapper); + aaiGetPnfResponse = aaiGetPnfResponseWrapper.getT(); + assertNotNull(aaiGetPnfResponse); + } + + @Test + public void testGetAssociatedPnfs(){ + ServiceRelationships serviceRelationships = createServiceRelationships(); + AaiResponse<ServiceRelationships> aaiResponse = new AaiResponse<>(serviceRelationships, null, 200); + Mockito.doReturn(aaiResponse).when(aaiClientInterface).getServiceInstance(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()); + + LogicalLinkResponse logicalLinkResponse = createLogicalLinkResponse(); + AaiResponse<LogicalLinkResponse> aaiResponse1 = new AaiResponse<>(logicalLinkResponse, null, 200); + Mockito.doReturn(aaiResponse1).when(aaiClientInterface).getLogicalLink("SANITY6758cce9%3ALAG1992%7CSANITY6785cce9%3ALAG1961"); + + List<String> pnfList = aaiService.getServiceInstanceAssociatedPnfs("123", "456", "789"); + assertNotNull(pnfList); + assertEquals(1, pnfList.size()); + assertEquals("SANITY6785cce9", pnfList.get(0)); + } + + private ServiceRelationships createServiceRelationships() { + ServiceRelationships serviceRelationships = new ServiceRelationships(); + serviceRelationships.setServiceInstanceName("test service"); + + RelationshipData logicalLinksRelationshipData = new RelationshipData(); + logicalLinksRelationshipData.setRelationshipKey("logical-link.link-name"); + logicalLinksRelationshipData.setRelationshipValue("SANITY6758cce9:LAG1992|SANITY6785cce9:LAG1961"); + + Relationship logicalLinksRelationship = new Relationship(); + logicalLinksRelationship.setRelatedTo("logical-link"); + logicalLinksRelationship.setRelationDataList(Arrays.asList(logicalLinksRelationshipData)); + + RelationshipList logicalLinksRelationshipsList = new RelationshipList(); + logicalLinksRelationshipsList.setRelationship(Arrays.asList(logicalLinksRelationship)); + + serviceRelationships.setRelationshipList(logicalLinksRelationshipsList); + return serviceRelationships; + } + + private LogicalLinkResponse createLogicalLinkResponse() { + LogicalLinkResponse logicalLinkResponse = new LogicalLinkResponse(); + logicalLinkResponse.setLinkName("SANITY6758cce9:LAG1992|SANITY6785cce9:LAG1961"); + + RelationshipData lagInterfaceRelationshipData = new RelationshipData(); + lagInterfaceRelationshipData.setRelationshipKey("pnf.pnf-name"); + lagInterfaceRelationshipData.setRelationshipValue("SANITY6785cce9"); + + Relationship lagInterfaceRelationship = new Relationship(); + lagInterfaceRelationship.setRelatedTo("lag-interface"); + lagInterfaceRelationship.setRelationDataList(Arrays.asList(lagInterfaceRelationshipData)); + + RelationshipList lagInterfaceRelationshipsList = new RelationshipList(); + lagInterfaceRelationshipsList.setRelationship(Arrays.asList(lagInterfaceRelationship)); + + logicalLinkResponse.setRelationshipList(lagInterfaceRelationshipsList); + + return logicalLinkResponse; + } + + @DataProvider + public static Object[][] getTenantsData() { + return new Object[][] { + {"customer1", "serviceType1", "tenant1", "customer1", "serviceType1", "tenant1", "id-1", true}, + {"customer1", "serviceType1", "TeNant1", "customer1", "serviceType1", "tenant1", "id-1", true}, + {"customer1", "serviceType1", "TENANT1", "customer1", "serviceType1", "tenant1", "id-1", true}, + {"customer1", "serviceType1", "tenant2", "customer1", "serviceType1", "tenant1", "tenant2", false}, + {"customer1", "serviceType1", null, "customer1", "serviceType1", "tenant1", "tenant2", true}, + {"customer2", "serviceType1", "tenant1", "customer1", "serviceType1", "tenant1", "id-1", false}, + {"customer1", "serviceType2", "tenant1", "customer1", "serviceType1", "tenant1", "id-1", false}, + {"customer2", "serviceType1", null, "customer1", "serviceType1", "tenant1", "id-1", false}, + {"customer1", "serviceType2", null, "customer1", "serviceType1", "tenant1", "id-1", false}, + }; + } + + @Test(dataProvider = "getTenantsData") + public void testGetTenants(String userGlobalCustomerId, String userServiceType, String userTenantName, String serviceGlobalCustomerId, + String serviceServiceType, String serviceTenantName, String serviceTenantId, boolean expectedIsPermitted) { + GetTenantsResponse[] getTenantsResponses = new GetTenantsResponse[] {new GetTenantsResponse(null, null, serviceTenantName, serviceTenantId, false)}; + AaiResponse<GetTenantsResponse[]> aaiResponse = new AaiResponse<>(getTenantsResponses, null, 200); + Mockito.doReturn(aaiResponse).when(aaiClientInterface).getTenants(serviceGlobalCustomerId, serviceServiceType); + Role role = new Role(null, userGlobalCustomerId, userServiceType, userTenantName); + RoleValidator roleValidator = RoleValidator.by(Collections.singletonList(role), false); + AaiResponse<GetTenantsResponse[]> actualTenants = aaiService.getTenants(serviceGlobalCustomerId, serviceServiceType, roleValidator); + + assertThat(actualTenants.getT(), arrayWithSize(1)); + assertThat(actualTenants.getT()[0].tenantName, equalTo(serviceTenantName)); + assertThat(actualTenants.getT()[0].isPermitted, equalTo(expectedIsPermitted)); + } + + @DataProvider + public static Object[][] instanceGroupsRoleAndType() { + return new Object[][]{ + {"group role & type are same as requested", ImmutableMap.of("SERVICE-ACCESS", "LOAD-GROUP"), false}, + {"1 group properties is same as requested, 1 is not same", ImmutableMap.of("SERVICE-ACCESS", "LOAD-GROUP", + "dummy", "dummy"), false}, + {"only group type is same as requested", ImmutableMap.of("dummy", "LOAD-GROUP"), true}, + {"only group role is same as requested", ImmutableMap.of("SERVICE-ACCESS", "dummy"), true}, + {"group role & type are not same as requested", ImmutableMap.of("dummy", "dummy"), true}, + {"vnf is not related to instance group", ImmutableMap.of(), true}, + }; + } + + @Test(dataProvider = "instanceGroupsRoleAndType") + public void testFilterInstanceGroupByRoleAndType(String description, Map<String, String> instanceGroupsProperties, boolean expectedMatch) { + List<AAITreeNode> instanceGroups = new ArrayList<>(); + + for (Map.Entry<String, String> props: instanceGroupsProperties.entrySet()) { + AAITreeNode instanceGroup = new AAITreeNode(); + Map<String, Object> additionalProperties = ImmutableMap.of( + "instance-group-role", props.getKey(), + "instance-group-type", props.getValue()); + instanceGroup.setAdditionalProperties(additionalProperties); + instanceGroups.add(instanceGroup); + } + + boolean anyMatch = aaiService.isInstanceGroupsNotMatchRoleAndType(instanceGroups, "SERVICE-ACCESS", "LOAD-GROUP"); + assertThat(anyMatch, equalTo(expectedMatch)); + } + + @Test + public void testFilterChangeManagementVNFCandidatesResponse() { + AaiGetVnfResponse aaiGetVnfResponse = new AaiGetVnfResponse(); + aaiGetVnfResponse.results = new ArrayList<>(); + Stream.of("genEric-vNf", "l3-interface-ipv6-address-list", "vserver", "pserver", "serviCe-inStance").forEach( + nodeType->{ + VnfResult vnfResult = new VnfResult(); + vnfResult.nodeType=nodeType; + aaiGetVnfResponse.results.add(vnfResult); + } + ); + + AaiResponse<AaiGetVnfResponse> result = aaiService.filterChangeManagementVNFCandidatesResponse(new AaiResponse<>(aaiGetVnfResponse, "", 200)); + assertEquals(2, result.getT().results.size()); + assertThat(result.getT().results.stream().map(x->x.nodeType).collect(Collectors.toList()), containsInAnyOrder("genEric-vNf","serviCe-inStance")); + } +} |