Polish "Auto-configure ObjectDirectoryMapper"
See gh-44290
This commit is contained in:
@@ -28,7 +28,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||
import org.springframework.boot.context.properties.PropertyMapper;
|
||||
import org.springframework.boot.convert.ApplicationConversionService;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.ldap.convert.ConverterUtils;
|
||||
import org.springframework.ldap.core.ContextSource;
|
||||
@@ -75,6 +74,16 @@ public class LdapAutoConfiguration {
|
||||
return source;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public ObjectDirectoryMapper objectDirectoryMapper() {
|
||||
ApplicationConversionService conversionService = new ApplicationConversionService();
|
||||
ConverterUtils.addDefaultConverters(conversionService);
|
||||
DefaultObjectDirectoryMapper objectDirectoryMapper = new DefaultObjectDirectoryMapper();
|
||||
objectDirectoryMapper.setConversionService(conversionService);
|
||||
return objectDirectoryMapper;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(LdapOperations.class)
|
||||
public LdapTemplate ldapTemplate(LdapProperties properties, ContextSource contextSource,
|
||||
@@ -91,18 +100,4 @@ public class LdapAutoConfiguration {
|
||||
return ldapTemplate;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public ObjectDirectoryMapper objectDirectoryMapper() {
|
||||
DefaultObjectDirectoryMapper objectDirectoryMapper = new DefaultObjectDirectoryMapper();
|
||||
objectDirectoryMapper.setConversionService(createConversionService());
|
||||
return objectDirectoryMapper;
|
||||
}
|
||||
|
||||
private static ConversionService createConversionService() {
|
||||
ApplicationConversionService conversionService = new ApplicationConversionService();
|
||||
ConverterUtils.addDefaultConverters(conversionService);
|
||||
return conversionService;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -137,6 +137,21 @@ class LdapAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void objectDirectoryMapperExists() {
|
||||
this.contextRunner.withPropertyValues("spring.ldap.urls:ldap://localhost:389").run((context) -> {
|
||||
assertThat(context).hasSingleBean(ObjectDirectoryMapper.class);
|
||||
ObjectDirectoryMapper objectDirectoryMapper = context.getBean(ObjectDirectoryMapper.class);
|
||||
ApplicationConversionService conversionService = assertThat(objectDirectoryMapper)
|
||||
.extracting("converterManager")
|
||||
.extracting("conversionService")
|
||||
.asInstanceOf(InstanceOfAssertFactories.type(ApplicationConversionService.class))
|
||||
.actual();
|
||||
assertThat(conversionService.canConvert(String.class, Name.class)).isTrue();
|
||||
assertThat(conversionService.canConvert(Name.class, String.class)).isTrue();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void templateExists() {
|
||||
this.contextRunner.withPropertyValues("spring.ldap.urls:ldap://localhost:389").run((context) -> {
|
||||
@@ -145,9 +160,23 @@ class LdapAutoConfigurationTests {
|
||||
assertThat(ldapTemplate).hasFieldOrPropertyWithValue("ignorePartialResultException", false);
|
||||
assertThat(ldapTemplate).hasFieldOrPropertyWithValue("ignoreNameNotFoundException", false);
|
||||
assertThat(ldapTemplate).hasFieldOrPropertyWithValue("ignoreSizeLimitExceededException", true);
|
||||
assertThat(ldapTemplate).extracting("objectDirectoryMapper")
|
||||
.isSameAs(context.getBean(ObjectDirectoryMapper.class));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void templateCanBeConfiguredWithCustomObjectDirectoryMapper() {
|
||||
ObjectDirectoryMapper objectDirectoryMapper = mock(ObjectDirectoryMapper.class);
|
||||
this.contextRunner.withPropertyValues("spring.ldap.urls:ldap://localhost:389")
|
||||
.withBean(ObjectDirectoryMapper.class, () -> objectDirectoryMapper)
|
||||
.run((context) -> {
|
||||
assertThat(context).hasSingleBean(LdapTemplate.class);
|
||||
LdapTemplate ldapTemplate = context.getBean(LdapTemplate.class);
|
||||
assertThat(ldapTemplate).extracting("objectDirectoryMapper").isSameAs(objectDirectoryMapper);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void templateConfigurationCanBeCustomized() {
|
||||
this.contextRunner
|
||||
@@ -199,36 +228,6 @@ class LdapAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void objectDirectoryMapperBeanAutoConfigured() {
|
||||
this.contextRunner.withPropertyValues("spring.ldap.urls:ldap://localhost:389").run((context) -> {
|
||||
assertThat(context).hasSingleBean(ObjectDirectoryMapper.class);
|
||||
assertThat(context).hasSingleBean(LdapTemplate.class);
|
||||
ObjectDirectoryMapper objectDirectoryMapper = context.getBean(ObjectDirectoryMapper.class);
|
||||
LdapTemplate ldapTemplate = context.getBean(LdapTemplate.class);
|
||||
ApplicationConversionService conversionService = assertThat(objectDirectoryMapper)
|
||||
.extracting("converterManager")
|
||||
.extracting("conversionService")
|
||||
.asInstanceOf(InstanceOfAssertFactories.type(ApplicationConversionService.class))
|
||||
.actual();
|
||||
assertThat(conversionService.canConvert(String.class, Name.class)).isTrue();
|
||||
assertThat(conversionService.canConvert(Name.class, String.class)).isTrue();
|
||||
assertThat(ldapTemplate).extracting("objectDirectoryMapper").isSameAs(objectDirectoryMapper);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void customObjectDirectoryMapperBeanCanBeUsed() {
|
||||
ObjectDirectoryMapper objectDirectoryMapper = mock(ObjectDirectoryMapper.class);
|
||||
this.contextRunner.withPropertyValues("spring.ldap.urls:ldap://localhost:389")
|
||||
.withBean(ObjectDirectoryMapper.class, () -> objectDirectoryMapper)
|
||||
.run((context) -> {
|
||||
assertThat(context).hasSingleBean(LdapTemplate.class);
|
||||
LdapTemplate ldapTemplate = context.getBean(LdapTemplate.class);
|
||||
assertThat(ldapTemplate).extracting("objectDirectoryMapper").isSameAs(objectDirectoryMapper);
|
||||
});
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class ConnectionDetailsConfiguration {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user