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

rlevas pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 40549ef  [AMBARI-22889] LDAP configuration is not reloaded in Guice
40549ef is described below

commit 40549ef9ae0b16b292c8b462acdbb52306acb2d6
Author: smolnar82 <34065904+smolna...@users.noreply.github.com>
AuthorDate: Fri Feb 2 16:41:31 2018 +0100

    [AMBARI-22889] LDAP configuration is not reloaded in Guice
    
    * AMBARI-22889. Make sure that the latest configuration is used when 
populating LDAP data
    
    * AMBARI-22889. LDAP authentication provider aos uses configuration 
provider instead of the configuration directly
    
    * AMBARI-22889. Fixed Python unit tests (not related to my changes)
---
 .../service/AmbariLdapConfigurationProvider.java   |  12 +-
 .../AmbariLdapAuthenticationProvider.java          |  16 +-
 .../security/ldap/AmbariLdapDataPopulator.java     |  28 +-
 ...apAuthenticationProviderForDNWithSpaceTest.java |  37 ++-
 ...AuthenticationProviderForDuplicateUserTest.java |  20 +-
 .../AmbariLdapAuthenticationProviderTest.java      |  46 +++-
 .../security/ldap/AmbariLdapDataPopulatorTest.java | 297 +++++++++++++++------
 ambari-server/src/test/python/TestAmbariServer.py  |   4 +-
 8 files changed, 324 insertions(+), 136 deletions(-)

diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/AmbariLdapConfigurationProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/AmbariLdapConfigurationProvider.java
index f38201b..bba0154 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/AmbariLdapConfigurationProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/AmbariLdapConfigurationProvider.java
@@ -74,15 +74,17 @@ public class AmbariLdapConfigurationProvider implements 
Provider<AmbariLdapConfi
 
   @Override
   public AmbariLdapConfiguration get() {
-    return instance == null || !instance.toMap().isEmpty() ? loadInstance() : 
instance;
+    LOGGER.debug("Getting LDAP configuration...");
+    if (instance == null || instance.toMap().isEmpty()) {
+      loadInstance();
+    }
+    return instance;
   }
 
   /**
    * Loads the AmbariLdapConfiguration from the database.
-   *
-   * @return the AmbariLdapConfiguration instance
    */
