Update project structure for aaf/cadi
[aaf/cadi.git] / aaf / src / test / java / org / onap / aaf / cadi / lur / aaf / test / JU_Lur2_0Call.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  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 package org.onap.aaf.cadi.lur.aaf.test;\r
24 \r
25 import static org.junit.Assert.assertEquals;\r
26 \r
27 import java.io.BufferedReader;\r
28 import java.io.IOException;\r
29 import java.io.UnsupportedEncodingException;\r
30 import java.net.HttpURLConnection;\r
31 import java.security.Principal;\r
32 import java.util.Collection;\r
33 import java.util.Enumeration;\r
34 import java.util.Locale;\r
35 import java.util.Map;\r
36 \r
37 import javax.servlet.AsyncContext;\r
38 import javax.servlet.DispatcherType;\r
39 import javax.servlet.RequestDispatcher;\r
40 import javax.servlet.ServletContext;\r
41 import javax.servlet.ServletException;\r
42 import javax.servlet.ServletInputStream;\r
43 import javax.servlet.ServletRequest;\r
44 import javax.servlet.ServletResponse;\r
45 import javax.servlet.http.Cookie;\r
46 import javax.servlet.http.HttpServletRequest;\r
47 import javax.servlet.http.HttpServletResponse;\r
48 import javax.servlet.http.HttpSession;\r
49 import javax.servlet.http.Part;\r
50 \r
51 import org.junit.BeforeClass;\r
52 import org.junit.Test;\r
53 import org.onap.aaf.cadi.CadiException;\r
54 import org.onap.aaf.cadi.Lur;\r
55 import org.onap.aaf.cadi.Permission;\r
56 import org.onap.aaf.cadi.PropAccess;\r
57 import org.onap.aaf.cadi.Symm;\r
58 import org.onap.aaf.cadi.Taf.LifeForm;\r
59 import org.onap.aaf.cadi.aaf.AAFPermission;\r
60 import org.onap.aaf.cadi.aaf.v2_0.AAFConHttp;\r
61 import org.onap.aaf.cadi.aaf.v2_0.AAFLurPerm;\r
62 import org.onap.aaf.cadi.aaf.v2_0.AAFTaf;\r
63 import org.onap.aaf.cadi.locator.DNSLocator;\r
64 import org.onap.aaf.cadi.lur.ConfigPrincipal;\r
65 import org.onap.aaf.cadi.lur.LocalPermission;\r
66 import org.onap.aaf.cadi.taf.TafResp;\r
67 \r
68 public class JU_Lur2_0Call {\r
69         private static AAFConHttp aaf;\r
70         private static PropAccess access;\r
71 \r
72         @BeforeClass\r
73         public static void setUpBeforeClass() throws Exception {\r
74                 access = new PropAccess();\r
75                 aaf = new AAFConHttp(access,new DNSLocator(access,"https","localhost","8100"));\r
76                 aaf.basicAuth("testid", "whatever");\r
77         }\r
78 \r
79         @Test \r
80         public void test() throws Exception {\r
81         \r
82                 AAFLurPerm aafLur = aaf.newLur();\r
83 \r
84                 Principal pri = new ConfigPrincipal("testid@aaf.att.com","whatever");\r
85                 for (int i = 0; i < 10; ++i) {\r
86                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|myInstance|write"),true);\r
87                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|kumquat|write"),false);\r
88                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|myInstance|read"),true);\r
89                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|kumquat|read"),true);\r
90                         \r
91                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","myInstance","write"),true);\r
92                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","kumquat","write"),false);\r
93                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","myInstance","read"),true);\r
94                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","kumquat","read"),true);\r
95 \r
96                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|!kum.*|read"),true);\r
97                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|myInstance|!wr*"),true);\r
98                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|myInstance"),true);\r
99 \r
100                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","!kum.*","read"),true);\r
101                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","myInstance","!wr*"),true);\r
102 \r
103                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|!kum[Qq]uat|read"),true);\r
104                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|!my[iI]nstance|!wr*"),true);\r
105                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|!my[iI]nstance|!wr*"),true);\r
106                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|myInstance|!wr*"),true);\r
107 \r
108                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","!kum[Qq]uat","read"),true);\r
109                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","!my[iI]nstance","!wr*"),true);\r
110                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","!my[iI]nstance","!wr*"),true);\r
111                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service","myInstance","!wr*"),true);\r
112                         \r
113 \r
114                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|!my.nstance|!wr*"),true);\r
115                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|my.nstance|!wr*"),false);\r
116                         \r
117                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|my.nstance|!wr*"),false);\r
118                         \r
119                         //Maitrayee, aren't we going to have issues if we do RegExp with "."?\r
120                         //Is it too expensive to only do Reg Ex in presence of special characters, []{}*, etc? Not sure this helps for GRID.\r
121                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|kum.quat|read"),true);\r
122                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|!kum..uat|read"),true);\r
123                         \r
124                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|myInstance"),true); // ok if Stored Action is "*"\r
125                         \r
126                         // Key Evaluations\r
127                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|:myCluster:*:!my.*|write"),true); // ok if Stored Action is "*"\r
128                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|:myCluster:*|write"),false); // not ok if key lengths don't match "*"\r
129                         print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|:myCluster:*:myCF|write"),true); // ok if Stored Action is "*"\r
130                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service",":myCluster:*:!my.*","write"),true); // ok if Stored Action is "*"\r
131                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service",":myCluster:*:myCF","write"),true); // ok if Stored Action is "*"\r
132                         print(aafLur, pri, new AAFPermission("com.test.JU_Lur2_0Call.service",":myCluster:*","write"),false); // not ok if key lengths don't match\r
133                         \r
134                 }\r
135 \r
136                 print(aafLur, pri, new LocalPermission("bogus"),false);\r
137 \r
138 //              try {\r
139 //                      Thread.sleep(7000);\r
140 //              } catch (InterruptedException e) {\r
141 //                      e.printStackTrace();\r
142 //              }\r
143                 for (int i = 0; i < 10; ++i)\r
144                         print(aafLur, pri, new LocalPermission("supergroup"),false);\r
145 \r
146                 System.out.println("All Done");\r
147         }\r
148         @Test\r
149         public void testTaf() throws Exception {\r
150                 AAFTaf<?> aaft = new AAFTaf<HttpURLConnection>(aaf,true);\r
151                 \r
152                 TafResp resp;\r
153                 // No Header\r
154                 resp = aaft.validate(LifeForm.CBLF, new Req(), null);\r
155                 assertEquals(TafResp.RESP.TRY_AUTHENTICATING, resp.isAuthenticated());\r
156 \r
157                 String auth = "Basic " + Symm.base64.encode("testid:whatever");\r
158                 resp = aaft.validate(LifeForm.CBLF, new Req("Authorization",auth), null);\r
159                 assertEquals(TafResp.RESP.IS_AUTHENTICATED, resp.isAuthenticated());\r
160                 \r
161         }\r
162 //      @Test\r
163 //      public void testRole() throws CadiException {\r
164 //              TestAccess ta = new TestAccess();\r
165 //              AAFLurRole1_0 aafLur = new AAFLurRole1_0(\r
166 //                              ta,\r
167 ////                            "http://DME2RESOLVE/service=com.att.authz.AuthorizationService/version=1.0.0/envContext=UAT/routeOffer=BAU_SE",\r
168 //                              "http://DME2RESOLVE/service=com.att.authz.AuthorizationService/version=1.0.0/envContext=DEV/routeOffer=D1",\r
169 //                              "m12345", "m12345pass", 50000, // dme Time\r
170 //                              // 5*60000); // 5 minutes User Expiration\r
171 //                              50000, // 5 seconds after Expiration\r
172 //                              200); // High Count of items.. These do not take much memory\r
173 //\r
174 //              Principal pri = new ConfigPrincipal("xy1234","whatever);\r
175 //              for (int i = 0; i < 10; ++i) {\r
176 ////                    print(aafLur, pri, new LocalPermission("*|*|*|com.att.authz"));\r
177 //                      print(aafLur, pri, new LocalPermission("service|myInstance|write"),false);\r
178 //                      print(aafLur, pri, new LocalPermission("com.test.JU_Lur2_0Call.service|myInstance|write"),false);\r
179 //                      print(aafLur, pri, new LocalPermission("com.att.cadi"),true);\r
180 //                      print(aafLur, pri, new LocalPermission("global"),true);\r
181 //                      print(aafLur, pri, new LocalPermission("kumquat"),false);\r
182 //              }\r
183 //\r
184 //              print(aafLur, pri, new LocalPermission("bogus"),false);\r
185 //\r
186 //              for (int i = 0; i < 10; ++i)\r
187 //                      print(aafLur, pri, new LocalPermission("supergroup"),false);\r
188 //\r
189 //              System.out.println("All Done");\r
190 //      }\r
191 \r
192 \r
193         private void print(Lur aafLur, Principal pri, Permission perm, boolean shouldBe)\r
194                         throws CadiException {\r
195                 long start = System.nanoTime();\r
196         \r
197                 // The Call\r
198                 boolean ok = aafLur.fish(pri, perm);\r
199         \r
200                 assertEquals(shouldBe,ok);\r
201                 float ms = (System.nanoTime() - start) / 1000000f;\r
202                 if (ok) {\r
203                         System.out.println("Yes, part of " + perm.getKey() + " (" + ms\r
204                                         + "ms)");\r
205                 } else {\r
206                         System.out.println("No, not part of " + perm.getKey() + " (" + ms\r
207                                         + "ms)");\r
208                 }\r
209         }\r
210 \r
211         @SuppressWarnings("rawtypes")\r
212         public class Req implements HttpServletRequest {\r
213                 private String[] headers;\r
214 \r
215                 public Req(String ... headers) {\r
216                         this.headers = headers;\r
217                 }\r
218 \r
219                 public Object getAttribute(String name) {\r
220                         // TODO Auto-generated method stub\r
221                         return null;\r
222                 }\r
223 \r
224                 @SuppressWarnings("unchecked")\r
225                 public Enumeration getAttributeNames() {\r
226                         // TODO Auto-generated method stub\r
227                         return null;\r
228                 }\r
229 \r
230                 public String getCharacterEncoding() {\r
231                         // TODO Auto-generated method stub\r
232                         return null;\r
233                 }\r
234 \r
235                 public void setCharacterEncoding(String env)\r
236                                 throws UnsupportedEncodingException {\r
237                         // TODO Auto-generated method stub\r
238                         \r
239                 }\r
240 \r
241                 public int getContentLength() {\r
242                         // TODO Auto-generated method stub\r
243                         return 0;\r
244                 }\r
245 \r
246                 public String getContentType() {\r
247                         // TODO Auto-generated method stub\r
248                         return null;\r
249                 }\r
250 \r
251                 public ServletInputStream getInputStream() throws IOException {\r
252                         // TODO Auto-generated method stub\r
253                         return null;\r
254                 }\r
255 \r
256                 public String getParameter(String name) {\r
257                         // TODO Auto-generated method stub\r
258                         return null;\r
259                 }\r
260 \r
261                 @SuppressWarnings("unchecked")\r
262                 public Enumeration getParameterNames() {\r
263                         // TODO Auto-generated method stub\r
264                         return null;\r
265                 }\r
266 \r
267                 public String[] getParameterValues(String name) {\r
268                         // TODO Auto-generated method stub\r
269                         return null;\r
270                 }\r
271 \r
272                 @SuppressWarnings("unchecked")\r
273                 public Map getParameterMap() {\r
274                         // TODO Auto-generated method stub\r
275                         return null;\r
276                 }\r
277 \r
278                 public String getProtocol() {\r
279                         // TODO Auto-generated method stub\r
280                         return null;\r
281                 }\r
282 \r
283                 public String getScheme() {\r
284                         // TODO Auto-generated method stub\r
285                         return null;\r
286                 }\r
287 \r
288                 public String getServerName() {\r
289                         // TODO Auto-generated method stub\r
290                         return null;\r
291                 }\r
292 \r
293                 public int getServerPort() {\r
294                         // TODO Auto-generated method stub\r
295                         return 0;\r
296                 }\r
297 \r
298                 public BufferedReader getReader() throws IOException {\r
299                         // TODO Auto-generated method stub\r
300                         return null;\r
301                 }\r
302 \r
303                 public String getRemoteAddr() {\r
304                         // TODO Auto-generated method stub\r
305                         return null;\r
306                 }\r
307 \r
308                 public String getRemoteHost() {\r
309                         // TODO Auto-generated method stub\r
310                         return null;\r
311                 }\r
312 \r
313                 public void setAttribute(String name, Object o) {\r
314                         // TODO Auto-generated method stub\r
315                         \r
316                 }\r
317 \r
318                 public void removeAttribute(String name) {\r
319                         // TODO Auto-generated method stub\r
320                         \r
321                 }\r
322 \r
323                 public Locale getLocale() {\r
324                         // TODO Auto-generated method stub\r
325                         return null;\r
326                 }\r
327 \r
328                 @SuppressWarnings("unchecked")\r
329                 public Enumeration getLocales() {\r
330                         // TODO Auto-generated method stub\r
331                         return null;\r
332                 }\r
333 \r
334                 public boolean isSecure() {\r
335                         // TODO Auto-generated method stub\r
336                         return false;\r
337                 }\r
338 \r
339                 public RequestDispatcher getRequestDispatcher(String path) {\r
340                         // TODO Auto-generated method stub\r
341                         return null;\r
342                 }\r
343 \r
344                 public String getRealPath(String path) {\r
345                         // TODO Auto-generated method stub\r
346                         return null;\r
347                 }\r
348 \r
349                 public int getRemotePort() {\r
350                         // TODO Auto-generated method stub\r
351                         return 0;\r
352                 }\r
353 \r
354                 public String getLocalName() {\r
355                         // TODO Auto-generated method stub\r
356                         return null;\r
357                 }\r
358 \r
359                 public String getLocalAddr() {\r
360                         // TODO Auto-generated method stub\r
361                         return null;\r
362                 }\r
363 \r
364                 public int getLocalPort() {\r
365                         // TODO Auto-generated method stub\r
366                         return 0;\r
367                 }\r
368 \r
369                 public String getAuthType() {\r
370                         // TODO Auto-generated method stub\r
371                         return null;\r
372                 }\r
373 \r
374                 public Cookie[] getCookies() {\r
375                         // TODO Auto-generated method stub\r
376                         return null;\r
377                 }\r
378 \r
379                 public long getDateHeader(String name) {\r
380                         // TODO Auto-generated method stub\r
381                         return 0;\r
382                 }\r
383 \r
384                 public String getHeader(String name) {\r
385                         for(int i=1;i<headers.length;i=i+2) {\r
386                                 if(headers[i-1].equals(name)) return headers[i];\r
387                         }\r
388                         return null;\r
389                 }\r
390 \r
391                 @SuppressWarnings("unchecked")\r
392                 public Enumeration getHeaders(String name) {\r
393                         // TODO Auto-generated method stub\r
394                         return null;\r
395                 }\r
396 \r
397                 @SuppressWarnings("unchecked")\r
398                 public Enumeration getHeaderNames() {\r
399                         // TODO Auto-generated method stub\r
400                         return null;\r
401                 }\r
402 \r
403                 public int getIntHeader(String name) {\r
404                         // TODO Auto-generated method stub\r
405                         return 0;\r
406                 }\r
407 \r
408                 public String getMethod() {\r
409                         // TODO Auto-generated method stub\r
410                         return null;\r
411                 }\r
412 \r
413                 public String getPathInfo() {\r
414                         // TODO Auto-generated method stub\r
415                         return null;\r
416                 }\r
417 \r
418                 public String getPathTranslated() {\r
419                         // TODO Auto-generated method stub\r
420                         return null;\r
421                 }\r
422 \r
423                 public String getContextPath() {\r
424                         // TODO Auto-generated method stub\r
425                         return null;\r
426                 }\r
427 \r
428                 public String getQueryString() {\r
429                         // TODO Auto-generated method stub\r
430                         return null;\r
431                 }\r
432 \r
433                 public String getRemoteUser() {\r
434                         // TODO Auto-generated method stub\r
435                         return null;\r
436                 }\r
437 \r
438                 public boolean isUserInRole(String role) {\r
439                         // TODO Auto-generated method stub\r
440                         return false;\r
441                 }\r
442 \r
443                 public Principal getUserPrincipal() {\r
444                         // TODO Auto-generated method stub\r
445                         return null;\r
446                 }\r
447 \r
448                 public String getRequestedSessionId() {\r
449                         // TODO Auto-generated method stub\r
450                         return null;\r
451                 }\r
452 \r
453                 public String getRequestURI() {\r
454                         // TODO Auto-generated method stub\r
455                         return null;\r
456                 }\r
457 \r
458                 public StringBuffer getRequestURL() {\r
459                         // TODO Auto-generated method stub\r
460                         return null;\r
461                 }\r
462 \r
463                 public String getServletPath() {\r
464                         // TODO Auto-generated method stub\r
465                         return null;\r
466                 }\r
467 \r
468                 public HttpSession getSession(boolean create) {\r
469                         // TODO Auto-generated method stub\r
470                         return null;\r
471                 }\r
472 \r
473                 public HttpSession getSession() {\r
474                         // TODO Auto-generated method stub\r
475                         return null;\r
476                 }\r
477 \r
478                 public boolean isRequestedSessionIdValid() {\r
479                         // TODO Auto-generated method stub\r
480                         return false;\r
481                 }\r
482 \r
483                 public boolean isRequestedSessionIdFromCookie() {\r
484                         // TODO Auto-generated method stub\r
485                         return false;\r
486                 }\r
487 \r
488                 public boolean isRequestedSessionIdFromURL() {\r
489                         // TODO Auto-generated method stub\r
490                         return false;\r
491                 }\r
492 \r
493                 public boolean isRequestedSessionIdFromUrl() {\r
494                         // TODO Auto-generated method stub\r
495                         return false;\r
496                 }\r
497 \r
498                 @Override\r
499                 public ServletContext getServletContext() {\r
500                         // TODO Auto-generated method stub\r
501                         return null;\r
502                 }\r
503 \r
504                 @Override\r
505                 public AsyncContext startAsync() throws IllegalStateException {\r
506                         // TODO Auto-generated method stub\r
507                         return null;\r
508                 }\r
509 \r
510                 @Override\r
511                 public AsyncContext startAsync(ServletRequest servletRequest,\r
512                                 ServletResponse servletResponse) throws IllegalStateException {\r
513                         // TODO Auto-generated method stub\r
514                         return null;\r
515                 }\r
516 \r
517                 @Override\r
518                 public boolean isAsyncStarted() {\r
519                         // TODO Auto-generated method stub\r
520                         return false;\r
521                 }\r
522 \r
523                 @Override\r
524                 public boolean isAsyncSupported() {\r
525                         // TODO Auto-generated method stub\r
526                         return false;\r
527                 }\r
528 \r
529                 @Override\r
530                 public AsyncContext getAsyncContext() {\r
531                         // TODO Auto-generated method stub\r
532                         return null;\r
533                 }\r
534 \r
535                 @Override\r
536                 public DispatcherType getDispatcherType() {\r
537                         // TODO Auto-generated method stub\r
538                         return null;\r
539                 }\r
540 \r
541                 @Override\r
542                 public boolean authenticate(HttpServletResponse response)\r
543                                 throws IOException, ServletException {\r
544                         // TODO Auto-generated method stub\r
545                         return false;\r
546                 }\r
547 \r
548                 @Override\r
549                 public void login(String username, String password)\r
550                                 throws ServletException {\r
551                         // TODO Auto-generated method stub\r
552                         \r
553                 }\r
554 \r
555                 @Override\r
556                 public void logout() throws ServletException {\r
557                         // TODO Auto-generated method stub\r
558                         \r
559                 }\r
560 \r
561                 @Override\r
562                 public Collection<Part> getParts() throws IOException, ServletException {\r
563                         // TODO Auto-generated method stub\r
564                         return null;\r
565                 }\r
566 \r
567                 @Override\r
568                 public Part getPart(String name) throws IOException, ServletException {\r
569                         // TODO Auto-generated method stub\r
570                         return null;\r
571                 }\r
572                 \r
573         }\r
574 }\r