Post Init Service Starter
[aaf/authz.git] / auth / auth-cass / src / test / java / org / onap / aaf / auth / dao / cass / JU_NsDAO.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.aaf
4  * ===========================================================================
5  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6  * ===========================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END====================================================
19  *
20  */
21
22 package org.onap.aaf.auth.dao.cass;
23
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.MockitoAnnotations.initMocks;
27
28 import java.io.ByteArrayInputStream;
29 import java.io.ByteArrayOutputStream;
30 import java.io.DataInputStream;
31 import java.io.DataOutputStream;
32 import java.io.FileNotFoundException;
33 import java.io.IOException;
34 import java.lang.reflect.Constructor;
35 import java.lang.reflect.Field;
36 import java.lang.reflect.InvocationTargetException;
37 import java.lang.reflect.Method;
38 import java.nio.ByteBuffer;
39 import java.util.ArrayList;
40 import java.util.HashMap;
41 import java.util.Iterator;
42 import java.util.List;
43 import java.util.Set;
44 import java.util.concurrent.ConcurrentHashMap;
45
46 import org.junit.Before;
47 import org.junit.Test;
48 import org.mockito.Mock;
49 import org.mockito.Mockito;
50 import org.onap.aaf.auth.dao.AbsCassDAO;
51 import org.onap.aaf.auth.dao.AbsCassDAO.CRUD;
52 import org.onap.aaf.auth.dao.AbsCassDAO.PSInfo;
53 import org.onap.aaf.auth.dao.CassAccess;
54 import org.onap.aaf.auth.dao.CassDAOImpl;
55 import org.onap.aaf.auth.dao.cass.NsDAO.Data;
56 import org.onap.aaf.auth.env.AuthzTrans;
57 import org.onap.aaf.auth.layer.Result;
58 import org.onap.aaf.cadi.config.Config;
59 import org.onap.aaf.misc.env.APIException;
60 import org.onap.aaf.misc.env.Env;
61 import org.onap.aaf.misc.env.LogTarget;
62 import org.onap.aaf.misc.env.TimeTaken;
63
64 import com.datastax.driver.core.Cluster;
65 import com.datastax.driver.core.ResultSet;
66 import com.datastax.driver.core.Row;
67 import com.datastax.driver.core.Session;
68
69 public class JU_NsDAO {
70
71         @Mock
72     AuthzTrans trans;
73         @Mock
74         Cluster cluster;
75         @Mock
76         Session session;
77         @Mock
78         ResultSet rs;
79         
80         @Before
81         public void setUp() throws APIException, IOException {
82                 initMocks(this);
83                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn();
84                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
85                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug();
86                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info();
87                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init();
88                 Mockito.doReturn(session).when(cluster).connect("test");
89                 Mockito.doReturn(Mockito.mock(TimeTaken.class)).when(trans).start(Mockito.anyString(), Mockito.anyInt());
90                 Mockito.doReturn("100").when(trans).getProperty(Config.CADI_LATITUDE);
91                 Mockito.doReturn("100").when(trans).getProperty(Config.CADI_LONGITUDE);
92
93                 Iterator<Row> ite = Mockito.mock(Iterator.class);
94                 Mockito.doReturn(ite).when(rs).iterator();
95                 Mockito.doReturn(rs).when(session).execute(Mockito.anyString());
96         }
97
98         @Test
99         public void testInit() {
100                 try {
101                         Session session =  Mockito.mock(Session.class);
102                         new NsDAOImpl(trans, cluster, "test", session);
103                 } catch (APIException | IOException e) {
104                         // TODO Auto-generated catch block
105                         e.printStackTrace();
106                 }
107         }
108         
109         public void setPsByStartAndTarget(NsDAO NsDAOObj, PSInfo psInfoObj, String fieldName) {
110                 Field nsDaoField;
111                 try {
112                         nsDaoField = NsDAO.class.getDeclaredField(fieldName);
113                         
114                         nsDaoField.setAccessible(true);
115                 // remove final modifier from field
116                 Field modifiersField = Field.class.getDeclaredField("modifiers");
117                 modifiersField.setAccessible(true);
118 //              modifiersField.setInt(nsDaoField, nsDaoField.getModifiers() & ~Modifier.FINAL);
119                 
120                 nsDaoField.set(NsDAOObj, psInfoObj);
121                 } catch (NoSuchFieldException | SecurityException e) {
122                         // TODO Auto-generated catch block
123                         e.printStackTrace();
124                 } catch (IllegalArgumentException e) {
125                         // TODO Auto-generated catch block
126                         e.printStackTrace();
127                 } catch (IllegalAccessException e) {
128                         // TODO Auto-generated catch block
129                         e.printStackTrace();
130                 }
131         }
132         
133         @Test
134         public void testWasMOdified() {
135                 TimeTaken tt = Mockito.mock(TimeTaken.class);
136                 Mockito.doReturn(tt).when(trans).start("NsDAO CREATE", Env.REMOTE);
137                 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
138                 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
139                 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on NsDAO", Env.SUB);
140                 Mockito.doReturn(tt).when(trans).start("DELETE Future",Env.REMOTE);
141                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
142                 Mockito.doNothing().when(tt).done();
143                 NsDAO.Data data  = new NsDAO.Data();
144                 
145                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
146                 Result<ResultSet> rs1 = new Result<ResultSet>(null,0,"test",new Object[0]);
147                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
148                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
149                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
150                 
151                 NsDAO daoObj = null;
152                 try {
153                         daoObj = new NsDAO(trans, historyDAO, cacheInfoDAO);
154                 } catch (APIException | IOException e) {
155                         // TODO Auto-generated catch block
156                         e.printStackTrace();
157                 }
158                 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test"});
159                 
160                 daoObj.wasModified(trans, CRUD.create, data, new String[] {});
161                 daoObj.wasModified(trans, CRUD.create, data, new String[] {null});
162                 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test",null});
163                 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test","test"});
164                 
165                 rs1 = new Result<ResultSet>(null,1,"test",new Object[0]);
166                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
167                 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test","test"});
168         }
169         
170         @Test
171         public void testSecondConstructor() {
172                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
173                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
174
175                 try {
176                         new NsDAO(trans, historyDAO, cacheInfoDAO);
177                 } catch (APIException | IOException e) {
178                         // TODO Auto-generated catch block
179                         e.printStackTrace();
180                 }
181                 
182         }
183
184         @Test
185         public void testNSLoader(){
186                 Class<?> innerClass = null;
187                 Class<?>[] innerClassArr = NsDAO.class.getDeclaredClasses();
188                 for(Class<?> indCls:innerClassArr) {
189                         if(indCls.getName().contains("NSLoader")) {
190                                 innerClass = indCls;
191                                 break;
192                         }
193                 }
194                 
195         Constructor<?> constructor = innerClass.getDeclaredConstructors()[0];
196         constructor.setAccessible(true);
197         
198         try {
199                 
200                         Object obj = constructor.newInstance(1);
201                         Method innnerClassMtd;
202                                 
203                         NsDAO.Data data  = new NsDAO.Data();
204                         Row row = Mockito.mock(Row.class);
205                         ByteBuffer bbObj = ByteBuffer.allocateDirect(10);
206                         bbObj.limit(7);
207                         bbObj.put(0, new Byte("0"));
208                         bbObj.put(1, new Byte("1"));
209                         bbObj.put(2, new Byte("2"));
210                         Mockito.doReturn(bbObj).when(row).getBytesUnsafe(1);
211                         
212                         innnerClassMtd = innerClass.getMethod("load", new Class[] {NsDAO.Data.class, Row.class});
213                         innnerClassMtd.invoke(obj, new Object[] {data, row});
214                         
215                         innnerClassMtd = innerClass.getDeclaredMethod("key", new Class[] {NsDAO.Data.class, Integer.TYPE, Object[].class });
216                         innnerClassMtd.invoke(obj, new Object[] {data, 1, new Object[] {"test","test","test"} });
217 //                      
218                         innnerClassMtd = innerClass.getDeclaredMethod("body", new Class[] {NsDAO.Data.class, Integer.TYPE, Object[].class });
219                         innnerClassMtd.invoke(obj, new Object[] {data, 1, new Object[] {"test","test","test","test","test","test","test","test","test","test","test"} });
220                         
221                         ByteArrayOutputStream baos = new ByteArrayOutputStream();
222                         DataOutputStream dos = new DataOutputStream(baos);
223                         innnerClassMtd = innerClass.getDeclaredMethod("marshal", new Class[] {NsDAO.Data.class, DataOutputStream.class });
224                         innnerClassMtd.invoke(obj, new Object[] {data, dos });
225
226                         ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
227                         DataInputStream dis = new DataInputStream(bais);
228                         innnerClassMtd = innerClass.getDeclaredMethod("unmarshal", new Class[] {NsDAO.Data.class, DataInputStream.class });
229                         innnerClassMtd.invoke(obj, new Object[] {data, dis });
230                         
231                 } catch (InstantiationException e) {
232                         // TODO Auto-generated catch block
233                         e.printStackTrace();
234                 } catch (IllegalAccessException e) {
235                         // TODO Auto-generated catch block
236                         e.printStackTrace();
237                 } catch (IllegalArgumentException e) {
238                         // TODO Auto-generated catch block
239                         e.printStackTrace();
240                 } catch (InvocationTargetException e) {
241                         // TODO Auto-generated catch block
242                         e.printStackTrace();
243                 } catch (NoSuchMethodException e) {
244                         // TODO Auto-generated catch block
245                         e.printStackTrace();
246                 } catch (SecurityException e) {
247                         // TODO Auto-generated catch block
248                         e.printStackTrace();
249                 } 
250         }
251         @Test
252         public void testCreate() {
253                 PSInfo psObj = Mockito.mock(PSInfo.class);
254
255                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
256                 NsDAO.Data data = new NsDAO.Data();
257
258                 Result<ResultSet>  rs1 = new Result<ResultSet>(null,0,"test",new Object[0]);
259                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
260                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
261                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
262                 NsDAOImpl daoObj=null;
263                 try {
264                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
265                 } catch (APIException | IOException e) {
266                         // TODO Auto-generated catch block
267                         e.printStackTrace();
268                 }
269                 Mockito.doReturn("test user").when(trans).user();
270                 
271                 Result<NsDAO.Data> retVal = daoObj.create(trans,data);
272                 assertTrue(retVal.status == 4);
273
274                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
275                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
276                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
277                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
278                 data.parent = "parent";
279                 data.attrib = new HashMap<>();
280                 data.attrib.put("test", "test");
281                 
282                 Field cbField;
283                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
284                 try {
285                         cbField = CassAccess.class.getDeclaredField("cb");
286                         cbField.setAccessible(true);
287                         cbField.set(daoObj, null);
288                 } catch (NoSuchFieldException | SecurityException e) {
289                         // TODO Auto-generated catch block
290                         e.printStackTrace();
291                 } catch (IllegalArgumentException e) {
292                         // TODO Auto-generated catch block
293                         e.printStackTrace();
294                 } catch (IllegalAccessException e) {
295                         // TODO Auto-generated catch block
296                         e.printStackTrace();
297                 }
298                 
299                 retVal = daoObj.create(trans,data);
300                 assertTrue(retVal.status == 9);
301                 
302                 Field owningField;
303                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
304                 try {
305                         owningField = AbsCassDAO.class.getDeclaredField("owningDAO");
306                         owningField.setAccessible(true);
307                         owningField.set(daoObj, null);
308                 } catch (NoSuchFieldException | SecurityException e) {
309                         // TODO Auto-generated catch block
310                         e.printStackTrace();
311                 } catch (IllegalArgumentException e) {
312                         // TODO Auto-generated catch block
313                         e.printStackTrace();
314                 } catch (IllegalAccessException e) {
315                         // TODO Auto-generated catch block
316                         e.printStackTrace();
317                 }
318                 retVal = daoObj.create(trans,data);
319                 assertTrue(retVal.status == 0);
320                 
321         }
322         
323         @Test
324         public void testUpdate() {
325                 PSInfo psObj = Mockito.mock(PSInfo.class);
326
327                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
328                 NsDAO.Data data = new NsDAO.Data();
329
330                 Result<ResultSet>  rs1 = new Result<ResultSet>(null,0,"test",new Object[0]);
331                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
332                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
333                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
334                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
335                 NsDAOImpl daoObj=null;
336                 try {
337                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
338                 } catch (APIException | IOException e) {
339                         // TODO Auto-generated catch block
340                         e.printStackTrace();
341                 }
342                 Mockito.doReturn("test user").when(trans).user();
343                 
344                 Result<Void> retVal = daoObj.update(trans,data);
345                 assertTrue(retVal.status == 4);
346
347                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
348                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
349                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
350                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
351                 data.parent = "parent";
352                 data.attrib = new HashMap<>();
353                 data.attrib.put("test", "test");
354                 Field cbField;
355                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
356                 try {
357                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
358                         cbField.setAccessible(true);
359                         cbField.set(daoObj, null);
360                 } catch (NoSuchFieldException | SecurityException e) {
361                         // TODO Auto-generated catch block
362                         e.printStackTrace();
363                 } catch (IllegalArgumentException e) {
364                         // TODO Auto-generated catch block
365                         e.printStackTrace();
366                 } catch (IllegalAccessException e) {
367                         // TODO Auto-generated catch block
368                         e.printStackTrace();
369                 }
370                 
371                 retVal = daoObj.update(trans,data);
372                 assertTrue(retVal.status == 0);
373                 
374                 ResultSet rsMock = Mockito.mock(ResultSet.class);
375                 Iterator<Row> iteMock = Mockito.mock(Iterator.class);
376                 Mockito.doReturn(iteMock).when(rsMock).iterator();
377                 Row rowMock = Mockito.mock(Row.class);
378                 Mockito.doReturn(rowMock).when(iteMock).next();
379                 Mockito.when(iteMock.hasNext()).thenReturn(true, false);
380                 Mockito.doReturn("test").when(rowMock).getString(Mockito.anyInt());
381                 Mockito.doReturn(rsMock).when(session).execute(Mockito.anyString());
382                 retVal = daoObj.update(trans,data);
383                 assertTrue(retVal.status == 0);
384         }
385         
386         @Test
387         public void testRead() {
388                 PSInfo psObj = Mockito.mock(PSInfo.class);
389                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
390                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
391                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
392                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
393
394                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
395                 NsDAO.Data data = new NsDAO.Data();
396
397                 Result<List<Data>>  rs1 = new Result<List<Data>>(null,0,"test",new Object[0]);
398                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
399                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
400                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
401                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
402                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
403                 NsDAOImpl daoObj=null;
404                 try {
405                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
406                 } catch (APIException | IOException e) {
407                         // TODO Auto-generated catch block
408                         e.printStackTrace();
409                 }
410                 Mockito.doReturn("test user").when(trans).user();
411                 
412                 Result<List<Data>> retVal = daoObj.read(trans,data);
413                 assertTrue(retVal.status == 0);
414
415                 List<Data> dataAL= new ArrayList<>();
416                 dataAL.add(data);
417                 rs1 = new Result<List<Data>>(dataAL,0,"test",new Object[0]);
418                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
419                 Field cbField;
420                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
421                 try {
422                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
423                         cbField.setAccessible(true);
424                         cbField.set(daoObj, null);
425                 } catch (NoSuchFieldException | SecurityException e) {
426                         // TODO Auto-generated catch block
427                         e.printStackTrace();
428                 } catch (IllegalArgumentException e) {
429                         // TODO Auto-generated catch block
430                         e.printStackTrace();
431                 } catch (IllegalAccessException e) {
432                         // TODO Auto-generated catch block
433                         e.printStackTrace();
434                 }
435                 retVal = daoObj.read(trans,data);
436                 assertTrue(retVal.status == 0);
437
438         }
439         
440         @Test
441         public void testReadByObject() {
442                 PSInfo psObj = Mockito.mock(PSInfo.class);
443                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
444                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
445                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
446                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
447
448                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
449                 NsDAO.Data data = new NsDAO.Data();
450
451                 Result<List<Data>>  rs1 = new Result<List<Data>>(null,0,"test",new Object[0]);
452                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
453                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
454                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", new Object[] {});
455                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
456                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
457                 NsDAOImpl daoObj=null;
458                 try {
459                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
460                 } catch (APIException | IOException e) {
461                         // TODO Auto-generated catch block
462                         e.printStackTrace();
463                 }
464                 Mockito.doReturn("test user").when(trans).user();
465                 
466                 Result<List<Data>> retVal = daoObj.read(trans,new Object[] {});
467                 assertTrue(retVal.status == 0);
468
469                 List<Data> dataAL= new ArrayList<>();
470                 dataAL.add(data);
471                 rs1 = new Result<List<Data>>(dataAL,0,"test",new Object[0]);
472                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", new Object[] {});
473                 Field cbField;
474                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
475                 try {
476                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
477                         cbField.setAccessible(true);
478                         cbField.set(daoObj, null);
479                 } catch (NoSuchFieldException | SecurityException e) {
480                         // TODO Auto-generated catch block
481                         e.printStackTrace();
482                 } catch (IllegalArgumentException e) {
483                         // TODO Auto-generated catch block
484                         e.printStackTrace();
485                 } catch (IllegalAccessException e) {
486                         // TODO Auto-generated catch block
487                         e.printStackTrace();
488                 }
489                 retVal = daoObj.read(trans,new Object[] {});
490                 assertTrue(retVal.status == 0);
491
492         }
493         
494         @Test
495         public void testDelete() {
496                 PSInfo psObj = Mockito.mock(PSInfo.class);
497                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
498                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
499                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
500                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
501
502                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
503                 NsDAO.Data data = new NsDAO.Data();
504
505                 Result<List<Data>>  rs1 = new Result<List<Data>>(null,0,"test",new Object[0]);
506                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
507                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
508                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
509                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl DELETE", data);
510                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
511                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
512                 NsDAOImpl daoObj=null;
513                 try {
514                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
515                 } catch (APIException | IOException e) {
516                         // TODO Auto-generated catch block
517                         e.printStackTrace();
518                 }
519                 Mockito.doReturn("test user").when(trans).user();
520                 Field cbField;
521                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
522                 try {
523                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
524                         cbField.setAccessible(true);
525                         cbField.set(daoObj, null);
526                 } catch (NoSuchFieldException | SecurityException e) {
527                         // TODO Auto-generated catch block
528                         e.printStackTrace();
529                 } catch (IllegalArgumentException e) {
530                         // TODO Auto-generated catch block
531                         e.printStackTrace();
532                 } catch (IllegalAccessException e) {
533                         // TODO Auto-generated catch block
534                         e.printStackTrace();
535                 }
536                 
537                 Result<Void> retVal = daoObj.delete(trans,data, false);
538                 assertTrue(retVal.status == 0);
539
540                 List<Data> dataAL= new ArrayList<>();
541                 dataAL.add(data);
542                 rs1 = new Result<List<Data>>(dataAL,0,"test",new Object[0]);
543                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
544                 
545                 retVal = daoObj.delete(trans,data, false);
546                 assertTrue(retVal.status == 0);
547
548         }
549         
550         @Test
551         public void testReadNsByAttrib() {
552                 PSInfo psObj = Mockito.mock(PSInfo.class);
553                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
554                 NsDAO.Data data = new NsDAO.Data();
555                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
556                 NsDAOImpl daoObj=null;
557                 try {
558                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
559                 } catch (APIException | IOException e) {
560                         // TODO Auto-generated catch block
561                         e.printStackTrace();
562                 }
563                 
564                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
565                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
566                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
567                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
568
569                 Result<List<Data>>  rs1 = new Result<List<Data>>(null,0,"test",new Object[0]);
570                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
571                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
572                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
573                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl DELETE", data);
574                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
575                 
576                 Mockito.doReturn("test user").when(trans).user();
577                 Field cbField;
578                 try {
579                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
580                         cbField.setAccessible(true);
581                         cbField.set(daoObj, null);
582                 } catch (NoSuchFieldException | SecurityException e) {
583                         // TODO Auto-generated catch block
584                         e.printStackTrace();
585                 } catch (IllegalArgumentException e) {
586                         // TODO Auto-generated catch block
587                         e.printStackTrace();
588                 } catch (IllegalAccessException e) {
589                         // TODO Auto-generated catch block
590                         e.printStackTrace();
591                 }
592                 
593                 Result<Set<String>> retVal = daoObj.readNsByAttrib(trans,"test");
594                 assertTrue(retVal.status == 0);
595                 
596                 ResultSet rsMock = Mockito.mock(ResultSet.class);
597                 Iterator<Row> iteMock = Mockito.mock(Iterator.class);
598                 Mockito.doReturn(iteMock).when(rsMock).iterator();
599                 Row rowMock = Mockito.mock(Row.class);
600                 Mockito.doReturn(rowMock).when(iteMock).next();
601                 Mockito.when(iteMock.hasNext()).thenReturn(true, false);
602                 Mockito.doReturn("test").when(rowMock).getString(Mockito.anyInt());
603                 Mockito.doReturn(rsMock).when(session).execute(Mockito.anyString());
604
605                 retVal = daoObj.readNsByAttrib(trans,"test");
606                 assertTrue(retVal.status == 0);
607
608         }
609         @Test
610         public void testAttribAdd() {
611                 PSInfo psObj = Mockito.mock(PSInfo.class);
612                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
613                 NsDAO.Data data = new NsDAO.Data();
614                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
615                 NsDAOImpl daoObj=null;
616                 try {
617                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
618                 } catch (APIException | IOException e) {
619                         // TODO Auto-generated catch block
620                         e.printStackTrace();
621                 }
622                 
623                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
624                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
625                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
626                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
627
628                 Result<List<Data>>  rs1 = new Result<List<Data>>(null,0,"test",new Object[0]);
629                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
630                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
631                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
632                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl DELETE", data);
633                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
634                 
635                 Mockito.doReturn("test user").when(trans).user();
636                 Field cbField;
637                 try {
638                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
639                         cbField.setAccessible(true);
640                         cbField.set(daoObj, null);
641                 } catch (NoSuchFieldException | SecurityException e) {
642                         // TODO Auto-generated catch block
643                         e.printStackTrace();
644                 } catch (IllegalArgumentException e) {
645                         // TODO Auto-generated catch block
646                         e.printStackTrace();
647                 } catch (IllegalAccessException e) {
648                         // TODO Auto-generated catch block
649                         e.printStackTrace();
650                 }
651                 
652                 Result<Void> retVal = daoObj.attribAdd(trans, "test", "test", "test");
653                 assertTrue(retVal.status == 0);
654         }
655         
656         @Test
657         public void testAttribRemove() {
658                 PSInfo psObj = Mockito.mock(PSInfo.class);
659                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
660                 NsDAO.Data data = new NsDAO.Data();
661                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
662                 NsDAOImpl daoObj=null;
663                 try {
664                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
665                 } catch (APIException | IOException e) {
666                         // TODO Auto-generated catch block
667                         e.printStackTrace();
668                 }
669                 
670                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
671                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
672                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
673                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
674
675                 Result<List<Data>>  rs1 = new Result<List<Data>>(null,0,"test",new Object[0]);
676                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
677                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
678                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
679                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl DELETE", data);
680                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
681                 
682                 Mockito.doReturn("test user").when(trans).user();
683                 Field cbField;
684                 try {
685                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
686                         cbField.setAccessible(true);
687                         cbField.set(daoObj, null);
688                 } catch (NoSuchFieldException | SecurityException e) {
689                         // TODO Auto-generated catch block
690                         e.printStackTrace();
691                 } catch (IllegalArgumentException e) {
692                         // TODO Auto-generated catch block
693                         e.printStackTrace();
694                 } catch (IllegalAccessException e) {
695                         // TODO Auto-generated catch block
696                         e.printStackTrace();
697                 }
698                 
699                 Result<Void> retVal = daoObj.attribRemove(trans, "test", "test");
700                 assertTrue(retVal.status == 0);
701         }
702         
703         @Test
704         public void testAddDescription() {
705                 PSInfo psObj = Mockito.mock(PSInfo.class);
706                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
707                 NsDAO.Data data = new NsDAO.Data();
708                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
709                 NsDAOImpl daoObj=null;
710                 try {
711                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
712                 } catch (APIException | IOException e) {
713                         // TODO Auto-generated catch block
714                         e.printStackTrace();
715                 }
716                 
717                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
718                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
719                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
720                 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
721
722                 Result<List<Data>>  rs1 = new Result<List<Data>>(null,0,"test",new Object[0]);
723                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl CREATE", data);
724                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl UPDATE", data);
725                 Mockito.doReturn(rs1).when(psObj).read(trans, "NsDAOImpl READ", data);
726                 Mockito.doReturn(rs1).when(psObj).exec(trans, "NsDAOImpl DELETE", data);
727                 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
728
729                  rs1 = new Result<List<Data>>(null,1,"test",new String[0]);
730                 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
731                 Mockito.doReturn("test user").when(trans).user();
732                 Field cbField;
733                 try {
734                         cbField = AbsCassDAO.class.getDeclaredField("owningDAO");
735                         cbField.setAccessible(true);
736                         cbField.set(daoObj, null);
737                 } catch (NoSuchFieldException | SecurityException e) {
738                         // TODO Auto-generated catch block
739                         e.printStackTrace();
740                 } catch (IllegalArgumentException e) {
741                         // TODO Auto-generated catch block
742                         e.printStackTrace();
743                 } catch (IllegalAccessException e) {
744                         // TODO Auto-generated catch block
745                         e.printStackTrace();
746                 }
747                 
748                 Result<Void> retVal = daoObj.addDescription(trans, "test", "test");
749                 assertTrue(retVal.status == 0);
750         }
751         
752         @Test
753         public void testGetChildren() {
754                 PSInfo psObj = Mockito.mock(PSInfo.class);
755                 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
756                 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
757                 NsDAOImpl daoObj=null;
758                 try {
759                         daoObj = new NsDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, session);
760                 } catch (APIException | IOException e) {
761                         // TODO Auto-generated catch block
762                         e.printStackTrace();
763                 }
764                 
765                 Result<List<Data>> retVal = daoObj.getChildren(trans, "test");
766                 assertNull(retVal);
767         }
768         
769         @Test
770         public void testData() {
771                 NsDAO.Data data = new NsDAO.Data();
772                 data.attrib = null;
773                 data.attrib(true);
774
775                 data.attrib = new HashMap<>();
776                 data.attrib(true);
777
778                 data.attrib(false);
779                 data.attrib = new ConcurrentHashMap<>();
780                 data.attrib(true);
781                 
782                 data.name="123";
783                 data.split("test");
784                 
785                 data.toString();
786         }
787
788 }
789
790 class NsDAOImpl extends NsDAO{
791
792         
793 //      public NsDAOImpl(AuthzTrans trans, HistoryDAO historyDAO,PSInfo readPS  ) throws APIException, IOException {
794 //              super(trans, historyDAO);
795 //              setSession(this, Mockito.mock(Session.class));
796 //      }
797         
798
799         public NsDAOImpl(AuthzTrans trans, Cluster cluster, String keySpace, Session session)throws APIException, IOException {
800                 super(trans, cluster, keySpace);
801                 setSession(this, session);
802         }
803
804
805         public NsDAOImpl(AuthzTrans trans, HistoryDAO historyDAO, CacheInfoDAO cacheInfoDAO,
806                         org.onap.aaf.auth.dao.AbsCassDAO.PSInfo psObj, Session session) throws APIException, IOException {
807                 super(trans, historyDAO, cacheInfoDAO);
808                 setPs(this, psObj, "createPS");
809                 setPs(this, psObj, "updatePS");
810                 setPs(this, psObj, "readPS");
811                 setPs(this, psObj, "deletePS");
812                 setPsNs(this, psObj, "psNS");
813                 setSession(this, session);
814         }
815         public void setPsNs(NsDAOImpl NsDAOObj, PSInfo psInfoObj, String methodName) {
816                 Field nsDaoField;
817                 try {
818                         nsDaoField = NsDAO.class.getDeclaredField(methodName);
819                         
820                         nsDaoField.setAccessible(true);
821                 // remove final modifier from field
822                 Field modifiersField = Field.class.getDeclaredField("modifiers");
823                 modifiersField.setAccessible(true);
824 //              modifiersField.setInt(nsDaoField, nsDaoField.getModifiers() & ~Modifier.FINAL);
825                 
826                 nsDaoField.set(NsDAOObj, psInfoObj);
827                 } catch (NoSuchFieldException | SecurityException e) {
828                         // TODO Auto-generated catch block
829                         e.printStackTrace();
830                 } catch (IllegalArgumentException e) {
831                         // TODO Auto-generated catch block
832                         e.printStackTrace();
833                 } catch (IllegalAccessException e) {
834                         // TODO Auto-generated catch block
835                         e.printStackTrace();
836                 }
837         }
838
839         public void setPs(NsDAOImpl NsDAOObj, PSInfo psInfoObj, String methodName) {
840                 Field nsDaoField;
841                 try {
842                         nsDaoField = CassDAOImpl.class.getDeclaredField(methodName);
843                         
844                         nsDaoField.setAccessible(true);
845                 // remove final modifier from field
846                 Field modifiersField = Field.class.getDeclaredField("modifiers");
847                 modifiersField.setAccessible(true);
848 //              modifiersField.setInt(nsDaoField, nsDaoField.getModifiers() & ~Modifier.FINAL);
849                 
850                 nsDaoField.set(NsDAOObj, psInfoObj);
851                 } catch (NoSuchFieldException | SecurityException e) {
852                         // TODO Auto-generated catch block
853                         e.printStackTrace();
854                 } catch (IllegalArgumentException e) {
855                         // TODO Auto-generated catch block
856                         e.printStackTrace();
857                 } catch (IllegalAccessException e) {
858                         // TODO Auto-generated catch block
859                         e.printStackTrace();
860                 }
861         }
862         public void setSession(NsDAOImpl approvalDaoObj, Session session) {
863                 Field nsDaoField;
864                 try {
865                         nsDaoField = AbsCassDAO.class.getDeclaredField("session");
866                         
867                         nsDaoField.setAccessible(true);
868                 // remove final modifier from field
869                 Field modifiersField = Field.class.getDeclaredField("modifiers");
870                 modifiersField.setAccessible(true);
871 //              modifiersField.setInt(nsDaoField, nsDaoField.getModifiers() & ~Modifier.FINAL);
872                 
873                 nsDaoField.set(approvalDaoObj, session);
874                 } catch (NoSuchFieldException | SecurityException e) {
875                         // TODO Auto-generated catch block
876                         e.printStackTrace();
877                 } catch (IllegalArgumentException e) {
878                         // TODO Auto-generated catch block
879                         e.printStackTrace();
880                 } catch (IllegalAccessException e) {
881                         // TODO Auto-generated catch block
882                         e.printStackTrace();
883                 }
884         }
885 }