diff options
Diffstat (limited to 'cadi/oauth-enduser/src/test')
3 files changed, 78 insertions, 78 deletions
diff --git a/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OAuthExample.java b/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OAuthExample.java index d0c800bf..0dec0999 100644 --- a/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OAuthExample.java +++ b/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OAuthExample.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -56,14 +56,14 @@ public class OAuthExample { public final static void main(final String args[]) { // These Objects are expected to be Long-Lived... Construct once - + // Property Access - // This method will allow you to set "cadi_prop_files" (or any other property) on Command line + // This method will allow you to set "cadi_prop_files" (or any other property) on Command line access = new PropAccess(args); - + // access = PropAccess(); // Note: This style will load "cadi_prop_files" from VM Args - + // Token aware Client Factory try { tcf = TokenClientFactory.instance(access); @@ -71,8 +71,8 @@ public class OAuthExample { access.log(e1, "Unable to setup OAuth Client Factory, Fail Fast"); System.exit(1); } - - + + // Obtain Endpoints for OAuth2 from Properties. Expected is "cadi.properties" file, pointed to by "cadi_prop_files" try { Map<String, String> aaf_urls = Agent.loadURLs(access); @@ -81,9 +81,9 @@ public class OAuthExample { String tokenIntrospectURL = access.getProperty(Config.AAF_OAUTH2_INTROSPECT_URL); // Default to AAF); // Get Hello Service final String endServicesURL = access.getProperty(Config.AAF_OAUTH2_HELLO_URL); - + final int CALL_TIMEOUT = Integer.parseInt(access.getProperty(Config.AAF_CALL_TIMEOUT,Config.AAF_CALL_TIMEOUT_DEF)); - + ////////////////////////////////////////////////////////////////////// // Scenario 1: // Get and use an OAuth Client, which understands Token Management @@ -93,7 +93,7 @@ public class OAuthExample { TokenClient tc = tcf.newClient(tokenServiceURL); // can set your own timeout here (url, timeoutMilliseconds) // Set your Application (MicroService, whatever) Credentials here - // These are how your Application is known, particularly to the OAuth Server. + // These are how your Application is known, particularly to the OAuth Server. // If AAF Token server, then its just the same as your other AAF MechID creds // If it is the Alternate OAUTH, you'll need THOSE credentials. See that tool's Onboarding procedures. String client_id = access.getProperty(Config.AAF_APPID); @@ -103,7 +103,7 @@ public class OAuthExample { } String client_secret = access.getProperty(Config.AAF_APPPASS); tc.client_creds(client_id, client_secret); - + // If you are working with Credentials the End User, set username/password as appropriate to the OAuth Server // tc.password(end_user_id, end_user_password); // IMPORTANT: @@ -114,7 +114,7 @@ public class OAuthExample { // With AAF, the Scopes you put in are the AAF Namespaces you want access to. Your Token will contain the // AAF Permissions of the Namespaces (you can put in more than one), the user name (or client_id if no user_name), // is allowed to see. - + // Here's a trick to get the namespace out of a Fully Qualified AAF Identity (your MechID) String ns = FQI.reverseDomain(client_id); System.out.printf("\nNote: The AAF Namespace of FQI (Fully Qualified Identity) %s is %s\n\n",client_id, ns); @@ -122,23 +122,23 @@ public class OAuthExample { // Now, we can get a Token. Note: for "scope", use AAF Namespaces to get AAF Permissions embedded in // Note: getToken checks if Token is expired, if so, then refreshes before handing back. Result<TimedToken> rtt = tc.getToken(ns,"org.onap.test"); - + // Note: you can clear a Token's Disk/Memory presence by // 1) removing the Token from the "token/outgoing" directory on the O/S // 2) programmatically by calling "clearToken" with exact params as "getToken", when it has the same credentials set // tc.clearToken("org.onap.aaf","org.onap.test"); - + // Result Object can be queried for success if (rtt.isOK()) { TimedToken token = rtt.value; print(token); // Take a look at what's in a Token - + // Use this Token in your client calls with "Tokenized Client" (TzClient) // These should NOT be used cross thread. TzClient helloClient = tcf.newTzClient(endServicesURL); helloClient.setToken(client_id, token); - - // This client call style, "best" call with "Retryable" inner class covers finding an available Service + + // This client call style, "best" call with "Retryable" inner class covers finding an available Service // (when Multi-services exist) for the best service, based (currently) on distance. // // the "Generic" in Type gives a Return Value for the Code, which you can set on the "best" method @@ -149,20 +149,20 @@ public class OAuthExample { Future<String> future = client.read("hello","text/plain"); // The "future" calling method allows you to do other processing, such as call more than one backend // client before picking up the result - // If "get" matches the HTTP Code for the method (i.e. read HTTP Return value is 200), then + // If "get" matches the HTTP Code for the method (i.e. read HTTP Return value is 200), then if (future.get(CALL_TIMEOUT)) { // Client Returned expected value return future.value; } else { throw new APIException(future.code() + future.body()); - } + } } }); - + // You want to do something with returned value. Here, we say "hello" System.out.printf("\nPositive Response from Hello: %s\n",rv); - - + + ////////////////////////////////////////////////////////////////////// // Scenario 2: // As a Service, read Introspection information as proof of Authenticated Authorization @@ -187,12 +187,12 @@ public class OAuthExample { } else { access.printf(Level.ERROR, "Unable to obtain OAuth Token: %d %s\n",rtt.code,rtt.error); } - + } catch (CadiException | LocatorException | APIException | IOException e) { e.printStackTrace(); } } - + ///////////////////////////////////////////////////////////// // Examples of Object Access ///////////////////////////////////////////////////////////// @@ -207,7 +207,7 @@ public class OAuthExample { t.getScope(), t.getRefreshToken()); } - + private static void print(Introspect ti) { if (ti==null || ti.getClientId()==null) { System.out.println("Empty Introspect"); @@ -232,7 +232,7 @@ public class OAuthExample { Chrono.timeStamp(exp), ti.getScope(), ti.getContent()==null?"":ti.getContent()); - + System.out.println(); } diff --git a/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OnapClientExample.java b/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OnapClientExample.java index b8cce9e5..2d489f83 100644 --- a/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OnapClientExample.java +++ b/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/OnapClientExample.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -56,25 +56,25 @@ public class OnapClientExample { public final static void main(final String args[]) { // These Objects are expected to be Long-Lived... Construct once - + // Property Access - // This method will allow you to set "cadi_prop_files" (or any other property) on Command line + // This method will allow you to set "cadi_prop_files" (or any other property) on Command line access = new PropAccess(args); // Note: This style will load "cadi_prop_files" from VM Args // access = PropAccess(); try { Map<String, String> aaf_urls = Agent.loadURLs(access); Agent.fillMissing(access, aaf_urls); - + // Token aware Client Factory tcf = TokenClientFactory.instance(access); } catch (APIException | GeneralSecurityException | IOException | CadiException e1) { access.log(e1, "Unable to setup OAuth Client Factory, Fail Fast"); System.exit(1); } - + final int CALL_TIMEOUT = Integer.parseInt(access.getProperty(Config.AAF_CALL_TIMEOUT,Config.AAF_CALL_TIMEOUT_DEF)); - + try { ////////////////////////////////////////////////////////////////////// // Scenario 1: @@ -84,7 +84,7 @@ public class OnapClientExample { // In this example, it is AAF, but it can be the Alternate OAuth TokenClient tc = tcf.newClient(Config.AAF_OAUTH2_TOKEN_URL); // can set your own timeout here (url, timeoutMilliseconds) - + // Here's a trick to get the namespace out of a Fully Qualified AAF Identity (your MechID) String ns = FQI.reverseDomain(tc.client_id()); System.out.printf("\nNote: The AAF Namespace of FQI (Fully Qualified Identity) %s is %s\n\n",tc.client_id(), ns); @@ -92,17 +92,17 @@ public class OnapClientExample { // Now, we can get a Token. Note: for "scope", use AAF Namespaces to get AAF Permissions embedded in // Note: getToken checks if Token is expired, if so, then refreshes before handing back. Result<TimedToken> rtt = tc.getToken(ns,"org.onap.test"); // get multiple scopes - + // Note: you can clear a Token's Disk/Memory presence by // 1) removing the Token from the "token/outgoing" directory on the O/S // 2) programmatically by calling "clearToken" with exact params as "getToken", when it has the same credentials set // tc.clearToken("org.onap.aaf","org.onap.test"); - + // Result Object can be queried for success if (rtt.isOK()) { TimedToken token = rtt.value; print(token); // Take a look at what's in a Token - + // Use this Token in your client calls with "Tokenized Client" (TzClient) // These should NOT be used cross thread. // Get Hello Service URL... roll your own in your own world. @@ -111,8 +111,8 @@ public class OnapClientExample { TzClient helloClient = tcf.newTzClient(endServicesURL); helloClient.setToken(tc.client_id(), token); - - // This client call style, "best" call with "Retryable" inner class covers finding an available Service + + // This client call style, "best" call with "Retryable" inner class covers finding an available Service // (when Multi-services exist) for the best service, based (currently) on distance. // // the "Generic" in Type gives a Return Value for the Code, which you can set on the "best" method @@ -123,20 +123,20 @@ public class OnapClientExample { Future<String> future = client.read("hello","text/plain"); // The "future" calling method allows you to do other processing, such as call more than one backend // client before picking up the result - // If "get" matches the HTTP Code for the method (i.e. read HTTP Return value is 200), then + // If "get" matches the HTTP Code for the method (i.e. read HTTP Return value is 200), then if (future.get(CALL_TIMEOUT)) { // Client Returned expected value return future.value; } else { throw new APIException(future.code() + future.body()); - } + } } }); - + // You want to do something with returned value. Here, we say "hello" System.out.printf("\nPositive Response from Hello: %s\n",rv); - - + + ////////////////////////////////////////////////////////////////////// // Scenario 2: // As a Service, read Introspection information as proof of Authenticated Authorization @@ -160,12 +160,12 @@ public class OnapClientExample { } else { access.printf(Level.ERROR, "Unable to obtain OAuth Token: %d %s\n",rtt.code,rtt.error); } - + } catch (CadiException | LocatorException | APIException | IOException e) { e.printStackTrace(); } } - + ///////////////////////////////////////////////////////////// // Examples of Object Access ///////////////////////////////////////////////////////////// @@ -180,7 +180,7 @@ public class OnapClientExample { t.getScope(), t.getRefreshToken()); } - + private static void print(Introspect ti) { if (ti==null || ti.getClientId()==null) { System.out.println("Empty Introspect"); @@ -205,7 +205,7 @@ public class OnapClientExample { Chrono.timeStamp(exp), ti.getScope(), ti.getContent()==null?"":ti.getContent()); - + System.out.println(); } diff --git a/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/SimpleRestClientExample.java b/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/SimpleRestClientExample.java index dc1824fc..c15e434d 100644 --- a/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/SimpleRestClientExample.java +++ b/cadi/oauth-enduser/src/test/java/org/onap/aaf/cadi/enduser/test/SimpleRestClientExample.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -39,29 +39,29 @@ public class SimpleRestClientExample { try { // Note: Expect ClientFactory to be long-lived... do NOT create more than once. ClientFactory cf = new ClientFactory(args); - - + + String urlString = cf.getAccess().getProperty("myurl", null); if (urlString==null) { System.out.println("Note: In your startup, add \"myurl=https://<aaf hello machine>:8130\" to command line\n\t" - + "OR\n\t" + + "OR\n\t" + " add -Dmyurl=https://<aaf hello machine>:8130 to VM Args\n\t" + "where \"aaf hello machine\" is an aaf Installation you know about."); } else { - + SimpleRESTClient restClient = cf.simpleRESTClient(urlString,"org.osaaf.aaf"); ///////////////////////////////////////////////////////////// - // + // // Creating Content for CREATE/UPDATE // ///////////////////////////////////////////////////////////// // Create an object that can be reusable IN THIS THREAD ONLY... Not Thread-safe on purpose Input input = new SimpleRESTClient.Input(); - + // Note: alternate use is to set the input object to an already created String // Input input = new SimpleRESTClient.Input(aString); - + PrintWriter pw = input.writer(); pw.print("{\"something\": ["); for (int i=0;i<4;++i) { @@ -73,16 +73,16 @@ public class SimpleRestClientExample { pw.print('}'); } pw.println("]}"); - + // You can check or log the content String content = input.toString(); System.out.println(content); - - // Good form for Writers is that you should close it... + + // Good form for Writers is that you should close it... pw.close(); ///////////////////////////////////////////////////////////// - // + // // CREATE/POST // ///////////////////////////////////////////////////////////// @@ -100,7 +100,7 @@ public class SimpleRestClientExample { ///////////////////////////////////////////////////////////// - // + // // READ/GET // ///////////////////////////////////////////////////////////// @@ -110,24 +110,24 @@ public class SimpleRestClientExample { System.out.println("-------- START REST READ/GET --------"); boolean expectException = false; try { - + // Call with no Queries String rv = restClient.get("resthello/rest_id"); System.out.println(rv); - + // Same call with "read" style rv = restClient.read("resthello/rest_id"); System.out.println(rv); - - + + // Call with Queries rv = restClient.get("resthello/rest_id?perm=org.osaaf.people|*|read"); System.out.println(rv); - + // Call setting ID from principal coming from Trans // Pretend Transaction HRequest req = new HRequest("demo@people.osaaf.org"); // Pretend Trans has Jonathan as Identity - + // Call with RESTException, which allows obtaining HTTPCode and any Error message sent rv = restClient.endUser(req.userPrincipal()).get("resthello/rest_id?perm=org.osaaf.people|*|read"); System.out.println(rv); @@ -150,17 +150,17 @@ public class SimpleRestClientExample { } ///////////////////////////////////////////////////////////// - // + // // UPDATE/PUT // ///////////////////////////////////////////////////////////// - + // If you use "input" object again as a writer, you can clear it on the same thread, and go again input.clear(); // Here we just set to a String, instead of Writing input.set("{\"something\" : []}"); - + System.out.println("-------- END REST UPDATE/PUT --------"); try { String rv = restClient.update("resthello/rest_id", input); @@ -175,7 +175,7 @@ public class SimpleRestClientExample { } ///////////////////////////////////////////////////////////// - // + // // DELETE // ///////////////////////////////////////////////////////////// @@ -191,14 +191,14 @@ public class SimpleRestClientExample { } finally { System.out.println("-------- END REST DELETE --------"); } - } + } } catch (CadiException | APIException e) { e.printStackTrace(); } } - - private static class HRequest { - + + private static class HRequest { + public HRequest(String fqi) { name = fqi; } @@ -212,7 +212,7 @@ public class SimpleRestClientExample { public String getName() { return name; } - + }; } } |