f0f3c5d0e0770e5e5ac4bab9d36e0cadc06330db
[aaf/authz.git] / auth / auth-cass / src / test / java / org / onap / aaf / auth / direct / test / JU_DirectAAFLur.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.aaf
4  * ===========================================================================
5  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6  * ===========================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END====================================================
19  *
20  */
21 package org.onap.aaf.auth.direct.test;
22
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertTrue;
25 import static org.mockito.MockitoAnnotations.initMocks;
26
27 import java.security.Principal;
28 import java.util.ArrayList;
29 import java.util.List;
30
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.mockito.Mock;
35 import org.mockito.Mockito;
36 import org.mockito.runners.MockitoJUnitRunner;
37 import org.onap.aaf.auth.dao.cass.NsSplit;
38 import org.onap.aaf.auth.dao.cass.PermDAO;
39 import org.onap.aaf.auth.dao.cass.PermDAO.Data;
40 import org.onap.aaf.auth.dao.hl.Question;
41 import org.onap.aaf.auth.direct.DirectAAFLur;
42 import org.onap.aaf.auth.direct.DirectAAFLur.PermPermission;
43 import org.onap.aaf.auth.env.AuthzEnv;
44 import org.onap.aaf.auth.env.AuthzTrans;
45 import org.onap.aaf.auth.env.AuthzTransImpl;
46 import org.onap.aaf.auth.env.NullTrans;
47 import org.onap.aaf.auth.layer.Result;
48 import org.onap.aaf.cadi.Permission;
49 import org.onap.aaf.cadi.aaf.AAFPermission;
50 import org.onap.aaf.cadi.lur.LocalPermission;
51 import org.onap.aaf.misc.env.LogTarget;
52 import org.onap.aaf.misc.env.Trans;
53
54 @RunWith(MockitoJUnitRunner.class) 
55 public class JU_DirectAAFLur {
56
57         @Mock
58         AuthzEnv env;
59         
60         @Mock
61         Question question;
62         
63         @Mock
64         Principal bait;
65         
66         @Mock
67         Permission pond;
68         
69         @Mock
70         AuthzTrans trans;
71         
72         @Before
73         public void setUp() throws Exception {
74                 initMocks(this);
75                 Mockito.when(env.newTransNoAvg()).thenReturn(trans);
76                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
77         }
78         
79         public void testFish() {
80                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
81                 
82                 List<PermDAO.Data> rsVal = new ArrayList<PermDAO.Data>();
83                 Result<List<Data>> rs = new Result<List<Data>>(rsVal,0,"test",new Object[0]);
84                 Mockito.when(question.getPermsByUser(env.newTransNoAvg(), bait.getName(), false)).thenReturn(rs);
85                 aafLurObj.fish(bait, pond);
86         }
87
88         @Test
89         public void testFishSecondMtd() {
90                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
91                 
92                 List<PermDAO.Data> rsVal = new ArrayList<PermDAO.Data>();
93                 PermDAO.Data pd = new PermDAO.Data();
94                 pd.ns = "ns";
95                 pd.type = "name";
96                 pd.instance = null;
97                 rsVal.add(pd);
98                 pd = new PermDAO.Data();
99                 pd.ns = "ns";
100                 pd.type = "name";
101                 pd.instance = "instance";
102                 pd.action = null;
103                 rsVal.add(pd);
104                 
105                 pd = new PermDAO.Data();
106                 pd.ns = "ns";
107                 pd.type = "name";
108                 pd.instance = "instance1";
109                 rsVal.add(pd);
110                 pd = new PermDAO.Data();
111                 pd.ns = "ns1";
112                 pd.type = "name";
113                 rsVal.add(pd);
114                 pd = new PermDAO.Data();
115                 pd.ns = "ns";
116                 pd.type = "name1";
117                 rsVal.add(pd);
118                                 
119                 pd = new PermDAO.Data();
120                 pd.ns = "ns";
121                 pd.type = "name";
122                 pd.instance = "instance";
123                 pd.action = "action";
124                 rsVal.add(pd);
125                 
126                 pond = new DirectAAFLur.PermPermission("ns", "name", "instance", "action");
127                 
128                 Result<List<Data>> rs = new Result<List<Data>>(rsVal,0,"test",new Object[0]);
129                 Mockito.when(question.getPermsByUser(env.newTransNoAvg(), bait.getName(), false)).thenReturn(rs);
130                 aafLurObj.fish(bait, pond);
131                 
132                 pond = new AAFPermission("ns", "name", "instance", "action");
133                 
134                 Mockito.when(question.getPermsByUser(env.newTransNoAvg(), bait.getName(), false)).thenReturn(rs);
135                 aafLurObj.fish(bait, pond);
136                 
137                 rs = new Result<List<Data>>(rsVal,1,"test",new Object[0]);
138                 Mockito.when(question.getPermsByUser(env.newTransNoAvg(), bait.getName(), false)).thenReturn(rs);
139                 aafLurObj.fish(bait, pond);
140                 rs = new Result<List<Data>>(rsVal,4,"test",new Object[0]);
141                 Mockito.when(question.getPermsByUser(env.newTransNoAvg(), bait.getName(), false)).thenReturn(rs);
142                 aafLurObj.fish(bait, pond);
143                 rs = new Result<List<Data>>(rsVal,25,"test",new Object[0]);
144                 Mockito.when(question.getPermsByUser(env.newTransNoAvg(), bait.getName(), false)).thenReturn(rs);
145                 aafLurObj.fish(bait, pond);
146         }
147         
148         @Test
149         public void testFishAll() {
150                 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(env).error();
151                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
152                 
153                 List<PermDAO.Data> rsVal = new ArrayList<PermDAO.Data>();
154                 PermDAO.Data pd = new PermDAO.Data();
155                 pd.ns = "ns";
156                 pd.type = "name";
157                 pd.instance = null;
158                 rsVal.add(pd);
159                 
160                 pond = new DirectAAFLur.PermPermission("ns", "name", "instance", "action");
161                 List<Permission> permissions = new ArrayList<>();
162                 permissions.add(pond);
163                 
164                 Result<List<Data>> rs = new Result<List<Data>>(rsVal,0,"test",new Object[0]);
165                 Mockito.when(question.getPermsByUser(env.newTrans(), bait.getName(), false)).thenReturn(rs);
166                 aafLurObj.fishAll(bait, permissions);
167                 assertTrue(permissions.size() == 2);
168                 
169                 rs = new Result<List<Data>>(rsVal,1,"test",new Object[0]);
170                 Mockito.when(question.getPermsByUser(env.newTrans(), bait.getName(), false)).thenReturn(rs);
171                 aafLurObj.fishAll(bait, permissions);
172         }
173         
174         @Test
175         public void testDestroy() {
176                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
177                 aafLurObj.destroy();
178         }
179         
180         @Test
181         public void testHandlesExclusively() {
182                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
183                 pond = new DirectAAFLur.PermPermission("ns", "name", "instance", "action");
184                 assertFalse(aafLurObj.handlesExclusively(pond));
185         }
186         
187         @Test
188         public void testToString() {
189                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
190                 assertTrue(aafLurObj.toString().contains("DirectAAFLur is enabled"));
191         }
192         
193         @Test
194         public void testHandles() {
195                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
196                 assertTrue(aafLurObj.handles(null));
197         }
198         
199         @Test
200         public void testCreatePerm() {
201                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
202                 Permission retVal = aafLurObj.createPerm("test");
203                 assertTrue(retVal instanceof LocalPermission);
204                 
205                 NsSplit nss = new NsSplit("test", "test");
206                 Result<NsSplit> rs = new Result<NsSplit>(nss,0,"test",new Object[0]);
207                 Mockito.when(question.deriveNsSplit(NullTrans.singleton() , "test")).thenReturn(rs);
208                 retVal = aafLurObj.createPerm("test|1|2");
209                 assertTrue(retVal instanceof PermPermission);
210                 
211                 rs = new Result<NsSplit>(null,1,"test",new Object[0]);
212                 Mockito.when(question.deriveNsSplit(NullTrans.singleton() , "test")).thenReturn(rs);
213                 retVal = aafLurObj.createPerm("test|1|2");
214                 assertTrue(retVal instanceof LocalPermission);
215         }
216         
217         @Test
218         public void testClear() {
219                 AuthzTransImpl trans =  Mockito.mock(AuthzTransImpl.class);
220                 Mockito.when(env.newTrans()).thenReturn(trans);
221                 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
222                 StringBuilder sb = new StringBuilder();
223                 Mockito.when(trans.auditTrail(0, sb)).thenReturn(Mockito.mock(Trans.Metric.class));
224                 aafLurObj.clear(bait, sb);
225         }
226         
227         @Test
228         public void testPermPermission() {
229                 AuthzTransImpl trans =  Mockito.mock(AuthzTransImpl.class);
230                 NsSplit nss = new NsSplit("test", "test");
231                 Result<NsSplit> rs = new Result<NsSplit>(nss,0,"test",new Object[0]);
232                 Mockito.when(question.deriveNsSplit(trans , "test")).thenReturn(rs);
233                 PermPermission pp = new PermPermission(trans, question, "test|test|test|test");
234                 
235                 assertTrue("test".equalsIgnoreCase(pp.getKey()));
236                 assertTrue("AAFLUR".equalsIgnoreCase(pp.permType()));
237                 
238                 assertFalse(pp.match(null));
239                 
240                 pond = new AAFPermission("test.test", "test", "test", "test");
241                 assertTrue(pp.match(pond));
242         }
243 }