-  private AmbariLdapConfiguration loadInstance() {
+  private void loadInstance() {
     List<AmbariConfigurationEntity> configEntities = null;
 
     LOGGER.info("Loading LDAP configuration ...");
@@ -99,8 +101,6 @@ public class AmbariLdapConfigurationProvider implements 
Provider<AmbariLdapConfi
     }
 
     LOGGER.info("Loaded LDAP configuration instance: [ {} ]", 
instance.toMap());
-
-    return instance;
   }
 
   private Map<String, String> toProperties(List<AmbariConfigurationEntity> 
configEntities) {
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProvider.java
index 062d64e..7327e86 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProvider.java
@@ -21,7 +21,7 @@ import java.util.Collection;
 import java.util.List;
 
 import org.apache.ambari.server.configuration.Configuration;
-import org.apache.ambari.server.ldap.domain.AmbariLdapConfiguration;
+import org.apache.ambari.server.ldap.service.AmbariLdapConfigurationProvider;
 import org.apache.ambari.server.orm.entities.UserAuthenticationEntity;
 import org.apache.ambari.server.orm.entities.UserEntity;
 import org.apache.ambari.server.security.ClientSecurityType;
@@ -53,7 +53,7 @@ import com.google.inject.Inject;
 public class AmbariLdapAuthenticationProvider extends 
AmbariAuthenticationProvider {
   static Logger LOG = 
LoggerFactory.getLogger(AmbariLdapAuthenticationProvider.class); // exposed and 
mutable for "test"
 
-  final AmbariLdapConfiguration ldapConfiguration;
+  final AmbariLdapConfigurationProvider ldapConfigurationProvider;
 
   private AmbariLdapAuthoritiesPopulator authoritiesPopulator;
 
@@ -62,10 +62,10 @@ public class AmbariLdapAuthenticationProvider extends 
AmbariAuthenticationProvid
   private ThreadLocal<String> ldapUserSearchFilterThreadLocal = new 
ThreadLocal<>();
 
   @Inject
-  public AmbariLdapAuthenticationProvider(Users users, Configuration 
configuration, AmbariLdapConfiguration ldapConfiguration,
+  public AmbariLdapAuthenticationProvider(Users users, Configuration 
configuration, AmbariLdapConfigurationProvider ldapConfigurationProvider,
                                           AmbariLdapAuthoritiesPopulator 
authoritiesPopulator) {
     super(users, configuration);
-    this.ldapConfiguration = ldapConfiguration;
+    this.ldapConfigurationProvider = ldapConfigurationProvider;
     this.authoritiesPopulator = authoritiesPopulator;
   }
 
@@ -132,7 +132,7 @@ public class AmbariLdapAuthenticationProvider extends 
AmbariAuthenticationProvid
         }
         throw new InvalidUsernamePasswordCombinationException(username, e);
       } catch (IncorrectResultSizeDataAccessException multipleUsersFound) {
-        String message = ldapConfiguration.isLdapAlternateUserSearchEnabled()
+        String message = 
ldapConfigurationProvider.get().isLdapAlternateUserSearchEnabled()
             ? String.format("Login Failed: Please append your domain to your 
username and try again.  Example: %s@domain", username)
             : "Login Failed: More than one user with that username found, 
please work with your Ambari Administrator to adjust your LDAP configuration";
 
@@ -182,7 +182,7 @@ public class AmbariLdapAuthenticationProvider extends 
AmbariAuthenticationProvid
       String userSearchBase = ldapServerProperties.get().getUserSearchBase();
       FilterBasedLdapUserSearch userSearch = new 
FilterBasedLdapUserSearch(userSearchBase, ldapUserSearchFilter, 
springSecurityContextSource);
 
-      AmbariLdapBindAuthenticator bindAuthenticator = new 
AmbariLdapBindAuthenticator(springSecurityContextSource, ldapConfiguration);
+      AmbariLdapBindAuthenticator bindAuthenticator = new 
AmbariLdapBindAuthenticator(springSecurityContextSource, 
ldapConfigurationProvider.get());
       bindAuthenticator.setUserSearch(userSearch);
 
       LdapAuthenticationProvider authenticationProvider = new 
LdapAuthenticationProvider(bindAuthenticator, authoritiesPopulator);
@@ -210,7 +210,7 @@ public class AmbariLdapAuthenticationProvider extends 
AmbariAuthenticationProvid
    * @return true if properties were reloaded
    */
   private boolean reloadLdapServerProperties() {
-    LdapServerProperties properties = 
ldapConfiguration.getLdapServerProperties();
+    LdapServerProperties properties = 
ldapConfigurationProvider.get().getLdapServerProperties();
     if (!properties.equals(ldapServerProperties.get())) {
       LOG.info("Reloading properties");
       ldapServerProperties.set(properties);
@@ -222,7 +222,7 @@ public class AmbariLdapAuthenticationProvider extends 
AmbariAuthenticationProvid
 
   private String getLdapUserSearchFilter(String userName) {
     return ldapServerProperties.get()
-        
.getUserSearchFilter(ldapConfiguration.isLdapAlternateUserSearchEnabled() && 
AmbariLdapUtils.isUserPrincipalNameFormat(userName));
+        
.getUserSearchFilter(ldapConfigurationProvider.get().isLdapAlternateUserSearchEnabled()
 && AmbariLdapUtils.isUserPrincipalNameFormat(userName));
   }
 
   /**
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulator.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulator.java
index c6a468e..40bcd7f 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulator.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulator.java
@@ -60,6 +60,7 @@ import 
org.springframework.security.core.userdetails.UsernameNotFoundException;
 
 import com.google.common.collect.Sets;
 import com.google.inject.Inject;
+import com.google.inject.Provider;
 
 /**
  * Provides users, groups and membership population from LDAP catalog.
@@ -73,7 +74,7 @@ public class AmbariLdapDataPopulator {
   /**
    * Ambari configuration.
    */
-  private AmbariLdapConfiguration configuration;
+  private Provider<AmbariLdapConfiguration> configurationProvider;
 
   /**
    * Highlevel facade for management of users and groups.
@@ -108,10 +109,10 @@ public class AmbariLdapDataPopulator {
    * @param users         utility that provides access to Users
    */
   @Inject
-  public AmbariLdapDataPopulator(AmbariLdapConfiguration configuration, Users 
users) {
-    this.configuration = configuration;
+  public AmbariLdapDataPopulator(Provider<AmbariLdapConfiguration> 
configurationProvider, Users users) {
+    this.configurationProvider = configurationProvider;
     this.users = users;
-    this.ldapServerProperties = configuration.getLdapServerProperties();
+    this.ldapServerProperties = getConfiguration().getLdapServerProperties();
   }
 
   /**
@@ -120,7 +121,7 @@ public class AmbariLdapDataPopulator {
    * @return true if enabled
    */
   public boolean isLdapEnabled() {
-    if (!configuration.ldapEnabled()) {
+    if (!getConfiguration().ldapEnabled()) {
       return false;
     }
     try {
@@ -217,7 +218,7 @@ public class AmbariLdapDataPopulator {
       if (internalUsersMap.containsKey(userName)) {
         final User user = internalUsersMap.get(userName);
         if (user != null && !user.isLdapUser()) {
-          if (LdapUsernameCollisionHandlingBehavior.SKIP == 
configuration.syncCollisionHandlingBehavior()) {
+          if (LdapUsernameCollisionHandlingBehavior.SKIP == 
getConfiguration().syncCollisionHandlingBehavior()) {
             LOG.info("User '{}' skipped because it is local user", userName);
             batchInfo.getUsersSkipped().add(userDto);
           } else {
@@ -296,7 +297,7 @@ public class AmbariLdapDataPopulator {
       if (internalUsersMap.containsKey(userName)) {
         final User user = internalUsersMap.get(userName);
         if (user != null && !user.isLdapUser()) {
-          if (LdapUsernameCollisionHandlingBehavior.SKIP == 
configuration.syncCollisionHandlingBehavior()) {
+          if (LdapUsernameCollisionHandlingBehavior.SKIP == 
getConfiguration().syncCollisionHandlingBehavior()) {
             LOG.info("User '{}' skipped because it is local user", userName);
             batchInfo.getUsersSkipped().add(userDto);
           } else {
@@ -415,7 +416,7 @@ public class AmbariLdapDataPopulator {
           continue;
         }
         if (!user.isLdapUser()) {
-          if (LdapUsernameCollisionHandlingBehavior.SKIP == 
configuration.syncCollisionHandlingBehavior()) {
+          if (LdapUsernameCollisionHandlingBehavior.SKIP == 
getConfiguration().syncCollisionHandlingBehavior()) {
             // existing user can not be converted to ldap user, so skip it
             LOG.info("User '{}' skipped because it is local user", userName);
             batchInfo.getUsersSkipped().add(externalMember);
@@ -673,7 +674,7 @@ public class AmbariLdapDataPopulator {
 
     do {
       LOG.trace("LDAP User Query - Base DN: '{}' ; Filter: '{}'", baseDn, 
encodedFilter);
-      List dtos = 
configuration.getLdapServerProperties().isPaginationEnabled() ?
+      List dtos = ldapServerProperties.isPaginationEnabled() ?
           ldapTemplate.search(LdapUtils.newLdapName(baseDn), encodedFilter, 
searchControls, ldapUserContextMapper, processor) :
           ldapTemplate.search(LdapUtils.newLdapName(baseDn), encodedFilter, 
searchControls, ldapUserContextMapper);
       for (Object dto : dtos) {
@@ -681,7 +682,7 @@ public class AmbariLdapDataPopulator {
           users.add((LdapUserDto) dto);
         }
       }
-    } while (configuration.getLdapServerProperties().isPaginationEnabled()
+    } while (ldapServerProperties.isPaginationEnabled()
         && (processor.getCookie() != null) && 
(processor.getCookie().getCookie() != null));
     return users;
   }
@@ -739,8 +740,7 @@ public class AmbariLdapDataPopulator {
    * @return LdapTemplate instance
    */
   protected LdapTemplate loadLdapTemplate() {
-    final LdapServerProperties properties = configuration
-        .getLdapServerProperties();
+    final LdapServerProperties properties = 
getConfiguration().getLdapServerProperties();
     if (ldapTemplate == null || !properties.equals(ldapServerProperties)) {
       LOG.info("Reloading properties");
       ldapServerProperties = properties;
@@ -841,6 +841,10 @@ public class AmbariLdapDataPopulator {
     }
   }
 
+  private AmbariLdapConfiguration getConfiguration() {
+    return configurationProvider.get();
+  }
+
   protected static class LdapUserContextMapper implements ContextMapper {
 
     private final LdapServerProperties ldapServerProperties;
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
index ad32cad..a8c4b75 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDNWithSpaceTest.java
@@ -17,9 +17,12 @@
  */
 package org.apache.ambari.server.security.authorization;
 
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expect;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.Collections;
 import java.util.Properties;
 
 import org.apache.ambari.server.AmbariException;
@@ -28,7 +31,9 @@ import org.apache.ambari.server.audit.AuditLoggerModule;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.ControllerModule;
 import org.apache.ambari.server.ldap.LdapModule;
+import org.apache.ambari.server.ldap.domain.AmbariLdapConfiguration;
 import org.apache.ambari.server.ldap.domain.AmbariLdapConfigurationKeys;
+import org.apache.ambari.server.ldap.service.AmbariLdapConfigurationProvider;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.dao.UserDAO;
 import org.apache.ambari.server.orm.entities.UserEntity;
@@ -41,8 +46,12 @@ import 
org.apache.directory.server.core.annotations.ContextEntry;
 import org.apache.directory.server.core.annotations.CreateDS;
 import org.apache.directory.server.core.annotations.CreatePartition;
 import org.apache.directory.server.core.integ.FrameworkRunner;
+import org.easymock.EasyMockRule;
+import org.easymock.Mock;
+import org.easymock.MockType;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import 
org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -74,18 +83,28 @@ import com.google.inject.Injector;
 @ApplyLdifFiles("users_for_dn_with_space.ldif")
 public class AmbariLdapAuthenticationProviderForDNWithSpaceTest extends 
AmbariLdapAuthenticationProviderBaseTest {
 
+  @Rule
+  public EasyMockRule mocks = new EasyMockRule(this);
+
   private static Injector injector;
 
   @Inject
-  private AmbariLdapAuthenticationProvider authenticationProvider;
-  @Inject
   private UserDAO userDAO;
+
   @Inject
   private Users users;
 
   @Inject
   Configuration configuration;
 
+  @Mock(type = MockType.NICE)
+  private AmbariLdapAuthoritiesPopulator authoritiesPopulator;
+
+  @Mock(type = MockType.NICE)
+  private AmbariLdapConfigurationProvider ldapConfigurationProvider;
+
+  private AmbariLdapAuthenticationProvider authenticationProvider;
+
   @Before
   public void setUp() throws Exception {
     injector = Guice.createInjector(new ControllerModule(getTestProperties()), 
new AuditLoggerModule(), new LdapModule());
@@ -93,10 +112,16 @@ public class 
AmbariLdapAuthenticationProviderForDNWithSpaceTest extends AmbariLd
     injector.injectMembers(this);
 
     configuration.setClientSecurityType(ClientSecurityType.LDAP);
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_HOST,
 "localhost");
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_PORT,
 String.valueOf(getLdapServer().getPort()));
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.USER_SEARCH_BASE,
 "dc=ambari,dc=the apache,dc=org");
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.GROUP_BASE,
 "ou=the groups,dc=ambari,dc=the apache,dc=org");
+    final AmbariLdapConfiguration ldapConfiguration = new 
AmbariLdapConfiguration();
+    ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_HOST, 
"localhost");
+    ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_PORT, 
String.valueOf(getLdapServer().getPort()));
+    
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.USER_SEARCH_BASE, 
"dc=ambari,dc=the apache,dc=org");
+    ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.GROUP_BASE, 
"ou=the groups,dc=ambari,dc=the apache,dc=org");
+    
expect(ldapConfigurationProvider.get()).andReturn(ldapConfiguration).anyTimes();
+    expect(authoritiesPopulator.getGrantedAuthorities(anyObject(), 
anyObject())).andReturn(Collections.emptyList()).anyTimes();
+    replayAll();
+
+    authenticationProvider = new AmbariLdapAuthenticationProvider(users, 
configuration, ldapConfigurationProvider, authoritiesPopulator);
   }
 
   @After
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDuplicateUserTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDuplicateUserTest.java
index d7791fb..6883c24 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDuplicateUserTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderForDuplicateUserTest.java
@@ -17,11 +17,14 @@
  */
 package org.apache.ambari.server.security.authorization;
 
+import static org.easymock.EasyMock.expect;
+
 import java.util.Properties;
 
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.ldap.domain.AmbariLdapConfiguration;
 import org.apache.ambari.server.ldap.domain.AmbariLdapConfigurationKeys;
+import org.apache.ambari.server.ldap.service.AmbariLdapConfigurationProvider;
 import org.apache.directory.server.annotations.CreateLdapServer;
 import org.apache.directory.server.annotations.CreateTransport;
 import org.apache.directory.server.core.annotations.ApplyLdifFiles;
@@ -74,9 +77,12 @@ public class 
AmbariLdapAuthenticationProviderForDuplicateUserTest extends Ambari
   @Mock(type = MockType.NICE)
   private Users users;
 
-  private AmbariLdapAuthenticationProvider authenticationProvider;
+  @Mock(type = MockType.NICE)
+  private AmbariLdapConfigurationProvider ldapConfigurationProvider;
 
-  private Configuration configuration;
+  private AmbariLdapConfiguration ldapConfiguration;
+
+  private AmbariLdapAuthenticationProvider authenticationProvider;
 
   @Before
   public void setUp() {
@@ -89,19 +95,21 @@ public class 
AmbariLdapAuthenticationProviderForDuplicateUserTest extends Ambari
     properties.setProperty(Configuration.SHARED_RESOURCES_DIR.getKey(), 
"src/test/resources/");
     Configuration configuration = new Configuration(properties);
 
-    final AmbariLdapConfiguration ldapConfiguration = new 
AmbariLdapConfiguration();
+    ldapConfiguration = new AmbariLdapConfiguration();
     
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.USER_SEARCH_BASE, 
"dc=apache,dc=org");
     ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_HOST, 
"localhost");
     ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_PORT, 
String.valueOf(getLdapServer().getPort()));
+    
expect(ldapConfigurationProvider.get()).andReturn(ldapConfiguration).anyTimes();
+    replayAll();
 
-    authenticationProvider = new AmbariLdapAuthenticationProvider(users, 
configuration, ldapConfiguration, authoritiesPopulator);
+    authenticationProvider = new AmbariLdapAuthenticationProvider(users, 
configuration, ldapConfigurationProvider, authoritiesPopulator);
   }
 
   @Test
   public void testAuthenticateDuplicateUserAltUserSearchDisabled() throws 
Exception {
     // Given
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("user_dup", "password");
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "false");
+    
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "false");
 
     
expectedException.expect(DuplicateLdapUserFoundAuthenticationException.class);
     expectedException.expectMessage("Login Failed: More than one user with 
that username found, please work with your Ambari Administrator to adjust your 
LDAP configuration");
@@ -119,7 +127,7 @@ public class 
AmbariLdapAuthenticationProviderForDuplicateUserTest extends Ambari
   public void testAuthenticateDuplicateUserAltUserSearchEnabled() throws 
Exception {
     // Given
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("user_dup", "password");
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
+    
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
 
     
expectedException.expect(DuplicateLdapUserFoundAuthenticationException.class);
     expectedException.expectMessage("Login Failed: Please append your domain 
to your username and try again.  Example: user_dup@domain");
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
index b92c568..7391d3c 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariLdapAuthenticationProviderTest.java
@@ -21,17 +21,21 @@ import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.find;
+import static org.easymock.EasyMock.replay;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.util.Collections;
+
 import org.apache.ambari.server.H2DatabaseCleaner;
 import org.apache.ambari.server.audit.AuditLoggerModule;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.ldap.LdapModule;
 import org.apache.ambari.server.ldap.domain.AmbariLdapConfiguration;
 import org.apache.ambari.server.ldap.domain.AmbariLdapConfigurationKeys;
+import org.apache.ambari.server.ldap.service.AmbariLdapConfigurationProvider;
 import org.apache.ambari.server.orm.GuiceJpaInitializer;
 import org.apache.ambari.server.orm.dao.UserDAO;
 import org.apache.ambari.server.orm.entities.UserEntity;
@@ -45,9 +49,13 @@ import 
org.apache.directory.server.core.annotations.ContextEntry;
 import org.apache.directory.server.core.annotations.CreateDS;
 import org.apache.directory.server.core.annotations.CreatePartition;
 import org.apache.directory.server.core.integ.FrameworkRunner;
+import org.easymock.EasyMockRule;
 import org.easymock.IAnswer;
+import org.easymock.Mock;
+import org.easymock.MockType;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.slf4j.Logger;
@@ -82,17 +90,26 @@ import junit.framework.Assert;
 @ApplyLdifFiles("users.ldif")
 public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticationProviderBaseTest {
 
+  @Rule
+  public EasyMockRule mocks = new EasyMockRule(this);
+
   private static Injector injector;
 
-  @Inject
   private AmbariLdapAuthenticationProvider authenticationProvider;
+
   @Inject
   private UserDAO userDAO;
   @Inject
   private Users users;
   @Inject
   private Configuration configuration;
-  @Inject
+
+  @Mock(type = MockType.NICE)
+  private AmbariLdapAuthoritiesPopulator authoritiesPopulator;
+
+  @Mock(type = MockType.NICE)
+  private AmbariLdapConfigurationProvider ldapConfigurationProvider;
+
   private AmbariLdapConfiguration ldapConfiguration;
 
   @Before
@@ -101,10 +118,14 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
     injector.getInstance(GuiceJpaInitializer.class);
     injector.injectMembers(this);
     configuration.setClientSecurityType(ClientSecurityType.LDAP);
+    ldapConfiguration = new AmbariLdapConfiguration();
     
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "false");
     
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_FILTER,
 "(&(mail={0})(objectClass={userObjectClass}))");
     ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_HOST, 
"localhost");
     ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.SERVER_PORT, 
String.valueOf(getLdapServer().getPort()));
+    
expect(ldapConfigurationProvider.get()).andReturn(ldapConfiguration).anyTimes();
+
+    authenticationProvider = new AmbariLdapAuthenticationProvider(users, 
configuration, ldapConfigurationProvider, authoritiesPopulator);
   }
 
   @After
@@ -114,17 +135,17 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
 
   @Test(expected = InvalidUsernamePasswordCombinationException.class)
   public void testBadCredential() throws Exception {
+    replay(ldapConfigurationProvider);
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("notFound", "wrong");
     authenticationProvider.authenticate(authentication);
   }
 
   @Test
   public void testGoodManagerCredentials() throws Exception {
-    AmbariLdapAuthoritiesPopulator authoritiesPopulator = 
createMock(AmbariLdapAuthoritiesPopulator.class);
     AmbariLdapAuthenticationProvider provider = 
createMockBuilder(AmbariLdapAuthenticationProvider.class)
             .addMockedMethod("loadLdapAuthenticationProvider")
             .addMockedMethod("isLdapEnabled")
-            .withConstructor(users, configuration, ldapConfiguration, 
authoritiesPopulator).createMock();
+            .withConstructor(users, configuration, ldapConfigurationProvider, 
authoritiesPopulator).createMock();
     // Create the last thrown exception
     org.springframework.security.core.AuthenticationException exception =
             
createNiceMock(org.springframework.security.core.AuthenticationException.class);
@@ -156,11 +177,10 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
 
   @Test
   public void testBadManagerCredentials() throws Exception {
-    AmbariLdapAuthoritiesPopulator authoritiesPopulator = 
createMock(AmbariLdapAuthoritiesPopulator.class);
     AmbariLdapAuthenticationProvider provider = 
createMockBuilder(AmbariLdapAuthenticationProvider.class)
             .addMockedMethod("loadLdapAuthenticationProvider")
             .addMockedMethod("isLdapEnabled")
-            .withConstructor(users, configuration, ldapConfiguration, 
authoritiesPopulator).createMock();
+            .withConstructor(users, configuration, ldapConfigurationProvider, 
authoritiesPopulator).createMock();
     // Create the cause
     org.springframework.ldap.AuthenticationException cause =
             
createNiceMock(org.springframework.ldap.AuthenticationException.class);
@@ -195,6 +215,9 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
 
     UserEntity ldapUser = userDAO.findUserByName("allowedUser");
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("allowedUser", "password");
+    expect(authoritiesPopulator.getGrantedAuthorities(anyObject(), 
anyObject())).andReturn(Collections.emptyList()).anyTimes();
+
+    replay(ldapConfigurationProvider, authoritiesPopulator);
 
     AmbariUserAuthentication result = 
(AmbariUserAuthentication)authenticationProvider.authenticate(authentication);
     assertTrue(result.isAuthenticated());
@@ -209,6 +232,7 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
   public void testDisabled() throws Exception {
     configuration.setClientSecurityType(ClientSecurityType.LOCAL);
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("allowedUser", "password");
+    replay(ldapConfigurationProvider);
     Authentication auth = authenticationProvider.authenticate(authentication);
     Assert.assertTrue(auth == null);
   }
@@ -221,7 +245,9 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
     users.addLdapAuthentication(userEntity, 
"uid=allowedUser,ou=people,dc=ambari,dc=apache,dc=org");
 
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("allowedu...@ambari.apache.org", 
"password");
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
+    
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
+    expect(authoritiesPopulator.getGrantedAuthorities(anyObject(), 
anyObject())).andReturn(Collections.emptyList()).anyTimes();
+    replay(ldapConfigurationProvider, authoritiesPopulator);
 
     // When
     Authentication result = 
authenticationProvider.authenticate(authentication);
@@ -235,8 +261,9 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
     // Given
     assertNull("User already exists in DB", 
userDAO.findUserByName("allowedUser"));
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("missingloginal...@ambari.apache.org", 
"password");
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
+    
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
 
+    replay(ldapConfigurationProvider);
 
     // When
     authenticationProvider.authenticate(authentication);
@@ -251,8 +278,9 @@ public class AmbariLdapAuthenticationProviderTest extends 
AmbariLdapAuthenticati
     // Given
     assertNull("User already exists in DB", 
userDAO.findUserByName("allowedUser"));
     Authentication authentication = new 
UsernamePasswordAuthenticationToken("allowedu...@ambari.apache.org", 
"bad_password");
-    
authenticationProvider.ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
+    
ldapConfiguration.setValueFor(AmbariLdapConfigurationKeys.ALTERNATE_USER_SEARCH_ENABLED,
 "true");
 
+    replay(ldapConfigurationProvider);
 
     // When
     authenticationProvider.authenticate(authentication);
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulatorTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulatorTest.java
index 7656d85..5f6e24a 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulatorTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulatorTest.java
@@ -83,13 +83,14 @@ import org.springframework.ldap.filter.Filter;
 import org.springframework.ldap.support.LdapUtils;
 
 import com.google.common.collect.Sets;
+import com.google.inject.Provider;
 
 @RunWith(PowerMockRunner.class)
 @PrepareForTest(AmbariLdapUtils.class)
 public class AmbariLdapDataPopulatorTest {
   public static class AmbariLdapDataPopulatorTestInstance extends 
TestAmbariLdapDataPopulator {
-    public AmbariLdapDataPopulatorTestInstance(AmbariLdapConfiguration 
configuration, Users users) {
-      super(configuration, users);
+    public 
AmbariLdapDataPopulatorTestInstance(Provider<AmbariLdapConfiguration> 
configurationProvider, Users users) {
+      super(configurationProvider, users);
     }
 
     @Override
@@ -104,8 +105,8 @@ public class AmbariLdapDataPopulatorTest {
     private LdapContextSource ldapContextSource;
     private PagedResultsDirContextProcessor processor;
 
-    public TestAmbariLdapDataPopulator(AmbariLdapConfiguration configuration, 
Users users) {
-      super(configuration, users);
+    public TestAmbariLdapDataPopulator(Provider<AmbariLdapConfiguration> 
configurationProvider, Users users) {
+      super(configurationProvider, users);
     }
 
     @Override
@@ -149,27 +150,32 @@ public class AmbariLdapDataPopulatorTest {
     }
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testIsLdapEnabled_badConfiguration() {
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     final AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     final Users users = createNiceMock(Users.class);
 
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     expect(configuration.ldapEnabled()).andReturn(true);
     expect(ldapTemplate.search(EasyMock.<String>anyObject(), 
EasyMock.anyObject(), EasyMock.<AttributesMapper>anyObject())).andThrow(new 
NullPointerException()).once();
-    replay(ldapTemplate, configuration, ldapServerProperties);
+    replay(ldapTemplate, configurationProvider, configuration, 
ldapServerProperties);
 
-    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     populator.setLdapTemplate(ldapTemplate);
     populator.setLdapServerProperties(ldapServerProperties);
 
     assertFalse(populator.isLdapEnabled());
-    verify(populator.loadLdapTemplate(), configuration);
+    verify(populator.loadLdapTemplate(), configurationProvider, configuration);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testReferralMethod() {
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     final AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     final Users users = createNiceMock(Users.class);
     LdapContextSource ldapContextSource = 
createNiceMock(LdapContextSource.class);
@@ -178,66 +184,74 @@ public class AmbariLdapDataPopulatorTest {
 
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     expect(ldapServerProperties.getLdapUrls()).andReturn(ldapUrls).anyTimes();
     expect(ldapServerProperties.getReferralMethod()).andReturn("follow");
     ldapContextSource.setReferral("follow");
     ldapTemplate.setIgnorePartialResultException(true);
 
-    replay(ldapTemplate, configuration, ldapServerProperties, 
ldapContextSource);
+    replay(ldapTemplate, configurationProvider, configuration, 
ldapServerProperties, ldapContextSource);
 
-    final TestAmbariLdapDataPopulator populator = new 
TestAmbariLdapDataPopulator(configuration, users);
+    final TestAmbariLdapDataPopulator populator = new 
TestAmbariLdapDataPopulator(configurationProvider, users);
     populator.setLdapContextSource(ldapContextSource);
     populator.setLdapTemplate(ldapTemplate);
     populator.setLdapServerProperties(ldapServerProperties);
 
     populator.loadLdapTemplate();
 
-    verify(ldapTemplate, configuration, ldapServerProperties, 
ldapContextSource);
+    verify(ldapTemplate, configurationProvider, configuration, 
ldapServerProperties, ldapContextSource);
   }
 
   @Test
   public void testIsLdapEnabled_reallyEnabled() {
+    @SuppressWarnings("unchecked")
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     final AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     final Users users = createNiceMock(Users.class);
 
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     expect(configuration.ldapEnabled()).andReturn(true);
     expect(ldapTemplate.search(EasyMock.<String>anyObject(), 
EasyMock.anyObject(), 
EasyMock.<AttributesMapper>anyObject())).andReturn(Collections.emptyList()).once();
-    replay(ldapTemplate, configuration);
+    replay(ldapTemplate, configurationProvider, configuration);
 
-    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     populator.setLdapTemplate(ldapTemplate);
     populator.setLdapServerProperties(ldapServerProperties);
 
     assertTrue(populator.isLdapEnabled());
-    verify(populator.loadLdapTemplate(), configuration);
+    verify(populator.loadLdapTemplate(), configurationProvider, configuration);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testIsLdapEnabled_reallyDisabled() {
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     final AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     final Users users = createNiceMock(Users.class);
 
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     expect(configuration.ldapEnabled()).andReturn(false);
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties);
-    replay(ldapTemplate, ldapServerProperties, configuration);
+    replay(ldapTemplate, ldapServerProperties, configurationProvider, 
configuration);
 
-    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     populator.setLdapTemplate(ldapTemplate);
     populator.setLdapServerProperties(ldapServerProperties);
 
     assertFalse(populator.isLdapEnabled());
-    verify(populator.loadLdapTemplate(), populator.getLdapServerProperties(), 
configuration);
+    verify(populator.loadLdapTemplate(), populator.getLdapServerProperties(), 
configurationProvider, configuration);
   }
 
   private <T> Set<T> createSet(T... elements) {
     return new HashSet<>(Arrays.asList(elements));
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void synchronizeExistingLdapGroups() throws Exception {
 
@@ -259,20 +273,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3, group4, 
group5);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3, group4, group5);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapGroups")
         .addMockedMethod("refreshGroupMembers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     
expect(populator.getLdapGroups("group2")).andReturn(Collections.emptySet());
@@ -300,6 +316,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeExistingLdapGroups_removeDuringIteration() throws 
Exception {
     // GIVEN
@@ -313,7 +330,9 @@ public class AmbariLdapDataPopulatorTest {
     expect(group2.getGroupName()).andReturn("group2").anyTimes();
     expect(group2.isLdapGroup()).andReturn(true).anyTimes();
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     expect(users.getAllGroups()).andReturn(Arrays.asList(group1, group2));
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
@@ -332,9 +351,9 @@ public class AmbariLdapDataPopulatorTest {
     groupDtos2.add(group2Dto);
 
     LdapBatchDto batchInfo = new LdapBatchDto();
-    replay(configuration, users, group1, group2);
+    replay(configurationProvider, configuration, users, group1, group2);
     AmbariLdapDataPopulator dataPopulator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .addMockedMethod("getLdapGroups")
         .addMockedMethod("getLdapUserByMemberAttr")
         .addMockedMethod("getLdapGroupByMemberAttr")
@@ -353,6 +372,7 @@ public class AmbariLdapDataPopulatorTest {
 
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeLdapGroups_allExist() throws Exception {
 
@@ -371,20 +391,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3, group4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3, group4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapGroups")
         .addMockedMethod("refreshGroupMembers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -432,6 +454,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeLdapGroups_add() throws Exception {
 
@@ -450,20 +473,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3, group4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3, group4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapGroups")
         .addMockedMethod("refreshGroupMembers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -507,6 +532,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeLdapGroups_update() throws Exception {
 
@@ -525,20 +551,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3, group4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3, group4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapGroups")
         .addMockedMethod("refreshGroupMembers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -577,6 +605,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test(expected = AmbariException.class)
   public void testSynchronizeLdapGroups_absent() throws Exception {
 
@@ -595,20 +624,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3, group4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3, group4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapGroups")
         .addMockedMethod("refreshGroupMembers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -634,6 +665,7 @@ public class AmbariLdapDataPopulatorTest {
     populator.synchronizeLdapGroups(createSet("x*", "group1", "group2"), 
batchInfo);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapGroups() throws Exception {
 
@@ -655,20 +687,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3, group4, 
group5);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3, group4, group5);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getExternalLdapGroupInfo")
         .addMockedMethod("refreshGroupMembers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -708,6 +742,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapGroups_add() throws Exception {
 
@@ -718,20 +753,22 @@ public class AmbariLdapDataPopulatorTest {
     expect(group1.isLdapGroup()).andReturn(false).anyTimes();
     expect(group2.isLdapGroup()).andReturn(false).anyTimes();
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(Arrays.asList(group1, group2));
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("refreshGroupMembers")
         .addMockedMethod("getExternalLdapGroupInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -765,6 +802,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapGroups_remove() throws Exception {
 
@@ -783,20 +821,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3, group4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3, group4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("refreshGroupMembers")
         .addMockedMethod("getExternalLdapGroupInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -828,6 +868,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapGroups_update() throws Exception {
 
@@ -843,20 +884,22 @@ public class AmbariLdapDataPopulatorTest {
 
     List<Group> groupList = Arrays.asList(group1, group2, group3);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllGroups()).andReturn(groupList);
     expect(users.getAllUsers()).andReturn(Collections.emptyList());
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(group1, group2, group3);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("refreshGroupMembers")
         .addMockedMethod("getExternalLdapGroupInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup1 = createNiceMock(LdapGroupDto.class);
@@ -890,6 +933,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapUsers() throws Exception {
 
@@ -908,18 +952,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3, user4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user3, user2, user4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getExternalLdapUserInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapUserDto externalUser1 = createNiceMock(LdapUserDto.class);
@@ -952,6 +998,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapSkipLocal() throws Exception {
 
@@ -967,19 +1014,21 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.syncCollisionHandlingBehavior()).andReturn(LdapUsernameCollisionHandlingBehavior.SKIP).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user3, user2);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getExternalLdapUserInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapUserDto externalUser1 = createNiceMock(LdapUserDto.class);
@@ -1009,6 +1058,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapUsers_add() throws Exception {
 
@@ -1021,18 +1071,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getExternalLdapUserInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapUserDto externalUser1 = createNiceMock(LdapUserDto.class);
@@ -1061,6 +1113,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapUsers_remove() throws Exception {
 
@@ -1076,18 +1129,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2, user3);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getExternalLdapUserInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
 
@@ -1110,6 +1165,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeAllLdapUsers_update() throws Exception {
 
@@ -1125,18 +1181,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2, user3);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getExternalLdapUserInfo")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
 
@@ -1167,6 +1225,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeExistingLdapUsers() throws Exception {
 
@@ -1185,18 +1244,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3, user4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2, user3, user4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapUsers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     
expect(populator.getLdapUsers("synced_user1")).andReturn(Collections.emptySet());
@@ -1219,6 +1280,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeLdapUsers_allExist() throws Exception {
 
@@ -1237,18 +1299,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3, user4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2, user3, user4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapUsers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapUserDto externalUser1 = createNiceMock(LdapUserDto.class);
@@ -1283,6 +1347,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeLdapUsers_add() throws Exception {
 
@@ -1301,18 +1366,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3, user4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2, user3, user4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapUsers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapUserDto externalUser2 = createNiceMock(LdapUserDto.class);
@@ -1344,6 +1411,7 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testSynchronizeLdapUsers_update() throws Exception {
 
@@ -1362,18 +1430,20 @@ public class AmbariLdapDataPopulatorTest {
 
     List<User> userList = Arrays.asList(user1, user2, user3, user4);
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     expect(users.getAllUsers()).andReturn(userList);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2, user3, user4);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapUsers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapUserDto externalUser1 = createNiceMock(LdapUserDto.class);
@@ -1406,19 +1476,22 @@ public class AmbariLdapDataPopulatorTest {
     verify(populator.loadLdapTemplate(), populator);
   }
 
+  @SuppressWarnings("unchecked")
   @Test(expected = AmbariException.class)
   public void testSynchronizeLdapUsers_absent() throws Exception {
 
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
 
     AmbariLdapDataPopulatorTestInstance populator = 
createMockBuilder(AmbariLdapDataPopulatorTestInstance.class)
         .addMockedMethod("getLdapUsers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapUserDto externalUser1 = createNiceMock(LdapUserDto.class);
@@ -1442,6 +1515,7 @@ public class AmbariLdapDataPopulatorTest {
     populator.synchronizeLdapUsers(createSet("user1", "user2", "xuser*"), new 
LdapBatchDto());
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testRefreshGroupMembers() throws Exception {
 
@@ -1464,13 +1538,16 @@ public class AmbariLdapDataPopulatorTest {
     expect(group2.isLdapGroup()).andReturn(true).anyTimes();
     expect(group1.getGroupName()).andReturn("group1").anyTimes();
     expect(group2.getGroupName()).andReturn("group2").anyTimes();
+
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     
expect(ldapServerProperties.getGroupNamingAttr()).andReturn("cn").anyTimes();
     
expect(ldapServerProperties.getUsernameAttribute()).andReturn("uid").anyTimes();
-    replay(ldapTemplate, ldapServerProperties, users, configuration);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration);
     replay(user1, user2, user3, user4);
     replay(group1, group2);
 
@@ -1478,7 +1555,7 @@ public class AmbariLdapDataPopulatorTest {
         .addMockedMethod("getLdapUserByMemberAttr")
         .addMockedMethod("getLdapGroupByMemberAttr")
         .addMockedMethod("getInternalMembers")
-        .withConstructor(configuration, users)
+        .withConstructor(configurationProvider, users)
         .createNiceMock();
 
     LdapGroupDto externalGroup = createNiceMock(LdapGroupDto.class);
@@ -1532,11 +1609,14 @@ public class AmbariLdapDataPopulatorTest {
   }
 
   @Test
-  @SuppressWarnings("serial")
+  @SuppressWarnings({ "serial", "unchecked" })
   public void testCleanUpLdapUsersWithoutGroup() throws AmbariException {
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     final AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     final Users users = createNiceMock(Users.class);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
+
     final GroupEntity ldapGroup = new GroupEntity();
     ldapGroup.setGroupId(1);
     ldapGroup.setGroupName("ldapGroup");
@@ -1570,9 +1650,9 @@ public class AmbariLdapDataPopulatorTest {
       }
     });
 
-    replay(users);
+    replay(users, configurationProvider, configuration);
 
-    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    final AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     populator.setLdapTemplate(createNiceMock(LdapTemplate.class));
     
populator.setLdapServerProperties(createNiceMock(LdapServerProperties.class));
     populator.cleanUpLdapUsersWithoutGroup();
@@ -1587,15 +1667,15 @@ public class AmbariLdapDataPopulatorTest {
     verify(users);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testGetLdapUserByMemberAttr() throws Exception {
-
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     Capture<ContextMapper> contextMapperCapture = EasyMock.newCapture();
-    Capture<SearchControls> searchControlsCapture = EasyMock.newCapture();
     PagedResultsDirContextProcessor processor = 
createNiceMock(PagedResultsDirContextProcessor.class);
     PagedResultsCookie cookie = createNiceMock(PagedResultsCookie.class);
     LdapUserDto dto = new LdapUserDto();
@@ -1603,6 +1683,7 @@ public class AmbariLdapDataPopulatorTest {
     List<LdapUserDto> list = new LinkedList<>();
     list.add(dto);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     
expect(ldapServerProperties.isPaginationEnabled()).andReturn(true).anyTimes();
     
expect(ldapServerProperties.getUserObjectClass()).andReturn("objectClass").anyTimes();
@@ -1614,27 +1695,27 @@ public class AmbariLdapDataPopulatorTest {
 
     
expect(ldapTemplate.search(eq(LdapUtils.newLdapName("cn=testUser,ou=Ambari,dc=SME,dc=support,dc=com")),
 eq("(&(objectClass=objectClass)(uid=foo))"), anyObject(SearchControls.class), 
capture(contextMapperCapture), eq(processor))).andReturn(list);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration, 
processor, cookie);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration, processor, cookie);
 
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
 
     populator.setLdapTemplate(ldapTemplate);
     populator.setProcessor(processor);
 
     assertEquals(dto, populator.getLdapUserByMemberAttr("foo"));
 
-    verify(ldapTemplate, ldapServerProperties, users, configuration, 
processor, cookie);
+    verify(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration, processor, cookie);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testGetLdapUserByMemberAttrNoPagination() throws Exception {
-
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapTemplate ldapTemplate = createNiceMock(LdapTemplate.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
     Capture<ContextMapper> contextMapperCapture = EasyMock.newCapture();
-    Capture<SearchControls> searchControlsCapture = EasyMock.newCapture();
     PagedResultsDirContextProcessor processor = 
createNiceMock(PagedResultsDirContextProcessor.class);
     PagedResultsCookie cookie = createNiceMock(PagedResultsCookie.class);
     LdapUserDto dto = new LdapUserDto();
@@ -1642,6 +1723,7 @@ public class AmbariLdapDataPopulatorTest {
     List<LdapUserDto> list = new LinkedList<>();
     list.add(dto);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     
expect(ldapServerProperties.isPaginationEnabled()).andReturn(false).anyTimes();
     
expect(ldapServerProperties.getUserObjectClass()).andReturn("objectClass").anyTimes();
@@ -1651,16 +1733,16 @@ public class AmbariLdapDataPopulatorTest {
 
     
expect(ldapTemplate.search(eq(LdapUtils.newLdapName("cn=testUser,ou=Ambari,dc=SME,dc=support,dc=com")),
 eq("(&(objectClass=objectClass)(uid=foo))"), anyObject(SearchControls.class), 
capture(contextMapperCapture))).andReturn(list);
 
-    replay(ldapTemplate, ldapServerProperties, users, configuration, 
processor, cookie);
+    replay(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration, processor, cookie);
 
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
 
     populator.setLdapTemplate(ldapTemplate);
     populator.setProcessor(processor);
 
     assertEquals(dto, populator.getLdapUserByMemberAttr("foo"));
 
-    verify(ldapTemplate, ldapServerProperties, users, configuration, 
processor, cookie);
+    verify(ldapTemplate, ldapServerProperties, users, configurationProvider, 
configuration, processor, cookie);
   }
 
   @Test
@@ -1730,186 +1812,225 @@ public class AmbariLdapDataPopulatorTest {
     assertEquals("cn=testuser,ou=ambari,dc=sme,dc=support,dc=com", 
userDto.getDn());
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testIsMemberAttributeBaseDn() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     expect(ldapServerProperties.getUsernameAttribute()).andReturn("UID");
     expect(ldapServerProperties.getGroupNamingAttr()).andReturn("CN");
 
-    replay(configuration, users, ldapServerProperties);
+    replay(configurationProvider, configuration, users, ldapServerProperties);
 
     // WHEN
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     boolean result = 
populator.isMemberAttributeBaseDn("CN=mygroupname,OU=myOrganizationUnit,DC=apache,DC=org");
     // THEN
     assertTrue(result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testIsMemberAttributeBaseDn_withUidMatch() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     expect(ldapServerProperties.getUsernameAttribute()).andReturn("UID");
     expect(ldapServerProperties.getGroupNamingAttr()).andReturn("CN");
 
-    replay(configuration, users, ldapServerProperties);
+    replay(configurationProvider, configuration, users, ldapServerProperties);
 
     // WHEN
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     boolean result = 
populator.isMemberAttributeBaseDn("uid=myuid,OU=myOrganizationUnit,DC=apache,DC=org");
     // THEN
     assertTrue(result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testIsMemberAttributeBaseDn_withLowerAndUpperCaseValue() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     expect(ldapServerProperties.getUsernameAttribute()).andReturn("uid");
     expect(ldapServerProperties.getGroupNamingAttr()).andReturn("CN");
 
-    replay(configuration, users, ldapServerProperties);
+    replay(configurationProvider, configuration, users, ldapServerProperties);
 
     // WHEN
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     boolean result = 
populator.isMemberAttributeBaseDn("cn=mygroupname,OU=myOrganizationUnit,DC=apache,DC=org");
     // THEN
     assertTrue(result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testIsMemberAttributeBaseDn_withWrongAttribute() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     expect(ldapServerProperties.getUsernameAttribute()).andReturn("uid");
     expect(ldapServerProperties.getGroupNamingAttr()).andReturn("CN");
 
-    replay(configuration, users, ldapServerProperties);
+    replay(configurationProvider, configuration, users, ldapServerProperties);
 
     // WHEN
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     boolean result = 
populator.isMemberAttributeBaseDn("cnn=mygroupname,OU=myOrganizationUnit,DC=apache,DC=org");
     // THEN
     assertFalse(result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testIsMemberAttributeBaseDn_withEmptyValues() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
 
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     expect(ldapServerProperties.getUsernameAttribute()).andReturn("");
     expect(ldapServerProperties.getGroupNamingAttr()).andReturn(null);
 
-    replay(configuration, users, ldapServerProperties);
+    replay(configurationProvider, configuration, users, ldapServerProperties);
 
     // WHEN
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     boolean result = 
populator.isMemberAttributeBaseDn("cnn=mygroupname,OU=myOrganizationUnit,DC=apache,DC=org");
     // THEN
     assertFalse(result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void 
testIsMemberAttributeBaseDn_withDifferentUserAndGroupNameAttribute() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
     Users users = createNiceMock(Users.class);
     LdapServerProperties ldapServerProperties = 
createNiceMock(LdapServerProperties.class);
+
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
     
expect(ldapServerProperties.getUsernameAttribute()).andReturn("sAMAccountName");
     
expect(ldapServerProperties.getGroupNamingAttr()).andReturn("groupOfNames");
 
-    replay(configuration, users, ldapServerProperties);
+    replay(configurationProvider, configuration, users, ldapServerProperties);
 
     // WHEN
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     boolean result = 
populator.isMemberAttributeBaseDn("cn=mygroupname,OU=myOrganizationUnit,DC=apache,DC=org");
     // THEN
     assertTrue(result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testGetUniqueIdMemberPattern() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     String syncUserMemberPattern = "(?<sid>.*);(?<guid>.*);(?<member>.*)";
     String memberAttribute = "<SID=...>;<GUID=...>;cn=member,dc=apache,dc=org";
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    replay(configurationProvider, configuration);
     // WHEN
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     String result = populator.getUniqueIdByMemberPattern(memberAttribute, 
syncUserMemberPattern);
     // THEN
     assertEquals("cn=member,dc=apache,dc=org", result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testGetUniqueIdByMemberPatternWhenPatternIsWrong() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     String syncUserMemberPattern = "(?<sid>.*);(?<guid>.*);(?<mem>.*)";
     String memberAttribute = "<SID=...>;<GUID=...>;cn=member,dc=apache,dc=org";
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    replay(configurationProvider, configuration);
     // WHEN
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     String result = populator.getUniqueIdByMemberPattern(memberAttribute, 
syncUserMemberPattern);
     // THEN
     assertEquals(memberAttribute, result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testGetUniqueIdByMemberPatternWhenPatternIsEmpty() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     String memberAttribute = "<SID=...>;<GUID=...>;cn=member,dc=apache,dc=org";
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    replay(configurationProvider, configuration);
     // WHEN
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     String result = populator.getUniqueIdByMemberPattern(memberAttribute, "");
     // THEN
     assertEquals(memberAttribute, result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testGetUniqueIdByMemberPatternWhenMembershipAttributeIsNull() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
     String syncUserMemberPattern = "(?<sid>.*);(?<guid>.*);(?<member>.*)";
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    replay(configurationProvider, configuration);
     // WHEN
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     String result = populator.getUniqueIdByMemberPattern(null, 
syncUserMemberPattern);
     // THEN
     assertNull(result);
   }
 
+  @SuppressWarnings("unchecked")
   @Test
   public void testCreateCustomMemberFilter() {
     // GIVEN
+    final Provider<AmbariLdapConfiguration> configurationProvider = 
createNiceMock(Provider.class);
     AmbariLdapConfiguration configuration = 
createNiceMock(AmbariLdapConfiguration.class);
+    expect(configurationProvider.get()).andReturn(configuration).anyTimes();
     Users users = createNiceMock(Users.class);
-    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configuration, users);
+    replay(configurationProvider, configuration);
     // WHEN
+    AmbariLdapDataPopulatorTestInstance populator = new 
AmbariLdapDataPopulatorTestInstance(configurationProvider, users);
     Filter result = populator.createCustomMemberFilter("myUid", 
"(&(objectclass=posixaccount)(uid={member}))");
     // THEN
     assertEquals("(&(objectclass=posixaccount)(uid=myUid))", result.encode());
diff --git a/ambari-server/src/test/python/TestAmbariServer.py 
b/ambari-server/src/test/python/TestAmbariServer.py
index 97a0bd5..492f9e0 100644
--- a/ambari-server/src/test/python/TestAmbariServer.py
+++ b/ambari-server/src/test/python/TestAmbariServer.py
@@ -7650,16 +7650,18 @@ class TestAmbariServer(TestCase):
 
   @patch("urllib2.urlopen")
   @patch("ambari_server.setupSecurity.get_validated_string_input")
+  @patch("ambari_server.setupSecurity.get_ambari_properties")
   @patch("ambari_server.setupSecurity.is_ldap_enabled")
   @patch("ambari_server.setupSecurity.is_server_runing")
   @patch("ambari_server.setupSecurity.is_root")
   @patch("ambari_server.setupSecurity.logger")
-  def test_ldap_sync_existing(self, logger_mock, is_root_method, 
is_server_runing_mock, is_ldap_enabled_mock,
+  def test_ldap_sync_existing(self, logger_mock, is_root_method, 
is_server_runing_mock, is_ldap_enabled_mock, get_ambari_properties_mock,
                          get_validated_string_input_mock, urlopen_mock):
 
     is_root_method.return_value = True
     is_server_runing_mock.return_value = (True, 0)
     is_ldap_enabled_mock.return_value = 'true'
+    get_ambari_properties_mock.return_value = Properties()
     get_validated_string_input_mock.side_effect = ['admin', 'admin']
 
     response = MagicMock()

-- 
To stop receiving notification emails like this one, please contact
rle...@apache.org.

Reply via email to