Add junit testing for preload rpcs 62/109862/5
authorDan Timoney <dtimoney@att.com>
Mon, 6 Jul 2020 16:14:00 +0000 (12:14 -0400)
committerDan Timoney <dtimoney@att.com>
Mon, 6 Jul 2020 18:26:24 +0000 (14:26 -0400)
Add jUnit test cases for preload RPCs

Change-Id: I8e6519e57c2eb468b1ee6ad781555951d21203a9
Issue-ID: SDNC-1209
Issue-ID: SDNC-1210
Signed-off-by: Dan Timoney <dtimoney@att.com>
.gitignore
ms/generic-resource-api/pom.xml
ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java [new file with mode: 0644]
ms/generic-resource-api/src/test/resources/application.properties
ms/generic-resource-api/src/test/resources/svclogic.properties

index 478a06e..3359eb7 100644 (file)
@@ -9,3 +9,7 @@ output.log
 debug-logs/
 logs/
 **/derby.log
+ms/generic-resource-api/src/main/resources/GENERIC-RESOURCE-API*xml
+ms/generic-resource-api/src/main/resources/SUBNET-API*xml
+ms/generic-resource-api/src/main/resources/graph.versions
+.vscode
index dbbfad0..2fb6fa5 100644 (file)
                             </artifactItems>
                         </configuration>
                     </execution>
+                    <!-- DGs are needed for unit tests as well -->
+                    <execution>
+                        <id>unpack dgs</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc</outputDirectory>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.onap.sdnc.oam</groupId>
+                                    <artifactId>platform-logic-installer</artifactId>
+                                    <version>${sdnc.oam.version}</version>
+                                    <type>zip</type>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Workaround : for some reason, BeforeClass is not triggered in junit on Jenkins -->
+            <!-- So cannot override default value of serviceLogicDirectory property             -->
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-dockerfile</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/src/main/resources</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>${basedir}/target/docker-stage/opt/onap/sdnc/svclogic/graphs/generic-resource-api</directory>
+                                    <includes>
+                                        <include>*.xml</include>
+                                        <include>graph.versions</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
             <plugin>
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.0.0</version>
+                <executions>
+                    <execution>
+                        <id>addSource</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${project.basedir}/target/generated-sources/src/main/java</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
                                     <copyPom>false</copyPom>
                                 </configuration>
                             </execution>
-                            <execution>
-                                <id>unpack dgs</id>
-                                <phase>generate-sources</phase>
-                                <goals>
-                                    <goal>unpack</goal>
-                                </goals>
-                                <configuration>
-                                    <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc</outputDirectory>
-                                    <artifactItems>
-                                        <artifactItem>
-                                            <groupId>org.onap.sdnc.oam</groupId>
-                                            <artifactId>platform-logic-installer</artifactId>
-                                            <version>${sdnc.oam.version}</version>
-                                            <type>zip</type>
-                                        </artifactItem>
-                                    </artifactItems>
-                                </configuration>
-                            </execution>
                         </executions>
                     </plugin>
                     <plugin>
diff --git a/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java b/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
new file mode 100644 (file)
index 0000000..a869249
--- /dev/null
@@ -0,0 +1,95 @@
+package org.onap.sdnc.apps.ms.gra.controllers;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.sdnc.apps.ms.gra.core.GenericResourceMsApp;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadDataRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigServicesRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import static org.junit.Assert.*;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes={GenericResourceMsApp.class})
+@AutoConfigureMockMvc
+@Transactional
+public class OperationsApiControllerTest {
+
+    private final static String PRELOAD_NETWORK_URL = "/operations/GENERIC-RESOURCE-API:preload-network-topology-operation/";
+    private final static String PRELOAD_VFMODULE_URL = "/operations/GENERIC-RESOURCE-API:preload-vf-module-topology-operation/";
+
+
+    @Autowired
+    private MockMvc mvc;
+
+    @Autowired
+    ConfigPreloadDataRepository configPreloadDataRepository;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        System.out.println("OperationsApiControllerTest: Setting serviceLogicProperties and serviceLogicDirectory");
+        System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
+        System.setProperty("serviceLogicDirectory", "target/docker-stage/opt/onap/sdnc/svclogic/graphs/generic-resource-api");
+    }
+
+
+    @Test
+    public void operationsGENERICRESOURCEAPIpreloadNetworkTopologyOperationPost() throws Exception {
+
+        // Remove any existing preload data
+        configPreloadDataRepository.deleteAll();
+
+        // Add invalid content
+        String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+        MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_NETWORK_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+                .andReturn();
+        assertEquals(403, mvcResult.getResponse().getStatus());
+        assertEquals(0, configPreloadDataRepository.count());
+
+        // Add valid content
+        content = readFileContent("src/test/resources/preload1-rpc-network.json");
+        mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_NETWORK_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+                .andReturn();
+        assertEquals(200, mvcResult.getResponse().getStatus());
+        assertEquals(1, configPreloadDataRepository.count());
+
+    }
+
+    @Test
+    public void operationsGENERICRESOURCEAPIpreloadVfModuleTopologyOperationPost() throws Exception {
+        // Remove any existing preload data
+        configPreloadDataRepository.deleteAll();
+
+        // Add invalid content
+        String content = readFileContent("src/test/resources/preload1-rpc-network.json");
+        MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_VFMODULE_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+                .andReturn();
+        assertEquals(403, mvcResult.getResponse().getStatus());
+        assertEquals(0, configPreloadDataRepository.count());
+
+        // Add valid content
+        content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+        mvcResult = mvc.perform(MockMvcRequestBuilders.post(PRELOAD_VFMODULE_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+                .andReturn();
+        assertEquals(200, mvcResult.getResponse().getStatus());
+        assertEquals(1, configPreloadDataRepository.count());
+    }
+
+    private String readFileContent(String path) throws IOException {
+        String content = new String(Files.readAllBytes(Paths.get(path)));
+        return content;
+    }
+}
\ No newline at end of file
index 04538f1..9f7990c 100644 (file)
@@ -17,4 +17,5 @@ spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.Im
 # spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 spring.jpa.database=derby
-serviceLogicProperties=src/test/resources/svclogic.properties
\ No newline at end of file
+serviceLogicProperties=src/test/resources/svclogic.properties
+serviceLogicDirectory=target/docker-stage/opt/onap/sdnc/svclogic/graphs/generic-resource-api
\ No newline at end of file
index b57c43d..95f4c8a 100644 (file)
@@ -26,4 +26,4 @@ org.onap.ccsdk.sli.jdbc.database = sdnctl
 org.onap.ccsdk.sli.jdbc.user = sdnc
 org.onap.ccsdk.sli.jdbc.password = abc123
 
-serviceLogicDirectory=src/test/resources
+serviceLogicDirectory=target/docker-stage/opt/onap/sdnc/svclogic/graphs/generic-resource-api