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.ByteArrayInputStream;
28 import java.io.ByteArrayOutputStream;
29 import java.io.DataInputStream;
30 import java.io.DataOutputStream;
31 import java.io.FileNotFoundException;
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.List;
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.mockito.Mock;
43 import org.mockito.Mockito;
44 import org.onap.aaf.auth.dao.AbsCassDAO;
45 import org.onap.aaf.auth.dao.AbsCassDAO.CRUD;
46 import org.onap.aaf.auth.dao.AbsCassDAO.PSInfo;
47 import org.onap.aaf.auth.dao.CassAccess;
48 import org.onap.aaf.auth.dao.CassDAOImpl;
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.env.AuthzTrans;
52 import org.onap.aaf.auth.layer.Result;
53 import org.onap.aaf.cadi.config.Config;
54 import org.onap.aaf.misc.env.APIException;
55 import org.onap.aaf.misc.env.Env;
56 import org.onap.aaf.misc.env.LogTarget;
57 import org.onap.aaf.misc.env.TimeTaken;
59 import com.datastax.driver.core.Cluster;
60 import com.datastax.driver.core.ResultSet;
61 import com.datastax.driver.core.Row;
62 import com.datastax.driver.core.Session;
64 public class JU_PermDAO {
74 public void setUp() throws APIException, IOException {
76 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).warn();
77 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
78 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug();
79 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info();
80 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).init();
81 Mockito.doReturn("100").when(trans).getProperty(Config.CADI_LATITUDE);
82 Mockito.doReturn("100").when(trans).getProperty(Config.CADI_LONGITUDE);
83 Mockito.doReturn(session).when(cluster).connect("test");
87 public void testInit() {
88 TimeTaken tt = Mockito.mock(TimeTaken.class);
89 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
90 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
91 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
92 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
94 Session session = Mockito.mock(Session.class);
95 PermDAO daoObj = new PermDAO(trans, cluster, "test");
96 } catch (APIException | IOException e) {
97 // TODO Auto-generated catch block
103 public void testReadByStartAndTarget() {
104 TimeTaken tt = Mockito.mock(TimeTaken.class);
105 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
106 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
107 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
108 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
109 PermDAO daoObj = null;
111 Session session = Mockito.mock(Session.class);
112 daoObj = new PermDAO(trans, cluster, "test");
113 } catch (APIException | IOException e) {
114 // TODO Auto-generated catch block
118 PSInfo psObj = Mockito.mock(PSInfo.class);
119 setPsByStartAndTarget(daoObj, psObj, "psByType");
121 Result<List<PermDAO.Data>> rs1 = new Result<List<PermDAO.Data>>(null,0,"test",new String[0]);
122 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAO READ", new Object[]{"test"});
124 daoObj.readByType(trans, "test", "test");
127 public void testReadChildren() {
128 TimeTaken tt = Mockito.mock(TimeTaken.class);
129 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
130 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
131 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
132 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
133 PermDAO daoObj = null;
135 Session session = Mockito.mock(Session.class);
136 daoObj = new PermDAO(trans, cluster, "test");
137 } catch (APIException | IOException e) {
138 // TODO Auto-generated catch block
142 PSInfo psObj = Mockito.mock(PSInfo.class);
143 setPsByStartAndTarget(daoObj, psObj, "psChildren");
145 Result<List<PermDAO.Data>> rs1 = new Result<List<PermDAO.Data>>(null,0,"test",new String[0]);
146 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAO READ", new Object[]{"test"});
148 daoObj.readChildren(trans, "test", "test");
151 public void testReadNs() {
152 TimeTaken tt = Mockito.mock(TimeTaken.class);
153 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
154 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
155 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
156 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
157 PermDAO daoObj = null;
159 Session session = Mockito.mock(Session.class);
160 daoObj = new PermDAO(trans, cluster, "test");
161 } catch (APIException | IOException e) {
162 // TODO Auto-generated catch block
166 PSInfo psObj = Mockito.mock(PSInfo.class);
167 setPsByStartAndTarget(daoObj, psObj, "psNS");
169 Result<List<PermDAO.Data>> rs1 = new Result<List<PermDAO.Data>>(null,0,"test",new String[0]);
170 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAO READ", new Object[]{"test"});
172 daoObj.readNS(trans, "test");
175 public void testAddRole() {
176 PSInfo psObj = Mockito.mock(PSInfo.class);
177 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
178 PermDAO.Data data = new PermDAO.Data();
179 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
180 PermDAOImpl daoObj=null;
182 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, Mockito.mock(Session.class));
183 } catch (APIException | IOException e) {
184 // TODO Auto-generated catch block
188 TimeTaken tt = Mockito.mock(TimeTaken.class);
189 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
190 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
191 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
192 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
194 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
195 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
196 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
197 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
199 Result<List<Data>> rs1 = new Result<List<Data>>(null,0,"test",new String[0]);
200 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl CREATE", data);
201 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl UPDATE", data);
202 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAOImpl READ", data);
203 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl DELETE", data);
204 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
206 Result<Void> rs2 = new Result<Void>(null,0,"test",new String[0]);
207 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
209 rs1 = new Result<List<Data>>(null,1,"test",new String[0]);
210 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
211 Mockito.doReturn("test user").when(trans).user();
214 cbField = CassAccess.class.getDeclaredField("cb");
215 cbField.setAccessible(true);
216 cbField.set(daoObj, null);
217 } catch (NoSuchFieldException | SecurityException e) {
218 // TODO Auto-generated catch block
220 } catch (IllegalArgumentException e) {
221 // TODO Auto-generated catch block
223 } catch (IllegalAccessException e) {
224 // TODO Auto-generated catch block
228 PermDAO.Data perm = new PermDAO.Data();
229 Result<Void> retVal = daoObj.addRole(trans, perm, "test");
230 assertTrue(retVal.status == 9);
234 owningField = AbsCassDAO.class.getDeclaredField("owningDAO");
235 owningField.setAccessible(true);
236 owningField.set(daoObj, null);
237 } catch (NoSuchFieldException | SecurityException e) {
238 // TODO Auto-generated catch block
240 } catch (IllegalArgumentException e) {
241 // TODO Auto-generated catch block
243 } catch (IllegalAccessException e) {
244 // TODO Auto-generated catch block
247 retVal = daoObj.addRole(trans, perm, "test");
248 assertTrue(retVal.status == 0);
252 public void testDelRole() {
253 PSInfo psObj = Mockito.mock(PSInfo.class);
254 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
255 PermDAO.Data data = new PermDAO.Data();
256 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
257 PermDAOImpl daoObj=null;
259 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, Mockito.mock(Session.class));
260 } catch (APIException | IOException e) {
261 // TODO Auto-generated catch block
265 TimeTaken tt = Mockito.mock(TimeTaken.class);
266 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
267 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
268 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
269 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
271 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
272 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
273 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
274 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
276 Result<List<Data>> rs1 = new Result<List<Data>>(null,0,"test",new String[0]);
277 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl CREATE", data);
278 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl UPDATE", data);
279 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAOImpl READ", data);
280 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl DELETE", data);
281 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
283 Result<Void> rs2 = new Result<Void>(null,0,"test",new String[0]);
284 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
286 rs1 = new Result<List<Data>>(null,1,"test",new String[0]);
287 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
288 Mockito.doReturn("test user").when(trans).user();
290 PermDAO.Data perm = new PermDAO.Data();
293 cbField = CassAccess.class.getDeclaredField("cb");
294 cbField.setAccessible(true);
295 cbField.set(daoObj, null);
296 } catch (NoSuchFieldException | SecurityException e) {
297 // TODO Auto-generated catch block
299 } catch (IllegalArgumentException e) {
300 // TODO Auto-generated catch block
302 } catch (IllegalAccessException e) {
303 // TODO Auto-generated catch block
307 Result<Void> retVal = daoObj.delRole(trans, perm, "test");
308 assertTrue(retVal.status == 9);
310 Field owningDaoField;
312 owningDaoField = AbsCassDAO.class.getDeclaredField("owningDAO");
313 owningDaoField.setAccessible(true);
314 owningDaoField.set(daoObj, null);
315 } catch (NoSuchFieldException | SecurityException e) {
316 // TODO Auto-generated catch block
318 } catch (IllegalArgumentException e) {
319 // TODO Auto-generated catch block
321 } catch (IllegalAccessException e) {
322 // TODO Auto-generated catch block
325 retVal = daoObj.delRole(trans, perm, "test");
326 assertTrue(retVal.status == 0);
330 public void testAddDescription() {
331 PSInfo psObj = Mockito.mock(PSInfo.class);
332 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
333 PermDAO.Data data = new PermDAO.Data();
334 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
335 PermDAOImpl daoObj=null;
337 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, psObj, Mockito.mock(Session.class));
338 } catch (APIException | IOException e) {
339 // TODO Auto-generated catch block
343 TimeTaken tt = Mockito.mock(TimeTaken.class);
344 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
345 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
346 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
347 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
349 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"100");
350 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_PORT,"9042");
351 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,"100");
352 Mockito.doReturn("100").when(trans).getProperty(CassAccess.CASSANDRA_CLUSTERS_USER_NAME,null);
354 Result<List<Data>> rs1 = new Result<List<Data>>(null,0,"test",new String[0]);
355 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl CREATE", data);
356 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl UPDATE", data);
357 Mockito.doReturn(rs1).when(psObj).read(trans, "PermDAOImpl READ", data);
358 Mockito.doReturn(rs1).when(psObj).exec(trans, "PermDAOImpl DELETE", data);
359 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
361 Result<Void> rs2 = new Result<Void>(null,1,"test",new String[0]);
362 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
364 rs1 = new Result<List<Data>>(null,1,"test",new String[0]);
365 Mockito.doReturn(rs1).when(cacheInfoDAO).touch(Mockito.any(), Mockito.anyString(), Mockito.anyInt());
366 Mockito.doReturn("test user").when(trans).user();
368 PermDAO.Data perm = new PermDAO.Data();
371 cbField = CassAccess.class.getDeclaredField("cb");
372 cbField.setAccessible(true);
373 cbField.set(daoObj, null);
374 } catch (NoSuchFieldException | SecurityException e) {
375 // TODO Auto-generated catch block
377 } catch (IllegalArgumentException e) {
378 // TODO Auto-generated catch block
380 } catch (IllegalAccessException e) {
381 // TODO Auto-generated catch block
385 Result<Void> retVal = daoObj.addDescription(trans, "test", "test", "test", "test", "test");
386 assertTrue(retVal.status == 9);
388 Field owningDaoField;
390 owningDaoField = AbsCassDAO.class.getDeclaredField("owningDAO");
391 owningDaoField.setAccessible(true);
392 owningDaoField.set(daoObj, null);
393 } catch (NoSuchFieldException | SecurityException e) {
394 // TODO Auto-generated catch block
396 } catch (IllegalArgumentException e) {
397 // TODO Auto-generated catch block
399 } catch (IllegalAccessException e) {
400 // TODO Auto-generated catch block
403 retVal = daoObj.addDescription(trans, "test", "test", "test", "test", "test");
404 assertTrue(retVal.status == 0);
407 public void setPsByStartAndTarget(PermDAO PermDAOObj, PSInfo psInfoObj, String fieldName) {
410 PermDAOField = PermDAO.class.getDeclaredField(fieldName);
412 PermDAOField.setAccessible(true);
413 // remove final modifier from field
414 Field modifiersField = Field.class.getDeclaredField("modifiers");
415 modifiersField.setAccessible(true);
416 // modifiersField.setInt(PermDAOField, PermDAOField.getModifiers() & ~Modifier.FINAL);
418 PermDAOField.set(PermDAOObj, psInfoObj);
419 } catch (NoSuchFieldException | SecurityException e) {
420 // TODO Auto-generated catch block
422 } catch (IllegalArgumentException e) {
423 // TODO Auto-generated catch block
425 } catch (IllegalAccessException e) {
426 // TODO Auto-generated catch block
432 public void testWasMOdified() {
433 TimeTaken tt = Mockito.mock(TimeTaken.class);
434 Mockito.doReturn(tt).when(trans).start("PermDAO CREATE", Env.REMOTE);
435 Mockito.doReturn(tt).when(trans).start("Clear Reset Deque", Env.SUB);
436 Mockito.doReturn(tt).when(trans).start("New Cassandra Session", Env.SUB);
437 Mockito.doReturn(tt).when(trans).start("Preparing PSInfo CREATE on PermDAO", Env.SUB);
438 Mockito.doReturn(tt).when(trans).start("DELETE Future",Env.REMOTE);
439 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
440 Mockito.doNothing().when(tt).done();
441 PermDAO.Data data = new PermDAO.Data();
442 PSInfo createPS = Mockito.mock(PSInfo.class);
444 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
445 Result<ResultSet> rs1 = new Result<ResultSet>(null,0,"test",new String[0]);
446 Result<Void> rs2 = new Result<Void>(null,0,"test",new String[0]);
447 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
449 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
450 Mockito.doReturn(rs2).when(cacheInfoDAO).touch(Mockito.any(AuthzTrans.class),Mockito.anyString(), Mockito.anyVararg());
452 PermDAOImpl daoObj = null;
454 daoObj = new PermDAOImpl(trans, historyDAO, cacheInfoDAO, createPS );
455 } catch (APIException | IOException e) {
456 // TODO Auto-generated catch block
459 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test"});
461 daoObj.wasModified(trans, CRUD.create, data, new String[] {});
462 daoObj.wasModified(trans, CRUD.create, data, new String[] {null});
463 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test",null});
464 daoObj.wasModified(trans, CRUD.create, data, new String[] {"test","test"});
466 rs1 = new Result<ResultSet>(null,1,"test",new String[0]);
467 Mockito.doReturn(rs1).when(historyDAO).create(Mockito.any(), Mockito.any());
468 daoObj.wasModified(trans, CRUD.delete, data, new String[] {"test","test"});
472 public void testSecondConstructor() {
473 HistoryDAO historyDAO = Mockito.mock(HistoryDAO.class);
474 CacheInfoDAO cacheInfoDAO = Mockito.mock(CacheInfoDAO.class);
476 PermDAO daoObj = new PermDAO(trans, historyDAO, cacheInfoDAO);
481 public void testFutureLoader(){
482 Class<?> innerClass = null;
483 Class<?>[] innerClassArr = PermDAO.class.getDeclaredClasses();
484 for(Class indCls:innerClassArr) {
485 if(indCls.getName().contains("PermLoader")) {
491 Constructor<?> constructor = innerClass.getDeclaredConstructors()[0];
492 constructor.setAccessible(true);
496 Object obj = constructor.newInstance(1);
497 Method innnerClassMtd;
499 PermDAO.Data data = new PermDAO.Data();
500 Row row = Mockito.mock(Row.class);
501 ByteBuffer bbObj = ByteBuffer.allocateDirect(10);
503 bbObj.put(0, new Byte("0"));
504 bbObj.put(1, new Byte("1"));
505 bbObj.put(2, new Byte("2"));
506 Mockito.doReturn(bbObj).when(row).getBytesUnsafe(1);
508 innnerClassMtd = innerClass.getMethod("load", new Class[] {PermDAO.Data.class, Row.class});
509 innnerClassMtd.invoke(obj, new Object[] {data, row});
511 innnerClassMtd = innerClass.getDeclaredMethod("key", new Class[] {PermDAO.Data.class, Integer.TYPE, Object[].class });
512 innnerClassMtd.invoke(obj, new Object[] {data, 1, new Object[] {"test","test","test","test","test"} });
514 innnerClassMtd = innerClass.getDeclaredMethod("body", new Class[] {PermDAO.Data.class, Integer.TYPE, Object[].class });
515 innnerClassMtd.invoke(obj, new Object[] {data, 1, new Object[] {"test","test","test","test","test","test","test","test","test","test","test"} });
517 ByteArrayOutputStream baos = new ByteArrayOutputStream();
518 DataOutputStream dos = new DataOutputStream(baos);
519 innnerClassMtd = innerClass.getDeclaredMethod("marshal", new Class[] {PermDAO.Data.class, DataOutputStream.class });
520 innnerClassMtd.invoke(obj, new Object[] {data, dos });
522 ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
523 DataInputStream dis = new DataInputStream(bais);
524 innnerClassMtd = innerClass.getDeclaredMethod("unmarshal", new Class[] {PermDAO.Data.class, DataInputStream.class });
525 innnerClassMtd.invoke(obj, new Object[] {data, dis });
527 } catch (InstantiationException e) {
528 // TODO Auto-generated catch block
530 } catch (IllegalAccessException e) {
531 // TODO Auto-generated catch block
533 } catch (IllegalArgumentException e) {
534 // TODO Auto-generated catch block
536 } catch (InvocationTargetException e) {
537 // TODO Auto-generated catch block
539 } catch (NoSuchMethodException e) {
540 // TODO Auto-generated catch block
542 } catch (SecurityException e) {
543 // TODO Auto-generated catch block
549 public void testData() {
550 PermDAO.Data data = new PermDAO.Data();
551 NsSplit nss = new NsSplit("test", "test");
552 data = new PermDAO.Data(nss, "test", "test");
556 assertTrue("test.test|test|test".equalsIgnoreCase(data.fullPerm()));
558 Question q = Mockito.mock( Question.class);
560 Result<NsSplit> rs = new Result<NsSplit>(nss,0,"test",new Object[0]);
561 Mockito.doReturn(rs).when(q).deriveNsSplit(trans, "test");
562 Result<Data> retVal= PermDAO.Data.decode(trans, q, "test|||");
563 assertTrue(retVal.status==0);
564 Result<String[]> retVal1= PermDAO.Data.decodeToArray(trans, q, "test|||");
565 assertTrue(retVal.status==0);
566 retVal= PermDAO.Data.decode(trans, q, "test||");
567 retVal1= PermDAO.Data.decodeToArray(trans, q, "test||");
568 assertTrue(retVal.status==0);
570 rs = new Result<NsSplit>(nss,1,"test",new Object[0]);
571 Mockito.doReturn(rs).when(q).deriveNsSplit(trans, "test");
572 retVal= PermDAO.Data.decode(trans, q, "test||");
573 retVal1= PermDAO.Data.decodeToArray(trans, q, "test||");
574 assertTrue(retVal.status==1);
576 retVal= PermDAO.Data.decode(trans, q, "test|");
577 retVal1= PermDAO.Data.decodeToArray(trans, q, "test|");
578 assertTrue(retVal.status==4);
580 NsDAO.Data ns = new NsDAO.Data();
582 PermDAO.Data.create(ns, "test");
584 PermDAO.Data.create(trans,q, "test");
585 rs = new Result<NsSplit>(nss,0,"test",new Object[0]);
586 Mockito.doReturn(rs).when(q).deriveNsSplit(trans, "test");
587 PermDAO.Data.create(trans,q, "test|test|test|test");
592 class PermDAOImpl extends PermDAO{
593 public PermDAOImpl(AuthzTrans trans, HistoryDAO historyDAO,CacheInfoDAO cacheDao, PSInfo readPS) throws APIException, IOException {
594 super(trans, historyDAO, cacheDao);
595 setPs(this, readPS, "createPS");
598 public PermDAOImpl(AuthzTrans trans, HistoryDAO historyDAO,CacheInfoDAO cacheDao, PSInfo readPS, Session session ) throws APIException, IOException {
599 super(trans, historyDAO, cacheDao);
600 setPs(this, readPS, "createPS");
601 setSession(this, session);
605 public void setPs(PermDAOImpl PermDAOObj, PSInfo psInfoObj, String methodName) {
608 PermDAOField = CassDAOImpl.class.getDeclaredField(methodName);
610 PermDAOField.setAccessible(true);
611 // remove final modifier from field
612 Field modifiersField = Field.class.getDeclaredField("modifiers");
613 modifiersField.setAccessible(true);
614 // modifiersField.setInt(PermDAOField, PermDAOField.getModifiers() & ~Modifier.FINAL);
616 PermDAOField.set(PermDAOObj, psInfoObj);
617 } catch (NoSuchFieldException | SecurityException e) {
618 // TODO Auto-generated catch block
620 } catch (IllegalArgumentException e) {
621 // TODO Auto-generated catch block
623 } catch (IllegalAccessException e) {
624 // TODO Auto-generated catch block
629 public void setSession(PermDAOImpl approvalDaoObj, Session session) {
632 nsDaoField = AbsCassDAO.class.getDeclaredField("session");
634 nsDaoField.setAccessible(true);
635 // remove final modifier from field
636 Field modifiersField = Field.class.getDeclaredField("modifiers");
637 modifiersField.setAccessible(true);
638 // modifiersField.setInt(nsDaoField, nsDaoField.getModifiers() & ~Modifier.FINAL);
640 nsDaoField.set(approvalDaoObj, session);
641 } catch (NoSuchFieldException | SecurityException e) {
642 // TODO Auto-generated catch block
644 } catch (IllegalArgumentException e) {
645 // TODO Auto-generated catch block
647 } catch (IllegalAccessException e) {
648 // TODO Auto-generated catch block