1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 package edu.internet2.middleware.grouper.privs;
34 import java.util.Iterator;
35 import java.util.Set;
36
37 import junit.framework.Assert;
38 import junit.textui.TestRunner;
39
40 import org.apache.commons.logging.Log;
41
42 import edu.internet2.middleware.grouper.Group;
43 import edu.internet2.middleware.grouper.GrouperSession;
44 import edu.internet2.middleware.grouper.Member;
45 import edu.internet2.middleware.grouper.Stem;
46 import edu.internet2.middleware.grouper.SubjectFinder;
47 import edu.internet2.middleware.grouper.exception.GrouperSessionException;
48 import edu.internet2.middleware.grouper.helper.GroupHelper;
49 import edu.internet2.middleware.grouper.helper.GrouperTest;
50 import edu.internet2.middleware.grouper.helper.MemberHelper;
51 import edu.internet2.middleware.grouper.helper.MembershipTestHelper;
52 import edu.internet2.middleware.grouper.helper.PrivHelper;
53 import edu.internet2.middleware.grouper.helper.SessionHelper;
54 import edu.internet2.middleware.grouper.helper.StemHelper;
55 import edu.internet2.middleware.grouper.helper.SubjectTestHelper;
56 import edu.internet2.middleware.grouper.misc.GrouperSessionHandler;
57 import edu.internet2.middleware.grouper.registry.RegistryReset;
58 import edu.internet2.middleware.grouper.util.GrouperUtil;
59 import edu.internet2.middleware.subject.Subject;
60
61
62
63
64
65
66
67 public class TestPrivVIEW extends GrouperTest {
68
69
70 private static final Log LOG = GrouperUtil.getLog(TestPrivVIEW.class);
71
72
73 private static Stem edu;
74 private static Group i2;
75 private static Member m;
76 private static GrouperSession nrs;
77 private static Stem root;
78 private static GrouperSession s;
79 private static Subject subj0;
80 private static Subject subj1;
81 private static Group uofc;
82
83
84 public TestPrivVIEW(String name) {
85 super(name);
86 }
87
88 protected void setUp () {
89 LOG.debug("setUp");
90 super.setUp();
91 RegistryReset.internal_resetRegistryAndAddTestSubjects();
92 GrouperTest.initGroupsAndAttributes();
93
94 nrs = SessionHelper.getSession(SubjectTestHelper.SUBJ0_ID);
95 s = SessionHelper.getRootSession();
96 root = StemHelper.findRootStem(s);
97 edu = StemHelper.addChildStem(root, "edu", "educational");
98 i2 = StemHelper.addChildGroup(edu, "i2", "internet2");
99 uofc = StemHelper.addChildGroup(edu, "uofc", "uchicago");
100 subj0 = SubjectTestHelper.SUBJ0;
101 subj1 = SubjectTestHelper.SUBJ1;
102 m = MemberHelper.getMemberBySubject(nrs, subj1);
103 }
104
105 protected void tearDown () {
106 LOG.debug("tearDown");
107 super.tearDown();
108 }
109
110
111
112
113
114
115 public static void main(String[] args) throws Exception {
116
117 TestRunner.run(TestPrivVIEW.class);
118 }
119
120
121
122 public void testFindGroupWithoutADMIN() {
123 LOG.info("testFindGroupWithoutADMIN");
124
125 GroupHelper.findByName(nrs, i2.getName());
126 GroupHelper.findByUuid(nrs, i2.getUuid());
127 }
128
129 public void testFindGroupWithADMIN() {
130 LOG.info("testFindGroupWithADMIN");
131 PrivHelper.grantPriv(s, i2, nrs.getSubject(), AccessPrivilege.ADMIN);
132 GroupHelper.findByName(nrs, i2.getName());
133 GroupHelper.findByUuid(nrs, i2.getUuid());
134 }
135
136 public void testFindGroupWithoutOPTIN() {
137 LOG.info("testFindGroupWithoutOPTIN");
138
139 GroupHelper.findByName(nrs, i2.getName());
140 GroupHelper.findByUuid(nrs, i2.getUuid());
141 }
142
143 public void testFindGroupWithOPTIN() {
144 LOG.info("testFindGroupWithOPTIN");
145 PrivHelper.grantPriv(s, i2, nrs.getSubject(), AccessPrivilege.OPTIN);
146 GroupHelper.findByName(nrs, i2.getName());
147 GroupHelper.findByUuid(nrs, i2.getUuid());
148 }
149
150 public void testFindGroupWithAllOPTIN() {
151 LOG.info("testFindGroupWithAllOPTIN");
152 PrivHelper.grantPriv(s, i2, SubjectFinder.findAllSubject(), AccessPrivilege.OPTIN);
153 GroupHelper.findByName(nrs, i2.getName());
154 GroupHelper.findByUuid(nrs, i2.getUuid());
155 }
156
157 public void testFindGroupWithoutREAD() {
158 LOG.info("testFindGroupWithoutREAD");
159
160 GroupHelper.findByName(nrs, i2.getName());
161 GroupHelper.findByUuid(nrs, i2.getUuid());
162 }
163
164 public void testFindGroupWithREAD() {
165 LOG.info("testFindGroupWithREAD");
166 PrivHelper.grantPriv(s, i2, nrs.getSubject(), AccessPrivilege.READ);
167 GroupHelper.findByName(nrs, i2.getName());
168 GroupHelper.findByUuid(nrs, i2.getUuid());
169 }
170
171 public void testFindGroupWithAllREAD() {
172 LOG.info("testFindGroupWithAllREAD");
173
174
175 GroupHelper.findByName(nrs, i2.getName());
176 GroupHelper.findByUuid(nrs, i2.getUuid());
177 }
178
179 public void testFindGroupWithoutUPDATE() {
180 LOG.info("testFindGroupWithoutUPDATE");
181
182 GroupHelper.findByName(nrs, i2.getName());
183 GroupHelper.findByUuid(nrs, i2.getUuid());
184 }
185
186 public void testFindGroupWithUPDATE() {
187 LOG.info("testFindGroupWithUPDATE");
188 PrivHelper.grantPriv(s, i2, nrs.getSubject(), AccessPrivilege.UPDATE);
189 GroupHelper.findByName(nrs, i2.getName());
190 GroupHelper.findByUuid(nrs, i2.getUuid());
191 }
192
193 public void testFindChildGroupWithoutVIEW() {
194 LOG.info("testFindChildGroupWithoutVIEW");
195
196 PrivHelper.revokePriv(s, i2, SubjectFinder.findAllSubject(), AccessPrivilege.READ);
197 PrivHelper.revokePriv(s, i2, SubjectFinder.findAllSubject(), AccessPrivilege.VIEW);
198 PrivHelper.revokePriv(s, uofc, SubjectFinder.findAllSubject(), AccessPrivilege.READ);
199 PrivHelper.revokePriv(s, uofc, SubjectFinder.findAllSubject(), AccessPrivilege.VIEW);
200
201 final Stem parent = StemHelper.findByName(nrs, edu.getName());
202 GrouperSession.callbackGrouperSession(nrs, new GrouperSessionHandler() {
203
204 public Object callback(GrouperSession grouperSession)
205 throws GrouperSessionException {
206 Set children = parent.getChildGroups();
207 Assert.assertTrue(
208 "children == " + children.size() + " (exp 0)",
209 children.size() == 0
210 );
211 return null;
212 }
213
214 });
215 }
216
217 public void testFindChildGroupWithVIEW() {
218 LOG.info("testFindChildGroupWithVIEW");
219
220 Stem parent = StemHelper.findByName(nrs, edu.getName());
221 Set children = parent.getChildGroups();
222 Assert.assertTrue(
223 "children == " + children.size() + " (exp 2)",
224 children.size() == 2
225 );
226 Iterator iter = children.iterator();
227 while (iter.hasNext()) {
228 Group child = (Group) iter.next();
229 if (child.getName().equals(i2.getName())) {
230 Assert.assertTrue("i2", true);
231 }
232 else if (child.getName().equals(uofc.getName())) {
233 Assert.assertTrue("uofc", true);
234 }
235 else {
236 Assert.fail("unknown child: " + child.getName());
237 }
238 }
239 }
240
241 public void testFindChildGroupWithAllVIEW() {
242 LOG.info("testFindChildGroupWithAllVIEW");
243
244 Stem parent = StemHelper.findByName(nrs, edu.getName());
245 Set children = parent.getChildGroups();
246 Assert.assertTrue(
247 "children == " + children.size() + " (exp 2)",
248 children.size() == 2
249 );
250 Iterator iter = children.iterator();
251 while (iter.hasNext()) {
252 Group child = (Group) iter.next();
253 if (child.getName().equals(i2.getName())) {
254 Assert.assertTrue("i2", true);
255 Assert.assertTrue("i2 parent", child.getParentStem().equals(parent));
256 }
257 else if (child.getName().equals(uofc.getName())) {
258 Assert.assertTrue("uofc", true);
259 Assert.assertTrue("uofc parent", child.getParentStem().equals(parent));
260 }
261 else {
262 Assert.fail("unknown child: " + child.getName());
263 }
264 }
265 }
266
267 public void testFindGroupWithoutVIEW() {
268 LOG.info("testFindGroupWithoutVIEW");
269
270 GroupHelper.findByName(nrs, i2.getName());
271 GroupHelper.findByUuid(nrs, i2.getUuid());
272 }
273
274 public void testFindGroupWithVIEW() {
275 LOG.info("testFindGroupWithVIEW");
276 PrivHelper.grantPriv(s, i2, nrs.getSubject(), AccessPrivilege.VIEW);
277 GroupHelper.findByName(nrs, i2.getName());
278 GroupHelper.findByUuid(nrs, i2.getUuid());
279 }
280
281 public void testFindGroupWithAllVIEW() {
282 LOG.info("testFindGroupWithAllVIEW");
283
284
285 GroupHelper.findByName(nrs, i2.getName());
286 GroupHelper.findByUuid(nrs, i2.getUuid());
287 }
288
289 public void testAddGroupAsMemberWithADMIN() {
290 LOG.info("testAddGroupAsMemberWithADMIN");
291 PrivHelper.grantPriv(s, uofc, subj0, AccessPrivilege.ADMIN);
292 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
293 GroupHelper.addMember(uofc, subj1, m);
294 Group a = GroupHelper.findByName(nrs, uofc.getName());
295 Group b = GroupHelper.findByName(nrs, i2.getName());
296
297 GroupHelper.addMember(b, a);
298 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
299 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
300 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
301 }
302
303 public void testAddGroupAsMemberWithOPTIN() {
304 LOG.info("testAddGroupAsMemberWithOPTIN");
305 PrivHelper.grantPriv(s, uofc, subj0, AccessPrivilege.OPTIN);
306 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
307 GroupHelper.addMember(uofc, subj1, m);
308 Group a = GroupHelper.findByName(nrs, uofc.getName());
309 Group b = GroupHelper.findByName(nrs, i2.getName());
310
311 GroupHelper.addMember(b, a);
312 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
313 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
314 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
315 }
316
317 public void testAddGroupAsMemberWithAllOPTIN() {
318 LOG.info("testAddGroupAsMemberWithAllOPTIN");
319 PrivHelper.grantPriv(s, uofc, SubjectFinder.findAllSubject(), AccessPrivilege.OPTIN);
320 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
321 GroupHelper.addMember(uofc, subj1, m);
322 Group a = GroupHelper.findByName(nrs, uofc.getName());
323 Group b = GroupHelper.findByName(nrs, i2.getName());
324
325 GroupHelper.addMember(b, a);
326 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
327 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
328 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
329 }
330
331 public void testAddGroupAsMemberWithOPTOUT() {
332 LOG.info("testAddGroupAsMemberWithOPTOUT");
333 PrivHelper.grantPriv(s, uofc, subj0, AccessPrivilege.OPTOUT);
334 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
335 GroupHelper.addMember(uofc, subj1, m);
336 Group a = GroupHelper.findByName(nrs, uofc.getName());
337 Group b = GroupHelper.findByName(nrs, i2.getName());
338
339 GroupHelper.addMember(b, a);
340 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
341 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
342 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
343 }
344
345 public void testAddGroupAsMemberWithAllOPTOUT() {
346 LOG.info("testAddGroupAsMemberWithAllOPTOUT");
347 PrivHelper.grantPriv(s, uofc, SubjectFinder.findAllSubject(), AccessPrivilege.OPTOUT);
348 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
349 GroupHelper.addMember(uofc, subj1, m);
350 Group a = GroupHelper.findByName(nrs, uofc.getName());
351 Group b = GroupHelper.findByName(nrs, i2.getName());
352
353 GroupHelper.addMember(b, a);
354 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
355 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
356 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
357 }
358
359 public void testAddGroupAsMemberWithREAD() {
360 LOG.info("testAddGroupAsMemberWithREAD");
361 PrivHelper.grantPriv(s, uofc, subj0, AccessPrivilege.READ);
362 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
363 GroupHelper.addMember(uofc, subj1, m);
364 Group a = GroupHelper.findByName(nrs, uofc.getName());
365 Group b = GroupHelper.findByName(nrs, i2.getName());
366
367 GroupHelper.addMember(b, a);
368 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
369 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
370 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
371 }
372
373 public void testAddGroupAsMemberWithAllREAD() {
374 LOG.info("testAddGroupAsMemberWithAllREAD");
375
376
377 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
378 GroupHelper.addMember(uofc, subj1, m);
379 Group a = GroupHelper.findByName(nrs, uofc.getName());
380 Group b = GroupHelper.findByName(nrs, i2.getName());
381
382 GroupHelper.addMember(b, a);
383 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
384 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
385 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
386 }
387
388 public void testAddGroupAsMemberWithUPDATE() {
389 LOG.info("testAddGroupAsMemberWithUPDATE");
390 PrivHelper.grantPriv(s, uofc, subj0, AccessPrivilege.UPDATE);
391 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
392 GroupHelper.addMember(uofc, subj1, m);
393 Group a = GroupHelper.findByName(nrs, uofc.getName());
394 Group b = GroupHelper.findByName(nrs, i2.getName());
395
396 GroupHelper.addMember(b, a);
397 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
398 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
399 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
400 }
401
402 public void testAddGroupAsMemberWithVIEW() {
403 LOG.info("testAddGroupAsMemberWithVIEW");
404 PrivHelper.grantPriv(s, uofc, subj0, AccessPrivilege.VIEW);
405 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
406 GroupHelper.addMember(uofc, subj1, m);
407 Group a = GroupHelper.findByName(nrs, uofc.getName());
408 Group b = GroupHelper.findByName(nrs, i2.getName());
409
410 GroupHelper.addMember(b, a);
411 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
412 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
413 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
414 }
415
416 public void testAddGroupAsMemberWithAllVIEW() {
417 LOG.info("testAddGroupAsMemberWithAllVIEW");
418
419
420 PrivHelper.grantPriv(s, i2, subj0, AccessPrivilege.ADMIN);
421
422 GroupHelper.addMember(uofc, subj1, m);
423 Group a = GroupHelper.findByName(nrs, uofc.getName());
424 Group b = GroupHelper.findByName(nrs, i2.getName());
425
426 GroupHelper.addMember(b, a);
427 MembershipTestHelper.testNumMship(b, Group.getDefaultList(), 2, 1, 1);
428 MembershipTestHelper.testImmMship(nrs, b, a, Group.getDefaultList());
429 MembershipTestHelper.testEffMship(nrs, b, subj1, Group.getDefaultList(), a, 1);
430 }
431
432 }
433