Add and Modify JUnits for Code Coverage (daoImpl)
[policy/engine.git] / POLICY-SDK-APP / src / test / java / org / onap / policy / daoImp / CommonClassDaoImplTest.java
index e7212f1..dbe49c7 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP Policy Engine
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Modifications Copyright (C) 2019 Samsung
  * ================================================================================
@@ -24,8 +24,13 @@ package org.onap.policy.daoImp;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.when;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Date;
@@ -34,10 +39,14 @@ import java.util.Properties;
 import javax.script.SimpleBindings;
 import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
 import org.h2.tools.Server;
+import org.hibernate.Criteria;
+import org.hibernate.Session;
 import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.conf.HibernateSession;
@@ -46,7 +55,7 @@ import org.onap.policy.rest.jpa.OnapName;
 import org.onap.policy.rest.jpa.PolicyEntity;
 import org.onap.policy.rest.jpa.PolicyRoles;
 import org.onap.policy.rest.jpa.PolicyVersion;
-import org.onap.policy.rest.jpa.SystemLogDB;
+import org.onap.policy.rest.jpa.SystemLogDb;
 import org.onap.policy.rest.jpa.UserInfo;
 import org.onap.policy.rest.jpa.WatchPolicyNotificationTable;
 import org.springframework.orm.hibernate4.LocalSessionFactoryBuilder;
