1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.providers.ldap.populator;
17
18 import org.acegisecurity.GrantedAuthority;
19
20 import org.acegisecurity.ldap.AbstractLdapServerTestCase;
21
22 import org.acegisecurity.userdetails.ldap.LdapUserDetailsImpl;
23
24 import java.util.HashSet;
25 import java.util.Set;
26 import java.util.Map;
27 import java.util.HashMap;
28
29 import javax.naming.directory.BasicAttributes;
30
31
32
33
34
35
36
37
38 public class DefaultLdapAuthoritiesPopulatorTests extends AbstractLdapServerTestCase {
39
40
41 public void onSetUp() {
42 getInitialCtxFactory().setManagerDn(MANAGER_USER);
43 getInitialCtxFactory().setManagerPassword(MANAGER_PASSWORD);
44 }
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 public void testDefaultRoleIsAssignedWhenSet() {
70 DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator(getInitialCtxFactory(),
71 "ou=groups");
72 populator.setDefaultRole("ROLE_USER");
73
74 LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
75 user.setDn("cn=notfound");
76 user.setUsername("notfound");
77 user.setAttributes(new BasicAttributes());
78
79 GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
80 assertEquals(1, authorities.length);
81 assertEquals("ROLE_USER", authorities[0].getAuthority());
82 }
83
84 public void testGroupSearchReturnsExpectedRoles() {
85 DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator(getInitialCtxFactory(),
86 "ou=groups");
87 populator.setRolePrefix("ROLE_");
88 populator.setGroupRoleAttribute("ou");
89 populator.setSearchSubtree(true);
90 populator.setSearchSubtree(false);
91 populator.setConvertToUpperCase(true);
92 populator.setGroupSearchFilter("(member={0})");
93
94 LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
95 user.setUsername("ben");
96 user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
97 user.setAttributes(new BasicAttributes());
98
99 GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
100
101 assertEquals("Should have 2 roles", 2, authorities.length);
102
103 Set roles = new HashSet();
104 roles.add(authorities[0].toString());
105 roles.add(authorities[1].toString());
106 assertTrue(roles.contains("ROLE_DEVELOPER"));
107 assertTrue(roles.contains("ROLE_MANAGER"));
108 }
109
110 public void testUseOfUsernameParameterReturnsExpectedRoles() {
111 DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator(getInitialCtxFactory(),
112 "ou=groups");
113 populator.setGroupRoleAttribute("ou");
114 populator.setConvertToUpperCase(true);
115 populator.setGroupSearchFilter("(ou={1})");
116
117 LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
118 user.setUsername("manager");
119 user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
120
121 GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
122 assertEquals("Should have 1 role", 1, authorities.length);
123 assertEquals("ROLE_MANAGER", authorities[0].getAuthority());
124 }
125
126 public void testSubGroupRolesAreNotFoundByDefault() {
127 DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator(getInitialCtxFactory(),
128 "ou=groups");
129 populator.setGroupRoleAttribute("ou");
130 populator.setConvertToUpperCase(true);
131
132 LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
133 user.setUsername("manager");
134 user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
135
136 GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
137 assertEquals("Should have 2 roles", 2, authorities.length);
138 Set roles = new HashSet(2);
139 roles.add(authorities[0].getAuthority());
140 roles.add(authorities[1].getAuthority());
141 assertTrue(roles.contains("ROLE_MANAGER"));
142 assertTrue(roles.contains("ROLE_DEVELOPER"));
143 }
144
145 public void testSubGroupRolesAreFoundWhenSubtreeSearchIsEnabled() {
146 DefaultLdapAuthoritiesPopulator populator = new DefaultLdapAuthoritiesPopulator(getInitialCtxFactory(),
147 "ou=groups");
148 populator.setGroupRoleAttribute("ou");
149 populator.setConvertToUpperCase(true);
150 populator.setSearchSubtree(true);
151
152 LdapUserDetailsImpl.Essence user = new LdapUserDetailsImpl.Essence();
153 user.setUsername("manager");
154 user.setDn("uid=ben,ou=people,dc=acegisecurity,dc=org");
155
156 GrantedAuthority[] authorities = populator.getGrantedAuthorities(user.createUserDetails());
157 assertEquals("Should have 3 roles", 3, authorities.length);
158 Set roles = new HashSet(3);
159 roles.add(authorities[0].getAuthority());
160 roles.add(authorities[1].getAuthority());
161 roles.add(authorities[2].getAuthority());
162 assertTrue(roles.contains("ROLE_MANAGER"));
163 assertTrue(roles.contains("ROLE_DEVELOPER"));
164 assertTrue(roles.contains("ROLE_SUBMANAGER"));
165 }
166
167 }