This is an automated email from the ASF dual-hosted git repository.

pradeep pushed a commit to branch RANGER-5026_master
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 5de414131dc8033f43935658fd31244fb35c2b1b
Author: Pradeep AgrawaL <[email protected]>
AuthorDate: Mon Dec 16 15:48:28 2024 +0530

    RANGER-5026: agents-cred module: update for code readability improvement
---
 agents-cred/pom.xml                                |   2 +
 .../credutils/CredentialsProviderUtil.java         |  84 +++---
 .../credutils/kerberos/AbstractJaasConf.java       |   8 +-
 .../kerberos/KerberosCredentialsProvider.java      |  14 +-
 .../credutils/kerberos/KeytabJaasConf.java         |   1 -
 .../hadoop/utils/RangerCredentialProvider.java     |  84 +++---
 .../hadoop/utils/RangerCredentialProviderTest.java | 295 ++++++++++-----------
 7 files changed, 232 insertions(+), 256 deletions(-)

diff --git a/agents-cred/pom.xml b/agents-cred/pom.xml
index 362a4e9a9..aa792c365 100644
--- a/agents-cred/pom.xml
+++ b/agents-cred/pom.xml
@@ -28,6 +28,8 @@
     <name>Credential Support</name>
     <description>Plugins Common</description>
     <properties>
+        <checkstyle.failOnViolation>true</checkstyle.failOnViolation>
+        <checkstyle.skip>false</checkstyle.skip>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
     <dependencies>
diff --git 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/CredentialsProviderUtil.java
 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/CredentialsProviderUtil.java
index 773662211..dab6f9110 100644
--- 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/CredentialsProviderUtil.java
+++ 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/CredentialsProviderUtil.java
@@ -40,6 +40,7 @@ import javax.security.auth.kerberos.KerberosPrincipal;
 import javax.security.auth.kerberos.KerberosTicket;
 import javax.security.auth.login.Configuration;
 import javax.security.auth.login.LoginContext;
+
 import java.math.BigDecimal;
 import java.security.AccessControlContext;
 import java.security.AccessController;