@@ -61,6 +70,11 @@ public class CommonClassDaoImplTest {
     Server server;
     CommonClassDaoImpl commonClassDao;
 
+    /**
+     * setUp.
+     *
+     * @throws Exception Exception
+     */
     @Before
     public void setUp() throws Exception {
         try {
@@ -87,13 +101,13 @@ public class CommonClassDaoImplTest {
             CommonClassDaoImpl.setSessionfactory(sessionFactory);
             PolicyController.setLogTableLimit("1");
             HibernateSession.setSession(sessionFactory);
-            SystemLogDB data1 = new SystemLogDB();
+            SystemLogDb data1 = new SystemLogDb();
             data1.setDate(new Date());
             data1.setLogtype("INFO");
             data1.setRemote("Test");
             data1.setSystem("Test");
             data1.setType("Test");
-            SystemLogDB data2 = new SystemLogDB();
+            SystemLogDb data2 = new SystemLogDb();
             data2.setDate(new Date());
             data2.setLogtype("error");
             data2.setRemote("Test");
@@ -122,13 +136,13 @@ public class CommonClassDaoImplTest {
             userinfo.setUserName("Test");
             commonClassDao.save(userinfo);
             OnapName onapName = new OnapName();
-            onapName.setOnapName("Test");
+            onapName.setName("Test");
             onapName.setUserCreatedBy(userinfo);
             onapName.setUserModifiedBy(userinfo);
             onapName.setModifiedDate(new Date());
             commonClassDao.save(onapName);
 
-            List<Object> list = commonClassDao.getData(OnapName.class);
+            List<?> list = commonClassDao.getData(OnapName.class);
             assertTrue(list.size() == 1);
             logger.debug(list.size());
             logger.debug(list.get(0));
@@ -145,18 +159,17 @@ public class CommonClassDaoImplTest {
         try {
             // Add data
             UserInfo userinfo = new UserInfo();
-            String loginId_userName = "Test";
-            userinfo.setUserLoginId(loginId_userName);
-            userinfo.setUserName(loginId_userName);
+            String loginIdUserName = "Test";
+            userinfo.setUserLoginId(loginIdUserName);
+            userinfo.setUserName(loginIdUserName);
             commonClassDao.save(userinfo);
 
-            List<Object> dataCur =
-                    commonClassDao.getDataByQuery("from UserInfo", new SimpleBindings());
+            List<?> dataCur = commonClassDao.getDataByQuery("from UserInfo", new SimpleBindings());
 
             assertEquals(1, dataCur.size());
             UserInfo cur = (UserInfo) dataCur.get(0);
-            assertEquals(loginId_userName, cur.getUserLoginId());
-            assertEquals(loginId_userName, cur.getUserName());
+            assertEquals(loginIdUserName, cur.getUserLoginId());
+            assertEquals(loginIdUserName, cur.getUserName());
 
             assertFalse(dataCur.isEmpty());
 
@@ -183,13 +196,12 @@ public class CommonClassDaoImplTest {
             pe.setCreatedBy("Test");
             commonClassDao.save(pe);
 
-            List<Object> dataCur =
-                    commonClassDao.getDataByQuery("from PolicyEntity", new SimpleBindings());
+            List<?> dataCur = commonClassDao.getDataByQuery("from PolicyEntity", new SimpleBindings());
 
             assertTrue(1 == dataCur.size());
             assertTrue(dataCur.get(0) instanceof PolicyEntity);
             assertEquals(name, ((PolicyEntity) dataCur.get(0)).getPolicyName());
-            assertEquals(pe, ((PolicyEntity) dataCur.get(0)));
+            assertEquals(pe, (dataCur.get(0)));
 
         } catch (Exception e) {
             logger.debug("Exception Occured" + e);
@@ -225,10 +237,10 @@ public class CommonClassDaoImplTest {
             String query = "From PolicyVersion where policy_name like :scope and id > 0";
             SimpleBindings params = new SimpleBindings();
             params.put("scope", scope);
-            List<Object> dataCur = commonClassDao.getDataByQuery(query, params);
+            List<?> dataCur = commonClassDao.getDataByQuery(query, params);
 
             assertTrue(1 == dataCur.size());
-            assertEquals(pv, (PolicyVersion) dataCur.get(0));
+            assertEquals(pv, dataCur.get(0));
 
         } catch (Exception e) {
             logger.debug("Exception Occured" + e);
@@ -243,11 +255,11 @@ public class CommonClassDaoImplTest {
         try {
             // Add data
             WatchPolicyNotificationTable watch = new WatchPolicyNotificationTable();
-            String policyFileName = "banana";
             watch.setLoginIds("Test");
             watch.setPolicyName("bananaWatch");
             commonClassDao.save(watch);
 
+            String policyFileName = "banana";
             if (policyFileName.contains("/")) {
                 policyFileName = policyFileName.substring(0, policyFileName.indexOf("/"));
                 policyFileName = policyFileName.replace("/", File.separator);
@@ -262,12 +274,12 @@ public class CommonClassDaoImplTest {
             String query = "from WatchPolicyNotificationTable where policyName like:policyFileName";
             SimpleBindings params = new SimpleBindings();
             params.put("policyFileName", policyFileName);
-            List<Object> dataCur = commonClassDao.getDataByQuery(query, params);
+            List<?> dataCur = commonClassDao.getDataByQuery(query, params);
 
             // Assertions
             assertTrue(dataCur.size() == 1);
             assertTrue(dataCur.get(0) instanceof WatchPolicyNotificationTable);
-            assertEquals(watch, (WatchPolicyNotificationTable) dataCur.get(0));
+            assertEquals(watch, dataCur.get(0));
 
         } catch (Exception e) {
             logger.debug("Exception Occured" + e);
@@ -293,20 +305,19 @@ public class CommonClassDaoImplTest {
             commonClassDao.save(pe);
 
             String dbCheckName = "dummyScope:action";
-            String[] splitDBCheckName = dbCheckName.split(":");
 
             // Current Implementation
-            String query =
-                    "FROM PolicyEntity where policyName like :splitDBCheckName1 and scope = :splitDBCheckName0";
+            String query = "FROM PolicyEntity where policyName like :splitDBCheckName1 and scope = :splitDBCheckName0";
             SimpleBindings params = new SimpleBindings();
-            params.put("splitDBCheckName1", splitDBCheckName[1] + "%");
-            params.put("splitDBCheckName0", splitDBCheckName[0]);
-            List<Object> dataCur = commonClassDao.getDataByQuery(query, params);
+            String[] splitDbCheckName = dbCheckName.split(":");
+            params.put("splitDBCheckName1", splitDbCheckName[1] + "%");
+            params.put("splitDBCheckName0", splitDbCheckName[0]);
+            List<?> dataCur = commonClassDao.getDataByQuery(query, params);
 
             // Assertions
             assertTrue(dataCur.size() == 1);
             assertTrue(dataCur.get(0) instanceof PolicyEntity);
-            assertEquals(pe, (PolicyEntity) dataCur.get(0));
+            assertEquals(pe, dataCur.get(0));
 
         } catch (Exception e) {
             logger.debug("Exception Occured" + e);
@@ -328,17 +339,16 @@ public class CommonClassDaoImplTest {
             commonClassDao.save(watch);
 
             // Current Implementation
-            String query =
-                    "from WatchPolicyNotificationTable where POLICYNAME = :finalName and LOGINIDS = :userId";
+            String query = "from WatchPolicyNotificationTable where POLICYNAME = :finalName and LOGINIDS = :userId";
             SimpleBindings params = new SimpleBindings();
             params.put("finalName", finalName);
             params.put("userId", userId);
-            List<Object> dataCur = commonClassDao.getDataByQuery(query, params);
+            List<?> dataCur = commonClassDao.getDataByQuery(query, params);
 
             // Assertions
             assertTrue(dataCur.size() == 1);
             assertTrue(dataCur.get(0) instanceof WatchPolicyNotificationTable);
-            assertEquals(watch, (WatchPolicyNotificationTable) dataCur.get(0));
+            assertEquals(watch, dataCur.get(0));
 
         } catch (Exception e) {
             logger.debug("Exception Occured" + e);
@@ -371,20 +381,19 @@ public class CommonClassDaoImplTest {
             String finalName = "banana' OR '1'='1";
 
             // Current Implementation
-            String query =
-                    "from WatchPolicyNotificationTable where POLICYNAME = :finalName and LOGINIDS = :userId";
+            String query = "from WatchPolicyNotificationTable where POLICYNAME = :finalName and LOGINIDS = :userId";
             SimpleBindings params = new SimpleBindings();
             params.put("finalName", finalName);
             params.put("userId", userId);
-            List<Object> dataCur = commonClassDao.getDataByQuery(query, params);
+            List<?> dataCur = commonClassDao.getDataByQuery(query, params);
 
             // Assertions
             assertTrue(dataCur.size() <= 1);
 
             if (dataCur.size() >= 1) {
                 assertTrue(dataCur.get(0) instanceof WatchPolicyNotificationTable);
-                assertFalse(watch.equals((WatchPolicyNotificationTable) dataCur.get(0)));
-                assertFalse(watch.equals((WatchPolicyNotificationTable) dataCur.get(0)));
+                assertFalse(watch.equals(dataCur.get(0)));
+                assertFalse(watch.equals(dataCur.get(0)));
             }
         } catch (Exception e) {
             logger.debug("Exception Occured" + e);
@@ -399,19 +408,17 @@ public class CommonClassDaoImplTest {
             userInfo.setUserLoginId("TestID");
             userInfo.setUserName("Test");
             commonClassDao.save(userInfo);
-            List<Object> data = commonClassDao.getDataById(UserInfo.class, "userLoginId:userName",
-                    "TestID:Test");
+            List<?> data = commonClassDao.getDataById(UserInfo.class, "userLoginId:userName", "TestID:Test");
             assertTrue(data.size() == 1);
             UserInfo userInfoUpdate = (UserInfo) data.get(0);
             userInfoUpdate.setUserName("Test1");
             commonClassDao.update(userInfoUpdate);
             List<String> data1 = commonClassDao.getDataByColumn(UserInfo.class, "userLoginId");
             assertTrue(data1.size() == 1);
-            UserInfo data2 = (UserInfo) commonClassDao.getEntityItem(UserInfo.class,
-                    "userLoginId:userName", "TestID:Test1");
+            UserInfo data2 =
+                    (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId:userName", "TestID:Test1");
             assertTrue("TestID".equals(data2.getUserLoginId()));
-            List<Object> data3 = commonClassDao.checkDuplicateEntry("TestID:Test1",
-                    "userLoginId:userName", UserInfo.class);
+            List<?> data3 = commonClassDao.checkDuplicateEntry("TestID:Test1", "userLoginId:userName", UserInfo.class);
             assertTrue(data3.size() == 1);
             PolicyRoles roles = new PolicyRoles();
             roles.setRole("admin");
@@ -422,8 +429,8 @@ public class CommonClassDaoImplTest {
             assertTrue(roles1.size() == 1);
             List<String> multipleData = new ArrayList<>();
             multipleData.add("TestID:Test1");
-            List<Object> data4 = commonClassDao.getMultipleDataOnAddingConjunction(UserInfo.class,
-                    "userLoginId:userName", multipleData);
+            List<?> data4 = commonClassDao.getMultipleDataOnAddingConjunction(UserInfo.class, "userLoginId:userName",
+                    multipleData);
             assertTrue(data4.size() == 1);
             commonClassDao.delete(data2);
         } catch (Exception e) {
@@ -454,6 +461,70 @@ public class CommonClassDaoImplTest {
         }
     }
 
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testExceptions() {
+        SessionFactory sfMock = Mockito.mock(SessionFactory.class);
+        Session mockSession = Mockito.mock(Session.class);
+        Criteria crMock = Mockito.mock(Criteria.class);
+        Transaction mockTransaction = Mockito.mock(Transaction.class);
+
+        CommonClassDaoImpl.setSessionfactory(sfMock);
+
+        when(sfMock.openSession()).thenReturn(mockSession);
+        when(mockSession.createCriteria(OnapName.class)).thenReturn(crMock);
+
+        when(crMock.list()).thenThrow(Exception.class);
+        when(mockSession.close()).thenThrow(Exception.class);
+
+        when(mockSession.beginTransaction()).thenReturn(mockTransaction);
+        doThrow(Exception.class).when(mockTransaction).commit();
+
+        List<?> dataList = commonClassDao.getData(OnapName.class);
+        assertNull(dataList);
+
+        List<?> dataByIdList = commonClassDao.getDataById(UserInfo.class, "userLoginId:userName", "TestID:Test");
+        assertNull(dataByIdList);
+
+        commonClassDao.save(null);
+        commonClassDao.delete(null);
+        commonClassDao.update(null);
+
+        List<?> dupEntryList =
+                commonClassDao.checkDuplicateEntry("TestID:Test", "userLoginId:userName", UserInfo.class);
+        assertNull(dupEntryList);
+
+        List<PolicyRoles> userRoles = commonClassDao.getUserRoles();
+        assertNull(userRoles);
+
+        Object entityItem = commonClassDao.getEntityItem(UserInfo.class, "testColName", "testKey");
+        assertNull(entityItem);
+
+        commonClassDao.updateQuery("testQueryString");
+
+        List<String> dataByColumn = commonClassDao.getDataByColumn(UserInfo.class, "testColName");
+        assertNull(dataByColumn);
+
+        List<?> entityData = commonClassDao.getMultipleDataOnAddingConjunction(UserInfo.class, "", null);
+        assertNull(entityData);
+    }
+
+    @Test
+    public void testCheckExistingGroupListforUpdate() {
+        Object retObj = commonClassDao.checkExistingGroupListforUpdate("testString1", "testString2");
+        assertNotNull(retObj);
+        assertTrue(retObj instanceof List);
+        List<?> retList = (List<?>) retObj;
+        assertTrue(retList.isEmpty());
+    }
+
+    @Test
+    public void testEmptyMethods() {
+        commonClassDao.deleteAll();
+        commonClassDao.updateClAlarms("TestString1", "TestString2");
+        commonClassDao.updateClYaml("TestString1", "TestString2");
+    }
+
     @After
     public void deleteDB() {
         sessionFactory.close();