diff options
Diffstat (limited to 'appc-dg/appc-dg-shared/appc-dg-aai/src/test')
4 files changed, 315 insertions, 11 deletions
diff --git a/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/impl/AAIPluginImplTest.java b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/impl/AAIPluginImplTest.java new file mode 100644 index 000000000..d89bd4730 --- /dev/null +++ b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/impl/AAIPluginImplTest.java @@ -0,0 +1,299 @@ +/* + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2018 Ericsson + * ============================================================================= + * 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.appc.dg.aai.impl; + +import static org.hamcrest.CoreMatchers.isA; +import java.util.HashMap; +import java.util.Map; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.mockito.Matchers; +import org.mockito.Mockito; +import org.onap.appc.dg.aai.exception.AAIQueryException; +import org.onap.appc.dg.aai.objects.AAIQueryResult; +import org.onap.appc.dg.aai.objects.Relationship; +import org.onap.appc.exceptions.APPCException; +import org.onap.appc.i18n.Msg; +import org.onap.ccsdk.sli.adaptors.aai.AAIClient; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; +import org.osgi.framework.FrameworkUtil; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import com.att.eelf.i18n.EELFResourceManager; +import org.hamcrest.CoreMatchers; +import org.junit.Assert; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.powermock.api.mockito.PowerMockito; + +@RunWith(PowerMockRunner.class) +@PrepareForTest(FrameworkUtil.class) +public class AAIPluginImplTest { + + private final BundleContext bundleContext = Mockito.mock(BundleContext.class); + private final Bundle bundleService = Mockito.mock(Bundle.class); + private final ServiceReference sref = Mockito.mock(ServiceReference.class); + private final AAIClient aaiClient = Mockito.mock(AAIClient.class); + private SvcLogicContext ctx; + private Map<String, String> params; + + @Rule + public ExpectedException expectedEx = ExpectedException.none(); + + @Before + public void setUp() throws NoSuchFieldException, IllegalAccessException { + PowerMockito.mockStatic(FrameworkUtil.class); + PowerMockito.when(FrameworkUtil.getBundle(Matchers.any(Class.class))).thenReturn(bundleService); + PowerMockito.when(bundleService.getBundleContext()).thenReturn(bundleContext); + PowerMockito.when(bundleContext.getServiceReference(Matchers.any(Class.class))).thenReturn(sref); + PowerMockito.when(bundleContext.<AAIClient>getService(sref)).thenReturn(aaiClient); + params = new HashMap<String, String>(); + params.put(Constants.AAI_INPUT_DATA + ".suffix", "TEST_DATA"); + } + + @Test + public void testPostGenericVnfDataNotFound() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.NOT_FOUND; + Mockito.doReturn(status).when(aaiClient).update(Mockito.anyString(), Mockito.anyString(), + Mockito.anyMap(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectMessage("VNF not found with vnf_id null"); + impl.postGenericVnfData(params, ctx); + } + + @Test + public void testPostGenericVnfDataFailure() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.FAILURE; + Mockito.doReturn(status).when(aaiClient).update(Mockito.anyString(), Mockito.anyString(), + Mockito.anyMap(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectMessage("Error Querying AAI with vnfID = null"); + impl.postGenericVnfData(params, ctx); + } + + @Test + public void testPostGenericVnfDataSucces() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.SUCCESS; + Mockito.doReturn(status).when(aaiClient).update(Mockito.anyString(), Mockito.anyString(), + Mockito.anyMap(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + impl.postGenericVnfData(params, ctx); + Assert.assertThat(ctx.getAttribute(org.onap.appc.Constants.ATTRIBUTE_SUCCESS_MESSAGE), CoreMatchers.containsString( + "Operation PostGenericVnfData succeed for VNF ID null")); + } + + @Test + public void testPostGenericVnfDataFailureThrownExeption() throws APPCException, SvcLogicException { + Mockito.doThrow(new SvcLogicException()).when(aaiClient).update(Mockito.anyString(), Mockito.anyString(), + Mockito.anyMap(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectCause(isA(SvcLogicException.class)); + impl.postGenericVnfData(params, ctx); + } + + @Test + public void testGetGenericVnfDataNotFound() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus notFound = SvcLogicResource.QueryStatus.NOT_FOUND; + Mockito.doReturn(notFound).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectMessage("VNF not found with vnf_id null"); + impl.getGenericVnfData(params, ctx); + } + + @Test + public void testGetGenericVnfDataFailure() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.FAILURE; + Mockito.doReturn(status).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectMessage("Error Querying AAI with vnfID = null"); + impl.getGenericVnfData(params, ctx); + } + + @Test + public void testGetGenericVnfDataSucces() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.SUCCESS; + Mockito.doReturn(status).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + impl.getGenericVnfData(params, ctx); + Assert.assertThat(ctx.getAttribute(org.onap.appc.Constants.ATTRIBUTE_SUCCESS_MESSAGE), CoreMatchers.containsString( + "Operation GetGenericVnfData succeed for VNF ID null")); + } + + @Test + public void testGetGenericVnfDataFailureThrownExeption() throws APPCException, SvcLogicException { + Mockito.doThrow(new SvcLogicException()).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectCause(isA(SvcLogicException.class)); + impl.getGenericVnfData(params, ctx); + } + + @Test + public void testGetVnfHierarchyAaiExceptionFlow() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.FAILURE; + Mockito.doReturn(status).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + params.put(Constants.RESOURCEKEY, "TEST_RESOURCE_KEY"); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectMessage("Error Retrieving VNF hierarchy"); + impl.getVnfHierarchy(params, ctx); + } + + @Test + public void testGetVnfHierarchyAaiExceptionFlow2() throws APPCException, SvcLogicException { + Mockito.doThrow(new SvcLogicException()).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + params.put(Constants.RESOURCEKEY, "TEST_RESOURCE_KEY"); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + expectedEx.expect(APPCException.class); + expectedEx.expectMessage("Error Retrieving VNF hierarchy"); + impl.getVnfHierarchy(params, ctx); + } + + @Test + public void testGetVnfHierarchyNoVMs() throws APPCException, SvcLogicException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.SUCCESS; + Mockito.doReturn(status).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + params.put(Constants.RESOURCEKEY, "TEST_RESOURCE_KEY"); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + impl.getVnfHierarchy(params, ctx); + Assert.assertEquals("0", ctx.getAttribute("VNF.VMCount")); + } + + @Test + public void testGetVnfHierarchy() throws APPCException, SvcLogicException, AAIQueryException { + String vnfId = "TEST_RESOURCE_KEY"; + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.SUCCESS; + Mockito.doReturn(status).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + params.put(Constants.RESOURCEKEY, "TEST_RESOURCE_KEY"); + AAIPluginImpl impl = Mockito.spy(new AAIPluginImpl()); + AAIQueryResult aaiQueryResult = new AAIQueryResult(); + aaiQueryResult.getAdditionProperties().put("vnf-type", "TEST_VNF_TYPE"); + Relationship relationship = new Relationship(); + relationship.setRelatedTo("vserver"); + aaiQueryResult.getRelationshipList().add(relationship); + Mockito.doReturn(aaiQueryResult).when(impl).readVnf(vnfId); + AAIQueryResult vmQueryResult = new AAIQueryResult(); + vmQueryResult.getAdditionProperties().put("vserver-selflink", "TEST_VM_NAME"); + Relationship vmRelationship = new Relationship(); + vmRelationship.setRelatedTo("vnfc"); + vmQueryResult.getRelationshipList().add(vmRelationship); + Mockito.doReturn(vmQueryResult).when(impl).readVM(null, null, null, null); + impl.initialize(); + impl.getVnfHierarchy(params, ctx); + Assert.assertEquals(EELFResourceManager.format(Msg.SUCCESS_EVENT_MESSAGE, "GetVNFHierarchy", "VNF ID " + vnfId), + ctx.getAttribute(org.onap.appc.Constants.ATTRIBUTE_SUCCESS_MESSAGE)); + } + + @Test + public void testReadVM() throws AAIQueryException { + AAIPluginImpl impl = Mockito.spy(new AAIPluginImpl()); + ctx = new SvcLogicContext(); + ctx.setAttribute("VM.relationship-list.relationship_length", "1"); + ctx.setAttribute("VM.relationship-list.relationship[0].relationship-data_length", "1"); + ctx.setAttribute("VM.relationship-list.relationship[0].related-to-property_length", "1"); + Mockito.doReturn(ctx).when(impl).readResource("vserver.vserver-id = 'null' AND tenant.tenant_id = 'null' AND " + + "cloud-region.cloud-owner = 'null' AND cloud-region.cloud-region-id = 'null'", "VM", "vserver"); + impl.initialize(); + Assert.assertEquals(null, impl.readVM(null, null, null, null).getAdditionProperties().get("resource-version")); + } + + @Test + public void testGetResource() throws SvcLogicException, APPCException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.SUCCESS; + Mockito.doReturn(status).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + params.put(Constants.RESOURCEKEY, "TEST_RESOURCE_KEY"); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + impl.getResource(params, ctx); + Assert.assertEquals("SUCCESS",ctx.getAttribute("getResource_result")); + } + + @Test + public void testPostResource() throws SvcLogicException, APPCException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.SUCCESS; + Mockito.doReturn(status).when(aaiClient).update(Mockito.anyString(), Mockito.anyString(), + Mockito.anyMap(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + params.put(Constants.RESOURCEKEY, "TEST_RESOURCE_KEY"); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + impl.postResource(params, ctx); + Assert.assertEquals("SUCCESS",ctx.getAttribute("postResource_result")); + } + + @Test + public void testDeleteResource() throws SvcLogicException, APPCException { + SvcLogicResource.QueryStatus status = SvcLogicResource.QueryStatus.SUCCESS; + Mockito.doReturn(status).when(aaiClient).delete(Mockito.anyString(), Mockito.anyString(), + Mockito.any(SvcLogicContext.class)); + ctx = new SvcLogicContext(); + params.put(Constants.RESOURCEKEY, "TEST_RESOURCE_KEY"); + AAIPluginImpl impl = new AAIPluginImpl(); + impl.initialize(); + impl.deleteResource(params, ctx); + Assert.assertEquals("SUCCESS",ctx.getAttribute("deleteResource_result")); + } +} diff --git a/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/impl/TestConstants.java b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/impl/TestConstants.java index 80fc68cdf..ec562f0a0 100644 --- a/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/impl/TestConstants.java +++ b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/impl/TestConstants.java @@ -3,6 +3,8 @@ * ONAP : APPC * ================================================================================ * Copyright 2018 TechMahindra +* ================================================================================ +* Modifications Copyright (C) 2019 Ericsson *================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,12 +27,11 @@ import org.junit.Test; import org.onap.appc.dg.aai.impl.Constants.SDC_ARTIFACTS_FIELDS; public class TestConstants { - private Constants constants=new Constants(); private SDC_ARTIFACTS_FIELDS c=SDC_ARTIFACTS_FIELDS.SERVICE_NAME; @Test public void testConstants() { - Assert.assertEquals("sdnctl",constants.NETCONF_SCHEMA); + Assert.assertEquals("sdnctl",Constants.NETCONF_SCHEMA); } @Test diff --git a/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestAAIQueryResult.java b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestAAIQueryResult.java index b88a878f8..7f606c37c 100644 --- a/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestAAIQueryResult.java +++ b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestAAIQueryResult.java @@ -3,6 +3,8 @@ * ONAP : APPC * ================================================================================ * Copyright 2018 TechMahindra +* ================================================================================ +* Modifications Copyright (C) 2019 Ericsson *================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,11 +19,11 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.appc.dg.aai.objects; import java.util.HashMap; import java.util.Map; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -30,7 +32,7 @@ public class TestAAIQueryResult { private AAIQueryResult aaiQueryResult; private Map<String,String> additionProperties; - + @Before public void setUp() { aaiQueryResult=new AAIQueryResult(); @@ -55,7 +57,7 @@ public class TestAAIQueryResult { @Test public void testGetAdditionProperties_IsEmpty() { - Assert.assertTrue(aaiQueryResult. getAdditionProperties().isEmpty()); + Assert.assertTrue(aaiQueryResult.getAdditionProperties().isEmpty()); } @Test diff --git a/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestRelationship.java b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestRelationship.java index f0b832a1f..cb3a7756a 100644 --- a/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestRelationship.java +++ b/appc-dg/appc-dg-shared/appc-dg-aai/src/test/java/org/onap/appc/dg/aai/objects/TestRelationship.java @@ -3,6 +3,8 @@ * ONAP : APPC * ================================================================================ * Copyright 2018 TechMahindra +* ================================================================================ +* Modifications Copyright (C) 2019 Ericsson *================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,11 +19,11 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.appc.dg.aai.objects; import java.util.HashMap; import java.util.Map; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -30,7 +32,7 @@ public class TestRelationship { private Relationship relationship; private Map<String,String> relationShipDataMap; private Map<String,String> relatedProperties; - + @Before public void setUp() { relationship=new Relationship(); @@ -42,14 +44,14 @@ public class TestRelationship { public void testGetRelatedTo() { relationship.setRelatedTo("relatedTo"); Assert.assertNotNull(relationship.getRelatedTo()); - Assert.assertEquals("relatedTo",relationship.getRelatedTo()); + Assert.assertEquals("relatedTo", relationship.getRelatedTo()); } @Test public void testGetRelatedLink() { relationship.setRelatedLink("relatedLink"); Assert.assertNotNull(relationship.getRelatedLink()); - Assert.assertEquals("relatedLink",relationship.getRelatedLink()); + Assert.assertEquals("relatedLink", relationship.getRelatedLink()); } @Test @@ -66,12 +68,12 @@ public class TestRelationship { @Test public void testGetRelationShipDataMap_WithValidKey() { relationShipDataMap.put("2", "B"); - Assert.assertEquals("B",relationShipDataMap.get("2")); + Assert.assertEquals("B", relationShipDataMap.get("2")); } @Test public void testgetRelationShipDataMap_WithInValidKey() { - Assert.assertEquals(null,relationShipDataMap.get("3")); + Assert.assertEquals(null, relationShipDataMap.get("3")); } @Test |