diff options
5 files changed, 743 insertions, 205 deletions
diff --git a/appc-dg-util/appc-dg-util-bundle/pom.xml b/appc-dg-util/appc-dg-util-bundle/pom.xml index 17e0b5dab..547f84088 100644 --- a/appc-dg-util/appc-dg-util-bundle/pom.xml +++ b/appc-dg-util/appc-dg-util-bundle/pom.xml @@ -1,208 +1,223 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-dg-util</artifactId> - <version>1.1.0-SNAPSHOT</version> - </parent> - - <artifactId>appc-dg-util-bundle</artifactId> - <packaging>bundle</packaging> - <name>appc-dg-util - bundle</name> - <properties> - <exam.version>4.9.1</exam.version> - <url.version>1.6.0</url.version> - <sal-netconf-connector.version>1.3.1-Beryllium-SR1</sal-netconf-connector.version> - </properties> - - <dependencies> - <dependency> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-common</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>javax</groupId> - <artifactId>javaee-api</artifactId> - <version>7.0</version> - </dependency> - - <dependency> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <artifactId>aai-service-provider</artifactId> - </dependency> - - <dependency> - <groupId>javax.ws.rs</groupId> - <artifactId>javax.ws.rs-api</artifactId> - </dependency> - - <!-- Jersey support needed for OpenStack connector and API version logic --> - <dependency> - <groupId>com.sun.jersey</groupId> - <artifactId>jersey-client</artifactId> - </dependency> - - <dependency> - <groupId>com.sun.jersey</groupId> - <artifactId>jersey-json</artifactId> - </dependency> - - <dependency> - <groupId>javax.xml.bind</groupId> - <artifactId>jaxb-api</artifactId> - <version>2.1</version> - </dependency> - - <dependency> - <groupId>javax.xml</groupId> - <artifactId>jaxp-api</artifactId> - <version>1.4.2</version> - </dependency> - - <!-- Needed to run test cases --> - <dependency> - <groupId>org.glassfish.jersey.core</groupId> - <artifactId>jersey-common</artifactId> - <version>2.9.1</version> - </dependency> - - <dependency> - <groupId>org.codehaus.jackson</groupId> - <artifactId>jackson-jaxrs</artifactId> - <version>1.9.12</version> - </dependency> - - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>4.5.1</version> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>sli-common</artifactId> - <scope>compile</scope> - <!-- Added exclusion to prevent missing dependency issue on dblib --> - <exclusions> - <exclusion> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>dblib-provider</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>sli-provider</artifactId> - <scope>compile</scope> - <!-- Added exclusion to prevent missing dependency issue on dblib --> - <exclusions> - <exclusion> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>dblib-provider</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>equinoxSDK381</groupId> - <artifactId>org.eclipse.osgi</artifactId> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - </dependency> - - <dependency> - <groupId>org.mariadb.jdbc</groupId> - <artifactId>mariadb-java-client</artifactId> - </dependency> - - <dependency> - <groupId>com.vmware</groupId> - <artifactId>vijava</artifactId> - <version>5.1</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>xerces</groupId> - <artifactId>xerces</artifactId> - <version>2.4.0</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpcore</artifactId> - <version>${apache.httpcomponents.version}</version> - </dependency> - - <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - <version>1.2</version> - </dependency> - - <dependency> - <groupId>org.json</groupId> - <artifactId>json</artifactId> - </dependency> - - <dependency> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-dmaap-adapter-bundle</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.openecomp.appc</groupId> - <artifactId>appc-netconf-adapter-bundle</artifactId> - <version>1.1.0-SNAPSHOT</version> - </dependency> - - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <instructions> - <Bundle-SymbolicName>appc-dg-util</Bundle-SymbolicName> - <Bundle-Activator>org.openecomp.appc.dg.util.AppcDgUtilActivator</Bundle-Activator> - <Export-Package>org.openecomp.appc.dg.util.*</Export-Package> - <Import-Package> - org.openecomp.appc.adapter.netconf,org.openecomp.appc.adapter.netconf.dao,org.openecomp.appc.adapter.netconf.util,com.att.eelf.*, - org.openecomp.appc.adapter.netconf.exception, org.openecomp.appc.adapter.messaging.*,org.onap.ccsdk.sli.core.sli.*, - org.openecomp.appc.exceptions, org.openecomp.appc.i18n, - org.osgi.framework.*,org.slf4j.*,com.vmware.*,org.apache.xerces.*,javax.net.*, - javax.net.ssl.*,org.xml.sax.*,javax.xml.bind.*, - javax.naming.*,com.fasterxml.*,javax.xml.parsers, *;resolution:=optional - </Import-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-dg-util</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <artifactId>appc-dg-util-bundle</artifactId> + <packaging>bundle</packaging> + <name>appc-dg-util - bundle</name> + <properties> + <exam.version>4.9.1</exam.version> + <url.version>1.6.0</url.version> + <sal-netconf-connector.version>1.3.1-Beryllium-SR1</sal-netconf-connector.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-common</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>javax</groupId> + <artifactId>javaee-api</artifactId> + <version>7.0</version> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>aai-service-provider</artifactId> + </dependency> + <dependency> + <groupId>javax.ws.rs</groupId> + <artifactId>javax.ws.rs-api</artifactId> + </dependency> + <!-- Jersey support needed for OpenStack connector and API version logic --> + <dependency> + <groupId>com.sun.jersey</groupId> + <artifactId>jersey-client</artifactId> + </dependency> + <dependency> + <groupId>com.sun.jersey</groupId> + <artifactId>jersey-json</artifactId> + </dependency> + <dependency> + <groupId>javax.xml.bind</groupId> + <artifactId>jaxb-api</artifactId> + <version>2.1</version> + </dependency> + <dependency> + <groupId>javax.xml</groupId> + <artifactId>jaxp-api</artifactId> + <version>1.4.2</version> + </dependency> + <!-- Needed to run test cases --> + <dependency> + <groupId>org.glassfish.jersey.core</groupId> + <artifactId>jersey-common</artifactId> + <version>2.9.1</version> + </dependency> + <dependency> + <groupId>org.codehaus.jackson</groupId> + <artifactId>jackson-jaxrs</artifactId> + <version>1.9.12</version> + </dependency> + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.5.1</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>sli-common</artifactId> + <scope>compile</scope> + <!-- Added exclusion to prevent missing dependency issue on dblib --> + <exclusions> + <exclusion> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>dblib-provider</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>sli-provider</artifactId> + <scope>compile</scope> + <!-- Added exclusion to prevent missing dependency issue on dblib --> + <exclusions> + <exclusion> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>dblib-provider</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>equinoxSDK381</groupId> + <artifactId>org.eclipse.osgi</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + </dependency> + <dependency> + <groupId>org.mariadb.jdbc</groupId> + <artifactId>mariadb-java-client</artifactId> + </dependency> + <dependency> + <groupId>com.vmware</groupId> + <artifactId>vijava</artifactId> + <version>5.1</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>xerces</groupId> + <artifactId>xerces</artifactId> + <version>2.4.0</version> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <version>${apache.httpcomponents.version}</version> + </dependency> + + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.2</version> + </dependency> + <dependency> + <groupId>org.json</groupId> + <artifactId>json</artifactId> + </dependency> + <dependency> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-dmaap-adapter-bundle</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.openecomp.appc</groupId> + <artifactId>appc-netconf-adapter-bundle</artifactId> + <version>1.1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-api-mockito</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-module-junit4</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>appc-dg-util</Bundle-SymbolicName> + <Bundle-Activator>org.openecomp.appc.dg.util.AppcDgUtilActivator</Bundle-Activator> + <Export-Package>org.openecomp.appc.dg.util.*</Export-Package> + <Import-Package> + org.openecomp.appc.adapter.netconf, + org.openecomp.appc.adapter.netconf.dao, + org.openecomp.appc.adapter.netconf.util,com.att.eelf.*, + org.openecomp.appc.adapter.netconf.exception, + org.openecomp.appc.adapter.messaging.*, + org.onap.ccsdk.sli.core.sli.*, + org.openecomp.appc.exceptions, + org.openecomp.appc.i18n, + org.osgi.framework.*, + org.slf4j.*, + com.vmware.*, + org.apache.xerces.*, + javax.net.*, + javax.net.ssl.*, + org.xml.sax.*, + javax.xml.bind.*, + javax.naming.*, + com.fasterxml.*, + javax.xml.parsers, + *;resolution:=optional + </Import-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> diff --git a/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/AppcDgUtilActivatorTest.java b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/AppcDgUtilActivatorTest.java new file mode 100644 index 000000000..4aec25004 --- /dev/null +++ b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/AppcDgUtilActivatorTest.java @@ -0,0 +1,59 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.dg.util; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.osgi.framework.BundleContext; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.modules.junit4.PowerMockRunner; + +@RunWith(PowerMockRunner.class) +public class AppcDgUtilActivatorTest { + + @Mock + private BundleContext bundleContext; + + private AppcDgUtilActivator appcDgUtilActivator; + + @Before + public void setUp() throws Exception { + appcDgUtilActivator = new AppcDgUtilActivator(); + } + + @Test + public void start() { + appcDgUtilActivator.start(bundleContext); + PowerMockito.verifyStatic(); + } + + @Test + public void stop() { + appcDgUtilActivator.stop(bundleContext); + PowerMockito.verifyStatic(); + } +}
\ No newline at end of file diff --git a/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/ExecuteNodeActionImplTest.java b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/ExecuteNodeActionImplTest.java new file mode 100644 index 000000000..3bf369e85 --- /dev/null +++ b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/ExecuteNodeActionImplTest.java @@ -0,0 +1,236 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.dg.util.impl; + +import com.att.eelf.configuration.EELFLogger; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Spy; +import org.onap.ccsdk.sli.adaptors.aai.AAIService; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; +import org.openecomp.appc.exceptions.APPCException; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.ServiceReference; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.reflect.Whitebox; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyMap; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.powermock.api.mockito.PowerMockito.mockStatic; +import static org.powermock.api.mockito.PowerMockito.verifyPrivate; +import static org.powermock.api.mockito.PowerMockito.verifyStatic; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({ExecuteNodeActionImpl.class, FrameworkUtil.class, Thread.class}) +public class ExecuteNodeActionImplTest { + @Spy + private ExecuteNodeActionImpl mockedExecuteNodeActionImpl = new ExecuteNodeActionImpl(); + @Mock + private EELFLogger eelfLogger; + @Mock + private AAIService aaiService; + + private final String resourceType = "resourceType"; + private final String prefix = "prefix"; + private final String resourceKey = "resourceKey"; + private final String attributeName = "attributeName"; + private final String attributeValue = "attributeValue"; + + private Map<String, String> params = new HashMap<>(); + private SvcLogicContext svcLogicContext = new SvcLogicContext(); + private SvcLogicResource.QueryStatus queryStatus = SvcLogicResource.QueryStatus.SUCCESS; + + + @Before + public void setUp() throws Exception { + Whitebox.setInternalState(mockedExecuteNodeActionImpl, "logger", eelfLogger); + Whitebox.setInternalState(mockedExecuteNodeActionImpl, "aaiService", aaiService); + + params.put("resourceType", resourceType); + params.put("prefix", prefix); + params.put("resourceKey", resourceKey); + params.put("attributeName", attributeName); + params.put("attributeValue", attributeValue); + } + + @Test + public void testInitialize() throws Exception { + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "getAAIservice"); + Whitebox.invokeMethod(mockedExecuteNodeActionImpl, "initialize"); + verifyPrivate(mockedExecuteNodeActionImpl, times(1)).invoke("getAAIservice"); + } + + @Test + public void testGetAAIservice() throws Exception { + // sref is not null + mockStatic(FrameworkUtil.class); + Bundle mockedBundle = mock(Bundle.class); + BundleContext mockedBundleContext = mock(BundleContext.class); + ServiceReference mockedServiceReference = mock(ServiceReference.class); + PowerMockito.when(FrameworkUtil.getBundle(AAIService.class)).thenReturn(mockedBundle); + PowerMockito.doReturn(mockedBundleContext).when(mockedBundle).getBundleContext(); + PowerMockito.doReturn(mockedServiceReference).when(mockedBundleContext) + .getServiceReference(AAIService.class.getName()); + + Whitebox.invokeMethod(mockedExecuteNodeActionImpl, "getAAIservice"); + verify(mockedBundleContext, times(1)).getService(mockedServiceReference); + + // sref is null + PowerMockito.doReturn(null).when(mockedBundleContext) + .getServiceReference(AAIService.class.getName()); + Whitebox.invokeMethod(mockedExecuteNodeActionImpl, "getAAIservice"); + verify(mockedBundleContext, times(1)).getService(mockedServiceReference); + } + + @Test + public void testWaitMethod() throws Exception { + mockStatic(Thread.class); + params.put("waitTime", "1"); + mockedExecuteNodeActionImpl.waitMethod(params, svcLogicContext); + verifyStatic(times(1)); + } + + @Test + public void testGetResource() throws Exception { + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "initialize"); + PowerMockito.doReturn(queryStatus).when(aaiService).query(resourceType, false, null, + resourceKey, prefix, null, svcLogicContext); + + mockedExecuteNodeActionImpl.getResource(params, svcLogicContext); + + verifyPrivate(mockedExecuteNodeActionImpl, times(1)).invoke("initialize"); + verify(aaiService, times(1)).query(resourceType, false, null, + resourceKey, prefix, null, svcLogicContext); + assertEquals(queryStatus.toString(), svcLogicContext.getAttribute("getResource_result")); + } + + @Test + public void testPostResource() throws Exception { + + + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "initialize"); + PowerMockito.doReturn(queryStatus).when(aaiService).update(eq(resourceType), eq(resourceKey), anyMap(), + eq(prefix), eq(svcLogicContext)); + + mockedExecuteNodeActionImpl.postResource(params, svcLogicContext); + + verifyPrivate(mockedExecuteNodeActionImpl, times(1)).invoke("initialize"); + verify(aaiService, times(1)).update(eq(resourceType), eq(resourceKey), anyMap(), + eq(prefix), eq(svcLogicContext)); + assertEquals(svcLogicContext.getAttribute("postResource_result"), queryStatus.toString()); + } + + @Test + public void testDeleteResource() throws Exception { + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "initialize"); + + PowerMockito.doReturn(queryStatus).when(aaiService).delete(eq(resourceType), eq(resourceKey), + eq(svcLogicContext)); + + mockedExecuteNodeActionImpl.deleteResource(params, svcLogicContext); + + verifyPrivate(mockedExecuteNodeActionImpl, times(1)).invoke("initialize"); + verify(aaiService, times(1)).delete(eq(resourceType), eq(resourceKey), + eq(svcLogicContext)); + assertEquals(svcLogicContext.getAttribute("deleteResource_result"), queryStatus.toString()); + } + + @Test + public void testGetVnfHierarchySuccess() throws Exception { + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "initialize"); + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "populateVnfcsDetailsinContext", anyMap(), eq + (svcLogicContext)); + PowerMockito.when(aaiService.query(any(), eq(false), anyString(), any(), any(), anyString(), + any(SvcLogicContext.class))).thenReturn(queryStatus); + + mockedExecuteNodeActionImpl.getVnfHierarchy(params, svcLogicContext); + + verifyPrivate(mockedExecuteNodeActionImpl, times(1)).invoke("initialize"); + assertEquals("0", svcLogicContext.getAttribute("VNF.VNFCCount")); + assertEquals("SUCCESS", svcLogicContext.getAttribute("getVnfHierarchy_result")); + } + + @Test(expected = APPCException.class) + public void testGetVnfHierarchyFailure() throws Exception { + queryStatus = SvcLogicResource.QueryStatus.FAILURE; + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "initialize"); + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "populateVnfcsDetailsinContext", anyMap(), + eq(svcLogicContext)); + PowerMockito.when(aaiService.query(any(), eq(false), anyString(), any(), any(), anyString(), + any(SvcLogicContext.class))).thenReturn(queryStatus); + + mockedExecuteNodeActionImpl.getVnfHierarchy(params, svcLogicContext); + + verifyPrivate(mockedExecuteNodeActionImpl, times(1)).invoke("initialize"); + assertEquals("0", svcLogicContext.getAttribute("VNF.VNFCCount")); + assertEquals("FAILURE", svcLogicContext.getAttribute("getVnfHierarchy_result")); + assertTrue(svcLogicContext.getAttribute("output.status.message") != null); + } + + @Test + public void testPopulateVnfcsDetailsinContext() throws Exception { + Map<String, Set<String>> vnfcHierarchyMap = new HashMap<>(); + Set<String> vServersList = new HashSet<>(); + vnfcHierarchyMap.put("SMP", vServersList); + vServersList.add("smp-0-url"); + vServersList.add("smp-1-url"); + + PowerMockito.doNothing().when(mockedExecuteNodeActionImpl, "initialize"); + PowerMockito.when(aaiService.query(eq("vnfc"), eq(false), anyString(), + eq("vnfc-name = 'SMP'"), eq("vnfcRetrived"), anyString(), any(SvcLogicContext.class))) + .thenReturn(queryStatus); + + Whitebox.invokeMethod(mockedExecuteNodeActionImpl, "populateVnfcsDetailsinContext", + vnfcHierarchyMap, svcLogicContext); + + verify(mockedExecuteNodeActionImpl, times(1)).getResource(anyMap(), + any(SvcLogicContext.class)); + verifyPrivate(mockedExecuteNodeActionImpl, times(1)).invoke("initialize"); + assertEquals(null, svcLogicContext.getAttribute("VNF.VNFC[0].TYPE")); + assertEquals(null, svcLogicContext.getAttribute("VNF.VNFC[0].NAME")); + assertEquals("2", svcLogicContext.getAttribute("VNF.VNFC[0].VM_COUNT")); + assertTrue(vServersList.contains(svcLogicContext.getAttribute("VNF.VNFC[0].VM[0].URL"))); + assertTrue(vServersList.contains(svcLogicContext.getAttribute("VNF.VNFC[0].VM[1].URL"))); + } +}
\ No newline at end of file diff --git a/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/InputParameterValidationImplTest.java b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/InputParameterValidationImplTest.java new file mode 100644 index 000000000..23e1f52c5 --- /dev/null +++ b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/InputParameterValidationImplTest.java @@ -0,0 +1,165 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.dg.util.impl; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +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.onap.ccsdk.sli.adaptors.aai.AAIClient; +import org.onap.ccsdk.sli.adaptors.aai.AAIService; +import org.powermock.reflect.Whitebox; + +import java.util.HashMap; +import java.util.Map; + +public class InputParameterValidationImplTest { + private SvcLogicContext svcLogicContext; + + private InputParameterValidationImpl inputParameterValidation; + + @Before + public void setUp() throws Exception { + inputParameterValidation = new InputParameterValidationImpl(); + svcLogicContext = new SvcLogicContext(); + svcLogicContext.setAttribute("a", "b"); + svcLogicContext.setAttribute("b", "c"); + } + + @Test + public void validateAttributeSuccess() throws Exception { + Map<String, String> params = new HashMap<>(); + params.put("a", "b"); + params.put("b", "c"); + + inputParameterValidation.validateAttribute(params, svcLogicContext); + + Assert.assertEquals("true", svcLogicContext.getAttribute("validateAttribute")); + } + + @Test + public void validateAttributeFailure() throws Exception { + // wrong value + Map<String, String> params = new HashMap<>(); + params.put("e", "f"); + + inputParameterValidation.validateAttribute(params, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttribute")); + + // null value + params = new HashMap<>(); + params.put("e", null); + + inputParameterValidation.validateAttribute(params, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttribute")); + } + + @Test + public void validateAttributeNull() throws Exception { + inputParameterValidation.validateAttribute(null, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttribute")); + } + + @Test + public void validateAttributeLengthSuccess() throws Exception { + Map<String, String> params = new HashMap<>(); + params.put("maximum_length_param", "2"); + params.put("a", "1"); + + inputParameterValidation.validateAttributeLength(params, svcLogicContext); + + Assert.assertEquals("true", svcLogicContext.getAttribute("validateAttributeLength")); + } + + @Test + public void validateAttributeLengthFailure() throws Exception { + // wrong key + Map<String, String> params = new HashMap<>(); + params.put("maximum_length_param", "2"); + params.put("e", "1"); + + inputParameterValidation.validateAttributeLength(params, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttributeLength")); + + //over length + params = new HashMap<>(); + params.put("maximum_length_param", "2"); + params.put("c", "3"); + + inputParameterValidation.validateAttributeLength(params, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttributeLength")); + } + + @Test + public void validateAttributeLengthNull() throws Exception { + inputParameterValidation.validateAttributeLength(null, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttributeLength")); + } + + @Test + public void validateAttributeCharacterSuccess() throws Exception { + Map<String, String> params = new HashMap<>(); + params.put("special_characters", "z"); + params.put("a", "1"); + + inputParameterValidation.validateAttributeCharacter(params, svcLogicContext); + + Assert.assertEquals("true", svcLogicContext.getAttribute("validateAttributeCharacter")); + } + + @Test + public void validateAttributeCharacterFailure() throws Exception { + Map<String, String> params = new HashMap<>(); + params.put("special_characters", "z"); + params.put("d", "1"); + + inputParameterValidation.validateAttributeCharacter(params, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttributeCharacter")); + } + + @Test + public void validateAttributeCharacterNull() throws Exception { + inputParameterValidation.validateAttributeCharacter(null, svcLogicContext); + + Assert.assertEquals("false", svcLogicContext.getAttribute("validateAttributeCharacter")); + } + + @Test + public void testGetValueFromContext() throws Exception { + Map<String, String> result = Whitebox.invokeMethod(inputParameterValidation, "getValueFromContext", + svcLogicContext); + Assert.assertEquals("b", result.get("a")); + Assert.assertEquals("c", result.get("b")); + } +}
\ No newline at end of file diff --git a/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/UpgradeStubNodeImplTest.java b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/UpgradeStubNodeImplTest.java new file mode 100644 index 000000000..d652eb906 --- /dev/null +++ b/appc-dg-util/appc-dg-util-bundle/src/test/org/openecomp/appc/dg/util/impl/UpgradeStubNodeImplTest.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.dg.util.impl; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.openecomp.appc.exceptions.APPCException; +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.onap.ccsdk.sli.adaptors.aai.AAIClient; +import org.onap.ccsdk.sli.adaptors.aai.AAIService; + +import java.util.HashMap; +import java.util.Map; + +public class UpgradeStubNodeImplTest { + @Mock + private SvcLogicContext svcLogicContext; + + private UpgradeStubNodeImpl upgradeStubNode; + + @Before + public void setUp() throws Exception { + upgradeStubNode = new UpgradeStubNodeImpl(); + } + + @Test + public void testHandleUpgradeStubSuccess() throws APPCException { + Map<String, String> params = new HashMap<>(); + upgradeStubNode.handleUpgradeStub(params, svcLogicContext); + } + + @Test(expected = APPCException.class) + public void testHandleUpgradeStubException() throws APPCException { + Map<String, String> params = new HashMap<>(); + params.put("failureIndicator", "true"); + upgradeStubNode.handleUpgradeStub(params, svcLogicContext); + } +}
\ No newline at end of file |