@@ -50,35 +51,24 @@ import java.util.Date;
 import java.util.Set;
 
 public class CredentialsProviderUtil {
-    private static final Logger logger = 
LoggerFactory.getLogger(CredentialsProviderUtil.class);
-    private static final Oid SPNEGO_OID = getSpnegoOid();
-    private static final String CRED_CONF_NAME = "ESClientLoginConf";
-    public static long ticketExpireTime80 = 0;
+    private static final Logger logger             = 
LoggerFactory.getLogger(CredentialsProviderUtil.class);
+    private static final Oid    SPNEGO_OID         = getSpnegoOid();
+    private static final String CRED_CONF_NAME     = "ESClientLoginConf";
+    public static        long   ticketExpireTime80;
 
-    private static Oid getSpnegoOid() {
-        Oid oid = null;
-        try {
-            oid = new Oid("1.3.6.1.5.5.2");
-        } catch (GSSException gsse) {
-            throw new RuntimeException(gsse);
-        }
-        return oid;
+    private CredentialsProviderUtil() {
+        // to block instantiation
     }
 
-    public static KerberosCredentialsProvider getKerberosCredentials(String 
user, String password){
+    public static KerberosCredentialsProvider getKerberosCredentials(String 
user, String password) {
         KerberosCredentialsProvider credentialsProvider = new 
KerberosCredentialsProvider();
-        final GSSManager gssManager = GSSManager.getInstance();
+        final GSSManager            gssManager          = 
GSSManager.getInstance();
         try {
-            final GSSName gssUserPrincipalName = gssManager.createName(user, 
GSSName.NT_USER_NAME);
-            Subject subject = login(user, password);
-            final AccessControlContext acc = AccessController.getContext();
-            final GSSCredential credential = doAsPrivilegedWrapper(subject,
-                    (PrivilegedExceptionAction<GSSCredential>) () -> 
gssManager.createCredential(gssUserPrincipalName,
-                            GSSCredential.DEFAULT_LIFETIME, SPNEGO_OID, 
GSSCredential.INITIATE_ONLY),
-                    acc);
-            credentialsProvider.setCredentials(
-                    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, 
AuthScope.ANY_REALM, AuthSchemes.SPNEGO),
-                    new KerberosCredentials(credential));
+            final GSSName              gssUserPrincipalName = 
gssManager.createName(user, GSSName.NT_USER_NAME);
+            Subject                    subject              = login(user, 
password);
+            final AccessControlContext acc                  = 
AccessController.getContext();
+            final GSSCredential credential = doAsPrivilegedWrapper(subject, 
(PrivilegedExceptionAction<GSSCredential>) () -> 
gssManager.createCredential(gssUserPrincipalName, 
GSSCredential.DEFAULT_LIFETIME, SPNEGO_OID, GSSCredential.INITIATE_ONLY), acc);
+            credentialsProvider.setCredentials(new 
AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, 
AuthSchemes.SPNEGO), new KerberosCredentials(credential));
         } catch (GSSException e) {
             logger.error("GSSException:", e);
             throw new RuntimeException(e);
@@ -91,7 +81,7 @@ public class CredentialsProviderUtil {
 
     public static synchronized KerberosTicket getTGT(Subject subject) {
         Set<KerberosTicket> tickets = 
subject.getPrivateCredentials(KerberosTicket.class);
-        for(KerberosTicket ticket: tickets) {
+        for (KerberosTicket ticket : tickets) {
             KerberosPrincipal server = ticket.getServer();
             if (server.getName().equals("krbtgt/" + server.getRealm() + "@" + 
server.getRealm())) {
                 if (logger.isDebugEnabled()) {
@@ -104,15 +94,15 @@ public class CredentialsProviderUtil {
         return null;
     }
 
-    public static Boolean ticketWillExpire(KerberosTicket ticket){
+    public static Boolean ticketWillExpire(KerberosTicket ticket) {
         long ticketExpireTime = ticket.getEndTime().getTime();
-        long currrentTime = new Date().getTime();
+        long currrentTime     = new Date().getTime();
         if (logger.isDebugEnabled()) {
             logger.debug("TicketExpireTime is:" + ticketExpireTime);
             logger.debug("currrentTime is:" + currrentTime);
         }
         if (ticketExpireTime80 == 0) {
-            long timeDiff = ticketExpireTime - currrentTime;
+            long timeDiff   = ticketExpireTime - currrentTime;
             long timeDiff20 = 
Math.round(Float.parseFloat(BigDecimal.valueOf(timeDiff * 
0.2).toPlainString()));
             ticketExpireTime80 = ticketExpireTime - timeDiff20;
         }
@@ -130,21 +120,23 @@ public class CredentialsProviderUtil {
     }
 
     public static synchronized Subject login(String userPrincipalName, String 
keytabPath) throws PrivilegedActionException {
-             Subject sub = 
AccessController.doPrivileged((PrivilegedExceptionAction<Subject>) () -> {
-                final Subject subject = new Subject(false, 
Collections.singleton(new KerberosPrincipal(userPrincipalName)),
-                        Collections.emptySet(), Collections.emptySet());
-                Configuration conf = new KeytabJaasConf(userPrincipalName, 
keytabPath, false);
-
-                LoginContext loginContext = new LoginContext(CRED_CONF_NAME, 
subject, null, conf);
-                loginContext.login();
-                return loginContext.getSubject();
-            });
+        Subject sub = 
AccessController.doPrivileged((PrivilegedExceptionAction<Subject>) () -> {
+            final Subject subject = new Subject(false, 
Collections.singleton(new KerberosPrincipal(userPrincipalName)), 
Collections.emptySet(), Collections.emptySet());
+            Configuration conf = new KeytabJaasConf(userPrincipalName, 
keytabPath, false);
+            LoginContext loginContext = new LoginContext(CRED_CONF_NAME, 
subject, null, conf);
+            loginContext.login();
+            return loginContext.getSubject();
+        });
         return sub;
     }
 
+    public static CredentialsProvider getBasicCredentials(String user, String 
password) {
+        CredentialsProvider credentialsProvider = new 
BasicCredentialsProvider();
+        credentialsProvider.setCredentials(AuthScope.ANY, new 
UsernamePasswordCredentials(user, password));
+        return credentialsProvider;
+    }
 
-    static <T> T doAsPrivilegedWrapper(final Subject subject, final 
PrivilegedExceptionAction<T> action, final AccessControlContext acc)
-            throws PrivilegedActionException {
+    static <T> T doAsPrivilegedWrapper(final Subject subject, final 
PrivilegedExceptionAction<T> action, final AccessControlContext acc) throws 
PrivilegedActionException {
         try {
             return 
AccessController.doPrivileged((PrivilegedExceptionAction<T>) () -> 
Subject.doAsPrivileged(subject, action, acc));
         } catch (PrivilegedActionException pae) {
@@ -155,11 +147,13 @@ public class CredentialsProviderUtil {
         }
     }
 
-    public static CredentialsProvider getBasicCredentials(String user, String 
password) {
-        CredentialsProvider credentialsProvider = new 
BasicCredentialsProvider();
-        credentialsProvider.setCredentials(AuthScope.ANY,
-                new UsernamePasswordCredentials(user, password));
-        return credentialsProvider;
+    private static Oid getSpnegoOid() {
+        Oid oid = null;
+        try {
+            oid = new Oid("1.3.6.1.5.5.2");
+        } catch (GSSException gsse) {
+            throw new RuntimeException(gsse);
+        }
+        return oid;
     }
-
 }
diff --git 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/AbstractJaasConf.java
 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/AbstractJaasConf.java
index ae3c9312d..521c005e0 100644
--- 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/AbstractJaasConf.java
+++ 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/AbstractJaasConf.java
@@ -21,17 +21,18 @@ package org.apache.ranger.authorization.credutils.kerberos;
 
 import javax.security.auth.login.AppConfigurationEntry;
 import javax.security.auth.login.Configuration;
+
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
 public abstract class AbstractJaasConf extends Configuration {
-    private final String userPrincipalName;
+    private final String  userPrincipalName;
     private final boolean enableDebugLogs;
 
     public AbstractJaasConf(final String userPrincipalName, final boolean 
enableDebugLogs) {
         this.userPrincipalName = userPrincipalName;
-        this.enableDebugLogs = enableDebugLogs;
+        this.enableDebugLogs   = enableDebugLogs;
     }
 
     @Override
@@ -42,8 +43,7 @@ public abstract class AbstractJaasConf extends Configuration {
         options.put("storeKey", Boolean.TRUE.toString());
         options.put("debug", Boolean.toString(enableDebugLogs));
         addOptions(options);
-        return new AppConfigurationEntry[] { new 
AppConfigurationEntry("com.sun.security.auth.module.Krb5LoginModule",
-                AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, 
Collections.unmodifiableMap(options)) };
+        return new AppConfigurationEntry[] {new 
AppConfigurationEntry("com.sun.security.auth.module.Krb5LoginModule", 
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, 
Collections.unmodifiableMap(options))};
     }
 
     abstract void addOptions(Map<String, String> options);
diff --git 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KerberosCredentialsProvider.java
 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KerberosCredentialsProvider.java
index 6ef3085b7..c8e1bf578 100644
--- 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KerberosCredentialsProvider.java
+++ 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KerberosCredentialsProvider.java
@@ -25,7 +25,7 @@ import org.apache.http.client.CredentialsProvider;
 import org.apache.http.client.config.AuthSchemes;
 
 public class KerberosCredentialsProvider implements CredentialsProvider {
-    private AuthScope authScope;
+    private AuthScope   authScope;
     private Credentials credentials;
 
     @Override
@@ -33,20 +33,22 @@ public class KerberosCredentialsProvider implements 
CredentialsProvider {
         if (authscope.getScheme().regionMatches(true, 0, AuthSchemes.SPNEGO, 
0, AuthSchemes.SPNEGO.length()) == false) {
             throw new IllegalArgumentException("Only " + AuthSchemes.SPNEGO + 
" auth scheme is supported in AuthScope");
         }
-        this.authScope = authscope;
+        this.authScope   = authscope;
         this.credentials = credentials;
     }
 
     @Override
     public Credentials getCredentials(AuthScope authscope) {
-        assert this.authScope != null && authscope != null;
-        return authscope.match(this.authScope) > -1 ? this.credentials : null;
+        Credentials ret = null;
+        if (this.authScope != null && authscope != null) {
+            ret = authscope.match(this.authScope) > -1 ? this.credentials : 
null;
+        }
+        return ret;
     }
 
     @Override
     public void clear() {
-        this.authScope = null;
+        this.authScope   = null;
         this.credentials = null;
     }
-
 }
diff --git 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KeytabJaasConf.java
 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KeytabJaasConf.java
index 4f96f95b2..87a0da666 100644
--- 
a/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KeytabJaasConf.java
+++ 
b/agents-cred/src/main/java/org/apache/ranger/authorization/credutils/kerberos/KeytabJaasConf.java
@@ -34,5 +34,4 @@ public class KeytabJaasConf extends AbstractJaasConf {
         options.put("keyTab", keytabFilePath);
         options.put("doNotPrompt", Boolean.TRUE.toString());
     }
-
 }
diff --git 
a/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java
 
b/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java
index ac7ccd23c..9983aceb6 100644
--- 
a/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java
+++ 
b/agents-cred/src/main/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProvider.java
@@ -19,59 +19,55 @@
 
 package org.apache.ranger.authorization.hadoop.utils;
 
-import java.util.List;
-
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.alias.CredentialProvider;
 import org.apache.hadoop.security.alias.CredentialProviderFactory;
-import org.apache.hadoop.conf.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.List;
 
 public final class RangerCredentialProvider {
+    private static final Logger LOG = 
LoggerFactory.getLogger(RangerCredentialProvider.class);
+    private static final RangerCredentialProvider CRED_PROVIDER = new 
RangerCredentialProvider();
 
-       private static final Logger LOG = 
LoggerFactory.getLogger(RangerCredentialProvider.class);
-
-       private static final RangerCredentialProvider CRED_PROVIDER = new 
RangerCredentialProvider();
-
-       protected RangerCredentialProvider() {
-               //
-       }
-
-       public static RangerCredentialProvider getInstance() {
-               return CRED_PROVIDER;
-       }
+    protected RangerCredentialProvider() {
+        //
+    }
 
-       public String getCredentialString(String url, String alias) {
-               if (url != null && alias != null) {
-                       List<CredentialProvider> providers = 
getCredentialProviders(url);
-                       if (providers != null) {
-                               for (CredentialProvider provider : providers) {
-                                       try {
-                                               
CredentialProvider.CredentialEntry credEntry = 
provider.getCredentialEntry(alias);
-                                               if (credEntry != null && 
credEntry.getCredential() != null) {
-                                                       return new 
String(credEntry.getCredential());
-                                               }
-                                       } catch (Exception ie) {
-                                               LOG.error("Unable to get the 
Credential Provider from the Configuration", ie);
-                                       }
-                               }
-                       }
-               }
-               return null;
-       }
+    public static RangerCredentialProvider getInstance() {
+        return CRED_PROVIDER;
+    }
 
-       List<CredentialProvider> getCredentialProviders(String url) {
-               if (url != null) {
-                       try {
-                               Configuration conf = new Configuration();
-                               
conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, url);
-                               return 
CredentialProviderFactory.getProviders(conf);
-                       } catch (Exception ie) {
-                               LOG.error("Unable to get the Credential 
Provider from the Configuration", ie);
-                       }
-               }
-               return null;
-       }
+    public String getCredentialString(String url, String alias) {
+        if (url != null && alias != null) {
+            List<CredentialProvider> providers = getCredentialProviders(url);
+            if (providers != null) {
+                for (CredentialProvider provider : providers) {
+                    try {
+                        CredentialProvider.CredentialEntry credEntry = 
provider.getCredentialEntry(alias);
+                        if (credEntry != null && credEntry.getCredential() != 
null) {
+                            return new String(credEntry.getCredential());
+                        }
+                    } catch (Exception ie) {
+                        LOG.error("Unable to get the Credential Provider from 
the Configuration", ie);
+                    }
+                }
+            }
+        }
+        return null;
+    }
 
+    List<CredentialProvider> getCredentialProviders(String url) {
+        if (url != null) {
+            try {
+                Configuration conf = new Configuration();
+                conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, 
url);
+                return CredentialProviderFactory.getProviders(conf);
+            } catch (Exception ie) {
+                LOG.error("Unable to get the Credential Provider from the 
Configuration", ie);
+            }
+        }
+        return null;
+    }
 }
diff --git 
a/agents-cred/src/test/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProviderTest.java
 
b/agents-cred/src/test/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProviderTest.java
index a3b83977d..7b0e3da5b 100644
--- 
a/agents-cred/src/test/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProviderTest.java
+++ 
b/agents-cred/src/test/java/org/apache/ranger/authorization/hadoop/utils/RangerCredentialProviderTest.java
@@ -6,26 +6,17 @@
  * to you 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
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
  * 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.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.ranger.authorization.hadoop.utils;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.util.List;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.alias.CredentialProvider;
 import org.apache.hadoop.security.alias.CredentialShell;
@@ -33,151 +24,143 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 public class RangerCredentialProviderTest {
-       
-       private final File ksFile;
-       private final String keystoreFile;
-       private final String[] argsCreate;
-       private final String[] argsDelete;
-       private final String url;
-       RangerCredentialProvider cp = null;
-       List<CredentialProvider> providers = null;
-       
-       
-       public RangerCredentialProviderTest() throws IOException {
-               ksFile = File.createTempFile("testkeystore", "jceks");
-               keystoreFile = ksFile.toURI().getPath();
-               url = "jceks://file@/" + keystoreFile;
-               
-               if (isCredentialShellInteractiveEnabled()) {
-                       argsCreate = new String[] {"create", 
"TestCredential001", "-f",  "-value", "PassworD123", "-provider", 
"jceks://file@/" + keystoreFile};
-                       argsDelete = new String[] {"delete", 
"TestCredential001", "-f" , "-provider", "jceks://file@/" + keystoreFile};
-               } else {
-                       argsCreate = new String[] {"create", 
"TestCredential001", "-value", "PassworD123", "-provider", "jceks://file@/" + 
keystoreFile};
-                       argsDelete = new String[] {"delete", 
"TestCredential001", "-provider", "jceks://file@/" + keystoreFile};
-               }
-       }
-       
-       
-       @Before
-       public void setup() throws Exception {
-               int ret;
-               //
-               // adding a delete before creating a keystore
-               //
-               try {
-                       if (ksFile != null) {
-                               if (ksFile.exists()) {
-                                       System.out.println("Keystore File [" + 
ksFile.getAbsolutePath() + "] is available - and deleting");
-                                       ksFile.delete();
-                                       System.out.println("Keystore File [" + 
ksFile.getAbsolutePath() + "] is deleted.");
-                               } else {
-                                       System.out.println("Keystore File [" + 
ksFile.getAbsolutePath() + "] is not available");
-                               }
-                       } else {
-                               System.out.println("Keystore File is NULL");
-                       }
-               } catch(Throwable t) {
-                       t.printStackTrace();
-               }
-               
-               Configuration conf = new Configuration();
-               CredentialShell cs = new CredentialShell();
-               cs.setConf(conf);
-               try {
-                        ret = cs.run(argsCreate);
-               } catch (Exception e) {
-                       throw e;
-               }
-               assertEquals(0, ret);
-               System.out.println("(1) Number of active Threads : " + 
Thread.activeCount());
-               listThreads();
-       }
-       
-       @After
-       public void cleanup() throws Exception {
-               if (ksFile != null && ksFile.exists()) {
-                       ksFile.delete();
-               }
-       }
-       
-       @Test
-       public void testCredentialProvider() {
-               //test credential provider is registered and return credential 
providers.
-               cp = new RangerCredentialProvider();
-               providers = cp.getCredentialProviders(url);
-               if (providers != null) {
-                       assertTrue(url.equals(providers.get(0).toString()));
-               }
-               System.out.println("(2) Number of active Threads : " + 
Thread.activeCount());
-               listThreads();
-       }
-       
-       @Test
-       public void testCredentialString() {
-               //test credential provider created is returning the correct 
credential string.
-               cp = new RangerCredentialProvider();
-               providers = cp.getCredentialProviders(url);
-               if (providers != null) {
-                       
assertTrue("PassworD123".equals(cp.getCredentialString(url, 
"TestCredential001")));
-               }
-               System.out.println("(3) Number of active Threads : " + 
Thread.activeCount());
-               listThreads();
-       }
+    private final File     ksFile;
+    private final String   keystoreFile;
+    private final String[] argsCreate;
+    private final String[] argsDelete;
+    private final String   url;
+    RangerCredentialProvider cp;
+    List<CredentialProvider> providers;
 
-       
-       @After
-       public void teardown() throws Exception {
-               System.out.println("In teardown : Number of active Threads : " 
+ Thread.activeCount() );
-               int ret;
-               Configuration conf = new Configuration();
-               CredentialShell cs = new CredentialShell();
-               cs.setConf(conf);
-               try {
-                        ret = cs.run(argsDelete);
-               } catch (Exception e) {
-                       throw e;
-               }
-               assertEquals(0, ret);
-               listThreads();
-       }
-       
-       private static void listThreads() {
-               int ac = Thread.activeCount();
-               if (ac > 0) {
-                       Thread[] tlist = new Thread[ac];
-                       Thread.enumerate(tlist);
-                       for (Thread t : tlist) {
-                               System.out.println("Thread [" + t + "] => {" + 
t.getClass().getName() + "}");
-                       }
-               }
-       }
-       
-       private static boolean isCredentialShellInteractiveEnabled() {
-               boolean ret = false;
-               
-               String fieldName = "interactive";
-               
-               CredentialShell cs = new CredentialShell();
-               
-               try {
-                       Field interactiveField = 
cs.getClass().getDeclaredField(fieldName);
-                       
-                       if (interactiveField != null) {
-                               interactiveField.setAccessible(true);
-                               ret = interactiveField.getBoolean(cs);
-                               System.out.println("FOUND value of [" + 
fieldName + "] field in the Class [" + cs.getClass().getName() + "] = [" + ret 
+ "]");
-                       }
-               } catch (Throwable e) {
-                       System.out.println("Unable to find the value of [" + 
fieldName + "] field in the Class [" + cs.getClass().getName() + "]. Skiping -f 
option");
-                       e.printStackTrace();
-                       ret = false;
-               }
-               
-               return ret;
-               
-               
-       }
+    public RangerCredentialProviderTest() throws IOException {
+        ksFile       = File.createTempFile("testkeystore", "jceks");
+        keystoreFile = ksFile.toURI().getPath();
+        url          = "jceks://file@/" + keystoreFile;
+        if (isCredentialShellInteractiveEnabled()) {
+            argsCreate = new String[] {"create", "TestCredential001", "-f", 
"-value", "PassworD123", "-provider", "jceks://file@/" + keystoreFile};
+            argsDelete = new String[] {"delete", "TestCredential001", "-f", 
"-provider", "jceks://file@/" + keystoreFile};
+        } else {
+            argsCreate = new String[] {"create", "TestCredential001", 
"-value", "PassworD123", "-provider", "jceks://file@/" + keystoreFile};
+            argsDelete = new String[] {"delete", "TestCredential001", 
"-provider", "jceks://file@/" + keystoreFile};
+        }
+    }
 
-}
+    @Before
+    public void setup() throws Exception {
+        int ret;
+        // adding a delete before creating a keystore
+        try {
+            if (ksFile != null) {
+                if (ksFile.exists()) {
+                    System.out.println("Keystore File [" + 
ksFile.getAbsolutePath() + "] is available - and deleting");
+                    ksFile.delete();
+                    System.out.println("Keystore File [" + 
ksFile.getAbsolutePath() + "] is deleted.");
+                } else {
+                    System.out.println("Keystore File [" + 
ksFile.getAbsolutePath() + "] is not available");
+                }
+            } else {
+                System.out.println("Keystore File is NULL");
+            }
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+
+        Configuration   conf = new Configuration();
+        CredentialShell cs   = new CredentialShell();
+        cs.setConf(conf);
+        try {
+            ret = cs.run(argsCreate);
+        } catch (Exception e) {
+            throw e;
+        }
+        assertEquals(0, ret);
+        System.out.println("(1) Number of active Threads : " + 
Thread.activeCount());
+        listThreads();
+    }
 
+    @After
+    public void cleanup() throws Exception {
+        if (ksFile != null && ksFile.exists()) {
+            ksFile.delete();
+        }
+    }
+
+    @Test
+    public void testCredentialProvider() {
+        //test credential provider is registered and return credential 
providers.
+        cp        = new RangerCredentialProvider();
+        providers = cp.getCredentialProviders(url);
+        if (providers != null) {
+            assertTrue(url.equals(providers.get(0).toString()));
+        }
+        System.out.println("(2) Number of active Threads : " + 
Thread.activeCount());
+        listThreads();
+    }
+
+    @Test
+    public void testCredentialString() {
+        //test credential provider created is returning the correct credential 
string.
+        cp        = new RangerCredentialProvider();
+        providers = cp.getCredentialProviders(url);
+        if (providers != null) {
+            assertTrue("PassworD123".equals(cp.getCredentialString(url, 
"TestCredential001")));
+        }
+        System.out.println("(3) Number of active Threads : " + 
Thread.activeCount());
+        listThreads();
+    }
+
+    @After
+    public void teardown() throws Exception {
+        System.out.println("In teardown : Number of active Threads : " + 
Thread.activeCount());
+        int             ret;
+        Configuration   conf = new Configuration();
+        CredentialShell cs   = new CredentialShell();
+        cs.setConf(conf);
+        try {
+            ret = cs.run(argsDelete);
+        } catch (Exception e) {
+            throw e;
+        }
+        assertEquals(0, ret);
+        listThreads();
+    }
+
+    private static void listThreads() {
+        int ac = Thread.activeCount();
+        if (ac > 0) {
+            Thread[] tlist = new Thread[ac];
+            Thread.enumerate(tlist);
+            for (Thread t : tlist) {
+                System.out.println("Thread [" + t + "] => {" + 
t.getClass().getName() + "}");
+            }
+        }
+    }
+
+    private static boolean isCredentialShellInteractiveEnabled() {
+        boolean         ret       = false;
+        String          fieldName = "interactive";
+        CredentialShell cs        = new CredentialShell();
+        try {
+            Field interactiveField = cs.getClass().getDeclaredField(fieldName);
+            if (interactiveField != null) {
+                interactiveField.setAccessible(true);
+                ret = interactiveField.getBoolean(cs);
+                System.out.println("FOUND value of [" + fieldName + "] field 
in the Class [" + cs.getClass().getName() + "] = [" + ret + "]");
+            }
+        } catch (Throwable e) {
+            System.out.println("Unable to find the value of [" + fieldName + 
"] field in the Class [" + cs.getClass().getName() + "]. Skiping -f option");
+            e.printStackTrace();
+            ret = false;
+        }
+        return ret;
+    }
+}

Reply via email to