|  | @@ -17,9 +17,15 @@ package org.springframework.security.ldap.userdetails;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import org.junit.Before;
 | 
	
		
			
				|  |  |  import org.junit.Test;
 | 
	
		
			
				|  |  | +import org.junit.runner.RunWith;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.ldap.core.ContextSource;
 | 
	
		
			
				|  |  |  import org.springframework.ldap.core.DirContextAdapter;
 | 
	
		
			
				|  |  |  import org.springframework.security.core.GrantedAuthority;
 | 
	
		
			
				|  |  | -import org.springframework.security.ldap.AbstractLdapIntegrationTests;
 | 
	
		
			
				|  |  | +import org.springframework.security.ldap.ApacheDsContainerConfig;
 | 
	
		
			
				|  |  | +import org.springframework.test.context.ContextConfiguration;
 | 
	
		
			
				|  |  | +import org.springframework.test.context.junit4.SpringRunner;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.Arrays;
 | 
	
		
			
				|  |  |  import java.util.Collection;
 | 
	
	
		
			
				|  | @@ -29,9 +35,14 @@ import static org.assertj.core.api.Assertions.*;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @author Filip Hanik
 | 
	
		
			
				|  |  | + * @author Eddú Meléndez
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -public class NestedLdapAuthoritiesPopulatorTests extends AbstractLdapIntegrationTests {
 | 
	
		
			
				|  |  | +@RunWith(SpringRunner.class)
 | 
	
		
			
				|  |  | +@ContextConfiguration(classes = ApacheDsContainerConfig.class)
 | 
	
		
			
				|  |  | +public class NestedLdapAuthoritiesPopulatorTests {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private ContextSource contextSource;
 | 
	
		
			
				|  |  |  	private NestedLdapAuthoritiesPopulator populator;
 | 
	
		
			
				|  |  |  	private LdapAuthority javaDevelopers;
 | 
	
		
			
				|  |  |  	private LdapAuthority groovyDevelopers;
 | 
	
	
		
			
				|  | @@ -45,7 +56,7 @@ public class NestedLdapAuthoritiesPopulatorTests extends AbstractLdapIntegration
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Before
 | 
	
		
			
				|  |  |  	public void setUp() throws Exception {
 | 
	
		
			
				|  |  | -		populator = new NestedLdapAuthoritiesPopulator(getContextSource(),
 | 
	
		
			
				|  |  | +		populator = new NestedLdapAuthoritiesPopulator(this.contextSource,
 | 
	
		
			
				|  |  |  				"ou=jdeveloper");
 | 
	
		
			
				|  |  |  		populator.setGroupSearchFilter("(member={0})");
 | 
	
		
			
				|  |  |  		populator.setIgnorePartialResultException(false);
 | 
	
	
		
			
				|  | @@ -73,8 +84,8 @@ public class NestedLdapAuthoritiesPopulatorTests extends AbstractLdapIntegration
 | 
	
		
			
				|  |  |  		Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx,
 | 
	
		
			
				|  |  |  				"scaladude");
 | 
	
		
			
				|  |  |  		assertThat(authorities).hasSize(5);
 | 
	
		
			
				|  |  | -		assertThat(Arrays.asList(javaDevelopers, scalaDevelopers,
 | 
	
		
			
				|  |  | -				circularJavaDevelopers, jDevelopers, groovyDevelopers)).isEqualTo(authorities);
 | 
	
		
			
				|  |  | +		assertThat(authorities).isEqualTo(Arrays.asList(javaDevelopers, circularJavaDevelopers,
 | 
	
		
			
				|  |  | +				scalaDevelopers, groovyDevelopers, jDevelopers));
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Test
 | 
	
	
		
			
				|  | @@ -83,7 +94,7 @@ public class NestedLdapAuthoritiesPopulatorTests extends AbstractLdapIntegration
 | 
	
		
			
				|  |  |  				"uid=javadude,ou=people,dc=springframework,dc=org");
 | 
	
		
			
				|  |  |  		Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx,
 | 
	
		
			
				|  |  |  				"javadude");
 | 
	
		
			
				|  |  | -		assertThat(authorities).hasSize(3);
 | 
	
		
			
				|  |  | +		assertThat(authorities).hasSize(4);
 | 
	
		
			
				|  |  |  		assertThat(authorities).contains(javaDevelopers);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -105,8 +116,8 @@ public class NestedLdapAuthoritiesPopulatorTests extends AbstractLdapIntegration
 | 
	
		
			
				|  |  |  		Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx,
 | 
	
		
			
				|  |  |  				"groovydude");
 | 
	
		
			
				|  |  |  		assertThat(authorities).hasSize(4);
 | 
	
		
			
				|  |  | -		assertThat(authorities).isEqualTo(Arrays.asList(javaDevelopers, circularJavaDevelopers, jDevelopers,
 | 
	
		
			
				|  |  | -				groovyDevelopers));
 | 
	
		
			
				|  |  | +		assertThat(authorities).isEqualTo(Arrays.asList(javaDevelopers, circularJavaDevelopers, groovyDevelopers,
 | 
	
		
			
				|  |  | +				jDevelopers));
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Test
 | 
	
	
		
			
				|  | @@ -118,30 +129,30 @@ public class NestedLdapAuthoritiesPopulatorTests extends AbstractLdapIntegration
 | 
	
		
			
				|  |  |  		Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx,
 | 
	
		
			
				|  |  |  				"closuredude");
 | 
	
		
			
				|  |  |  		assertThat(authorities).hasSize(5);
 | 
	
		
			
				|  |  | -		assertThat(authorities).isEqualTo(Arrays.asList(closureDevelopers, javaDevelopers,
 | 
	
		
			
				|  |  | -				circularJavaDevelopers, jDevelopers, groovyDevelopers));
 | 
	
		
			
				|  |  | +		assertThat(authorities).isEqualTo(Arrays.asList(javaDevelopers, circularJavaDevelopers,
 | 
	
		
			
				|  |  | +				closureDevelopers, groovyDevelopers, jDevelopers));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		LdapAuthority[] ldapAuthorities = authorities.toArray(new LdapAuthority[0]);
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities).hasSize(5);
 | 
	
		
			
				|  |  | -		// closure group
 | 
	
		
			
				|  |  | +		// groovy-developers group
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[0].getAttributes().containsKey("member")).isTrue();
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[0].getAttributes().get("member")).isNotNull();
 | 
	
		
			
				|  |  | -		assertThat(ldapAuthorities[0].getAttributes().get("member")).hasSize(1);
 | 
	
		
			
				|  |  | -		assertThat(ldapAuthorities[0].getFirstAttributeValue("member")).isEqualTo("uid=closuredude,ou=people,dc=springframework,dc=org");
 | 
	
		
			
				|  |  | +		assertThat(ldapAuthorities[0].getAttributes().get("member")).hasSize(3);
 | 
	
		
			
				|  |  | +		assertThat(ldapAuthorities[0].getFirstAttributeValue("member")).isEqualTo("cn=groovy-developers,ou=jdeveloper,dc=springframework,dc=org");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		// java group
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[1].getAttributes().containsKey("member")).isTrue();
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[1].getAttributes().get("member")).isNotNull();
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[1].getAttributes().get("member")).hasSize(3);
 | 
	
		
			
				|  |  |  		assertThat(groovyDevelopers.getDn()).isEqualTo(ldapAuthorities[1].getFirstAttributeValue("member"));
 | 
	
		
			
				|  |  | -		assertThat(scalaDevelopers.getDn()).isEqualTo(ldapAuthorities[2]
 | 
	
		
			
				|  |  | -				.getAttributes().get("member"));
 | 
	
		
			
				|  |  | +		assertThat(ldapAuthorities[2]
 | 
	
		
			
				|  |  | +				.getAttributes().get("member")).contains("uid=closuredude,ou=people,dc=springframework,dc=org");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		// test non existent attribute
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[2].getFirstAttributeValue("test")).isNull();
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[2].getAttributeValues("test")).isNotNull();
 | 
	
		
			
				|  |  |  		assertThat(ldapAuthorities[2].getAttributeValues("test")).isEmpty();
 | 
	
		
			
				|  |  |  		// test role name
 | 
	
		
			
				|  |  | -		assertThat(ldapAuthorities[3].getAuthority()).isEqualTo(jDevelopers.getAuthority());
 | 
	
		
			
				|  |  | +		assertThat(ldapAuthorities[3].getAuthority()).isEqualTo(groovyDevelopers.getAuthority());
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 |