8bcb632938e5a53a3e9935f29959ba96bda98a5f
[aaf/authz.git] / cadi / core / src / test / java / org / onap / aaf / cadi / test / JU_CadiWrap.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aaf\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * ===========================================================================\r
7  * * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * * you may not use this file except in compliance with the License.\r
9  * * You may obtain a copy of the License at\r
10  * * \r
11  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * * \r
13  *  * Unless required by applicable law or agreed to in writing, software\r
14  * * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * * See the License for the specific language governing permissions and\r
17  * * limitations under the License.\r
18  * * ============LICENSE_END====================================================\r
19  * *\r
20  * *\r
21  ******************************************************************************/\r
22 package org.onap.aaf.cadi.test;\r
23 \r
24 import org.junit.*;\r
25 import org.mockito.Mock;\r
26 import org.mockito.MockitoAnnotations;\r
27 \r
28 import static org.junit.Assert.*;\r
29 import static org.mockito.Matchers.*;\r
30 import static org.mockito.Mockito.*;\r
31 \r
32 import java.io.ByteArrayOutputStream;\r
33 import java.io.PrintStream;\r
34 import java.security.Principal;\r
35 import java.util.List;\r
36 \r
37 import javax.servlet.http.HttpServletRequest;\r
38 \r
39 import org.onap.aaf.cadi.Access;\r
40 import org.onap.aaf.cadi.CachingLur;\r
41 import org.onap.aaf.cadi.CadiException;\r
42 import org.onap.aaf.cadi.CadiWrap;\r
43 import org.onap.aaf.cadi.Lur;\r
44 import org.onap.aaf.cadi.Permission;\r
45 import org.onap.aaf.cadi.PropAccess;\r
46 import org.onap.aaf.cadi.User;\r
47 import org.onap.aaf.cadi.CachedPrincipal.Resp;\r
48 import org.onap.aaf.cadi.filter.MapPermConverter;\r
49 import org.onap.aaf.cadi.lur.EpiLur;\r
50 import org.onap.aaf.cadi.principal.TaggedPrincipal;\r
51 import org.onap.aaf.cadi.taf.TafResp;\r
52 \r
53 public class JU_CadiWrap {\r
54         \r
55         @Mock\r
56         private HttpServletRequest request;\r
57         \r
58         @Mock\r
59         private TafResp tafResp;\r
60         \r
61         @Mock\r
62         private TaggedPrincipal principle;\r
63 \r
64         @Mock\r
65         private Lur lur;\r
66 \r
67         @Before\r
68         public void setUp() throws Exception {\r
69                 MockitoAnnotations.initMocks(this);\r
70 \r
71                 System.setOut(new PrintStream(new ByteArrayOutputStream()));\r
72         }\r
73 \r
74         @After\r
75         public void tearDown() {\r
76                 System.setOut(System.out);\r
77         }\r
78 \r
79         @SuppressWarnings("unchecked")\r
80         @Test\r
81         public void testInstantiate() throws CadiException {\r
82                 Access a = new PropAccess();\r
83                 when(tafResp.getAccess()).thenReturn(a);\r
84                 \r
85                 lur.fishAll(isA(Principal.class), (List<Permission>)isA(List.class));\r
86                 \r
87                 EpiLur lur1 = new EpiLur(lur);\r
88                 \r
89                 CadiWrap wrap = new CadiWrap(request, tafResp, lur1);\r
90                 \r
91                 assertNull(wrap.getUserPrincipal());\r
92                 assertNull(wrap.getRemoteUser());\r
93                 assertNull(wrap.getUser());\r
94                 assertEquals(wrap.getPermissions(principle).size(), 0);\r
95                 assertTrue(wrap.access() instanceof PropAccess);\r
96                 \r
97                 byte[] arr = {'1','2'};\r
98                 wrap.setCred(arr);\r
99                 \r
100                 assertEquals(arr, wrap.getCred());\r
101                 \r
102                 wrap.setUser("User1");\r
103                 assertEquals("User1", wrap.getUser());\r
104                 \r
105                 wrap.invalidate("1");\r
106 \r
107                 assertFalse(wrap.isUserInRole(null));\r
108                 \r
109                 wrap.set(tafResp, lur);\r
110                 \r
111                 wrap.invalidate("2");\r
112                 \r
113                 assertFalse(wrap.isUserInRole("User1"));\r
114         }\r
115 \r
116         @Test\r
117         public void testInstantiateWithPermConverter() throws CadiException {\r
118                 Access a = new PropAccess();\r
119                 when(tafResp.getAccess()).thenReturn(a);\r
120                 when(tafResp.getPrincipal()).thenReturn(principle);\r
121                 \r
122                 // Anonymous object for testing purposes\r
123                 CachingLur<Permission> lur1 = new CachingLur<Permission>() {\r
124                         @Override public Permission createPerm(String p) { return null; }\r
125                         @Override public boolean fish(Principal bait, Permission pond) { return true; }\r
126                         @Override public void fishAll(Principal bait, List<Permission> permissions) { }\r
127                         @Override public void destroy() { }\r
128                         @Override public boolean handlesExclusively(Permission pond) { return false; }\r
129                         @Override public boolean handles(Principal principal) { return false; }\r
130                         @Override public void remove(String user) { }\r
131                         @Override public Resp reload(User<Permission> user) { return null; }\r
132                         @Override public void setDebug(String commaDelimIDsOrNull) { }\r
133                         @Override public void clear(Principal p, StringBuilder sb) { }\r
134                 };\r
135                 \r
136                 MapPermConverter pc = new MapPermConverter();\r
137                 \r
138                 CadiWrap wrap = new CadiWrap(request, tafResp, lur1, pc);\r
139                 \r
140                 assertNotNull(wrap.getUserPrincipal());\r
141                 assertNull(wrap.getRemoteUser());\r
142                 assertNull(wrap.getUser());\r
143                 \r
144                 byte[] arr = {'1','2'};\r
145                 wrap.setCred(arr);\r
146                 \r
147                 assertEquals(arr, wrap.getCred());\r
148                 \r
149                 wrap.setUser("User1");\r
150                 assertEquals("User1", wrap.getUser());\r
151                 \r
152                 wrap.invalidate("1");\r
153                 wrap.setPermConverter(new MapPermConverter());\r
154                 \r
155                 assertTrue(wrap.getLur() instanceof CachingLur);\r
156                 assertTrue(wrap.isUserInRole("User1"));\r
157                 \r
158                 wrap.set(tafResp, lur);\r
159                 assertFalse(wrap.isUserInRole("Perm1"));\r
160         }\r
161 }\r