Merge "Add tests for AaiServiceImpl"
authorWojciech Sliwka <wojciech.sliwka@nokia.com>
Mon, 18 Feb 2019 08:24:22 +0000 (08:24 +0000)
committerGerrit Code Review <gerrit@onap.org>
Mon, 18 Feb 2019 08:24:22 +0000 (08:24 +0000)
deliveries/pom.xml
epsdk-app-onap/pom.xml
vid-app-common/src/main/java/org/onap/vid/aai/PombaClientImpl.java
vid-app-common/src/main/webapp/WEB-INF/conf/features.properties
vid-app-common/src/test/java/org/onap/vid/aai/PombaClientImplTest.java [new file with mode: 0644]
vid-app-common/src/test/resources/pomba_request.json [new file with mode: 0644]

index 1b89e1e..13db1c7 100755 (executable)
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
-    <modelVersion>4.0.0</modelVersion>\r
-\r
-    <parent>\r
-        <groupId>org.onap.vid</groupId>\r
-        <artifactId>vid-parent</artifactId>\r
-        <version>4.0.0-SNAPSHOT</version>\r
-    </parent>\r
-\r
-    <packaging>pom</packaging>\r
-    <artifactId>vid-deliveries</artifactId>\r
-\r
-    <name>VID Deliveries</name>\r
-    <description>ONAP VID Deliveries</description>\r
-    <properties>\r
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\r
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\r
-        <docker.push.registry>${docker_registry}</docker.push.registry>\r
-        <docker.verbose>true</docker.verbose>\r
-    </properties>\r
-\r
-    <profiles>\r
-\r
-        <profile>\r
-            <id>docker-proxy</id>\r
-            <!-- activate profile if environment variable `http_proxy` is set -->\r
-            <activation>\r
-                <property>\r
-                    <name>env.http_proxy</name>\r
-                </property>\r
-            </activation>\r
-            <properties>\r
-                <docker.buildArg.http_proxy>${env.http_proxy}</docker.buildArg.http_proxy>\r
-            </properties>\r
-        </profile>\r
-\r
-    </profiles>\r
-\r
-    <build>\r
-        <finalName>${project.artifactId}-${project.version}</finalName>\r
-        <plugins>\r
-            <plugin>\r
-                <groupId>io.fabric8</groupId>\r
-                <artifactId>docker-maven-plugin</artifactId>\r
-                <version>0.28.0</version>\r
-\r
-                <configuration>\r
-                    <verbose>true</verbose>\r
-                    <apiVersion>1.23</apiVersion>\r
-                    <images>\r
-                        <image>\r
-                            <name>onap/vid:${project.version}</name>\r
-                            <build>\r
-                                <cleanup>remove</cleanup>\r
-                                <dockerFileDir>docker-files</dockerFileDir>\r
-                                <assembly>\r
-                                    <basedir>/</basedir>\r
-                                    <user>vidadmin:vidadmin:vidadmin</user>\r
-                                    <descriptor>assembly/assembly-for-plugin.xml</descriptor>\r
-                                </assembly>\r
-                                <tags>\r
-                                    <tag>4.0-STAGING-latest</tag>\r
-                                    <tag>latest</tag>\r
-                                </tags>\r
-\r
-                            </build>\r
-                        </image>\r
-                    </images>\r
-                </configuration>\r
-\r
-                <executions>\r
-                    <execution>\r
-                        <id>generate-image</id>\r
-                        <phase>package</phase>\r
-                        <goals>\r
-                            <goal>build</goal>\r
-                        </goals>\r
-                    </execution>\r
-\r
-                    <execution>\r
-                        <id>push-image</id>\r
-                        <phase>deploy</phase>\r
-                        <goals>\r
-                            <goal>build</goal>\r
-                            <goal>push</goal>\r
-                        </goals>\r
-                    </execution>\r
-                </executions>\r
-\r
-            </plugin>\r
-\r
-            <plugin>\r
-                <groupId>org.apache.maven.plugins</groupId>\r
-                <artifactId>maven-deploy-plugin</artifactId>\r
-                <version>2.8</version>\r
-                <configuration>\r
-                    <skip>true</skip>\r
-                </configuration>\r
-            </plugin>\r
-        </plugins>\r
-    </build>\r
-\r
-</project>\r
+<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.onap.vid</groupId>
+        <artifactId>vid-parent</artifactId>
+        <version>4.0.0-SNAPSHOT</version>
+    </parent>
+
+    <packaging>pom</packaging>
+    <artifactId>vid-deliveries</artifactId>
+
+    <name>VID Deliveries</name>
+    <description>ONAP VID Deliveries</description>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <docker.push.registry>${docker_registry}</docker.push.registry>
+        <docker.verbose>true</docker.verbose>
+        <docker.tag>${project.version}-${maven.build.timestamp}</docker.tag>
+        <docker.latest.tag>${project.version}-latest</docker.latest.tag>
+
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+    </properties>
+
+    <profiles>
+
+        <profile>
+            <id>docker-proxy</id>
+            <!-- activate profile if environment variable `http_proxy` is set -->
+            <activation>
+                <property>
+                    <name>env.http_proxy</name>
+                </property>
+            </activation>
+            <properties>
+                <docker.buildArg.http_proxy>${env.http_proxy}</docker.buildArg.http_proxy>
+            </properties>
+        </profile>
+
+    </profiles>
+
+    <build>
+        <finalName>${project.artifactId}-${project.version}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>io.fabric8</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>0.28.0</version>
+
+                <configuration>
+                    <verbose>true</verbose>
+                    <apiVersion>1.23</apiVersion>
+                    <images>
+                        <image>
+                            <name>onap/vid:${project.version}</name>
+                            <build>
+                                <cleanup>remove</cleanup>
+                                <dockerFileDir>docker-files</dockerFileDir>
+                                <assembly>
+                                    <basedir>/</basedir>
+                                    <user>vidadmin:vidadmin:vidadmin</user>
+                                    <descriptor>assembly/assembly-for-plugin.xml</descriptor>
+                                </assembly>
+                                <tags>
+                                    <tag>4.0-STAGING-latest</tag>
+                                    <tag>latest</tag>
+                                    <tag>${docker.tag}</tag>
+                                    <tag>${docker.latest.tag}</tag>
+                                </tags>
+
+                            </build>
+                        </image>
+                    </images>
+                </configuration>
+
+                <executions>
+                    <execution>
+                        <id>generate-image</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>push-image</id>
+                        <phase>deploy</phase>
+                        <goals>
+                            <goal>build</goal>
+                            <goal>push</goal>
+                        </goals>
+                    </execution>
+                </executions>
+
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <version>2.8</version>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
index f2441b3..bf09f32 100755 (executable)
@@ -18,6 +18,7 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <epsdk.version>2.4.0</epsdk.version>
+        <jackson.version>2.9.7</jackson.version>
         <springframework.version>4.2.9.RELEASE</springframework.version>
         <hibernate.version>4.3.11.Final</hibernate.version>
         <!-- Skip assembling the zip; assemble via mvn -Dskipassembly=false .. -->
                 </dependencies>
             </plugin>
             <plugin>
