Post Init Service Starter
[aaf/authz.git] / auth / auth-cass / src / test / java / org / onap / aaf / auth / dao / hl / JU_Function.java
1 /*******************************************************************************
2  * ============LICENSE_START====================================================
3  * * org.onap.aaf
4  * * ===========================================================================
5  * * Copyright © 2017 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
23 package org.onap.aaf.auth.dao.hl;
24
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.mockito.MockitoAnnotations.initMocks;
28
29 import java.io.IOException;
30 import java.lang.reflect.InvocationTargetException;
31 import java.lang.reflect.Method;
32 import java.text.DateFormat;
33 import java.text.ParseException;
34 import java.text.SimpleDateFormat;
35 import java.util.ArrayList;
36 import java.util.Date;
37 import java.util.GregorianCalendar;
38 import java.util.HashSet;
39 import java.util.List;
40 import java.util.Properties;
41 import java.util.Set;
42 import java.util.UUID;
43
44 import org.junit.Before;
45 import org.junit.Test;
46 import org.mockito.Mock;
47 import org.mockito.Mockito;
48 import org.onap.aaf.auth.common.Define;
49 import org.onap.aaf.auth.dao.cached.CachedCredDAO;
50 import org.onap.aaf.auth.dao.cached.CachedNSDAO;
51 import org.onap.aaf.auth.dao.cached.CachedPermDAO;
52 import org.onap.aaf.auth.dao.cached.CachedRoleDAO;
53 import org.onap.aaf.auth.dao.cached.CachedUserRoleDAO;
54 import org.onap.aaf.auth.dao.cass.ApprovalDAO;
55 import org.onap.aaf.auth.dao.cass.CredDAO;
56 import org.onap.aaf.auth.dao.cass.FutureDAO;
57 import org.onap.aaf.auth.dao.cass.Namespace;
58 import org.onap.aaf.auth.dao.cass.NsDAO;
59 import org.onap.aaf.auth.dao.cass.NsSplit;
60 import org.onap.aaf.auth.dao.cass.NsType;
61 import org.onap.aaf.auth.dao.cass.PermDAO;
62 import org.onap.aaf.auth.dao.cass.RoleDAO;
63 import org.onap.aaf.auth.dao.cass.Status;
64 import org.onap.aaf.auth.dao.cass.UserRoleDAO;
65 import org.onap.aaf.auth.dao.hl.Function.FUTURE_OP;
66 import org.onap.aaf.auth.dao.hl.Function.Lookup;
67 import org.onap.aaf.auth.dao.hl.Question.Access;
68 import org.onap.aaf.auth.env.AuthzTrans;
69 import org.onap.aaf.auth.env.AuthzTrans.REQD_TYPE;
70 import org.onap.aaf.auth.layer.Result;
71 import org.onap.aaf.auth.org.Organization;
72 import org.onap.aaf.auth.org.Organization.Expiration;
73 import org.onap.aaf.auth.org.Organization.Identity;
74 import org.onap.aaf.auth.org.OrganizationException;
75 import org.onap.aaf.cadi.CadiException;
76 import org.onap.aaf.cadi.PropAccess;
77 import org.onap.aaf.cadi.config.Config;
78 import org.onap.aaf.misc.env.APIException;
79 import org.onap.aaf.misc.env.LogTarget;
80
81 public class JU_Function {
82
83         private static final Object NO_PARAM = new Object[0];
84         
85         @Mock
86     AuthzTrans trans;
87         @Mock
88         PropAccess access;
89         
90         @Mock
91         Question ques;
92         
93         @Mock 
94         Organization org;
95         
96         @Mock
97         CachedNSDAO nsDAO;
98         
99         @Mock
100         CachedRoleDAO roleDAO;
101
102         @Mock
103         CachedPermDAO permDAO;
104
105         @Mock
106         CachedCredDAO credDAO;
107
108         @Mock
109         CachedUserRoleDAO userRoleDAO;
110
111         @Mock
112         ApprovalDAO approvalDAO;
113
114         @Mock
115         FutureDAO futureDAO;
116
117         @Before
118         public void setUp() throws APIException, IOException {
119                 initMocks(this);
120                 Mockito.doReturn(org).when(trans).org();
121                 Mockito.doReturn(nsDAO).when(ques).nsDAO();
122                 Mockito.doReturn(roleDAO).when(ques).roleDAO();
123                 Mockito.doReturn(permDAO).when(ques).permDAO();
124                 Mockito.doReturn(credDAO).when(ques).credDAO();
125                 Mockito.doReturn(userRoleDAO).when(ques).userRoleDAO();
126                 Mockito.doReturn(approvalDAO).when(ques).approvalDAO();
127                 Mockito.doReturn(futureDAO).when(ques).futureDAO();
128
129                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
130                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).info();
131                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug();
132                 Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties();
133                 Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf");
134                 
135                 try {
136                         Define.set(access);
137                 } catch (CadiException e) {
138                 }
139         }
140
141         @Test
142         public void testCreateNs() {
143                 Namespace namespace = Mockito.mock(Namespace.class);
144                 namespace.name = "test.test";
145                 List<String> owner = new ArrayList<String>();
146                 namespace.owner = owner;
147
148                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(roleDAO).read(trans, "test","test");
149                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(permDAO).readByType(trans, "test","test");
150
151                 NsDAO.Data data = new NsDAO.Data();
152                 data.name="test";
153                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
154                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
155
156                 Result<Void> retVal = new Result<Void>(null,1,"test",NO_PARAM);
157                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
158                 //setQuestion(ques, cachedNS);
159                 
160                 Function funcObj = new Function(trans, ques);
161                 Result<Void>  result = funcObj.createNS(trans, namespace, true);
162                 assertTrue(3 == result.status);
163         }
164         
165         @Test
166         public void testCreateNsReadSuccess() {
167                 Namespace namespace = Mockito.mock(Namespace.class);
168                 namespace.name = "test.test";
169                 List<String> owner = new ArrayList<String>();
170                 owner.add("test");
171                 namespace.owner = owner;
172                 List<String> admin = new ArrayList<String>();
173                 admin.add("test");
174                 namespace.admin= admin;
175                 
176                 Organization org = Mockito.mock(Organization.class);
177                 Mockito.doReturn(org).when(trans).org();
178                 
179                 NsDAO.Data data = new NsDAO.Data();
180                 data.name="test";
181                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
182                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
183
184                 Result<Void> retVal = new Result<Void>(null,1,"test",NO_PARAM);
185                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
186                 
187                 Function funcObj = new Function(trans, ques);
188                 Result<Void>  result = funcObj.createNS(trans, namespace, true);
189                 assertTrue(3 == result.status);
190         }
191         
192         @Test
193         public void testCreateNsFromApprovaFalse() {
194                 Namespace namespace = Mockito.mock(Namespace.class);
195                 namespace.name = "test.test";
196                 List<String> owner = new ArrayList<String>();
197                 namespace.owner = owner;
198                 
199                 Organization org = Mockito.mock(Organization.class);
200                 Mockito.doReturn(org).when(trans).org();
201                 
202                 NsDAO.Data data = new NsDAO.Data();
203                 data.name="test";
204                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
205                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
206                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(data,1,"test",NO_PARAM);
207                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal1.value, Access.write);
208                 
209                 Function funcObj = new Function(trans, ques);
210                 Result<Void>  result = funcObj.createNS(trans, namespace, false);
211                 assertTrue(1 == result.status);
212                 
213                 Mockito.doReturn(retVal2).when(ques).deriveNs(trans, "test");
214                 funcObj = new Function(trans, ques);
215                 result = funcObj.createNS(trans, namespace, false);
216                 assertTrue(1 == result.status);
217         }
218         
219         @Test
220         public void testCreateNsownerLoop() {
221                 Namespace namespace = Mockito.mock(Namespace.class);
222                 namespace.name = "test.test";
223                 List<String> owner = new ArrayList<String>();
224                 owner.add("test");
225                 namespace.owner = owner;
226                 
227                 Organization org = Mockito.mock(Organization.class);
228                 Mockito.doReturn(org).when(trans).org();
229                 Mockito.doReturn(org).when(trans).org();
230                 
231                 Function funcObj = new Function(trans, ques);
232                 Result<Void>  result = funcObj.createNS(trans, namespace, true);
233                 assertTrue(result.status == Status.ERR_Policy);
234                 assertTrue(result.details.contains("is not a valid user at"));
235                 
236                 Identity iden=Mockito.mock(Identity.class);
237                 try {
238                         Mockito.doReturn(iden).when(org).getIdentity(trans, "test");
239                         Mockito.doReturn("test").when(iden).mayOwn();
240                 } catch (OrganizationException e) {
241                         // TODO Auto-generated catch block
242                         e.printStackTrace();
243                 }
244                 result = funcObj.createNS(trans, namespace, true);
245                 assertTrue(result.status == Status.ERR_Policy);
246                 assertTrue(result.details.contains("is an invalid Identity"));
247
248                 Mockito.doReturn(true).when(iden).isFound();
249                 result = funcObj.createNS(trans, namespace, true);
250                 assertTrue(result.status == Status.ERR_Policy);
251                 assertTrue(result.details.contains("cannot be the owner of the namespace "));
252                 
253                 Mockito.doReturn(true).when(org).isTestEnv();
254                 try {
255                         Mockito.doReturn("test").when(org).validate(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
256                         result = funcObj.createNS(trans, namespace, true);
257                         assertTrue(result.status == Status.ERR_Policy);
258                         assertTrue(result.details.contains("cannot be the owner of the namespace "));
259                 } catch (OrganizationException e) {
260                         // TODO Auto-generated catch block
261                         e.printStackTrace();
262                 }
263         }
264         
265         @Test
266         public void testCreateNsownerLoopException() {
267                 Namespace namespace = Mockito.mock(Namespace.class);
268                 namespace.name = "test";
269                 List<String> owner = new ArrayList<String>();
270                 owner.add("test");
271                 namespace.owner = owner;
272                 
273                 Organization org = Mockito.mock(Organization.class);
274                 Mockito.doReturn(org).when(trans).org();
275                 
276                 Function funcObj = new Function(trans, ques);
277                 
278                 Identity iden=Mockito.mock(Identity.class);
279                 try {
280                         Mockito.doThrow(new OrganizationException()).when(org).getIdentity(trans, "test");
281                         Mockito.doReturn("test").when(iden).mayOwn();
282                 } catch (OrganizationException e) {
283                         // TODO Auto-generated catch block
284                         e.printStackTrace();
285                 }
286                 
287                 NsDAO.Data data = new NsDAO.Data();
288                 data.name="test";
289                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,1,"test",NO_PARAM);
290                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
291                 
292                 Result<Void> result = funcObj.createNS(trans, namespace, true);
293                 assertTrue(result.status == Status.ERR_Security);
294                 assertTrue(result.details.contains("may not create Root Namespaces"));
295                 
296                 Mockito.doReturn(true).when(ques).isGranted(Mockito.any(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
297                 retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
298                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, null);
299                 
300                 Result<Void> retVal = new Result<Void>(null,1,"test",NO_PARAM);
301                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
302                 
303                 result = funcObj.createNS(trans, namespace, true);
304                 assertTrue(24 == result.status);
305                 
306         }
307
308         @Test
309         public void testCreateNsAdminLoop() {
310                 Namespace namespace = Mockito.mock(Namespace.class);
311                 namespace.name = "test.test";
312                 List<String> owner = new ArrayList<String>();
313                 owner.add("test");
314                 namespace.owner = owner;
315                 namespace.admin = owner;
316                 
317                 Organization org = Mockito.mock(Organization.class);
318                 Mockito.doReturn(org).when(trans).org();
319                 
320                 NsDAO.Data data = new NsDAO.Data();
321                 data.name="test";
322                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
323                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
324                 
325                 Result<Void> retVal = new Result<Void>(null,1,"test",NO_PARAM);
326                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());
327                 Mockito.doReturn(retVal).when(nsDAO).create(Mockito.any(), Mockito.any());
328                 List<CredDAO.Data> dataObj = new ArrayList<>();
329                 CredDAO.Data indData = new CredDAO.Data();
330                 indData.id = "test";
331                 indData.notes = "test";
332                 DateFormat sdf = new SimpleDateFormat("yyyy/mm/dd");
333                 try {
334                         indData.expires = sdf.parse("2090/01/01");
335                 } catch (ParseException e1) {
336                         // TODO Auto-generated catch block
337                         e1.printStackTrace();
338                 }
339                 dataObj.add(indData);
340                 Result<List<CredDAO.Data>> retVal2 = new Result<List<CredDAO.Data>>(dataObj,0,"test",NO_PARAM);
341                 Mockito.doReturn(retVal2).when(credDAO).readID(Mockito.any(), Mockito.anyString());             
342                 
343                 Identity iden=Mockito.mock(Identity.class);
344                 try {
345                         Mockito.doReturn(iden).when(org).getIdentity(trans, "test");
346                         Mockito.doReturn("test").when(iden).mayOwn();
347                         Mockito.doReturn(true).when(org).isTestEnv();
348                 } catch (OrganizationException e) {
349                         // TODO Auto-generated catch block
350                         e.printStackTrace();
351                 }
352                 
353                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(roleDAO).read(trans, "test","test");
354                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(permDAO).readByType(trans, "test","test");
355
356                 Function funcObj = new Function(trans, ques);
357                 Result<Void>  result = funcObj.createNS(trans, namespace, true);
358                 assertTrue(result.status == 1);
359                 
360         }
361         
362         @Test
363         public void testCreateNsAdminLoopCreateSucReadChildrenFailure() {
364                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
365                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).debug();
366                 Mockito.doReturn(Mockito.mock(Properties.class)).when(access).getProperties();
367                 Mockito.doReturn("test.test").when(access).getProperty(Config.AAF_ROOT_NS,"org.osaaf.aaf");
368                 try {
369                         Define.set(access);
370                 } catch (CadiException e) {
371                         // TODO Auto-generated catch block
372                         e.printStackTrace();
373                 }
374                 Namespace namespace = Mockito.mock(Namespace.class);
375                 namespace.name = "test.test";
376                 List<String> owner = new ArrayList<String>();
377                 owner.add("test");
378                 namespace.owner = owner;
379                 namespace.admin = owner;
380                 
381                 Organization org = Mockito.mock(Organization.class);
382                 Mockito.doReturn(org).when(trans).org();
383                 
384                 NsDAO.Data data = new NsDAO.Data();
385                 data.name="test";
386                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
387                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
388                 
389                 Result<Void> retVal = new Result<Void>(null,0,"test",NO_PARAM);
390                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());
391                 Mockito.doReturn(retVal).when(nsDAO).create(Mockito.any(), Mockito.any());
392                 List<CredDAO.Data> dataObj = new ArrayList<>();
393                 CredDAO.Data indData = new CredDAO.Data();
394                 indData.id = "test";
395                 indData.notes = "test";
396                 DateFormat sdf = new SimpleDateFormat("yyyy/mm/dd");
397                 try {
398                         indData.expires = sdf.parse("2090/01/01");
399                 } catch (ParseException e1) {
400                         // TODO Auto-generated catch block
401                         e1.printStackTrace();
402                 }
403                 dataObj.add(indData);
404                 List<RoleDAO.Data> dataObj1 = new ArrayList<>();
405                 RoleDAO.Data indData1 = new RoleDAO.Data();
406                 indData1.ns = "test";
407                 indData1.name = "test";
408                 Set<String> permsSet = new HashSet<>();
409                 permsSet.add("test|test");
410                 indData1.perms = permsSet;
411                 dataObj1.add(indData1);
412                 
413                 List<UserRoleDAO.Data> dataObj4 = new ArrayList<>();
414                 UserRoleDAO.Data indData4 = new UserRoleDAO.Data();
415                 indData4.ns = "test";
416                 indData4.rname = "test";
417                 dataObj4.add(indData4);
418                 
419                 List<PermDAO.Data> dataObj5 = new ArrayList<>();
420                 PermDAO.Data indData5 = new PermDAO.Data();
421                 indData5.ns = "test";
422                 indData5.type = "test";
423                 dataObj5.add(indData5);
424                 
425                 Result<List<CredDAO.Data>> retVal2 = new Result<List<CredDAO.Data>>(dataObj,0,"test",NO_PARAM);
426                 Result<List<CredDAO.Data>> retVal6 = new Result<List<CredDAO.Data>>(dataObj,1,"test",NO_PARAM);
427                 Result<List<RoleDAO.Data>> retVal3 = new Result<List<RoleDAO.Data>>(dataObj1,0,"test",NO_PARAM);
428                 Result<List<UserRoleDAO.Data>> retVal4 = new Result<List<UserRoleDAO.Data>>(dataObj4,0,"test",NO_PARAM);
429                 Result<List<PermDAO.Data>> retVal5 = new Result<List<PermDAO.Data>>(dataObj5,0,"test",NO_PARAM);
430                 Mockito.doReturn(retVal2).when(credDAO).readID(Mockito.any(), Mockito.anyString());             
431                 Mockito.doReturn(retVal4).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());     
432                 Mockito.doReturn(retVal2).when(userRoleDAO).create(Mockito.any(), Mockito.any());       
433                 Mockito.doReturn(retVal6).when(roleDAO).create(Mockito.any(), Mockito.any());   
434                 Mockito.doReturn(retVal6).when(roleDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
435                 Mockito.doReturn(retVal2).when(permDAO).create(Mockito.any(), Mockito.any());   
436                 Mockito.doReturn(retVal5).when(permDAO).readChildren(trans, "test", "test");    
437                 Mockito.doReturn(retVal5).when(permDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
438                 Mockito.doReturn(retVal3).when(roleDAO).readChildren(trans, "test", "test");    
439                 
440                 Identity iden=Mockito.mock(Identity.class);
441                 try {
442                         Mockito.doReturn(iden).when(org).getIdentity(trans, "test");
443                         Mockito.doReturn("test").when(iden).mayOwn();
444                         Mockito.doReturn(true).when(org).isTestEnv();
445                         Mockito.doReturn(new GregorianCalendar(2010, 01, 01)).when(org).expiration(null, Expiration.UserInRole);
446                 } catch (OrganizationException e) {
447                         // TODO Auto-generated catch block
448                         e.printStackTrace();
449                 }
450                 
451                 Function funcObj = new Function(trans, ques);
452                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(roleDAO).read(trans, "test","test");
453                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(permDAO).readByType(trans, "test","test");
454
455                 Result<Void>  result = funcObj.createNS(trans, namespace, true);
456                 assertTrue(result.status == Status.ERR_ActionNotCompleted);
457                 
458         }
459         
460         @Test
461         public void testCreateNsAdminLoopCreateSuc() {
462                 Namespace namespace = Mockito.mock(Namespace.class);
463                 namespace.name = "test.test";
464                 List<String> owner = new ArrayList<String>();
465                 owner.add("test");
466                 namespace.owner = owner;
467                 namespace.admin = owner;
468                 
469                 Organization org = Mockito.mock(Organization.class);
470                 Mockito.doReturn(org).when(trans).org();
471                 
472                 NsDAO.Data data = new NsDAO.Data();
473                 data.name="test";
474                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
475                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
476                 
477                 Result<Void> retVal = new Result<Void>(null,0,"test",NO_PARAM);
478                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());
479                 Mockito.doReturn(retVal).when(nsDAO).create(Mockito.any(), Mockito.any());
480                 List<CredDAO.Data> dataObj = new ArrayList<>();
481                 CredDAO.Data indData = new CredDAO.Data();
482                 indData.id = "test";
483                 indData.notes = "test";
484                 DateFormat sdf = new SimpleDateFormat("yyyy/mm/dd");
485                 try {
486                         indData.expires = sdf.parse("2090/01/01");
487                 } catch (ParseException e1) {
488                         // TODO Auto-generated catch block
489                         e1.printStackTrace();
490                 }
491                 dataObj.add(indData);
492                 List<RoleDAO.Data> dataObj1 = new ArrayList<>();
493                 RoleDAO.Data indData1 = new RoleDAO.Data();
494                 indData1.ns = "test";
495                 indData1.name = "test";
496                 Set<String> permsSet = new HashSet<>();
497                 permsSet.add("test|test|test|test");
498                 indData1.perms = permsSet;
499                 dataObj1.add(indData1);
500                 
501                 List<UserRoleDAO.Data> dataObj4 = new ArrayList<>();
502                 UserRoleDAO.Data indData4 = new UserRoleDAO.Data();
503                 indData4.ns = "test";
504                 indData4.rname = "test";
505                 dataObj4.add(indData4);
506                 
507                 List<PermDAO.Data> dataObj5 = new ArrayList<>();
508                 PermDAO.Data indData5 = new PermDAO.Data();
509                 indData5.ns = "test";
510                 indData5.type = "test";
511                 Set<String> rolesSet = new HashSet<>();
512                 rolesSet.add("test|test|test|test");
513                 indData5.roles = rolesSet;
514                 dataObj5.add(indData5);
515                 
516                 Result<List<CredDAO.Data>> retVal2 = new Result<List<CredDAO.Data>>(dataObj,0,"test",NO_PARAM);
517                 Result<List<RoleDAO.Data>> retVal3 = new Result<List<RoleDAO.Data>>(dataObj1,0,"test",NO_PARAM);
518                 Result<List<UserRoleDAO.Data>> retVal4 = new Result<List<UserRoleDAO.Data>>(dataObj4,0,"test",NO_PARAM);
519                 Result<List<PermDAO.Data>> retVal5 = new Result<List<PermDAO.Data>>(dataObj5,0,"test",NO_PARAM);
520                 Mockito.doReturn(retVal2).when(credDAO).readID(Mockito.any(), Mockito.anyString());             
521                 Mockito.doReturn(retVal4).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());     
522                 Mockito.doReturn(retVal2).when(userRoleDAO).create(Mockito.any(), Mockito.any());       
523                 Mockito.doReturn(retVal2).when(roleDAO).create(Mockito.any(), Mockito.any());   
524                 Mockito.doReturn(retVal2).when(roleDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
525                 Mockito.doReturn(retVal2).when(permDAO).create(Mockito.any(), Mockito.any());   
526                 Mockito.doReturn(retVal5).when(permDAO).readChildren(trans, "test", "test");    
527                 Mockito.doReturn(retVal5).when(permDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
528                 Mockito.doReturn(retVal3).when(roleDAO).readChildren(trans, "test", "test");    
529                 
530                 Identity iden=Mockito.mock(Identity.class);
531                 try {
532                         Mockito.doReturn(iden).when(org).getIdentity(trans, "test");
533                         Mockito.doReturn("test").when(iden).mayOwn();
534                         Mockito.doReturn(true).when(org).isTestEnv();
535                         Mockito.doReturn(new GregorianCalendar(2010, 01, 01)).when(org).expiration(null, Expiration.UserInRole);
536                 } catch (OrganizationException e) {
537                         // TODO Auto-generated catch block
538                         e.printStackTrace();
539                 }
540                 
541                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(roleDAO).read(trans, "test","test");
542                 Mockito.doReturn(Result.err(Result.ERR_NotFound, "Not Found")).when(permDAO).readByType(trans, "test","test");
543
544                 Function funcObj = new Function(trans, ques);
545                 Result<Void>  result = funcObj.createNS(trans, namespace, true);
546                 assertTrue(result.status == 0);
547                 
548         }
549         
550         @Test
551         public void test4DeleteNs() {
552                 Result<Void> retVal = new Result<Void>(null,1,"test",NO_PARAM);
553                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
554                 
555                 Function funcObj = new Function(trans, ques);
556                 Result<Void> result = funcObj.deleteNS(trans, "test");
557                 
558                 assertTrue(result.status == Status.ERR_NsNotFound);
559         }
560         
561         @Test
562         public void test4DeleteCanMoveFail() {
563                 List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
564                 NsDAO.Data dataObj = new NsDAO.Data();
565                 dataObj.type=1;
566                 dataAl.add(dataObj);
567                 Result<List<NsDAO.Data>> retVal = new Result<List<NsDAO.Data>>(dataAl,0,"test",NO_PARAM);
568                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
569                 
570                 Mockito.doReturn(false).when(ques).canMove(Mockito.any());
571                 Mockito.doReturn(retVal).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
572                 
573                 Function funcObj = new Function(trans, ques);
574                 Result<Void> result = funcObj.deleteNS(trans, "test");
575                 assertTrue(result.status == Status.ERR_Security);
576                 
577         }
578         
579         @Test
580         public void test4DeleteNsReadSuc() {
581                 List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
582                 NsDAO.Data dataObj = new NsDAO.Data();
583                 dataObj.type=1;
584                 dataAl.add(dataObj);
585                 Result<List<NsDAO.Data>> retVal = new Result<List<NsDAO.Data>>(dataAl,0,"test",NO_PARAM);
586                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
587                 
588                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,1,"test",NO_PARAM);
589                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
590                 
591                 Function funcObj = new Function(trans, ques);
592                 Result<Void> result = funcObj.deleteNS(trans, "test");
593                 assertTrue(result.status == 1);
594                 
595         }
596         
597         @Test
598         public void test4DeleteNsMayUserSuc() {
599                 List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
600                 NsDAO.Data dataObj = new NsDAO.Data();
601                 dataObj.type=1;
602                 dataAl.add(dataObj);
603                 Result<List<NsDAO.Data>> retVal = new Result<List<NsDAO.Data>>(dataAl,0,"test",NO_PARAM);
604                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
605                 
606                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
607                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
608                 
609                 Function funcObj = new Function(trans, ques);
610                 Result<Void> result = funcObj.deleteNS(trans, "test");
611                 assertTrue(result.status == 1);
612
613                 Mockito.doReturn(true).when(ques).isGranted(Mockito.any(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
614
615                 Mockito.doReturn(retVal2).when(credDAO).readNS(Mockito.any(), Mockito.anyString());             
616
617                 Result<List<PermDAO.Data>> retVal5 = new Result<List<PermDAO.Data>>(null,0,"test",NO_PARAM);
618                 Mockito.doReturn(retVal5).when(permDAO).readNS(trans, "test");
619                 
620                 List<UserRoleDAO.Data> dataObj4 = new ArrayList<>();
621                 UserRoleDAO.Data indData4 = new UserRoleDAO.Data();
622                 indData4.ns = "test";
623                 indData4.rname = "test";
624                 dataObj4.add(indData4);
625                 Result<List<UserRoleDAO.Data>> retVal4 = new Result<List<UserRoleDAO.Data>>(dataObj4,0,"test",NO_PARAM);
626                 Mockito.doReturn(retVal4).when(userRoleDAO).readByRole(trans, "test");
627                 
628                 List<RoleDAO.Data> dataObj1 = new ArrayList<>();
629                 RoleDAO.Data indData1 = new RoleDAO.Data();
630                 indData1.ns = "test";
631                 indData1.name = "test";
632                 Set<String> permsSet = new HashSet<>();
633                 permsSet.add("test|test");
634                 indData1.perms = permsSet;
635                 dataObj1.add(indData1);
636                 Result<List<RoleDAO.Data>> retVal3 = new Result<List<RoleDAO.Data>>(dataObj1,0,"test",NO_PARAM);
637                 Mockito.doReturn(retVal3).when(roleDAO).readNS(trans, "test");  
638                 Mockito.doReturn(retVal3).when(roleDAO).read(trans, indData1);
639                 
640                 funcObj = new Function(trans, ques);
641                 result = funcObj.deleteNS(trans, "test");
642                 assertTrue(result.status == Status.ERR_DependencyExists);
643                 
644                 Mockito.doReturn(retVal4).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());     
645                 
646                 Mockito.doReturn(true).when(trans).requested(REQD_TYPE.force);
647                 funcObj = new Function(trans, ques);
648                 result = funcObj.deleteNS(trans, "test");
649                 assertNull(result);
650         }
651         @Test
652         public void test4DeleteNsDrivensFailure() {
653                 List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
654                 NsDAO.Data dataObj = new NsDAO.Data();
655                 dataObj.type=1;
656                 dataAl.add(dataObj);
657                 Result<List<NsDAO.Data>> retVal = new Result<List<NsDAO.Data>>(dataAl,0,"test",NO_PARAM);
658                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
659                 
660                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
661                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
662                 
663                 Function funcObj = new Function(trans, ques);
664                 Result<Void> result = funcObj.deleteNS(trans, "test");
665                 assertTrue(result.status == 1);
666
667                 Mockito.doReturn(true).when(ques).isGranted(Mockito.any(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
668
669                 Mockito.doReturn(retVal2).when(credDAO).readNS(Mockito.any(), Mockito.anyString());             
670
671                 List<PermDAO.Data> dataObj5 = new ArrayList<>();
672                 PermDAO.Data indData5 = new PermDAO.Data();
673                 indData5.ns = "test";
674                 indData5.type = "test";
675                 dataObj5.add(indData5);
676                 Result<List<PermDAO.Data>> retVal5 = new Result<List<PermDAO.Data>>(dataObj5,0,"test",NO_PARAM);
677                 Mockito.doReturn(retVal5).when(permDAO).readNS(trans, "test");
678                 Mockito.doReturn(retVal5).when(permDAO).readNS(trans, "test.test");
679                 Mockito.doReturn(retVal5).when(permDAO).read(trans, indData5);
680                 
681                 
682                 List<RoleDAO.Data> dataObj1 = new ArrayList<>();
683                 RoleDAO.Data indData1 = new RoleDAO.Data();
684                 indData1.ns = "test";
685                 indData1.name = "test";
686                 Set<String> permsSet = new HashSet<>();
687                 permsSet.add("test|test");
688                 indData1.perms = permsSet;
689                 dataObj1.add(indData1);
690                 Result<List<RoleDAO.Data>> retVal3 = new Result<List<RoleDAO.Data>>(dataObj1,0,"test",NO_PARAM);
691                 Mockito.doReturn(retVal3).when(roleDAO).readNS(trans, "test");  
692                 Mockito.doReturn(retVal3).when(roleDAO).readNS(trans, "test.test");     
693                 Mockito.doReturn(retVal3).when(roleDAO).read(trans, indData1);
694                 
695                 funcObj = new Function(trans, ques);
696                 result = funcObj.deleteNS(trans, "test");
697                 assertTrue(result.status == Status.ERR_DependencyExists);
698                 
699                 NsDAO.Data data = new NsDAO.Data();
700                 data.name="test";
701                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,1,"test",NO_PARAM);
702                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
703                 
704                 Mockito.doReturn(true).when(trans).requested(REQD_TYPE.force);
705                 funcObj = new Function(trans, ques);
706                 result = funcObj.deleteNS(trans, "test.test");
707                 assertTrue(result.status == 1);
708         }
709
710         @Test
711         public void test4DeleteNsWithDot() {
712                 List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
713                 NsDAO.Data dataObj = new NsDAO.Data();
714                 dataObj.type=1;
715                 dataAl.add(dataObj);
716                 Result<List<NsDAO.Data>> retVal = new Result<List<NsDAO.Data>>(dataAl,0,"test",NO_PARAM);
717                 Mockito.doReturn(retVal).when(nsDAO).read(Mockito.any(), Mockito.anyString());          
718                 
719                 List<CredDAO.Data> nsDataList = new ArrayList<CredDAO.Data>();
720                 CredDAO.Data nsData = new CredDAO.Data();
721                 nsData.id="test";
722                 nsDataList.add(nsData);
723                 Result<List<CredDAO.Data>> retVal21 = new Result<List<CredDAO.Data>>(nsDataList,0,"test",NO_PARAM);
724                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
725                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
726                 
727                 Function funcObj = new Function(trans, ques);
728                 Result<Void> result = funcObj.deleteNS(trans, "test");
729                 assertTrue(result.status == 1);
730
731                 Mockito.doReturn(true).when(ques).isGranted(Mockito.any(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
732
733                 Mockito.doReturn(retVal21).when(credDAO).readNS(Mockito.any(), Mockito.anyString());    
734                 Mockito.doReturn(retVal21).when(credDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());            
735
736                 List<PermDAO.Data> dataObj5 = new ArrayList<>();
737                 PermDAO.Data indData5 = new PermDAO.Data();
738                 indData5.ns = "test";
739                 indData5.type = "test";
740                 dataObj5.add(indData5);
741                 Result<List<PermDAO.Data>> retVal5 = new Result<List<PermDAO.Data>>(dataObj5,0,"test",new Object[0]);
742                 Mockito.doReturn(retVal5).when(permDAO).readNS(trans, "test");
743                 Mockito.doReturn(retVal5).when(permDAO).readNS(trans, "test.test");
744                 Mockito.doReturn(retVal5).when(permDAO).read(trans, indData5);
745                 
746                 List<UserRoleDAO.Data> dataObj4 = new ArrayList<>();
747                 UserRoleDAO.Data indData4 = new UserRoleDAO.Data();
748                 indData4.ns = "test";
749                 indData4.rname = "test";
750                 dataObj4.add(indData4);
751                 Result<List<UserRoleDAO.Data>> retVal4 = new Result<List<UserRoleDAO.Data>>(dataObj4,0,"test",NO_PARAM);
752                 Mockito.doReturn(retVal4).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());
753                 Mockito.doReturn(retVal4).when(userRoleDAO).readByUser(Mockito.any(), Mockito.anyString());
754                 
755                 List<RoleDAO.Data> dataObj1 = new ArrayList<>();
756                 RoleDAO.Data indData1 = new RoleDAO.Data();
757                 indData1.ns = "test";
758                 indData1.name = "admin";
759                 Set<String> permsSet = new HashSet<>();
760                 permsSet.add("test|test");
761                 indData1.perms = permsSet;
762                 dataObj1.add(indData1);
763                 Result<List<RoleDAO.Data>> retVal3 = new Result<List<RoleDAO.Data>>(dataObj1,0,"test",NO_PARAM);
764                 Mockito.doReturn(retVal3).when(roleDAO).readNS(trans, "test");  
765                 Mockito.doReturn(retVal3).when(roleDAO).readNS(trans, "test.test");     
766                 Mockito.doReturn(retVal3).when(roleDAO).read(trans, indData1);
767                 
768                 funcObj = new Function(trans, ques);
769                 result = funcObj.deleteNS(trans, "test");
770                 assertTrue(result.status == Status.ERR_DependencyExists);
771                 
772                 NsDAO.Data data = new NsDAO.Data();
773                 data.name="test";
774                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
775                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
776                 
777                 Mockito.doReturn(true).when(trans).requested(REQD_TYPE.force);
778                 funcObj = new Function(trans, ques);
779                 result = funcObj.deleteNS(trans, "test.test");
780                 assertNull(result);
781         }
782         
783         @Test
784         public void testGetOwners() {
785 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
786 //              NsDAO.Data dataObj = new NsDAO.Data();
787 //              dataObj.type=1;
788 //              dataAl.add(dataObj);
789                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
790                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
791 //              
792 //              Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
793 //              Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
794 //              
795                 Function funcObj = new Function(trans, ques);
796                 Result<List<String>> result = funcObj.getOwners(trans, "test", false);
797                 assertTrue(result.status == 1);
798 //              
799         }
800         
801         @Test
802         public void testDelOwner() {
803                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
804                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());      
805                 Mockito.doReturn(retVal).when(userRoleDAO).read(Mockito.any(), Mockito.any( UserRoleDAO.Data.class));   
806
807                 NsDAO.Data data = new NsDAO.Data();
808                 data.name="test";
809                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
810                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
811                 
812                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(data,1,"test",NO_PARAM);
813                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal1.value, Access.write);
814                 
815                 Function funcObj = new Function(trans, ques);
816                 Result<Void> result = funcObj.delOwner(trans, "test", "test");
817                 assertTrue(result.status == 1);
818                 
819                 retVal1 = new Result<NsDAO.Data>(data,1,"test",NO_PARAM);
820                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
821                 result = funcObj.delOwner(trans, "test", "test");
822                 assertTrue(result.status == 1);
823                 
824                 retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
825                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
826                 result = funcObj.delOwner(trans, "test", "test");
827                 retVal2 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
828                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal1.value, Access.write);
829                 result = funcObj.delOwner(trans, "test", "test");
830 //              
831         }
832         
833         @Test
834         public void testGetAdmins() {
835 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
836 //              NsDAO.Data dataObj = new NsDAO.Data();
837 //              dataObj.type=1;
838 //              dataAl.add(dataObj);
839                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
840                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
841 //              
842 //              Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
843 //              Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
844 //              
845                 Function funcObj = new Function(trans, ques);
846                 Result<List<String>> result = funcObj.getAdmins(trans, "test", false);
847                 assertTrue(result.status == 1);
848 //              
849         }
850         
851         @Test
852         public void testDelAdmin() {
853                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
854                 Mockito.doReturn(retVal).when(userRoleDAO).readUserInRole(Mockito.any(), Mockito.anyString(), Mockito.anyString());     
855                 Mockito.doReturn(retVal).when(userRoleDAO).read(Mockito.any(), Mockito.any( UserRoleDAO.Data.class));   
856
857                 NsDAO.Data data = new NsDAO.Data();
858                 data.name="test";
859                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
860                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
861                 
862                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(data,1,"test",NO_PARAM);
863                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal1.value, Access.write);
864                 
865                 Function funcObj = new Function(trans, ques);
866                 Result<Void> result = funcObj.delAdmin(trans, "test", "test");
867                 assertTrue(result.status == 1);
868                 
869                 retVal1 = new Result<NsDAO.Data>(data,1,"test",NO_PARAM);
870                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
871                 result = funcObj.delAdmin(trans, "test", "test");
872                 assertTrue(result.status == 1);
873                 
874                 retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
875                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
876                 result = funcObj.delOwner(trans, "test", "test");
877                 retVal2 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
878                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal1.value, Access.write);
879                 result = funcObj.delAdmin(trans, "test", "test");
880 //              
881         }
882         
883         @Test
884         public void testMovePerms() {
885 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
886 //              NsDAO.Data dataObj = new NsDAO.Data();
887 //              dataObj.type=1;
888 //              dataAl.add(dataObj);
889                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
890                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
891                 
892                 Mockito.doReturn(retVal).when(roleDAO).delPerm(Mockito.any(), Mockito.any(), Mockito.any());    
893                 
894                 Mockito.doReturn(retVal).when(permDAO).create(Mockito.any(), Mockito.any());    
895                 
896                 NsDAO.Data nsDataObj = new NsDAO.Data();
897                 nsDataObj.name="test";
898                 StringBuilder sb = new StringBuilder();
899                 Result<List<PermDAO.Data>> retVal1 = new Result<List<PermDAO.Data>>(null,1,"test",NO_PARAM);
900                 
901                 invokeMovePerms(nsDataObj, sb, retVal1);
902                 
903                 List<PermDAO.Data> dataObj5 = new ArrayList<>();
904                 PermDAO.Data indData5 = new PermDAO.Data();
905                 indData5.ns = "test";
906                 indData5.type = "test";
907                 Set<String> rolesSet = new HashSet<>();
908                 rolesSet.add("testRole");
909                 indData5.roles = rolesSet;
910                 dataObj5.add(indData5);
911                 indData5 = new PermDAO.Data();
912                 indData5.ns = "test";
913                 indData5.type = "access";
914                 dataObj5.add(indData5);
915                 retVal1 = new Result<List<PermDAO.Data>>(dataObj5,0,"test",NO_PARAM);
916
917                 Result<List<UserRoleDAO.Data>> retVal3 = new Result<List<UserRoleDAO.Data>>(null,0,"test",NO_PARAM);
918                 Mockito.doReturn(retVal3).when(permDAO).create(Mockito.any(), Mockito.any());   
919                 Mockito.doReturn(retVal3).when(permDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
920
921                 NsSplit splitObj = new NsSplit("test", "test");
922                 Result<NsSplit> retVal2 = new Result<NsSplit>(splitObj,0,"test",NO_PARAM);
923                 Mockito.doReturn(retVal2).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
924                 
925                 invokeMovePerms(nsDataObj, sb, retVal1);
926                 
927                 Result<List<UserRoleDAO.Data>> retVal4 = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
928                 Mockito.doReturn(retVal4).when(permDAO).create(Mockito.any(), Mockito.any());   
929                 invokeMovePerms(nsDataObj, sb, retVal1);
930                 
931                 Mockito.doReturn(retVal3).when(permDAO).create(Mockito.any(), Mockito.any());   
932                 Mockito.doReturn(retVal4).when(permDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
933                 invokeMovePerms(nsDataObj, sb, retVal1);
934                 
935         }
936         
937         private void invokeMovePerms(NsDAO.Data nsDataObj, StringBuilder sb,Result<List<PermDAO.Data>> retVal1) {
938                 Function funcObj = new Function(trans, ques);
939                 Method met;
940                 try {
941                         met = Function.class.getDeclaredMethod("movePerms", AuthzTrans.class, NsDAO.Data.class, StringBuilder.class, Result.class);
942                         met.setAccessible(true);
943                         met.invoke(funcObj, trans, nsDataObj, sb, retVal1);
944                 } catch (NoSuchMethodException | SecurityException e) {
945                         // TODO Auto-generated catch block
946                         e.printStackTrace();
947                 } catch (IllegalAccessException e) {
948                         // TODO Auto-generated catch block
949                         e.printStackTrace();
950                 } catch (IllegalArgumentException e) {
951                         // TODO Auto-generated catch block
952                         e.printStackTrace();
953                 } catch (InvocationTargetException e) {
954                         // TODO Auto-generated catch block
955                         e.printStackTrace();
956                 }
957         }
958         
959         @Test
960         public void testMoveRoles() {
961 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
962 //              NsDAO.Data dataObj = new NsDAO.Data();
963 //              dataObj.type=1;
964 //              dataAl.add(dataObj);
965                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
966                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
967                 
968                 Mockito.doReturn(retVal).when(roleDAO).delPerm(Mockito.any(), Mockito.any(), Mockito.any());    
969                 
970                 Mockito.doReturn(retVal).when(roleDAO).create(Mockito.any(), Mockito.any());    
971                 
972                 NsDAO.Data nsDataObj = new NsDAO.Data();
973                 nsDataObj.name="test";
974                 StringBuilder sb = new StringBuilder();
975                 Result<List<RoleDAO.Data>> retVal1 = new Result<List<RoleDAO.Data>>(null,1,"test",NO_PARAM);
976                 
977                 invokeMoveRoles(nsDataObj, sb, retVal1);
978                 
979                 List<RoleDAO.Data> dataObj5 = new ArrayList<>();
980                 RoleDAO.Data indData5 = new RoleDAO.Data();
981                 indData5.ns = "test";
982                 indData5.name = "test";
983                 Set<String> rolesSet = new HashSet<>();
984                 rolesSet.add("testRole");
985                 indData5.perms = rolesSet;
986                 dataObj5.add(indData5);
987                 indData5 = new RoleDAO.Data();
988                 indData5.ns = "test";
989                 indData5.name = "admin";
990                 dataObj5.add(indData5);
991                 retVal1 = new Result<List<RoleDAO.Data>>(dataObj5,0,"test",NO_PARAM);
992                 
993                 Result<List<UserRoleDAO.Data>> retVal3 = new Result<List<UserRoleDAO.Data>>(null,0,"test",NO_PARAM);
994                 Mockito.doReturn(retVal3).when(roleDAO).create(Mockito.any(), Mockito.any());   
995                 Mockito.doReturn(retVal3).when(roleDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
996
997                 NsSplit splitObj = new NsSplit("test", "test");
998                 Result<NsSplit> retVal2 = new Result<NsSplit>(splitObj,0,"test",NO_PARAM);
999                 Mockito.doReturn(retVal2).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
1000                 
1001                 invokeMoveRoles(nsDataObj, sb, retVal1);
1002                 
1003                 Result<List<UserRoleDAO.Data>> retVal4 = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1004                 Mockito.doReturn(retVal4).when(roleDAO).create(Mockito.any(), Mockito.any());   
1005                 invokeMoveRoles(nsDataObj, sb, retVal1);
1006                 
1007                 Mockito.doReturn(retVal3).when(roleDAO).create(Mockito.any(), Mockito.any());   
1008                 Mockito.doReturn(retVal4).when(roleDAO).delete(Mockito.any(), Mockito.any(), Mockito.anyBoolean());     
1009                 invokeMoveRoles(nsDataObj, sb, retVal1);
1010                 
1011         }
1012         
1013         private void invokeMoveRoles(NsDAO.Data nsDataObj, StringBuilder sb,Result<List<RoleDAO.Data>> retVal1) {
1014                 Function funcObj = new Function(trans, ques);
1015                 Method met;
1016                 try {
1017                         met = Function.class.getDeclaredMethod("moveRoles", AuthzTrans.class, NsDAO.Data.class, StringBuilder.class, Result.class);
1018                         met.setAccessible(true);
1019                         met.invoke(funcObj, trans, nsDataObj, sb, retVal1);
1020                 } catch (NoSuchMethodException | SecurityException e) {
1021                         // TODO Auto-generated catch block
1022                         e.printStackTrace();
1023                 } catch (IllegalAccessException e) {
1024                         // TODO Auto-generated catch block
1025                         e.printStackTrace();
1026                 } catch (IllegalArgumentException e) {
1027                         // TODO Auto-generated catch block
1028                         e.printStackTrace();
1029                 } catch (InvocationTargetException e) {
1030                         // TODO Auto-generated catch block
1031                         e.printStackTrace();
1032                 }
1033         }
1034         
1035         @Test
1036         public void testCreatePerm() {
1037                 try {
1038                         Define.set(access);
1039                 } catch (CadiException e) {
1040                         // TODO Auto-generated catch block
1041                         e.printStackTrace();
1042                 }
1043                 List<PermDAO.Data> dataAl = new ArrayList<PermDAO.Data>();
1044                 PermDAO.Data perm = new PermDAO.Data();
1045                 Set<String> rolesSet = new HashSet<>();
1046                 rolesSet.add("testRole");
1047                 perm.roles = rolesSet;
1048 //              perm.type=1
1049                 dataAl.add(perm);
1050                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1051                 Mockito.doReturn(retVal).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
1052                 
1053                 Mockito.doReturn(retVal).when(userRoleDAO).read(Mockito.any(), Mockito.any(UserRoleDAO.Data.class));    
1054                 Mockito.doReturn(retVal).when(userRoleDAO).create(Mockito.any(), Mockito.any(UserRoleDAO.Data.class));          
1055                 
1056                 Mockito.doReturn(retVal).when(permDAO).create(Mockito.any(), Mockito.any());
1057                 Mockito.doReturn(retVal).when(permDAO).read(trans, perm);               
1058                 
1059                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,1,"test",NO_PARAM);
1060                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,perm, Access.write);
1061                 
1062                 Function funcObj = new Function(trans, ques);
1063                 Result<Void> result = funcObj.createPerm(trans, perm, false);
1064                 assertTrue(result.status == 1);
1065                 
1066                 retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
1067                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,perm, Access.write);
1068                 result = funcObj.createPerm(trans, perm, false);
1069                 assertTrue(result.status == 1);
1070
1071                 NsSplit nsObj = new NsSplit("test","test");
1072                 Result<NsSplit> retValNs = new Result<NsSplit>(nsObj,0,"test",NO_PARAM);
1073                 Mockito.doReturn(retValNs).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
1074                 Mockito.doReturn(retVal2).when(ques).mayUser(Mockito.any(), Mockito.anyString(),Mockito.any(RoleDAO.Data.class), Mockito.any());
1075                 Result<List<RoleDAO.Data>> retVal3 = Result.ok(new ArrayList<>());
1076                 Mockito.doReturn(retVal3).when(roleDAO).read(Mockito.any(),Mockito.any(RoleDAO.Data.class));
1077                 Result<List<RoleDAO.Data>> retVal4 = Result.err(Result.ERR_NotFound,"");
1078                 Mockito.doReturn(retVal4).when(roleDAO).create(Mockito.any(),Mockito.any(RoleDAO.Data.class));
1079                 result = funcObj.createPerm(trans, perm, false);
1080                 
1081                 Mockito.doReturn(retVal).when(permDAO).read(trans, perm);       
1082                 result = funcObj.createPerm(trans, perm, true);
1083                 assertTrue(result.status == 1);
1084
1085                 Mockito.doReturn(retVal2).when(permDAO).create(Mockito.any(), Mockito.any());
1086                 result = funcObj.createPerm(trans, perm, true);
1087                 assertTrue(result.status == 0);
1088                 
1089                 Mockito.doReturn(false).when(trans).requested(REQD_TYPE.force);
1090                 Result<List<PermDAO.Data>> retVal1 = new Result<List<PermDAO.Data>>(dataAl,0,"test",NO_PARAM);
1091                 Mockito.doReturn(retVal1).when(permDAO).read(trans, perm);      
1092                 result = funcObj.createPerm(trans, perm, true);
1093                 assertTrue(result.status == Status.ERR_ConflictAlreadyExists);
1094                 
1095         }
1096         @Test
1097         public void testDeletePerm() {
1098                 try {
1099                         Define.set(access);
1100                 } catch (CadiException e) {
1101                         // TODO Auto-generated catch block
1102                         e.printStackTrace();
1103                 }
1104                 List<PermDAO.Data> dataAl = new ArrayList<PermDAO.Data>();
1105                 PermDAO.Data perm = new PermDAO.Data();
1106                 Set<String> rolesSet = new HashSet<>();
1107                 rolesSet.add("testRole");
1108                 perm.roles = rolesSet;
1109 //              perm.type=1
1110                 dataAl.add(perm);
1111                 
1112                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,1,"test",NO_PARAM);
1113                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,perm, Access.write);
1114                 
1115 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
1116 //              NsDAO.Data dataObj = new NsDAO.Data();
1117 //              dataObj.type=1;
1118 //              dataAl.add(dataObj);
1119                 Result<List<PermDAO.Data>> retVal = new Result<List<PermDAO.Data>>(dataAl,1,"test",NO_PARAM);
1120                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
1121                 
1122                 Function funcObj = new Function(trans, ques);
1123                 Result<Void> result = funcObj.deletePerm(trans, perm, true,false);
1124                 assertTrue(result.status == 1);
1125
1126 //              Mockito.doReturn(retVal).when(cachedPermDAO).create(Mockito.any(), Mockito.any());
1127                 Mockito.doReturn(retVal).when(permDAO).read(trans, perm);               
1128                 
1129                 result = funcObj.deletePerm(trans, perm, true,true);
1130                 assertTrue(result.status == Status.ERR_PermissionNotFound);
1131
1132                 retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
1133                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,perm, Access.write);
1134                 Result<List<PermDAO.Data>> retVal3 = new Result<List<PermDAO.Data>>(dataAl,0,"test",NO_PARAM);
1135                 Mockito.doReturn(retVal3).when(permDAO).read(trans, perm);
1136                 
1137                 NsSplit nsObj = new NsSplit("test","test");
1138                 Result<NsSplit> retValNs = new Result<NsSplit>(nsObj,0,"test",NO_PARAM);
1139                 Mockito.doReturn(retValNs).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
1140                 
1141                 Mockito.doReturn(retVal).when(roleDAO).delPerm(Mockito.any(), Mockito.any(), Mockito.any());    
1142                 
1143                 result = funcObj.deletePerm(trans, perm, true,false);
1144                 assertNull(result);     
1145                 
1146                 Mockito.doReturn(retVal2).when(roleDAO).delPerm(Mockito.any(), Mockito.any(), Mockito.any());   
1147                 result = funcObj.deletePerm(trans, perm, true,false);
1148                 assertNull(result);     
1149                 
1150                 result = funcObj.deletePerm(trans, perm, false,false);
1151 //              assertTrue(result.status == 1);
1152         }
1153         
1154         @Test
1155         public void testDeleteRole() {
1156                 try {
1157                         Define.set(access);
1158                 } catch (CadiException e) {
1159                         // TODO Auto-generated catch block
1160                         e.printStackTrace();
1161                 }
1162
1163                 List<UserRoleDAO.Data> dataAlUser = new ArrayList<UserRoleDAO.Data>();
1164                 UserRoleDAO.Data roleUser = new UserRoleDAO.Data();
1165                 Set<String> rolesSetUser = new HashSet<>();
1166                 rolesSetUser.add("testRole|test|test");
1167 //              perm.roles = rolesSet;
1168 //              perm.type=1
1169                 dataAlUser.add(roleUser);
1170                 
1171                 List<RoleDAO.Data> dataAl = new ArrayList<RoleDAO.Data>();
1172                 RoleDAO.Data role = new RoleDAO.Data();
1173                 Set<String> rolesSet = new HashSet<>();
1174                 rolesSet.add("testRole|test|test");
1175                 role.perms = rolesSet;
1176 //              perm.roles = rolesSet;
1177 //              perm.type=1
1178                 dataAl.add(role);
1179                 
1180                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,1,"test",NO_PARAM);
1181                 Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,role, Access.write);
1182                 
1183 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
1184 //              NsDAO.Data dataObj = new NsDAO.Data();
1185 //              dataObj.type=1;
1186 //              dataAl.add(dataObj);
1187                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1188                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
1189 //              
1190 //              Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
1191 //              Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
1192 //              
1193                 Function funcObj = new Function(trans, ques);
1194                 Result<Void> result = funcObj.deleteRole(trans, role, true, false);
1195                 assertTrue(result.status == 1);
1196
1197                 Result<List<RoleDAO.Data>> retVal1 = new Result<List<RoleDAO.Data>>(dataAl,0,"test",NO_PARAM);
1198                 Mockito.doReturn(retVal1).when(roleDAO).read(Mockito.any(), Mockito.any(RoleDAO.Data.class));   
1199                 NsSplit splitObj = new NsSplit("test", "test");
1200                 Result<NsSplit> retVal3 = new Result<NsSplit>(splitObj,0,"test",NO_PARAM);
1201                 Mockito.doReturn(retVal3).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
1202 //              Mockito.doReturn(retVal).when(cachedPermDAO).create(Mockito.any(), Mockito.any());
1203                 Mockito.doReturn(retVal).when(permDAO).delRole(Mockito.any(), Mockito.any(),Mockito.any());             
1204                 result = funcObj.deleteRole(trans, role, true, true);
1205                 assertNull(result);
1206                 
1207                 Mockito.doReturn(retVal1).when(permDAO).delRole(Mockito.any(), Mockito.any(),Mockito.any());
1208                 result = funcObj.deleteRole(trans, role, true, true);
1209                 assertNull(result);
1210
1211                 Mockito.doReturn(retVal).when(roleDAO).read(Mockito.any(), Mockito.any(RoleDAO.Data.class));    
1212                 result = funcObj.deleteRole(trans, role, true, true);
1213                 assertTrue(result.status == Status.ERR_RoleNotFound);
1214                 
1215                 retVal = new Result<List<UserRoleDAO.Data>>(dataAlUser,0,"test",NO_PARAM);
1216                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());      
1217                 result = funcObj.deleteRole(trans, role, false, true);
1218                 assertTrue(result.status == Status.ERR_DependencyExists);
1219         }
1220         
1221         @Test
1222         public void testAddPermToRole() {
1223                 List<PermDAO.Data> dataAlPerm = new ArrayList<PermDAO.Data>();
1224                 PermDAO.Data rolePerm = new PermDAO.Data();
1225                 Set<String> rolesSetUser = new HashSet<>();
1226                 rolesSetUser.add("testRole|test|test");
1227 //              perm.roles = rolesSet;
1228 //              perm.type=1
1229                 dataAlPerm.add(rolePerm);
1230                 
1231                 List<RoleDAO.Data> dataAl = new ArrayList<RoleDAO.Data>();
1232                 RoleDAO.Data role = new RoleDAO.Data();
1233                 Set<String> rolesSet = new HashSet<>();
1234                 rolesSet.add("17623");
1235                 role.perms = rolesSet;
1236 //              perm.roles = rolesSet;
1237 //              perm.type=1
1238                 dataAl.add(role);
1239                 
1240                 NsDAO.Data nsObj = new NsDAO.Data();
1241                 nsObj.name="test";
1242                 NsDAO.Data nsObj1 = new NsDAO.Data();
1243                 nsObj1.name="test12";
1244                 
1245 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
1246 //              NsDAO.Data dataObj = new NsDAO.Data();
1247 //              dataObj.type=1;
1248 //              dataAl.add(dataObj);
1249                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1250                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
1251
1252                 Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(nsObj,0,"test",NO_PARAM);
1253                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, role.ns, NsType.COMPANY);
1254                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, rolePerm.ns, NsType.COMPANY);
1255                 
1256                 Result<NsDAO.Data> retVal3 = new Result<NsDAO.Data>(null,1,"test",NO_PARAM);
1257                 Mockito.doReturn(retVal3).when(ques).mayUser(trans, null,rolePerm, Access.write);
1258                 Mockito.doReturn(retVal3).when(ques).mayUser(trans, null,role, Access.write);
1259                 
1260                 Function funcObj = new Function(trans, ques);
1261                 Result<Void> result = funcObj.addPermToRole(trans, role, rolePerm, false);
1262                 assertTrue(result.status == 1);
1263
1264                 retVal2 = new Result<NsDAO.Data>(nsObj,1,"test",NO_PARAM);
1265                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, role.ns, NsType.COMPANY);
1266                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, rolePerm.ns, NsType.COMPANY);
1267                 result = funcObj.addPermToRole(trans, role, rolePerm, false);
1268                 assertTrue(result.status == 1);
1269                 
1270                 role.ns="test2";
1271                 retVal2 = new Result<NsDAO.Data>(nsObj,0,"test",NO_PARAM);
1272                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, role.ns, NsType.COMPANY);
1273                 result = funcObj.addPermToRole(trans, role, rolePerm, false);
1274                 assertTrue(result.status == 1);
1275                 
1276                 retVal2 = new Result<NsDAO.Data>(nsObj,0,"test1",NO_PARAM);
1277                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, role.ns, NsType.COMPANY);
1278                 Result<NsDAO.Data> retVal21 = new Result<NsDAO.Data>(nsObj1,0,"test1",NO_PARAM);
1279                 Mockito.doReturn(retVal21).when(ques).deriveFirstNsForType(trans, rolePerm.ns, NsType.COMPANY);
1280                 result = funcObj.addPermToRole(trans, role, rolePerm, false);
1281                 assertTrue(result.status == 1);
1282                 
1283                 retVal3 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
1284                 Mockito.doReturn(retVal3).when(ques).mayUser(trans, null,rolePerm, Access.write);
1285                 retVal2 = new Result<NsDAO.Data>(nsObj,0,"test1",NO_PARAM);
1286                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, role.ns, NsType.COMPANY);
1287                 Mockito.doReturn(retVal2).when(ques).deriveFirstNsForType(trans, rolePerm.ns, NsType.COMPANY);
1288                 
1289 //              Mockito.doReturn(retVal).when(cachedPermDAO).create(Mockito.any(), Mockito.any());
1290                 Mockito.doReturn(retVal).when(permDAO).read(Mockito.any(), Mockito.any(PermDAO.Data.class));            
1291                 
1292                 result = funcObj.addPermToRole(trans, role, rolePerm, false);
1293                 assertTrue(result.status == Status.ERR_PermissionNotFound);
1294                 
1295                 Result<List<PermDAO.Data>> retValPerm= new Result<List<PermDAO.Data>>(dataAlPerm,0,"test1",NO_PARAM);
1296                 Mockito.doReturn(retValPerm).when(permDAO).read(Mockito.any(), Mockito.any(PermDAO.Data.class));        
1297                 
1298                 Mockito.doReturn(retVal3).when(roleDAO).read(trans, role);
1299                 
1300                 result = funcObj.addPermToRole(trans, role, rolePerm, true);
1301                 assertTrue(result.status == 22);
1302
1303                 Mockito.doReturn(true).when(trans).requested(REQD_TYPE.force);
1304                 result = funcObj.addPermToRole(trans, role, rolePerm, true);
1305                 assertTrue(result.status == 2);
1306                 
1307                 retVal3 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
1308                 Mockito.doReturn(retVal3).when(ques).mayUser(trans, null,role, Access.write);
1309                 Mockito.doReturn(retVal3).when(roleDAO).create(trans, role);
1310                 result = funcObj.addPermToRole(trans, role, rolePerm, true);
1311 //              System.out.println(result.status);
1312                 assertNull(result);
1313                 
1314                 retVal3 = new Result<NsDAO.Data>(null,1,"test",NO_PARAM);
1315                 Mockito.doReturn(retVal3).when(roleDAO).create(trans, role);
1316                 result = funcObj.addPermToRole(trans, role, rolePerm, true);
1317                 assertTrue(result.status == 1);
1318                 
1319                 Result<List<RoleDAO.Data>> retVal31 = new Result<List<RoleDAO.Data>>(dataAl,0,"test",NO_PARAM);
1320                 Mockito.doReturn(retVal31).when(roleDAO).read(trans, role);
1321                 result = funcObj.addPermToRole(trans, role, rolePerm, true);
1322                 assertTrue(result.status == 7);
1323         }
1324         
1325         @Test
1326         public void testDelPermFromRole() {
1327                 List<PermDAO.Data> dataAlPerm = new ArrayList<PermDAO.Data>();
1328                 PermDAO.Data rolePerm = new PermDAO.Data();
1329                 Set<String> rolesSetUser = new HashSet<>();
1330                 rolesSetUser.add("testRole|test|test");
1331 //              perm.roles = rolesSet;
1332 //              perm.type=1
1333                 dataAlPerm.add(rolePerm);
1334                 
1335                 List<RoleDAO.Data> dataAl = new ArrayList<RoleDAO.Data>();
1336                 RoleDAO.Data role = new RoleDAO.Data();
1337                 Set<String> rolesSet = new HashSet<>();
1338                 rolesSet.add("17623");
1339                 role.perms = rolesSet;
1340                 dataAl.add(role);
1341                 
1342 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
1343 //              NsDAO.Data dataObj = new NsDAO.Data();
1344 //              dataObj.type=1;
1345 //              dataAl.add(dataObj);
1346                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1347                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
1348
1349                 Result<NsDAO.Data> retValFail = new Result<NsDAO.Data>(null,1,"test",NO_PARAM);
1350                 Result<NsDAO.Data> retValSuc = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
1351                 Mockito.doReturn(retValFail).when(ques).mayUser(trans, null,rolePerm, Access.write);
1352                 Mockito.doReturn(retValFail).when(ques).mayUser(trans, null,role, Access.write);
1353                 
1354                 Function funcObj = new Function(trans, ques);
1355                 Result<Void> result = funcObj.delPermFromRole(trans, role, rolePerm, false);
1356                 assertTrue(result.status == Status.ERR_Denied);
1357                 
1358                 Mockito.doReturn(retValFail).when(ques).mayUser(trans, null,rolePerm, Access.write);
1359                 Mockito.doReturn(retValSuc).when(ques).mayUser(trans, null,role, Access.write);         
1360                 
1361                 Mockito.doReturn(retValFail).when(roleDAO).read(trans, role);
1362                 
1363                 Mockito.doReturn(retVal).when(permDAO).read(Mockito.any(), Mockito.any(PermDAO.Data.class));            
1364                 
1365                 result = funcObj.delPermFromRole(trans, role, rolePerm, false);
1366                 assertTrue(result.status == 1);
1367                 
1368                 Result<List<PermDAO.Data>> retValPermSuc = new Result<List<PermDAO.Data>>(dataAlPerm,0,"test",NO_PARAM);
1369                 Mockito.doReturn(retValPermSuc).when(permDAO).read(Mockito.any(), Mockito.any(PermDAO.Data.class));     
1370                 result = funcObj.delPermFromRole(trans, role, rolePerm, false);
1371                 assertTrue(result.status == 1);
1372                 
1373                 Result<List<RoleDAO.Data>> retValRoleSuc = new Result<List<RoleDAO.Data>>(dataAl,0,"test",NO_PARAM);
1374                 Mockito.doReturn(retValRoleSuc).when(roleDAO).read(Mockito.any(), Mockito.any(RoleDAO.Data.class));     
1375                 result = funcObj.delPermFromRole(trans, role, rolePerm, true);
1376                 assertTrue(result.status == Status.ERR_PermissionNotFound);
1377                 
1378                 role.perms = null;
1379                 dataAl.add(role);
1380                 rolesSet.add("null|null|null|null");
1381                 role.perms = rolesSet;
1382                 dataAl.add(role);
1383                 Mockito.doReturn(retValRoleSuc).when(roleDAO).read(Mockito.any(), Mockito.any(RoleDAO.Data.class));     
1384                 Mockito.doReturn(retVal).when(permDAO).delRole(Mockito.any(), Mockito.any(),Mockito.any(RoleDAO.Data.class));   
1385                 result = funcObj.delPermFromRole(trans, role, rolePerm, true);
1386                 assertTrue(result.status == 1);
1387                 
1388                 Mockito.doReturn(true).when(trans).requested(REQD_TYPE.force);  
1389                 result = funcObj.delPermFromRole(trans, role, rolePerm, true);
1390                 assertTrue(result.status == 1);
1391                 
1392                 Mockito.doReturn(retValRoleSuc).when(permDAO).delRole(Mockito.any(), Mockito.any(),Mockito.any(RoleDAO.Data.class));
1393                 Mockito.doReturn(retVal).when(roleDAO).delPerm(Mockito.any(), Mockito.any(),Mockito.any(PermDAO.Data.class));           
1394                 result = funcObj.delPermFromRole(trans, role, rolePerm, true);
1395                 assertTrue(result.status == 1);
1396                 
1397                 Mockito.doReturn(retValPermSuc).when(roleDAO).delPerm(Mockito.any(), Mockito.any(),Mockito.any(PermDAO.Data.class));            
1398                 result = funcObj.delPermFromRole(trans, role, rolePerm, true);
1399                 assertTrue(result.status == 0);
1400                 
1401                 Mockito.doReturn(retVal).when(permDAO).read(Mockito.any(), Mockito.any(PermDAO.Data.class));
1402                 result = funcObj.delPermFromRole(trans, role, rolePerm, true);
1403                 assertTrue(result.status == 0);
1404                 
1405                 Mockito.doReturn(retVal).when(roleDAO).delPerm(Mockito.any(), Mockito.any(),Mockito.any(PermDAO.Data.class));   
1406                 result = funcObj.delPermFromRole(trans, role, rolePerm, true);
1407                 assertTrue(result.status == 1);
1408
1409                 NsSplit splitObj = new NsSplit("test", "test");
1410                 Result<NsSplit> retVal3 = new Result<NsSplit>(splitObj,0,"test",NO_PARAM);
1411                 Mockito.doReturn(retVal3).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
1412                 Mockito.doReturn(retValFail).when(ques).mayUser(Mockito.any(), Mockito.anyString(),Mockito.any(RoleDAO.Data.class), Mockito.any());
1413                 Mockito.doReturn(retValFail).when(ques).mayUser(Mockito.any(), Mockito.anyString(),Mockito.any(PermDAO.Data.class), Mockito.any());
1414                 result = funcObj.delPermFromRole(trans, "test", rolePerm);
1415                 assertTrue(result.status == 2);
1416                 
1417                 retVal3 = new Result<NsSplit>(null,1,"test",NO_PARAM);
1418                 Mockito.doReturn(retVal3).when(ques).deriveNsSplit(Mockito.any(), Mockito.anyString());
1419                 result = funcObj.delPermFromRole(trans, "test", rolePerm);
1420                 assertTrue(result.status == 1);
1421         }
1422         @Test
1423         public void testAddUserRole() {
1424                 List<UserRoleDAO.Data> urDataAl = new ArrayList<>();
1425                 UserRoleDAO.Data urData = new UserRoleDAO.Data();
1426                 urData.ns="test";
1427                 urData.rname="test";
1428                 urData.user="test";
1429                 urDataAl.add(urData);
1430                 
1431                 Organization org = Mockito.mock(Organization.class);
1432                 Mockito.doReturn(org).when(trans).org();
1433                 Mockito.doReturn(Mockito.mock(GregorianCalendar.class)).when(org).expiration(Mockito.any(), Mockito.any(), Mockito.anyString());
1434                 
1435                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1436                 Result<List<UserRoleDAO.Data>> retValSuc = new Result<List<UserRoleDAO.Data>>(urDataAl,0,"test",NO_PARAM);
1437                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());
1438                 Mockito.doReturn(retVal).when(userRoleDAO).read(Mockito.any(), Mockito.any(UserRoleDAO.Data.class));
1439                 Mockito.doReturn(retVal).when(userRoleDAO).create(Mockito.any(), Mockito.any(UserRoleDAO.Data.class));  
1440                 Mockito.doReturn(retValSuc).when(roleDAO).read(Mockito.any(), Mockito.anyString(), Mockito.anyString());                
1441
1442                 Result<List<CredDAO.Data>> retVal2 = new Result<List<CredDAO.Data>>(null,1,"test",NO_PARAM);
1443                 Mockito.doReturn(retVal2).when(credDAO).readID(Mockito.any(), Mockito.anyString());             
1444                 
1445                 Function funcObj = new Function(trans, ques);
1446                 Result<Void> result = funcObj.addUserRole(trans, urData);
1447                 assertTrue(result.status == 1);
1448                 
1449                 urData.rname=Question.ADMIN;
1450                 result = funcObj.addUserRole(trans, urData);
1451                 assertTrue(result.status == 1);
1452                 
1453                 NsDAO.Data data = new NsDAO.Data();
1454                 data.name="test";
1455                 Result<NsDAO.Data> retVal1 = new Result<NsDAO.Data>(data,0,"test",NO_PARAM);
1456                 Mockito.doReturn(retVal1).when(ques).mayUser(trans, null,retVal1.value, Access.write);
1457                 Mockito.doReturn(retVal1).when(ques).deriveNs(trans, "test");
1458                 try {
1459                         Mockito.doReturn(Mockito.mock(Identity.class)).when(org).getIdentity(trans, "test");
1460                 } catch (OrganizationException e) {
1461                         // TODO Auto-generated catch block
1462                         e.printStackTrace();
1463                 }
1464                 urData.rname=Question.OWNER;
1465                 result = funcObj.addUserRole(trans, urData);
1466                 assertTrue(result.status == 1);
1467
1468                 Mockito.doReturn(retValSuc).when(userRoleDAO).create(Mockito.any(), Mockito.any(UserRoleDAO.Data.class));       
1469                 result = funcObj.addUserRole(trans, urData);
1470                 assertTrue(result.status == 0);
1471
1472                 Mockito.doReturn(retVal).when(roleDAO).read(Mockito.any(), Mockito.anyString(), Mockito.anyString());
1473                 result = funcObj.addUserRole(trans, urData);
1474                 assertTrue(result.status == Status.ERR_RoleNotFound);
1475                 
1476                 Mockito.doReturn(retValSuc).when(userRoleDAO).read(Mockito.any(), Mockito.any(UserRoleDAO.Data.class));
1477                 result = funcObj.addUserRole(trans, urData);
1478                 assertTrue(result.status == Status.ERR_ConflictAlreadyExists);
1479                 
1480                 result = funcObj.addUserRole(trans, "test", "test", "test");
1481                 assertTrue(result.status == 1);
1482                 
1483                 try {
1484                         Mockito.doReturn(null).when(org).getIdentity(trans, "test");
1485                 } catch (OrganizationException e) {
1486                         // TODO Auto-generated catch block
1487                         e.printStackTrace();
1488                 }
1489                 result = funcObj.addUserRole(trans, "test", "test", "test");
1490                 assertTrue(result.status == Result.ERR_BadData);
1491                 
1492                 try {
1493                         Mockito.doThrow(OrganizationException.class).when(org).getIdentity(trans, "test");
1494                 } catch (OrganizationException e) {
1495                         // TODO Auto-generated catch block
1496                         e.printStackTrace();
1497                 }
1498                 result = funcObj.addUserRole(trans, "test", "test", "test");
1499                 assertTrue(result.status == 20);
1500         }
1501         
1502         @Test
1503         public void testExtendUserRole() {
1504                 List<UserRoleDAO.Data> urDataAl = new ArrayList<>();
1505                 UserRoleDAO.Data urData = new UserRoleDAO.Data();
1506                 urData.ns="test";
1507                 urData.rname="test";
1508                 urData.user="test";
1509                 urData.expires=new Date();
1510                 urDataAl.add(urData);
1511                 
1512 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
1513 //              NsDAO.Data dataObj = new NsDAO.Data();
1514 //              dataObj.type=1;
1515 //              dataAl.add(dataObj);
1516                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1517                 Result<List<UserRoleDAO.Data>> retValSuc = new Result<List<UserRoleDAO.Data>>(urDataAl,0,"test",NO_PARAM);
1518                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
1519                 Mockito.doReturn(retValSuc).when(roleDAO).read(Mockito.any(), Mockito.anyString(), Mockito.anyString());
1520
1521                 Organization org = Mockito.mock(Organization.class);
1522                 Mockito.doReturn(org).when(trans).org();
1523                 Mockito.doReturn(Mockito.mock(GregorianCalendar.class)).when(org).expiration(Mockito.any(), Mockito.any());
1524                 
1525                 Function funcObj = new Function(trans, ques);
1526                 Result<Void> result = funcObj.extendUserRole(trans, urData, false);
1527                 assertNull(result);
1528                 
1529                 Mockito.doReturn(retVal).when(roleDAO).read(Mockito.any(), Mockito.anyString(), Mockito.anyString());
1530                 Mockito.doReturn(retValSuc).when(userRoleDAO).read(trans, urData);
1531                 result = funcObj.extendUserRole(trans, urData, true);
1532                 assertTrue(result.status == Status.ERR_RoleNotFound);
1533                 
1534                 Mockito.doReturn(retVal).when(userRoleDAO).read(trans, urData);
1535                 result = funcObj.extendUserRole(trans, urData, true);
1536                 assertTrue(result.status == Status.ERR_UserRoleNotFound);
1537         }
1538         
1539         @SuppressWarnings("deprecation")
1540         @Test
1541         public void testGetUsersByRole() {
1542                 List<UserRoleDAO.Data> urDataAl = new ArrayList<>();
1543                 UserRoleDAO.Data urData = new UserRoleDAO.Data();
1544                 urData.ns="test";
1545                 urData.rname="test";
1546                 urData.user="test";
1547                 urData.expires=new Date();
1548                 urDataAl.add(urData);
1549                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(urDataAl,0,"test",NO_PARAM);
1550                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
1551
1552                 Function funcObj = new Function(trans, ques);
1553                 Result<List<String>> result = funcObj.getUsersByRole(trans, "test", false);
1554                 assertTrue(result.status == 0);
1555
1556                 result = funcObj.getUsersByRole(trans, "test", true);
1557                 assertTrue(result.status == 0);
1558                 
1559                 urData.expires=new Date(130,1,1);
1560                 result = funcObj.getUsersByRole(trans, "test", true);
1561                 assertTrue(result.status == 0);
1562 //              
1563         }
1564         @Test
1565         public void testDelUserRole() {
1566                 List<UserRoleDAO.Data> urDataAl = new ArrayList<>();
1567                 UserRoleDAO.Data urData = new UserRoleDAO.Data();
1568                 urData.ns="test";
1569                 urData.rname="test";
1570                 urData.user="test";
1571                 urData.expires=new Date();
1572                 urDataAl.add(urData);
1573                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(urDataAl,0,"test",NO_PARAM);
1574                 Mockito.doReturn(retVal).when(userRoleDAO).read(Mockito.any(), Mockito.any( UserRoleDAO.Data.class));           
1575
1576                 Function funcObj = new Function(trans, ques);
1577                 Result<Void> result = funcObj.delUserRole(trans, "test", "test", "test");
1578                 assertNull(result);
1579                 
1580                 retVal = new Result<List<UserRoleDAO.Data>>(urDataAl,1,"test",NO_PARAM);
1581                 Mockito.doReturn(retVal).when(userRoleDAO).read(Mockito.any(), Mockito.any( UserRoleDAO.Data.class));
1582                 result = funcObj.delUserRole(trans, "test", "test", "test");
1583 //              assertTrue(result.status ==1);  
1584 //              
1585         }
1586         
1587         @Test
1588         public void testCreateFuture() {
1589                 FutureDAO.Data data = new FutureDAO.Data();
1590                 data.memo = "test";
1591                 NsDAO.Data nsd = new NsDAO.Data();
1592                 nsd.name = "test";
1593                 
1594                 List<UserRoleDAO.Data> urDataAl = new ArrayList<>();
1595                 UserRoleDAO.Data urData = new UserRoleDAO.Data();
1596                 urData.ns="test";
1597                 urData.rname="test";
1598                 urData.user="test";
1599                 urData.expires=new Date();
1600                 urDataAl.add(urData);
1601                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(urDataAl,0,"test",NO_PARAM);
1602                 Result<List<UserRoleDAO.Data>> retValFail = new Result<List<UserRoleDAO.Data>>(urDataAl,1,"test",NO_PARAM);
1603                 Mockito.doReturn(retVal).when(userRoleDAO).read(Mockito.any(), Mockito.any( UserRoleDAO.Data.class));   
1604
1605                 Function funcObj = new Function(trans, ques);
1606                 Result<String> result = funcObj.createFuture(trans, data, "test", "test", nsd, FUTURE_OP.A);
1607                 assertTrue(result.status == 20);
1608
1609                 Identity iden=Mockito.mock(Identity.class);
1610                 try {
1611                         Mockito.doReturn(iden).when(org).getIdentity(trans, "test");
1612                         Mockito.doReturn("test").when(iden).mayOwn();
1613                 } catch (OrganizationException e) {
1614                         // TODO Auto-generated catch block
1615                         e.printStackTrace();
1616                 }
1617                 FutureDAO.Data futureData = new FutureDAO.Data();
1618                 data.memo = "test";
1619                 Result<FutureDAO.Data> retValFuture = new Result<FutureDAO.Data>(futureData,0,"test",NO_PARAM);
1620                 Mockito.doReturn(retValFuture).when(futureDAO).create(Mockito.any(), Mockito.any( FutureDAO.Data.class), Mockito.anyString());
1621                 
1622                 ApprovalDAO.Data approvalData = new ApprovalDAO.Data();
1623                 data.memo = "test";
1624                 Result<ApprovalDAO.Data> retValApproval = new Result<ApprovalDAO.Data>(approvalData,0,"test",NO_PARAM);
1625                 Mockito.doReturn(retValApproval).when(approvalDAO).create(Mockito.any(), Mockito.any( ApprovalDAO.Data.class));
1626                 
1627                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());      
1628                 result = funcObj.createFuture(trans, data, "test", "test", nsd, FUTURE_OP.A);
1629                 assertTrue(result.status == 0);
1630                 
1631                 result = funcObj.createFuture(trans, data, "test", "test", null, FUTURE_OP.A);
1632                 assertTrue(result.status == 20);
1633
1634                 Mockito.doReturn(retValFail).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());
1635                 result = funcObj.createFuture(trans, data, "test", "test", nsd, FUTURE_OP.A);
1636                 assertTrue(result.status == Result.ERR_NotFound);
1637                 
1638                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());
1639                 try {
1640                         Mockito.doReturn(null).when(org).getIdentity(trans, "test");
1641                 } catch (OrganizationException e) {
1642                         // TODO Auto-generated catch block
1643                         e.printStackTrace();
1644                 }
1645                 result = funcObj.createFuture(trans, data, "test", "test", nsd, FUTURE_OP.A);
1646                 assertTrue(result.status == Result.ERR_NotFound);
1647                 
1648                 try {
1649                         Mockito.doReturn(iden).when(org).getIdentity(trans, "test");
1650                 } catch (OrganizationException e) {
1651                         // TODO Auto-generated catch block
1652                         e.printStackTrace();
1653                 }
1654                 result = funcObj.createFuture(trans, data, "test", "test", nsd, FUTURE_OP.C);
1655                 assertTrue(result.status == 0);
1656                 
1657                 retValApproval = new Result<ApprovalDAO.Data>(null,1,"test",NO_PARAM);
1658                 Mockito.doReturn(retValApproval).when(approvalDAO).create(Mockito.any(), Mockito.any( ApprovalDAO.Data.class));
1659                 result = funcObj.createFuture(trans, data, "test", "test", nsd, FUTURE_OP.A);
1660                 assertTrue(result.status == 8);
1661         }
1662         @Test
1663         public void testUbLookup() {
1664                 Object[] objArr = new Object[10];
1665                 List<UserRoleDAO.Data> urDataAl = new ArrayList<>();
1666                 UserRoleDAO.Data urData = new UserRoleDAO.Data();
1667                 urData.ns="test";
1668                 urData.rname="test";
1669                 urData.user="test";
1670                 urData.expires=new Date();
1671                 urDataAl.add(urData);
1672                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(urDataAl,0,"test",NO_PARAM);
1673                 Result<List<UserRoleDAO.Data>> retValFail = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1674                 Mockito.doReturn(retVal).when(userRoleDAO).read(trans, objArr); 
1675                 
1676                 Function funcObj = new Function(trans, ques);
1677                 funcObj.urDBLookup.get(trans, objArr);
1678                 
1679                 Mockito.doReturn(retValFail).when(userRoleDAO).read(trans, objArr);     
1680                 funcObj.urDBLookup.get(trans, objArr);
1681         }
1682         
1683         @Test
1684         public void testPerformFutureOp() {
1685                 FutureDAO.Data futureDataDaoObj = new FutureDAO.Data();
1686                 futureDataDaoObj.memo="test";
1687                 futureDataDaoObj.target = "test";
1688                 futureDataDaoObj.id = new UUID(10L,10L);
1689                 
1690                 final List<ApprovalDAO.Data> apprs = new ArrayList<>();
1691                 ApprovalDAO.Data approvalObj = new ApprovalDAO.Data();
1692                 approvalObj.status = "approved";
1693                 approvalObj.type = "owner";
1694                 apprs.add(approvalObj);
1695                 Lookup<List<ApprovalDAO.Data>> lookupApprovalObj = new Lookup<List<ApprovalDAO.Data>>() {
1696             @Override
1697             public List<ApprovalDAO.Data> get(AuthzTrans trans, Object ... keys) {
1698                 return apprs;
1699             }
1700         };
1701         
1702         final UserRoleDAO.Data userObj = new UserRoleDAO.Data();
1703         Lookup<UserRoleDAO.Data> lookupUserObj = new Lookup<UserRoleDAO.Data>() {
1704             @Override
1705             public UserRoleDAO.Data get(AuthzTrans trans, Object ... keys) {
1706                 return userObj;
1707             }
1708         };
1709                 
1710         FutureDAO.Data futureData = new FutureDAO.Data();
1711 //              data.memo = "test";
1712                 Result<FutureDAO.Data> retValFuture = new Result<FutureDAO.Data>(futureData,0,"test",NO_PARAM);
1713                 Mockito.doReturn(retValFuture).when(futureDAO).delete(Mockito.any(), Mockito.any( FutureDAO.Data.class), Mockito.anyBoolean());
1714                 
1715 //              List<NsDAO.Data> dataAl = new ArrayList<NsDAO.Data>();
1716 //              NsDAO.Data dataObj = new NsDAO.Data();
1717 //              dataObj.type=1;
1718 //              dataAl.add(dataObj);
1719                 Result<List<UserRoleDAO.Data>> retVal = new Result<List<UserRoleDAO.Data>>(null,1,"test",NO_PARAM);
1720                 Mockito.doReturn(retVal).when(userRoleDAO).readByRole(Mockito.any(), Mockito.anyString());              
1721 //              
1722 //              Result<NsDAO.Data> retVal2 = new Result<NsDAO.Data>(null,0,"test",NO_PARAM);
1723 //              Mockito.doReturn(retVal2).when(ques).mayUser(trans, null,retVal.value.get(0), Access.write);
1724 //              
1725                 Function funcObj = new Function(trans, ques);
1726                 Result<Function.OP_STATUS> result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1727                 assertTrue(result.status == 0);
1728                 
1729                 approvalObj.status = "approved";
1730                 approvalObj.type = "supervisor";
1731                 result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1732                 assertTrue(result.status == 0);
1733                 
1734                 approvalObj.status = "approved";
1735                 approvalObj.type = "";
1736                 result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1737                 assertTrue(result.status == 0);
1738                 
1739                 approvalObj.status = "pending";
1740                 approvalObj.type = "supervisor";
1741                 result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1742                 assertTrue(result.status == 0);
1743                 
1744                 approvalObj.status = "pending";
1745                 approvalObj.type = "owner";
1746                 result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1747                 assertTrue(result.status == 0);
1748                 
1749                 approvalObj.status = "pending";
1750                 approvalObj.type = "";
1751                 result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1752                 assertTrue(result.status == 0);
1753                 
1754                 approvalObj.status = "denied";
1755                 approvalObj.type = "";
1756                 result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1757                 assertTrue(result.status == 0);
1758                 
1759                 retValFuture = new Result<FutureDAO.Data>(futureData,1,"test",NO_PARAM);
1760                 Mockito.doReturn(retValFuture).when(futureDAO).delete(Mockito.any(), Mockito.any( FutureDAO.Data.class), Mockito.anyBoolean());
1761                 result = funcObj.performFutureOp(trans, FUTURE_OP.A, futureDataDaoObj, lookupApprovalObj, lookupUserObj);
1762                 System.out.println(result);
1763                 assertTrue(result.status == 0);
1764 //              
1765         }
1766 }