2 * ============LICENSE_START====================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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====================================================
22 package org.onap.aaf.auth.dao.cass;
24 import static org.junit.Assert.assertTrue;
25 import static org.mockito.MockitoAnnotations.initMocks;
27 import java.io.DataInputStream;
28 import java.io.DataOutputStream;
29 import java.io.FileInputStream;
30 import java.io.FileNotFoundException;
31 import java.io.FileOutputStream;
32 import java.io.IOException;
33 import java.lang.reflect.Constructor;
34 import java.lang.reflect.Field;
35 import java.lang.reflect.InvocationTargetException;
36 import java.lang.reflect.Method;
37 import java.nio.ByteBuffer;
38 import java.util.Date;
39 import java.util.HashMap;
40 import java.util.List;
41 import java.util.concurrent.ConcurrentHashMap;
43 import org.junit.Before;
44 import org.junit.Test;
45 import org.mockito.Mock;
46 import org.mockito.Mockito;
47 import org.onap.aaf.auth.dao.AbsCassDAO.CRUD;
48 import org.onap.aaf.auth.dao.AbsCassDAO.PSInfo;
49 import org.onap.aaf.auth.dao.cass.PermDAO.Data;
50 import org.onap.aaf.auth.dao.hl.Question;
51 import org.onap.aaf.auth.dao.AbsCassDAO;
52 import org.onap.aaf.auth.dao.CassAccess;
53 import org.onap.aaf.auth.dao.CassDAOImpl;
54 import org.onap.aaf.auth.env.AuthzTrans;
55 import org.onap.aaf.auth.layer.Result;
56 import org.onap.aaf.cadi.config.Config;
57 import org.onap.aaf.misc.env.APIException;
58 import org.onap.aaf.misc.env.Env;
59 import org.onap.aaf.misc.env.LogTarget;
60 import org.onap.aaf.misc.env.TimeTaken;
62 import com.datastax.driver.core.Cluster;
63 import com.datastax.driver.core.ResultSet;
64 import com.datastax.driver.core.Row;
65 import com.datastax.driver.core.Session;
67 public class JU_PermDAO {
77 public void setUp() throws APIException, IOException {
79 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn();
80 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
81 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug();
82 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info();
83 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init();
84 Mockito.doReturn("100").when(trans).getProperty(Config.CADI_LATITUDE);
85 Mockito.doReturn("100").when(trans).getProperty(Config.CADI_LONGITUDE);
86 Mockito.doReturn(session).when(cluster).connect("test");
90 public void testInit() {
91 TimeTaken tt = Mockito.mock(TimeTaken.class);
92 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
93 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
94 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
95 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
97 Session session = Mockito.mock(Session.class);
98 PermDAO daoObj = new PermDAO(trans, cluster, "test");
99 } catch (APIException | IOException e) {
100 // TODO Auto-generated catch block
106 public void testReadByStartAndTarget() {
107 TimeTaken tt = Mockito.mock(TimeTaken.class);
108 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
109 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
110 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
111 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
112 PermDAO daoObj = null;
114 Session session = Mockito.mock(Session.class);
115 daoObj = new PermDAO(trans, cluster, "test");
116 } catch (APIException | IOException e) {
117 // TODO Auto-generated catch block
121 PSInfo psObj = Mockito.mock(PSInfo.class);
122 setPsByStartAndTarget(daoObj, psObj, "psByType");
124 Result<List<PermDAO.Data>> rs1 = new Result<List<PermDAO.Data>>(null,0,"test",new String[0]);
125 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAO READ", new Object[]{"test"});
127 daoObj.readByType(trans, "test", "test");
130 public void testReadChildren() {
131 TimeTaken tt = Mockito.mock(TimeTaken.class);
132 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
133 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
134 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
135 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
136 PermDAO daoObj = null;
138 Session session = Mockito.mock(Session.class);
139 daoObj = new PermDAO(trans, cluster, "test");
140 } catch (APIException | IOException e) {
141 // TODO Auto-generated catch block
145 PSInfo psObj = Mockito.mock(PSInfo.class);
146 setPsByStartAndTarget(daoObj, psObj, "psChildren");
148 Result<List<PermDAO.Data>> rs1 = new Result<List<PermDAO.Data>>(null,0,"test",new String[0]);
149 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAO READ", new Object[]{"test"});
151 daoObj.readChildren(trans, "test", "test");
154 public void testReadNs() {
155 TimeTaken tt = Mockito.mock(TimeTaken.class);
156 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
157 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
158 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
159 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
160 PermDAO daoObj = null;
162 Session session = Mockito.mock(Session.class);
163 daoObj = new PermDAO(trans, cluster, "test");
164 } catch (APIException | IOException e) {
165 // TODO Auto-generated catch block
169 PSInfo psObj = Mockito.mock(PSInfo.class);
170 setPsByStartAndTarget(daoObj, psObj, "psNS");
172 Result<List<PermDAO.Data>> rs1 = new Result<List<PermDAO.Data>>(null,0,"test",new String[0]);
173 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAO READ", new Object[]{"test"});
175 daoObj.readNS(trans, "test");
178 public void testAddRole() {
179 PSInfo psObj = Mockito.mock(PSInfo.class);
180 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
181 PermDAO.Data data = new PermDAO.Data();
182 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
183 PermDAOImpl daoObj=null;
185 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, Mockito.mock(Session.class));
186 } catch (APIException | IOException e) {
187 // TODO Auto-generated catch block
191 TimeTaken tt = Mockito.mock(TimeTaken.class);
192 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
193 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
194 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
195 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
197 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
198 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
199 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
200 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
202 Result<List<Data>> rs1 = new Result<List<Data>>(null,0,"test",new String[0]);
203 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl CREATE", data);
204 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl UPDATE", data);
205 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAOImpl READ", data);
206 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl DELETE", data);
207 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
209 Result<Void> rs2 = new Result<Void>(null,0,"test",new String[0]);
210 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
212 rs1 = new Result<List<Data>>(null,1,"test",new String[0]);
213 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
214 Mockito.doReturn("test user").when(trans).user();
217 cbField = CassAccess.class.getDeclaredField("cb");
218 cbField.setAccessible(true);
219 cbField.set(daoObj, null);
220 } catch (NoSuchFieldException | SecurityException e) {
221 // TODO Auto-generated catch block
223 } catch (IllegalArgumentException e) {
224 // TODO Auto-generated catch block
226 } catch (IllegalAccessException e) {
227 // TODO Auto-generated catch block
231 PermDAO.Data perm = new PermDAO.Data();
232 Result<Void> retVal = daoObj.addRole(trans, perm, "test");
233 assertTrue(retVal.status == 9);
237 owningField = AbsCassDAO.class.getDeclaredField("owningDAO");
238 owningField.setAccessible(true);
239 owningField.set(daoObj, null);
240 } catch (NoSuchFieldException | SecurityException e) {
241 // TODO Auto-generated catch block
243 } catch (IllegalArgumentException e) {
244 // TODO Auto-generated catch block
246 } catch (IllegalAccessException e) {
247 // TODO Auto-generated catch block
250 retVal = daoObj.addRole(trans, perm, "test");
251 assertTrue(retVal.status == 0);
255 public void testDelRole() {
256 PSInfo psObj = Mockito.mock(PSInfo.class);
257 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
258 PermDAO.Data data = new PermDAO.Data();
259 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
260 PermDAOImpl daoObj=null;
262 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, Mockito.mock(Session.class));
263 } catch (APIException | IOException e) {
264 // TODO Auto-generated catch block
268 TimeTaken tt = Mockito.mock(TimeTaken.class);
269 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
270 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
271 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
272 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
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);
279 Result<List<Data>> rs1 = new Result<List<Data>>(null,0,"test",new String[0]);
280 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl CREATE", data);
281 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl UPDATE", data);
282 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAOImpl READ", data);
283 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl DELETE", data);
284 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
286 Result<Void> rs2 = new Result<Void>(null,0,"test",new String[0]);
287 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
289 rs1 = new Result<List<Data>>(null,1,"test",new String[0]);
290 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
291 Mockito.doReturn("test user").when(trans).user();
293 PermDAO.Data perm = new PermDAO.Data();
296 cbField = CassAccess.class.getDeclaredField("cb");
297 cbField.setAccessible(true);
298 cbField.set(daoObj, null);
299 } catch (NoSuchFieldException | SecurityException e) {
300 // TODO Auto-generated catch block
302 } catch (IllegalArgumentException e) {
303 // TODO Auto-generated catch block
305 } catch (IllegalAccessException e) {
306 // TODO Auto-generated catch block
310 Result<Void> retVal = daoObj.delRole(trans, perm, "test");
311 assertTrue(retVal.status == 9);
313 Field owningDaoField;
315 owningDaoField = AbsCassDAO.class.getDeclaredField("owningDAO");
316 owningDaoField.setAccessible(true);
317 owningDaoField.set(daoObj, null);
318 } catch (NoSuchFieldException | SecurityException e) {
319 // TODO Auto-generated catch block
321 } catch (IllegalArgumentException e) {
322 // TODO Auto-generated catch block
324 } catch (IllegalAccessException e) {
325 // TODO Auto-generated catch block
328 retVal = daoObj.delRole(trans, perm, "test");
329 assertTrue(retVal.status == 0);
333 public void testAddDescription() {
334 PSInfo psObj = Mockito.mock(PSInfo.class);
335 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
336 PermDAO.Data data = new PermDAO.Data();
337 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
338 PermDAOImpl daoObj=null;
340 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, Mockito.mock(Session.class));
341 } catch (APIException | IOException e) {
342 // TODO Auto-generated catch block
346 TimeTaken tt = Mockito.mock(TimeTaken.class);
347 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
348 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
349 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
350 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
352 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
353 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
354 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
355 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
357 Result<List<Data>> rs1 = new Result<List<Data>>(null,0,"test",new String[0]);
358 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl CREATE", data);
359 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl UPDATE", data);
360 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAOImpl READ", data);
361 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl DELETE", data);
362 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
364 Result<Void> rs2 = new Result<Void>(null,1,"test",new String[0]);
365 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
367 rs1 = new Result<List<Data>>(null,1,"test",new String[0]);
368 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
369 Mockito.doReturn("test user").when(trans).user();
371 PermDAO.Data perm = new PermDAO.Data();
374 cbField = CassAccess.class.getDeclaredField("cb");
375 cbField.setAccessible(true);
376 cbField.set(daoObj, null);
377 } catch (NoSuchFieldException | SecurityException e) {
378 // TODO Auto-generated catch block
380 } catch (IllegalArgumentException e) {
381 // TODO Auto-generated catch block
383 } catch (IllegalAccessException e) {
384 // TODO Auto-generated catch block
388 Result<Void> retVal = daoObj.addDescription(trans, "test", "test", "test", "test", "test");
389 assertTrue(retVal.status == 9);
391 Field owningDaoField;
393 owningDaoField = AbsCassDAO.class.getDeclaredField("owningDAO");
394 owningDaoField.setAccessible(true);
395 owningDaoField.set(daoObj, null);
396 } catch (NoSuchFieldException | SecurityException e) {
397 // TODO Auto-generated catch block
399 } catch (IllegalArgumentException e) {
400 // TODO Auto-generated catch block
402 } catch (IllegalAccessException e) {
403 // TODO Auto-generated catch block
406 retVal = daoObj.addDescription(trans, "test", "test", "test", "test", "test");
407 assertTrue(retVal.status == 0);
410 public void setPsByStartAndTarget(PermDAO PermDAOObj, PSInfo psInfoObj, String fieldName) {
413 PermDAOField = PermDAO.class.getDeclaredField(fieldName);
415 PermDAOField.setAccessible(true);
416 // remove final modifier from field
417 Field modifiersField = Field.class.getDeclaredField("modifiers");
418 modifiersField.setAccessible(true);
419 // modifiersField.setInt(PermDAOField, PermDAOField.getModifiers() & ~Modifier.FINAL);
421 PermDAOField.set(PermDAOObj, psInfoObj);
422 } catch (NoSuchFieldException | SecurityException e) {
423 // TODO Auto-generated catch block
425 } catch (IllegalArgumentException e) {
426 // TODO Auto-generated catch block
428 } catch (IllegalAccessException e) {
429 // TODO Auto-generated catch block
435 public void testWasMOdified() {
436 TimeTaken tt = Mockito.mock(TimeTaken.class);
437 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
438 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
439 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
440 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
441 Mockito.doReturn(tt).when(trans).start("DELETE Future",Env.REMOTE);
442 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
443 Mockito.doNothing().when(tt).done();
444 PermDAO.Data data = new PermDAO.Data();
445 PSInfo createPS = Mockito.mock(PSInfo.class);
447 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
448 Result<ResultSet> rs1 = new Result<ResultSet>(null,0,"test",new String[0]);
449 Result<Void> rs2 = new Result<Void>(null,0,"test",new String[0]);
450 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
452 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
453 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
455 PermDAOImpl daoObj = null;
457 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, createPS );
458 } catch (APIException | IOException e) {
459 // TODO Auto-generated catch block
462 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test"});
464 daoObj.wasModified(trans, CRUD.create, data, new String[] {});
465 daoObj.wasModified(trans, CRUD.create, data, new String[] {null});
466 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test",null});
467 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test","test"});
469 rs1 = new Result<ResultSet>(null,1,"test",new String[0]);
470 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
471 daoObj.wasModified(trans, CRUD.delete, data, new String[] {"test","test"});
475 public void testSecondConstructor() {
476 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
477 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
479 PermDAO daoObj = new PermDAO(trans, historyDAO, cacheInfoDAO);
484 public void testFutureLoader(){
485 Class<?> innerClass = null;
486 Class<?>[] innerClassArr = PermDAO.class.getDeclaredClasses();
487 for(Class indCls:innerClassArr) {
488 if(indCls.getName().contains("PermLoader")) {
494 Constructor<?> constructor = innerClass.getDeclaredConstructors()[0];
495 constructor.setAccessible(true);
499 Object obj = constructor.newInstance(1);
500 Method innnerClassMtd;
502 PermDAO.Data data = new PermDAO.Data();
503 Row row = Mockito.mock(Row.class);
504 ByteBuffer bbObj = ByteBuffer.allocateDirect(10);
506 bbObj.put(0, new Byte("0"));
507 bbObj.put(1, new Byte("1"));
508 bbObj.put(2, new Byte("2"));
509 Mockito.doReturn(bbObj).when(row).getBytesUnsafe(1);
511 innnerClassMtd = innerClass.getMethod("load", new Class[] {PermDAO.Data.class, Row.class});
512 innnerClassMtd.invoke(obj, new Object[] {data, row});
514 innnerClassMtd = innerClass.getDeclaredMethod("key", new Class[] {PermDAO.Data.class, Integer.TYPE, Object[].class });
515 innnerClassMtd.invoke(obj, new Object[] {data, 1, new Object[] {"test","test","test","test","test"} });
517 innnerClassMtd = innerClass.getDeclaredMethod("body", new Class[] {PermDAO.Data.class, Integer.TYPE, Object[].class });
518 innnerClassMtd.invoke(obj, new Object[] {data, 1, new Object[] {"test","test","test","test","test","test","test","test","test","test","test"} });
520 DataOutputStream dos = new DataOutputStream(new FileOutputStream("JU_PermDAOTest.java"));
521 innnerClassMtd = innerClass.getDeclaredMethod("marshal", new Class[] {PermDAO.Data.class, DataOutputStream.class });
522 innnerClassMtd.invoke(obj, new Object[] {data, dos });
524 DataInputStream dis = new DataInputStream(new FileInputStream("JU_PermDAOTest.java"));
525 innnerClassMtd = innerClass.getDeclaredMethod("unmarshal", new Class[] {PermDAO.Data.class, DataInputStream.class });
526 innnerClassMtd.invoke(obj, new Object[] {data, dis });
528 } catch (InstantiationException e) {
529 // TODO Auto-generated catch block
531 } catch (IllegalAccessException e) {
532 // TODO Auto-generated catch block
534 } catch (IllegalArgumentException e) {
535 // TODO Auto-generated catch block
537 } catch (InvocationTargetException e) {
538 // TODO Auto-generated catch block
540 } catch (NoSuchMethodException e) {
541 // TODO Auto-generated catch block
543 } catch (SecurityException e) {
544 // TODO Auto-generated catch block
546 } catch (FileNotFoundException e) {
547 // TODO Auto-generated catch block
553 public void testData() {
554 PermDAO.Data data = new PermDAO.Data();
555 NsSplit nss = new NsSplit("test", "test");
556 data = new PermDAO.Data(nss, "test", "test");
560 assertTrue("test.test|test|test".equalsIgnoreCase(data.fullPerm()));
562 Question q = Mockito.mock( Question.class);
564 Result<NsSplit> rs = new Result<NsSplit>(nss,0,"test",new Object[0]);
565 Mockito.doReturn(rs).when(q).deriveNsSplit(trans, "test");
566 Result<Data> retVal= PermDAO.Data.decode(trans, q, "test|||");
567 assertTrue(retVal.status==0);
568 Result<String[]> retVal1= PermDAO.Data.decodeToArray(trans, q, "test|||");
569 assertTrue(retVal.status==0);
570 retVal= PermDAO.Data.decode(trans, q, "test||");
571 retVal1= PermDAO.Data.decodeToArray(trans, q, "test||");
572 assertTrue(retVal.status==0);
574 rs = new Result<NsSplit>(nss,1,"test",new Object[0]);
575 Mockito.doReturn(rs).when(q).deriveNsSplit(trans, "test");
576 retVal= PermDAO.Data.decode(trans, q, "test||");
577 retVal1= PermDAO.Data.decodeToArray(trans, q, "test||");
578 assertTrue(retVal.status==1);
580 retVal= PermDAO.Data.decode(trans, q, "test|");
581 retVal1= PermDAO.Data.decodeToArray(trans, q, "test|");
582 assertTrue(retVal.status==4);
584 NsDAO.Data ns = new NsDAO.Data();
586 PermDAO.Data.create(ns, "test");
588 PermDAO.Data.create(trans,q, "test");
589 rs = new Result<NsSplit>(nss,0,"test",new Object[0]);
590 Mockito.doReturn(rs).when(q).deriveNsSplit(trans, "test");
591 PermDAO.Data.create(trans,q, "test|test|test|test");
596 class PermDAOImpl extends PermDAO{
597 public PermDAOImpl(AuthzTrans trans, HistoryDAO historyDAO,CacheInfoDAO cacheDao, PSInfo readPS) throws APIException, IOException {
598 super(trans, historyDAO, cacheDao);
599 setPs(this, readPS, "createPS");
602 public PermDAOImpl(AuthzTrans trans, HistoryDAO historyDAO,CacheInfoDAO cacheDao, PSInfo readPS, Session session ) throws APIException, IOException {
603 super(trans, historyDAO, cacheDao);
604 setPs(this, readPS, "createPS");
605 setSession(this, session);
609 public void setPs(PermDAOImpl PermDAOObj, PSInfo psInfoObj, String methodName) {
612 PermDAOField = CassDAOImpl.class.getDeclaredField(methodName);
614 PermDAOField.setAccessible(true);
615 // remove final modifier from field
616 Field modifiersField = Field.class.getDeclaredField("modifiers");
617 modifiersField.setAccessible(true);
618 // modifiersField.setInt(PermDAOField, PermDAOField.getModifiers() & ~Modifier.FINAL);
620 PermDAOField.set(PermDAOObj, psInfoObj);
621 } catch (NoSuchFieldException | SecurityException e) {
622 // TODO Auto-generated catch block
624 } catch (IllegalArgumentException e) {
625 // TODO Auto-generated catch block
627 } catch (IllegalAccessException e) {
628 // TODO Auto-generated catch block
633 public void setSession(PermDAOImpl approvalDaoObj, Session session) {
636 nsDaoField = AbsCassDAO.class.getDeclaredField("session");
638 nsDaoField.setAccessible(true);
639 // remove final modifier from field
640 Field modifiersField = Field.class.getDeclaredField("modifiers");
641 modifiersField.setAccessible(true);
642 // modifiersField.setInt(nsDaoField, nsDaoField.getModifiers() & ~Modifier.FINAL);
644 nsDaoField.set(approvalDaoObj, session);
645 } catch (NoSuchFieldException | SecurityException e) {
646 // TODO Auto-generated catch block
648 } catch (IllegalArgumentException e) {
649 // TODO Auto-generated catch block
651 } catch (IllegalAccessException e) {
652 // TODO Auto-generated catch block