-                               <groupId>org.sonarsource.scanner.maven</groupId>
-                <artifactId>sonar-maven-plugin</artifactId>
-                <version>3.3.0.603</version>
+              <groupId>org.sonarsource.scanner.maven</groupId>
+              <artifactId>sonar-maven-plugin</artifactId>
+              <version>3.3.0.603</version>
             </plugin>
             <plugin>
                 <groupId>org.jacoco</groupId>
             <artifactId>epsdk-app-common</artifactId>
             <version>${epsdk.version}</version>
             <type>jar</type>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.fasterxml.jackson.core</groupId>
-                    <artifactId>jackson-core</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.onap.vid</groupId>
             <artifactId>vid-app-common</artifactId>
             <version>${project.version}</version>
             <type>war</type>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.fasterxml.jackson.core</groupId>
-                    <artifactId>jackson-core</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.onap.vid</groupId>
             <groupId>org.onap.portal.sdk</groupId>
             <artifactId>epsdk-core</artifactId>
             <version>${epsdk.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.fasterxml.jackson.core</groupId>
-                    <artifactId>jackson-core</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.onap.portal.sdk</groupId>
             <artifactId>epsdk-analytics</artifactId>
             <version>${epsdk.version}</version>
             <exclusions>
-                <exclusion>
-                    <groupId>com.fasterxml.jackson.core</groupId>
-                    <artifactId>jackson-core</artifactId>
-                </exclusion>
                 <exclusion>
                     <groupId>com.lowagie</groupId>
                     <artifactId>itext</artifactId>
             <groupId>org.onap.portal.sdk</groupId>
             <artifactId>epsdk-workflow</artifactId>
             <version>${epsdk.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.fasterxml.jackson.core</groupId>
-                    <artifactId>jackson-core</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>com.att.eelf</groupId>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-annotations</artifactId>
-            <version>2.6.3</version>
+            <version>${jackson.version}</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
-            <version>2.8.6</version>
+            <version>${jackson.version}</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
-            <version>2.6.7.1</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.fasterxml.jackson.core</groupId>
-                    <artifactId>jackson-core</artifactId>
-                </exclusion>
-            </exclusions>
+            <version>${jackson.version}</version>
+        </dependency>
+        <!-- jackson-dataformat-* are to override elasticsearch-2.2.0 deps hell -->
+        <!-- (elasticsearch is an epsdk-app-common-2.4.0 dep) -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-smile</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-yaml</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-cbor</artifactId>
+            <version>${jackson.version}</version>
         </dependency>
         <dependency>
             <groupId>com.mchange</groupId>
index 000628d..15fda82 100644 (file)
@@ -1,13 +1,13 @@
+
 package org.onap.vid.aai;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import javax.servlet.ServletContext;
 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.onap.portalsdk.core.util.SystemProperties;
 import org.onap.vid.model.PombaInstance.PombaRequest;
+import org.onap.vid.utils.SystemPropertiesWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import javax.servlet.ServletContext;
-
 public class PombaClientImpl implements PombaClientInterface {
 
     protected String fromAppId = "VidAaiController";
@@ -19,13 +19,14 @@ public class PombaClientImpl implements PombaClientInterface {
     @Autowired
     PombaRestInterface pombaRestInterface;
 
+    @Autowired
+    SystemPropertiesWrapper systemPropertiesWrapper;
 
     @Override
     public void verify(PombaRequest request) {
         String methodName = "doAaiPost";
         logger.debug(EELFLoggerDelegate.debugLogger, methodName + " start");
-        String uri = SystemProperties.getProperty("pomba.server.url");
-
+        String uri = systemPropertiesWrapper.getProperty("pomba.server.url");
 
         try {
             pombaRestInterface.RestPost(fromAppId, uri, new ObjectMapper().writeValueAsString(request));
index 87b2d60..36f607f 100644 (file)
 
 FLAG_PNP_INSTANTIATION = true
 
-FLAG_ASYNC_INSTANTIATION = true
-FLAG_ASYNC_JOBS = true
 CREATE_INSTANCE_TEST = false
-EMPTY_DRAWING_BOARD_TEST = false
 FLAG_ADD_MSO_TESTAPI_FIELD = true
 FLAG_UNASSIGN_SERVICE = true
-FLAG_COLLECTION_RESOURCE_SUPPORT = true
-FLAG_NETWORK_TO_ASYNC_INSTANTIATION = false
 FLAG_SERVICE_MODEL_CACHE = true
 FLAG_SHOW_ASSIGNMENTS = true
 FLAG_SHOW_VERIFY_SERVICE = false
-FLAG_DUPLICATE_VNF = true
-FLAG_DEFAULT_VNF = true
-FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD = true
 FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS = true
-FLAG_A_LA_CARTE_AUDIT_INFO=true
-FLAG_5G_IN_NEW_INSTANTIATION_UI = true
 FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS = true
-FLAG_ASYNC_ALACARTE_VNF = true
-FLAG_ASYNC_ALACARTE_VFMODULE= true
-FLAG_SHIFT_VFMODULE_PARAMS_TO_VNF = true
-FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI=false
 FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST=true
 FLAG_1810_CR_LET_SELECTING_COLLECTOR_TYPE_UNCONDITIONALLY=true
 FLAG_1810_CR_SOFT_DELETE_ALACARTE_VF_MODULE = true
 FLAG_1810_AAI_LOCAL_CACHE = true
-FLAG_1902_NEW_VIEW_EDIT=false
 FLAG_EXP_USE_DEFAULT_HOST_NAME_VERIFIER = false
 
-FLAG_SUPPLEMENTARY_FILE = true
-FLAG_1902_VNF_GROUPING = true
+# Modern UI (Drawing-Board; View/Edit)
+# - - - - - - - - - - - - - - - - - -
+FLAG_COLLECTION_RESOURCE_SUPPORT = false
+FLAG_ASYNC_INSTANTIATION = false
+FLAG_ASYNC_JOBS = false
+EMPTY_DRAWING_BOARD_TEST = false
+FLAG_NETWORK_TO_ASYNC_INSTANTIATION = false
+FLAG_DUPLICATE_VNF = false
+FLAG_DEFAULT_VNF = false
+FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD = false
+FLAG_SHIFT_VFMODULE_PARAMS_TO_VNF = false
+FLAG_A_LA_CARTE_AUDIT_INFO = false
+FLAG_5G_IN_NEW_INSTANTIATION_UI = false
+FLAG_ASYNC_ALACARTE_VNF = false
+FLAG_ASYNC_ALACARTE_VFMODULE = false
+FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI = false
+FLAG_SUPPLEMENTARY_FILE = false
+FLAG_1902_NEW_VIEW_EDIT=false
+FLAG_1902_VNF_GROUPING = false
diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/PombaClientImplTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/PombaClientImplTest.java
new file mode 100644 (file)
index 0000000..b1c4139
--- /dev/null
@@ -0,0 +1,93 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright 2019 Nokia
+ * ================================================================================
+ * 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.aai;
+
+import static org.mockito.BDDMockito.given;
+import static org.mockito.BDDMockito.then;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
+import java.io.IOException;
+import java.net.URL;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.vid.model.PombaInstance.PombaRequest;
+import org.onap.vid.model.PombaInstance.ServiceInstance;
+import org.onap.vid.utils.SystemPropertiesWrapper;
+
+@RunWith(MockitoJUnitRunner.class)
+public class PombaClientImplTest {
+
+    @Mock
+    private SystemPropertiesWrapper systemPropertiesWrapper;
+    @Mock
+    private PombaRestInterface pombaRestInterface;
+    @InjectMocks
+    private PombaClientImpl pombaClient;
+
+    @Test
+    public void should_doHttpPost_withGivenPombaRequest() throws IOException {
+        //Given
+        String expectedUrl = "http://localhost/dummyUrl";
+        given(systemPropertiesWrapper.getProperty("pomba.server.url")).willReturn(expectedUrl);
+        String expectedPayload = readExpectedPombaJsonRequest();
+        PombaRequest pombaRequest = createPombaRequest();
+
+        //When
+        pombaClient.verify(pombaRequest);
+
+        //Then
+        then(pombaRestInterface).should().RestPost("VidAaiController", expectedUrl, expectedPayload);
+    }
+
+    private String readExpectedPombaJsonRequest() throws IOException {
+        URL url = PombaClientImplTest.class.getClassLoader().getResource("pomba_request.json");
+        PombaRequest expectedPombaRequest = new ObjectMapper().readValue(url, PombaRequest.class);
+        return new ObjectMapper().writeValueAsString(expectedPombaRequest);
+    }
+
+    private PombaRequest createPombaRequest() {
+        ServiceInstance serviceInstance1 = createServiceInstance("serviceType1", "serviceInstanceId1", "customerId1",
+            "modelVersion1", "modelInvariantId1");
+        ServiceInstance serviceInstance2 = createServiceInstance("serviceType2", "serviceInstanceId2", "customerId2",
+            "modelVersion2", "modelInvariantId2");
+
+        PombaRequest pombaRequest = new PombaRequest();
+        pombaRequest.serviceInstanceList = Lists.newArrayList(serviceInstance1, serviceInstance2);
+        return pombaRequest;
+    }
+
+    private ServiceInstance createServiceInstance(String serviceType, String serviceInstanceId, String customerId,
+        String modelVersionId, String modelInvariantId) {
+        ServiceInstance serviceInstance = new ServiceInstance();
+        serviceInstance.serviceType = serviceType;
+        serviceInstance.serviceInstanceId = serviceInstanceId;
+        serviceInstance.customerId = customerId;
+        serviceInstance.modelInvariantId = modelInvariantId;
+        serviceInstance.modelVersionId = modelVersionId;
+        return serviceInstance;
+    }
+
+}
\ No newline at end of file
diff --git a/vid-app-common/src/test/resources/pomba_request.json b/vid-app-common/src/test/resources/pomba_request.json
new file mode 100644 (file)
index 0000000..3d873bf
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "serviceInstanceList": [
+    {
+      "serviceInstanceId": "serviceInstanceId1",
+      "modelVersionId": "modelVersion1",
+      "modelInvariantId": "modelInvariantId1",
+      "customerId": "customerId1",
+      "serviceType": "serviceType1"
+    },
+    {
+      "serviceInstanceId": "serviceInstanceId2",
+      "modelVersionId": "modelVersion2",
+      "modelInvariantId": "modelInvariantId2",
+      "customerId": "customerId2",
+      "serviceType": "serviceType2"
+    }
+  ]
+}
\ No newline at end of file