Improve SDNC coverage

Added initial test cases for dataChange.

Issue-Id: SDNC-101
Change-Id: I112a6695f4d4ca92b78884d25fef12f382598b37
Signed-off-by: shashikanth.vh <shashikanth.vh@huawei.com>
diff --git a/dataChange/provider/pom.xml b/dataChange/provider/pom.xml
index e191149..f3e1f0f 100755
--- a/dataChange/provider/pom.xml
+++ b/dataChange/provider/pom.xml
@@ -1,65 +1,105 @@
 <?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>
-		<artifactId>dataChange</artifactId>
-		<groupId>org.onap.ccsdk.sli.northbound</groupId>
-		<version>0.1.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>dataChange-provider</artifactId>
-	<packaging>bundle</packaging>
+     <modelVersion>4.0.0</modelVersion>
+     <parent>
+          <artifactId>dataChange</artifactId>
+          <groupId>org.onap.ccsdk.sli.northbound</groupId>
+          <version>0.1.0-SNAPSHOT</version>
+     </parent>
+     <artifactId>dataChange-provider</artifactId>
+     <packaging>bundle</packaging>
 
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<extensions>true</extensions>
-			</plugin>
-		</plugins>
-	</build>
+     <build>
+          <plugins>
+               <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <extensions>true</extensions>
+               </plugin>
+          </plugins>
+     </build>
 
-	<dependencies>
-		<dependency>
-			<groupId>org.onap.ccsdk.sli.northbound</groupId>
-			<artifactId>dataChange-model</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.opendaylight.controller</groupId>
-			<artifactId>config-api</artifactId>
+     <dependencies>
+          <dependency>
+               <groupId>org.onap.ccsdk.sli.northbound</groupId>
+               <artifactId>dataChange-model</artifactId>
+          </dependency>
+          <dependency>
+               <groupId>org.opendaylight.controller</groupId>
+               <artifactId>config-api</artifactId>
 
