4f31a8f412102f2453b55ec5a40ad348009d6b47
[aaf/authz.git] / cadi / core / src / test / java / org / onap / aaf / cadi / test / JU_CadiWrap.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.cadi.test;
24
25 import org.junit.*;
26 import org.mockito.Mock;
27 import org.mockito.MockitoAnnotations;
28
29 import static org.junit.Assert.*;
30 import static org.mockito.Matchers.*;
31 import static org.mockito.Mockito.*;
32
33 import java.io.ByteArrayOutputStream;
34 import java.io.PrintStream;
35 import java.security.Principal;
36 import java.util.List;
37
38 import javax.servlet.http.HttpServletRequest;
39
40 import org.onap.aaf.cadi.Access;
41 import org.onap.aaf.cadi.CachingLur;
42 import org.onap.aaf.cadi.CadiException;
43 import org.onap.aaf.cadi.CadiWrap;
44 import org.onap.aaf.cadi.Lur;
45 import org.onap.aaf.cadi.Permission;
46 import org.onap.aaf.cadi.PropAccess;
47 import org.onap.aaf.cadi.User;
48 import org.onap.aaf.cadi.CachedPrincipal.Resp;
49 import org.onap.aaf.cadi.filter.MapPermConverter;
50 import org.onap.aaf.cadi.lur.EpiLur;
51 import org.onap.aaf.cadi.principal.TaggedPrincipal;
52 import org.onap.aaf.cadi.taf.TafResp;
53
54 public class JU_CadiWrap {
55     
56     @Mock
57     private HttpServletRequest request;
58     
59     @Mock
60     private TafResp tafResp;
61     
62     @Mock
63     private TaggedPrincipal principle;
64
65     @Mock
66     private Lur lur;
67
68     @Before
69     public void setUp() throws Exception {
70         MockitoAnnotations.initMocks(this);
71
72         System.setOut(new PrintStream(new ByteArrayOutputStream()));
73     }
74
75     @After
76     public void tearDown() {
77         System.setOut(System.out);
78     }
79
80     @SuppressWarnings("unchecked")
81     @Test
82     public void testInstantiate() throws CadiException {
83         Access a = new PropAccess();
84         when(tafResp.getAccess()).thenReturn(a);
85         
86         lur.fishAll(isA(Principal.class), (List<Permission>)isA(List.class));
87         
88         EpiLur lur1 = new EpiLur(lur);
89         
90         CadiWrap wrap = new CadiWrap(request, tafResp, lur1);
91         
92         assertNull(wrap.getUserPrincipal());
93         assertNull(wrap.getRemoteUser());
94         assertNull(wrap.getUser());
95         assertEquals(wrap.getPermissions(principle).size(), 0);
96         assertTrue(wrap.access() instanceof PropAccess);
97         
98         byte[] arr = {'1','2'};
99         wrap.setCred(arr);
100         
101         assertEquals(arr, wrap.getCred());
102         
103         wrap.setUser("User1");
104         assertEquals("User1", wrap.getUser());
105         
106         wrap.invalidate("1");
107
108         assertFalse(wrap.isUserInRole(null));
109         
110         wrap.set(tafResp, lur);
111         
112         wrap.invalidate("2");
113         
114         assertFalse(wrap.isUserInRole("User1"));
115     }
116
117     @Test
118     public void testInstantiateWithPermConverter() throws CadiException {
119         Access a = new PropAccess();
120         when(tafResp.getAccess()).thenReturn(a);
121         when(tafResp.getPrincipal()).thenReturn(principle);
122         
123         // Anonymous object for testing purposes
124         CachingLur<Permission> lur1 = new CachingLur<Permission>() {
125             @Override public Permission createPerm(String p) { return null; }
126             @Override public boolean fish(Principal bait, Permission ... pond) { return true; }
127             @Override public void fishAll(Principal bait, List<Permission> permissions) { }
128             @Override public void destroy() { }
129             @Override public boolean handlesExclusively(Permission ... pond) { return false; }
130             @Override public boolean handles(Principal principal) { return false; }
131             @Override public void remove(String user) { }
132             @Override public Resp reload(User<Permission> user) { return null; }
133             @Override public void setDebug(String commaDelimIDsOrNull) { }
134             @Override public void clear(Principal p, StringBuilder sb) { }
135         };
136         
137         MapPermConverter pc = new MapPermConverter();
138         
139         CadiWrap wrap = new CadiWrap(request, tafResp, lur1, pc);
140         
141         assertNotNull(wrap.getUserPrincipal());
142         assertNull(wrap.getRemoteUser());
143         assertNull(wrap.getUser());
144         
145         byte[] arr = {'1','2'};
146         wrap.setCred(arr);
147         
148         assertEquals(arr, wrap.getCred());
149         
150         wrap.setUser("User1");
151         assertEquals("User1", wrap.getUser());
152         
153         wrap.invalidate("1");
154         wrap.setPermConverter(new MapPermConverter());
155         
156         assertTrue(wrap.getLur() instanceof CachingLur);
157         assertTrue(wrap.isUserInRole("User1"));
158         
159         wrap.set(tafResp, lur);
160         assertFalse(wrap.isUserInRole("Perm1"));
161     }
162 }