@Override
protected void configure(AuthenticationManagerBuilder authBuilder) throws Exception {
if (ldap) {
authBuilder.ldapAuthentication()
.userDetailsContextMapper(customUserDetailsCxtMapper())
.userSearchFilter("(&(objectClass=user)(" + userDnPatterns + "))")
.contextSource()
.url(ldapProviderUrl + ldapBaseDn.trim().replaceAll(" ", "%20"))
.managerDn(ldapSecurityPrincipal)
.managerPassword(ldapPrincipalPassword);
} else {
super.configure(auth);
}
}
@Bean
public UserDetailsContextMapper customUserDetailsContextMapper() {
return new UserDetailsContextMapper() {
@Override
public UserDetails mapUserFromContext(DirContextOperations context, String uName,
Collection<? extends GrantedAuthority> authorities) {
ArrayList<GrantedAuthority> grantedAuthorities = new ArrayList<>();
Collection<? extends GrantedAuthority> authorities = extractAuthorityFromMemberOf(context);
grantedAuthorities.addAll(authorities);
UserDetailsContextMapper contextMapper = new LdapUserDetailsMapper();
return contextMapper.mapUserFromContext(context, uName, grantedAuthorities);
}
@Override
public void mapUserToContext(UserDetails userDetails, DirContextAdapter dirContextAdapter) {
}
};
}
I am new to spring security? How can I write a unit test for checking this ldap configuration? I am always getting null while at this line userDetailsContextMapper(customUserDetailsCxtMapper()) Not sure how to mock these lines
userDetailsContextMapper(customUserDetailsCxtMapper())
.userSearchFilter("(&(objectClass=user)(" + userDnPatterns + "))")
.contextSource()