Remove Tabs, per Jococo
[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 }