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