Sonar Fixes, Formatting
[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 }