Commit 3a20b1d9 authored by Stephane Nicoll's avatar Stephane Nicoll

Merge pull request #17861 from filiphr

* pr/17861:
  Map non-null LDAP properties

Closes gh-17861
parents fe638655 1ebbe9fc
......@@ -22,6 +22,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
......@@ -55,12 +56,14 @@ public class LdapAutoConfiguration {
@ConditionalOnMissingBean
public LdapContextSource ldapContextSource() {
LdapContextSource source = new LdapContextSource();
source.setUserDn(this.properties.getUsername());
source.setPassword(this.properties.getPassword());
source.setAnonymousReadOnly(this.properties.getAnonymousReadOnly());
source.setBase(this.properties.getBase());
source.setUrls(this.properties.determineUrls(this.environment));
source.setBaseEnvironmentProperties(Collections.unmodifiableMap(this.properties.getBaseEnvironment()));
PropertyMapper propertyMapper = PropertyMapper.get().alwaysApplyingWhenNonNull();
propertyMapper.from(this.properties.getUsername()).to(source::setUserDn);
propertyMapper.from(this.properties.getPassword()).to(source::setPassword);
propertyMapper.from(this.properties.getAnonymousReadOnly()).to(source::setAnonymousReadOnly);
propertyMapper.from(this.properties.getBase()).to(source::setBase);
propertyMapper.from(this.properties.determineUrls(this.environment)).to(source::setUrls);
propertyMapper.from(this.properties.getBaseEnvironment()).to(
(baseEnvironment) -> source.setBaseEnvironmentProperties(Collections.unmodifiableMap(baseEnvironment)));
return source;
}
......
......@@ -90,6 +90,17 @@ public class LdapAutoConfigurationTests {
});
}
@Test
public void contextSourceWithNoCustomization() {
this.contextRunner.run((context) -> {
LdapContextSource contextSource = context.getBean(LdapContextSource.class);
assertThat(contextSource.getUserDn()).isEqualTo("");
assertThat(contextSource.getPassword()).isEqualTo("");
assertThat(contextSource.isAnonymousReadOnly()).isFalse();
assertThat(contextSource.getBaseLdapPathAsString()).isEqualTo("");
});
}
@Test
public void templateExists() {
this.contextRunner.withPropertyValues("spring.ldap.urls:ldap://localhost:389")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment