2 * ============LICENSE_START====================================================
4 * ===========================================================================
5 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6 * ===========================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END====================================================
21 package org.onap.aaf.auth.direct.test;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertTrue;
25 import static org.mockito.MockitoAnnotations.initMocks;
27 import java.security.Principal;
28 import java.util.ArrayList;
29 import java.util.List;
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;
54 @RunWith(MockitoJUnitRunner.class)
55 public class JU_DirectAAFLur {
73 public void setUp() throws Exception {
75 Mockito.when(env.newTransNoAvg()).thenReturn(trans);
76 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(trans).error();
79 public void testFish() {
80 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
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);
89 public void testFishSecondMtd() {
90 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
92 List<PermDAO.Data> rsVal = new ArrayList<PermDAO.Data>();
93 PermDAO.Data pd = new PermDAO.Data();
98 pd = new PermDAO.Data();
101 pd.instance = "instance";
105 pd = new PermDAO.Data();
108 pd.instance = "instance1";
110 pd = new PermDAO.Data();
114 pd = new PermDAO.Data();
119 pd = new PermDAO.Data();
122 pd.instance = "instance";
123 pd.action = "action";
126 pond = new DirectAAFLur.PermPermission("ns", "name", "instance", "action");
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);
132 pond = new AAFPermission("ns", "name", "instance", "action");
134 Mockito.when(question.getPermsByUser(env.newTransNoAvg(), bait.getName(), false)).thenReturn(rs);
135 aafLurObj.fish(bait, pond);
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);
149 public void testFishAll() {
150 Mockito.doReturn(Mockito.mock(LogTarget.class)).when(env).error();
151 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
153 List<PermDAO.Data> rsVal = new ArrayList<PermDAO.Data>();
154 PermDAO.Data pd = new PermDAO.Data();
160 pond = new DirectAAFLur.PermPermission("ns", "name", "instance", "action");
161 List<Permission> permissions = new ArrayList<>();
162 permissions.add(pond);
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);
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);
175 public void testDestroy() {
176 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
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));
188 public void testToString() {
189 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
190 assertTrue(aafLurObj.toString().contains("DirectAAFLur is enabled"));
194 public void testHandles() {
195 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
196 assertTrue(aafLurObj.handles(null));
200 public void testCreatePerm() {
201 DirectAAFLur aafLurObj = new DirectAAFLur(env, question);
202 Permission retVal = aafLurObj.createPerm("test");
203 assertTrue(retVal instanceof LocalPermission);
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);
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);
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);
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");
235 assertTrue("test".equalsIgnoreCase(pp.getKey()));
236 assertTrue("AAFLUR".equalsIgnoreCase(pp.permType()));
238 assertFalse(pp.match(null));
240 pond = new AAFPermission("test.test", "test", "test", "test");
241 assertTrue(pp.match(pond));