1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.acl.basic;
17
18 import junit.framework.TestCase;
19
20 import org.acegisecurity.GrantedAuthority;
21 import org.acegisecurity.GrantedAuthorityImpl;
22
23 import org.acegisecurity.acl.AclEntry;
24
25 import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
26
27 import org.acegisecurity.userdetails.User;
28
29
30
31
32
33
34
35
36 public class GrantedAuthorityEffectiveAclsResolverTests extends TestCase {
37
38
39 private SimpleAclEntry entry100RoleEverybody = new SimpleAclEntry("ROLE_EVERYBODY",
40 new NamedEntityObjectIdentity("OBJECT", "100"), null, 14);
41 private SimpleAclEntry entry100RoleOne = new SimpleAclEntry("ROLE_ONE",
42 new NamedEntityObjectIdentity("OBJECT", "100"), null, 0);
43 private SimpleAclEntry entry100RoleTwo = new SimpleAclEntry("ROLE_TWO",
44 new NamedEntityObjectIdentity("OBJECT", "100"), null, 2);
45 private UsernamePasswordAuthenticationToken scott = new UsernamePasswordAuthenticationToken("scott", "not used",
46 new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_EVERYBODY"), new GrantedAuthorityImpl("ROLE_TWO")});
47 private SimpleAclEntry entry100Scott = new SimpleAclEntry(scott.getPrincipal(),
48 new NamedEntityObjectIdentity("OBJECT", "100"), null, 4);
49 private UsernamePasswordAuthenticationToken dianne = new UsernamePasswordAuthenticationToken("dianne", "not used");
50 private UsernamePasswordAuthenticationToken marissa = new UsernamePasswordAuthenticationToken("marissa",
51 "not used",
52 new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_EVERYBODY"), new GrantedAuthorityImpl("ROLE_ONE")});
53 private SimpleAclEntry entry100Marissa = new SimpleAclEntry(marissa.getPrincipal(),
54 new NamedEntityObjectIdentity("OBJECT", "100"), null, 2);
55 private UsernamePasswordAuthenticationToken scottWithUserDetails = new UsernamePasswordAuthenticationToken(new User(
56 "scott", "NOT_USED", true, true, true, true,
57 new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_EVERYBODY")}), "not used",
58 new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_EVERYBODY"), new GrantedAuthorityImpl("ROLE_TWO")});
59
60
61 private SimpleAclEntry[] acls = {
62 entry100Marissa, entry100Scott, entry100RoleEverybody, entry100RoleOne, entry100RoleTwo
63 };
64
65
66
67 public GrantedAuthorityEffectiveAclsResolverTests() {
68 super();
69 }
70
71 public GrantedAuthorityEffectiveAclsResolverTests(String arg0) {
72 super(arg0);
73 }
74
75
76
77 public static void main(String[] args) {
78 junit.textui.TestRunner.run(GrantedAuthorityEffectiveAclsResolverTests.class);
79 }
80
81 public final void setUp() throws Exception {
82 super.setUp();
83 }
84
85 public void testResolveAclsForDianneWhoHasANullForAuthorities() {
86 GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver();
87 assertNull(resolver.resolveEffectiveAcls(acls, dianne));
88 }
89
90 public void testResolveAclsForMarissa() {
91 GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver();
92 assertEquals(3, resolver.resolveEffectiveAcls(acls, marissa).length);
93 assertEquals(entry100Marissa, resolver.resolveEffectiveAcls(acls, marissa)[0]);
94 assertEquals(entry100RoleEverybody, resolver.resolveEffectiveAcls(acls, marissa)[1]);
95 assertEquals(entry100RoleOne, resolver.resolveEffectiveAcls(acls, marissa)[2]);
96 }
97
98 public void testResolveAclsForScottWithStringObjectAsPrincipal() {
99 GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver();
100 assertEquals(3, resolver.resolveEffectiveAcls(acls, scott).length);
101 assertEquals(entry100Scott, resolver.resolveEffectiveAcls(acls, scott)[0]);
102 assertEquals(entry100RoleEverybody, resolver.resolveEffectiveAcls(acls, scott)[1]);
103 assertEquals(entry100RoleTwo, resolver.resolveEffectiveAcls(acls, scott)[2]);
104 }
105
106 public void testResolveAclsForScottWithUserDetailsObjectAsPrincipal() {
107 GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver();
108 assertEquals(3, resolver.resolveEffectiveAcls(acls, scottWithUserDetails).length);
109 assertEquals(entry100Scott, resolver.resolveEffectiveAcls(acls, scottWithUserDetails)[0]);
110 assertEquals(entry100RoleEverybody, resolver.resolveEffectiveAcls(acls, scottWithUserDetails)[1]);
111 assertEquals(entry100RoleTwo, resolver.resolveEffectiveAcls(acls, scottWithUserDetails)[2]);
112 }
113
114 public void testResolveAclsReturnsNullIfNoAclsInFirstPlace() {
115 GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver();
116 assertNull(resolver.resolveEffectiveAcls(null, scott));
117 }
118
119 public void testSkipsNonBasicAclEntryObjects() {
120 GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver();
121 AclEntry[] basicAcls = {
122 entry100Marissa, entry100Scott, entry100RoleEverybody, entry100RoleOne, new MockAcl(), entry100RoleTwo
123 };
124 assertEquals(3, resolver.resolveEffectiveAcls(basicAcls, marissa).length);
125 }
126
127
128
129 private class MockAcl implements AclEntry {
130
131 }
132 }