@Before
 public void setUp() throws Exception {
   populator = new NestedLdapAuthoritiesPopulator(getContextSource(), "ou=jdeveloper");
   populator.setGroupSearchFilter("(member={0})");
   populator.setIgnorePartialResultException(false);
   populator.setRolePrefix("");
   populator.setSearchSubtree(true);
   populator.setConvertToUpperCase(false);
   jDevelopers =
       new LdapAuthority(
           "j-developers", "cn=j-developers,ou=jdeveloper,dc=springframework,dc=org");
   javaDevelopers =
       new LdapAuthority(
           "java-developers", "cn=java-developers,ou=jdeveloper,dc=springframework,dc=org");
   groovyDevelopers =
       new LdapAuthority(
           "groovy-developers", "cn=groovy-developers,ou=jdeveloper,dc=springframework,dc=org");
   scalaDevelopers =
       new LdapAuthority(
           "scala-developers", "cn=scala-developers,ou=jdeveloper,dc=springframework,dc=org");
   closureDevelopers =
       new LdapAuthority(
           "closure-developers", "cn=closure-developers,ou=jdeveloper,dc=springframework,dc=org");
   circularJavaDevelopers =
       new LdapAuthority(
           "circular-java-developers",
           "cn=circular-java-developers,ou=jdeveloper,dc=springframework,dc=org");
 }
 @Test
 public void testScalaDudeJDevelopersAuthoritiesWithSearchLimit() {
   populator.setMaxSearchDepth(1);
   DirContextAdapter ctx =
       new DirContextAdapter("uid=scaladude,ou=people,dc=springframework,dc=org");
   Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx, "scaladude");
   assertThat(authorities).hasSize(1);
   assertThat(authorities).isEqualTo(Arrays.asList(scalaDevelopers));
 }
 @Test
 public void testJavaDudeJDevelopersAuthorities() {
   DirContextAdapter ctx =
       new DirContextAdapter("uid=javadude,ou=people,dc=springframework,dc=org");
   Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx, "javadude");
   assertThat(authorities).hasSize(3);
   assertThat(authorities).contains(javaDevelopers);
 }
 @Test
 public void testGroovyDudeJDevelopersAuthorities() {
   DirContextAdapter ctx =
       new DirContextAdapter("uid=groovydude,ou=people,dc=springframework,dc=org");
   Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx, "groovydude");
   assertThat(authorities).hasSize(4);
   assertThat(authorities)
       .isEqualTo(
           Arrays.asList(javaDevelopers, circularJavaDevelopers, jDevelopers, groovyDevelopers));
 }
  @Test
  public void testClosureDudeJDevelopersWithMembershipAsAttributeValues() {
    populator.setAttributeNames(new HashSet(Arrays.asList("member")));

    DirContextAdapter ctx =
        new DirContextAdapter("uid=closuredude,ou=people,dc=springframework,dc=org");
    Collection<GrantedAuthority> authorities = populator.getGrantedAuthorities(ctx, "closuredude");
    assertThat(authorities).hasSize(5);
    assertThat(authorities)
        .isEqualTo(
            Arrays.asList(
                closureDevelopers,
                javaDevelopers,
                circularJavaDevelopers,
                jDevelopers,
                groovyDevelopers));

    LdapAuthority[] ldapAuthorities = authorities.toArray(new LdapAuthority[0]);
    assertThat(ldapAuthorities.length).isEqualTo(5);
    // closure 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");

    // 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"));

    // 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());
  }