1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.shiro.authz.permission;
20
21 import static org.junit.Assert.assertFalse;
22 import static org.junit.Assert.assertTrue;
23 import org.junit.Test;
24
25
26
27
28
29 public class WildcardPermissionTest {
30
31 @Test(expected = IllegalArgumentException.class)
32 public void testNull() {
33 new WildcardPermission(null);
34 }
35
36 @Test(expected = IllegalArgumentException.class)
37 public void testEmpty() {
38 new WildcardPermission("");
39 }
40
41 @Test(expected = IllegalArgumentException.class)
42 public void testBlank() {
43 new WildcardPermission(" ");
44 }
45
46 @Test(expected = IllegalArgumentException.class)
47 public void testOnlyDelimiters() {
48 new WildcardPermission("::,,::,:");
49 }
50
51 @Test
52 public void testNamed() {
53 WildcardPermission p1, p2;
54
55
56 p1 = new WildcardPermission("something");
57 p2 = new WildcardPermission("something");
58 assertTrue(p1.implies(p2));
59 assertTrue(p2.implies(p1));
60
61
62 p1 = new WildcardPermission("something");
63 p2 = new WildcardPermission("SOMETHING");
64 assertTrue(p1.implies(p2));
65 assertTrue(p2.implies(p1));
66
67
68 p1 = new WildcardPermission("something");
69 p2 = new WildcardPermission("else");
70 assertFalse(p1.implies(p2));
71 assertFalse(p2.implies(p1));
72
73
74 p1 = new WildcardPermission("BLAHBLAH", false);
75 p2 = new WildcardPermission("BLAHBLAH", false);
76 assertTrue(p1.implies(p2));
77 assertTrue(p2.implies(p1));
78
79
80 p1 = new WildcardPermission("BLAHBLAH", false);
81 p2 = new WildcardPermission("bLAHBLAH", false);
82 assertTrue(p1.implies(p2));
83 assertTrue(p2.implies(p1));
84
85
86 p1 = new WildcardPermission("BLAHBLAH", false);
87 p2 = new WildcardPermission("whatwhat", false);
88 assertFalse(p1.implies(p2));
89 assertFalse(p2.implies(p1));
90
91 }
92
93 @Test
94 public void testLists() {
95 WildcardPermission p1, p2, p3;
96
97 p1 = new WildcardPermission("one,two");
98 p2 = new WildcardPermission("one");
99 assertTrue(p1.implies(p2));
100 assertFalse(p2.implies(p1));
101
102 p1 = new WildcardPermission("one,two,three");
103 p2 = new WildcardPermission("one,three");
104 assertTrue(p1.implies(p2));
105 assertFalse(p2.implies(p1));
106
107 p1 = new WildcardPermission("one,two:one,two,three");
108 p2 = new WildcardPermission("one:three");
109 p3 = new WildcardPermission("one:two,three");
110 assertTrue(p1.implies(p2));
111 assertFalse(p2.implies(p1));
112 assertTrue(p1.implies(p3));
113 assertFalse(p2.implies(p3));
114 assertTrue(p3.implies(p2));
115
116 p1 = new WildcardPermission("one,two,three:one,two,three:one,two");
117 p2 = new WildcardPermission("one:three:two");
118 assertTrue(p1.implies(p2));
119 assertFalse(p2.implies(p1));
120
121 p1 = new WildcardPermission("one");
122 p2 = new WildcardPermission("one:two,three,four");
123 p3 = new WildcardPermission("one:two,three,four:five:six:seven");
124 assertTrue(p1.implies(p2));
125 assertTrue(p1.implies(p3));
126 assertFalse(p2.implies(p1));
127 assertFalse(p3.implies(p1));
128 assertTrue(p2.implies(p3));
129 }
130
131
132
133
134 @Test
135 public void testListDifferentOrder() {
136
137 WildcardPermission p6 = new WildcardPermission("one,two:three,four");
138 WildcardPermission p6DiffOrder = new WildcardPermission("two,one:four,three");
139 assertTrue(p6.equals(p6DiffOrder));
140 }
141
142 @Test
143 public void testWildcards() {
144 WildcardPermission p1, p2, p3, p4, p5, p6, p7, p8, p9;
145
146 p1 = new WildcardPermission("*");
147 p2 = new WildcardPermission("one");
148 p3 = new WildcardPermission("one:two");
149 p4 = new WildcardPermission("one,two:three,four");
150 p5 = new WildcardPermission("one,two:three,four,five:six:seven,eight");
151 assertTrue(p1.implies(p2));
152 assertTrue(p1.implies(p3));
153 assertTrue(p1.implies(p4));
154 assertTrue(p1.implies(p5));
155
156 p1 = new WildcardPermission("newsletter:*");
157 p2 = new WildcardPermission("newsletter:read");
158 p3 = new WildcardPermission("newsletter:read,write");
159 p4 = new WildcardPermission("newsletter:*");
160 p5 = new WildcardPermission("newsletter:*:*");
161 p6 = new WildcardPermission("newsletter:*:read");
162 p7 = new WildcardPermission("newsletter:write:*");
163 p8 = new WildcardPermission("newsletter:read,write:*");
164 p9 = new WildcardPermission("newsletter");
165 assertTrue(p1.implies(p2));
166 assertTrue(p1.implies(p3));
167 assertTrue(p1.implies(p4));
168 assertTrue(p1.implies(p5));
169 assertTrue(p1.implies(p6));
170 assertTrue(p1.implies(p7));
171 assertTrue(p1.implies(p8));
172 assertTrue(p1.implies(p9));
173
174
175 p1 = new WildcardPermission("newsletter:*:*");
176 assertTrue(p1.implies(p2));
177 assertTrue(p1.implies(p3));
178 assertTrue(p1.implies(p4));
179 assertTrue(p1.implies(p5));
180 assertTrue(p1.implies(p6));
181 assertTrue(p1.implies(p7));
182 assertTrue(p1.implies(p8));
183 assertTrue(p1.implies(p9));
184
185 p1 = new WildcardPermission("newsletter:*:*:*");
186 assertTrue(p1.implies(p2));
187 assertTrue(p1.implies(p3));
188 assertTrue(p1.implies(p4));
189 assertTrue(p1.implies(p5));
190 assertTrue(p1.implies(p6));
191 assertTrue(p1.implies(p7));
192 assertTrue(p1.implies(p8));
193 assertTrue(p1.implies(p9));
194
195 p1 = new WildcardPermission("newsletter");
196 assertTrue(p1.implies(p2));
197 assertTrue(p1.implies(p3));
198 assertTrue(p1.implies(p4));
199 assertTrue(p1.implies(p5));
200 assertTrue(p1.implies(p6));
201 assertTrue(p1.implies(p7));
202 assertTrue(p1.implies(p8));
203 assertTrue(p1.implies(p9));
204
205 p1 = new WildcardPermission("newsletter:*:read");
206 p2 = new WildcardPermission("newsletter:123:read");
207 p3 = new WildcardPermission("newsletter:123,456:read,write");
208 p4 = new WildcardPermission("newsletter:read");
209 p5 = new WildcardPermission("newsletter:read,write");
210 p6 = new WildcardPermission("newsletter:123:read:write");
211 assertTrue(p1.implies(p2));
212 assertFalse(p1.implies(p3));
213 assertFalse(p1.implies(p4));
214 assertFalse(p1.implies(p5));
215 assertTrue(p1.implies(p6));
216
217 p1 = new WildcardPermission("newsletter:*:read:*");
218 assertTrue(p1.implies(p2));
219 assertTrue(p1.implies(p6));
220
221 }
222
223 @Test
224 public void testToString() {
225 WildcardPermission p1 = new WildcardPermission("*");
226 WildcardPermission p2 = new WildcardPermission("one");
227 WildcardPermission p3 = new WildcardPermission("one:two");
228 WildcardPermission p4 = new WildcardPermission("one,two:three,four");
229 WildcardPermission p5 = new WildcardPermission("one,two:three,four,five:six:seven,eight");
230
231 assertTrue("*".equals(p1.toString()));
232 assertTrue(p1.equals(new WildcardPermission(p1.toString())));
233 assertTrue("one".equals(p2.toString()));
234 assertTrue(p2.equals(new WildcardPermission(p2.toString())));
235 assertTrue("one:two".equals(p3.toString()));
236 assertTrue(p3.equals(new WildcardPermission(p3.toString())));
237 assertTrue("one,two:three,four".equals(p4.toString()));
238 assertTrue(p4.equals(new WildcardPermission(p4.toString())));
239 assertTrue("one,two:three,four,five:six:seven,eight".equals(p5.toString()));
240 assertTrue(p5.equals(new WildcardPermission(p5.toString())));
241 }
242
243 @Test
244 public void testWildcardLeftTermination() {
245 WildcardPermission p1, p2, p3, p4;
246
247 p1 = new WildcardPermission("one");
248 p2 = new WildcardPermission("one:*");
249 p3 = new WildcardPermission("one:*:*");
250 p4 = new WildcardPermission("one:read");
251
252 assertTrue(p1.implies(p2));
253 assertTrue(p1.implies(p3));
254 assertTrue(p1.implies(p4));
255
256 assertTrue(p2.implies(p1));
257 assertTrue(p2.implies(p3));
258 assertTrue(p2.implies(p4));
259
260 assertTrue(p3.implies(p1));
261 assertTrue(p3.implies(p2));
262 assertTrue(p3.implies(p4));
263
264 assertFalse(p4.implies(p1));
265 assertFalse(p4.implies(p2));
266 assertFalse(p4.implies(p3));
267 }
268 }