-			<version>${odl.controller.config.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.opendaylight.controller</groupId>
-			<artifactId>sal-binding-config</artifactId>
-			<version>${odl.mdsal.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.opendaylight.controller</groupId>
-			<artifactId>sal-binding-api</artifactId>
-			<version>${odl.mdsal.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.opendaylight.controller</groupId>
-			<artifactId>sal-common-util</artifactId>
-			<version>${odl.mdsal.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.onap.ccsdk.sli.core</groupId>
-			<artifactId>sli-common</artifactId>
-			<version>${sdnctl.sli.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.onap.ccsdk.sli.core</groupId>
-			<artifactId>sli-provider</artifactId>
-			<version>${sdnctl.sli.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>${junit.version}</version>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
+               <version>${odl.controller.config.api.version}</version>
+          </dependency>
+          <dependency>
+               <groupId>org.opendaylight.controller</groupId>
+               <artifactId>sal-binding-config</artifactId>
+               <version>${odl.mdsal.version}</version>
+          </dependency>
+          <dependency>
+               <groupId>org.opendaylight.controller</groupId>
+               <artifactId>sal-binding-api</artifactId>
+               <version>${odl.mdsal.version}</version>
+          </dependency>
+          <dependency>
+               <groupId>org.opendaylight.controller</groupId>
+               <artifactId>sal-common-util</artifactId>
+               <version>${odl.mdsal.version}</version>
+          </dependency>
+          <dependency>
+               <groupId>org.onap.ccsdk.sli.core</groupId>
+               <artifactId>sli-common</artifactId>
+               <version>${sdnctl.sli.version}</version>
+          </dependency>
+          <dependency>
+               <groupId>org.onap.ccsdk.sli.core</groupId>
+               <artifactId>sli-provider</artifactId>
+               <version>${sdnctl.sli.version}</version>
+          </dependency>
+
+          <dependency>
+               <groupId>org.opendaylight.controller</groupId>
+               <artifactId>sal-test-model</artifactId>
+               <version>${odl.mdsal.version}</version>
+               <scope>test</scope>
+          </dependency>
+          <dependency>
+               <groupId>org.opendaylight.netconf</groupId>
+               <artifactId>sal-rest-connector</artifactId>
+               <version>${odl.mdsal.version}</version>
+               <scope>test</scope>
+          </dependency>
+
+          <dependency>
+               <groupId>org.opendaylight.controller</groupId>
+               <artifactId>sal-binding-broker-impl</artifactId>
+               <version>${odl.mdsal.version}</version>
+               <scope>test</scope>
+          </dependency>
+          <dependency>
+               <groupId>org.opendaylight.controller</groupId>
+               <artifactId>sal-binding-broker-impl</artifactId>
+               <version>${odl.mdsal.version}</version>
+               <type>test-jar</type>
+               <classifier>tests</classifier>
+               <scope>test</scope>
+          </dependency>
+          <dependency>
+               <groupId>junit</groupId>
+               <artifactId>junit</artifactId>
+               <version>${junit.version}</version>
+               <scope>test</scope>
+          </dependency>
+          <dependency>
+               <groupId>org.testng</groupId>
+               <artifactId>testng</artifactId>
+               <version>6.11</version>
+               <scope>test</scope>
+          </dependency>
+          <dependency>
+               <groupId>org.mockito</groupId>
+               <artifactId>mockito-core</artifactId>
+               <version>${mockito.version}</version>
+               <scope>test</scope>
+          </dependency>
+     </dependencies>
 </project>
diff --git a/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/TestDataChange.java b/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/TestDataChange.java
new file mode 100644
index 0000000..7855375
--- /dev/null
+++ b/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/TestDataChange.java
@@ -0,0 +1,95 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 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.sdnc.northbound;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.ccsdk.sli.northbound.DataChangeProvider;
+import org.onap.ccsdk.sli.northbound.DataChangeClient;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
+import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationInput;
+import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationInputBuilder;
+import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationOutput;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.mock;
+
+public class TestDataChange extends AbstractConcurrentDataBrokerTest {
+
+    private DataChangeProvider dataChangeProvider;
+    private static final Logger LOG = LoggerFactory.getLogger(DataChangeProvider.class);
+
+    @Before
+    public void setUp() throws Exception {
+        if (null == dataChangeProvider) {
+            DataBroker dataBroker = getDataBroker();
+            NotificationPublishService mockNotification = mock(NotificationPublishService.class);
+            RpcProviderRegistry mockRpcRegistry = mock(RpcProviderRegistry.class);
+            DataChangeClient mockSliClient = mock(DataChangeClient.class);
+            dataChangeProvider = new DataChangeProvider(dataBroker, mockNotification, mockRpcRegistry, mockSliClient);
+        }
+    }
+
+    //Testcase should return error 503 when No service logic active for dataChange.
+    @Test
+    public void testDataChangeNotification() {
+
+        DataChangeNotificationInputBuilder inputBuilder = new DataChangeNotificationInputBuilder();
+
+        inputBuilder.setAaiEventId("1");
+
+
+        // TODO: currently initialize SvcLogicServiceClient is failing, need to fix
+        java.util.concurrent.Future<RpcResult<DataChangeNotificationOutput>> future = dataChangeProvider
+                                                                          .dataChangeNotification(inputBuilder.build());
+        RpcResult<DataChangeNotificationOutput> rpcResult = null;
+        try {
+            rpcResult = future.get();
+        } catch (Exception e) {
+            fail("Error : " + e);
+        }
+        LOG.info("result: {}", rpcResult);
+        assertEquals("503", rpcResult.getResult().getDataChangeResponseCode());
+    }
+
+    //Input parameter validation
+    @Test
+    public void testDataChangeNotificationInputValidation() {
+
+        java.util.concurrent.Future<RpcResult<DataChangeNotificationOutput>> future = dataChangeProvider
+                                                                                      .dataChangeNotification(null);
+        RpcResult<DataChangeNotificationOutput> rpcResult = null;
+        try {
+            rpcResult = future.get();
+        } catch (Exception e) {
+            fail("Error : " + e);
+        }
+        LOG.info("result: {}", rpcResult);
+        assertEquals("403", rpcResult.getResult().getDataChangeResponseCode());
+    }
+}