@Test
public void testConfGetPasswordUsingAlias() throws Exception {

  File testDir = GenericTestUtils.getTestDir();
  Configuration conf = getBaseConf();
  final Path jksPath = new Path(testDir.toString(), "test.jks");
  final String ourUrl =
      JavaKeyStoreProvider.SCHEME_NAME + "://file" + jksPath.toUri();
  File file = new File(testDir, "test.jks");
  file.delete();
  conf.set(CredentialProviderFactory.CREDENTIAL_PROVIDER_PATH, ourUrl);
  // Set alias
  String bindpassAlias = "bindpassAlias";
  conf.set(LdapGroupsMapping.BIND_PASSWORD_ALIAS_KEY, bindpassAlias);
  CredentialProvider provider =
      CredentialProviderFactory.getProviders(conf).get(0);
  char[] bindpass = "bindpass".toCharArray();
  // Ensure that we get null when the key isn't there
  assertNull(provider.getCredentialEntry(bindpassAlias));
  // Create credential for the alias
  provider.createCredentialEntry(bindpassAlias, bindpass);
  provider.flush();
  // Make sure we get back the right key
  assertArrayEquals(bindpass, provider.getCredentialEntry(
      bindpassAlias).getCredential());
  LdapGroupsMapping mapping = new LdapGroupsMapping();
  Assert.assertEquals("bindpass",
      mapping.getPasswordFromCredentialProviders(conf, bindpassAlias, ""));
  // Empty for an invalid alias
  Assert.assertEquals("", mapping.getPasswordFromCredentialProviders(
      conf, "invalid-alias", ""));
}