View Javadoc
1   /**
2    * Copyright 2014 Internet2
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *   http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  /*
17    Copyright (C) 2004-2007 University Corporation for Advanced Internet Development, Inc.
18    Copyright (C) 2004-2007 The University Of Chicago
19  
20    Licensed under the Apache License, Version 2.0 (the "License");
21    you may not use this file except in compliance with the License.
22    You may obtain a copy of the License at
23  
24      http://www.apache.org/licenses/LICENSE-2.0
25  
26    Unless required by applicable law or agreed to in writing, software
27    distributed under the License is distributed on an "AS IS" BASIS,
28    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29    See the License for the specific language governing permissions and
30    limitations under the License.
31  */
32  
33  package edu.internet2.middleware.grouper.filter;
34  import junit.framework.Assert;
35  import edu.internet2.middleware.grouper.Group;
36  import edu.internet2.middleware.grouper.GrouperSession;
37  import edu.internet2.middleware.grouper.Stem;
38  import edu.internet2.middleware.grouper.exception.QueryException;
39  import edu.internet2.middleware.grouper.filter.GrouperQuery;
40  import edu.internet2.middleware.grouper.helper.GrouperTest;
41  import edu.internet2.middleware.grouper.helper.R;
42  import edu.internet2.middleware.grouper.helper.SessionHelper;
43  import edu.internet2.middleware.grouper.helper.StemHelper;
44  import edu.internet2.middleware.grouper.privs.AccessPrivilege;
45  import edu.internet2.middleware.grouper.registry.RegistryReset;
46  import edu.internet2.middleware.subject.Subject;
47  
48  /**
49   * Test {@link GroupCurrentNameFilter}.
50   * <p />
51   * @author shilen
52   * @version $Id: TestGQGroupCurrentNameFilter.java,v 1.1 2009-03-27 23:28:53 shilen Exp $
53   */
54  public class TestGQGroupCurrentNameFilter extends GrouperTest {
55  
56    
57    /**
58     * @param name
59     */
60    public TestGQGroupCurrentNameFilter(String name) {
61      super(name);
62    }
63  
64    protected void setUp () {
65      super.setUp();
66      RegistryReset.internal_resetRegistryAndAddTestSubjects();
67      GrouperTest.initGroupsAndAttributes();
68  
69    }
70  
71    protected void tearDown () {
72      super.tearDown();
73    }
74  
75    // Tests
76  
77  
78    /**
79     * search on display name
80     */
81    public void testDisplayName() {
82      GrouperSession  s     = SessionHelper.getRootSession();
83      Stem            root  = StemHelper.findRootStem(s);
84      Stem            edu   = StemHelper.addChildStem(root, "edu", "education");
85      Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
86      Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
87      Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
88      Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
89  
90      try {
91        GrouperQuery gq = GrouperQuery.createQuery(
92          s, new GroupCurrentNameFilter("education:Internet2", root)
93        );
94        Assert.assertTrue("groups",  gq.getGroups().size()      == 1);
95        Assert.assertTrue("members", gq.getMembers().size()     == 0);
96        Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
97        Assert.assertTrue("stems",   gq.getStems().size()       == 0);
98      }
99      catch (QueryException eQ) {
100       Assert.fail("unable to query: " + eQ.getMessage());
101     }
102   } 
103   
104   /**
105    * search on display name
106    */
107   public void testDisplayNameScoped() {
108     GrouperSession  s     = SessionHelper.getRootSession();
109     Stem            root  = StemHelper.findRootStem(s);
110     Stem            edu   = StemHelper.addChildStem(root, "edu", "Education");
111     Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
112     Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
113     Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
114     Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
115 
116     try {
117       GrouperQuery gq = GrouperQuery.createQuery(
118         s, new GroupCurrentNameFilter("education:Internet2", edu)
119       );
120       Assert.assertTrue("groups",  gq.getGroups().size()      == 1);
121       Assert.assertTrue("members", gq.getMembers().size()     == 0);
122       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
123       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
124     }
125     catch (QueryException eQ) {
126       Assert.fail("unable to query: " + eQ.getMessage());
127     }
128     
129     try {
130       GrouperQuery gq = GrouperQuery.createQuery(
131         s, new GroupCurrentNameFilter("education:Internet2", com)
132       );
133       Assert.assertTrue("groups",  gq.getGroups().size()      == 0);
134       Assert.assertTrue("members", gq.getMembers().size()     == 0);
135       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
136       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
137     }
138     catch (QueryException eQ) {
139       Assert.fail("unable to query: " + eQ.getMessage());
140     }
141   } 
142 
143   /**
144    * Test search on name
145    */
146   public void testName() {
147     GrouperSession  s     = SessionHelper.getRootSession();
148     Stem            root  = StemHelper.findRootStem(s);
149     Stem            edu   = StemHelper.addChildStem(root, "edu", "education");
150     Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
151     Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
152     Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
153     Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
154 
155     try {
156       GrouperQuery gq = GrouperQuery.createQuery(
157         s, new GroupCurrentNameFilter("edu:i2", root)
158       );
159       Assert.assertTrue("groups",  gq.getGroups().size()      == 1);
160       Assert.assertTrue("members", gq.getMembers().size()     == 0);
161       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
162       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
163     }
164     catch (QueryException eQ) {
165       Assert.fail("unable to query: " + eQ.getMessage());
166     }
167     
168     try {
169       GrouperQuery gq = GrouperQuery.createQuery(
170         s, new GroupCurrentNameFilter("DU:I", root)
171       );
172       Assert.assertTrue("groups",  gq.getGroups().size()      == 1);
173       Assert.assertTrue("members", gq.getMembers().size()     == 0);
174       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
175       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
176     }
177     catch (QueryException eQ) {
178       Assert.fail("unable to query: " + eQ.getMessage());
179     }
180   } 
181   
182   /**
183    * Test search on name
184    */
185   public void testNameScoped() {
186     GrouperSession  s     = SessionHelper.getRootSession();
187     Stem            root  = StemHelper.findRootStem(s);
188     Stem            edu   = StemHelper.addChildStem(root, "edu", "education");
189     Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
190     Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
191     Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
192     Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
193 
194     try {
195       GrouperQuery gq = GrouperQuery.createQuery(
196         s, new GroupCurrentNameFilter("edu:i2", edu)
197       );
198       Assert.assertTrue("groups",  gq.getGroups().size()      == 1);
199       Assert.assertTrue("members", gq.getMembers().size()     == 0);
200       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
201       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
202     }
203     catch (QueryException eQ) {
204       Assert.fail("unable to query: " + eQ.getMessage());
205     }
206     
207     try {
208       GrouperQuery gq = GrouperQuery.createQuery(
209         s, new GroupCurrentNameFilter("DU:I", edu)
210       );
211       Assert.assertTrue("groups",  gq.getGroups().size()      == 1);
212       Assert.assertTrue("members", gq.getMembers().size()     == 0);
213       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
214       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
215     }
216     catch (QueryException eQ) {
217       Assert.fail("unable to query: " + eQ.getMessage());
218     }
219     
220     try {
221       GrouperQuery gq = GrouperQuery.createQuery(
222         s, new GroupCurrentNameFilter("edu:i2", com)
223       );
224       Assert.assertTrue("groups",  gq.getGroups().size()      == 0);
225       Assert.assertTrue("members", gq.getMembers().size()     == 0);
226       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
227       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
228     }
229     catch (QueryException eQ) {
230       Assert.fail("unable to query: " + eQ.getMessage());
231     }
232   } 
233   
234   /**
235    * Test search on alternate name.
236    * @throws Exception
237    */
238   public void testAlternateName() {
239     GrouperSession  s     = SessionHelper.getRootSession();
240     Stem            root  = StemHelper.findRootStem(s);
241     Stem            edu   = StemHelper.addChildStem(root, "edu", "education");
242     Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
243     Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
244     Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
245     Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
246 
247     i2.addAlternateName("education:internet2alt");
248     i2.store();
249     
250     try {
251       GrouperQuery gq = GrouperQuery.createQuery(
252         s, new GroupCurrentNameFilter("education:internet2alt", root)
253       );
254       Assert.assertTrue("groups",  gq.getGroups().size()      == 0);
255       Assert.assertTrue("members", gq.getMembers().size()     == 0);
256       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
257       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
258     }
259     catch (QueryException eQ) {
260       Assert.fail("unable to query: " + eQ.getMessage());
261     }
262   } 
263   
264   /**
265    * Test search on alternate name.
266    * @throws Exception
267    */
268   public void testAlternateNameScoped() {
269     GrouperSession  s     = SessionHelper.getRootSession();
270     Stem            root  = StemHelper.findRootStem(s);
271     Stem            edu   = StemHelper.addChildStem(root, "edu", "education");
272     Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
273     Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
274     Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
275     Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
276 
277     i2.addAlternateName("education:internet2alt");
278     i2.store();
279     
280     try {
281       GrouperQuery gq = GrouperQuery.createQuery(
282         s, new GroupCurrentNameFilter("education:internet2alt", edu)
283       );
284       Assert.assertTrue("groups",  gq.getGroups().size()      == 0);
285       Assert.assertTrue("members", gq.getMembers().size()     == 0);
286       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
287       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
288     }
289     catch (QueryException eQ) {
290       Assert.fail("unable to query: " + eQ.getMessage());
291     }
292   } 
293   
294   /**
295    * Should return nothing if cannot view group.
296    * @throws Exception 
297    */
298   public void testSecurity() throws Exception {
299     GrouperSession  s     = SessionHelper.getRootSession();
300     Stem            root  = StemHelper.findRootStem(s);
301     Stem            edu   = StemHelper.addChildStem(root, "edu", "education");
302     Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
303     Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
304     Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
305     Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
306     
307     i2.revokePriv(AccessPrivilege.READ);
308     i2.revokePriv(AccessPrivilege.VIEW);
309     
310     R r = R.populateRegistry(0, 0, 1);
311     Subject subjA = r.getSubject("a");
312     GrouperSession subjASession = GrouperSession.start(subjA);
313     
314     try {
315       GrouperQuery gq = GrouperQuery.createQuery(
316           subjASession, new GroupCurrentNameFilter("edu:i2", root)
317       );
318       Assert.assertTrue("groups",  gq.getGroups().size()      == 0);
319       Assert.assertTrue("members", gq.getMembers().size()     == 0);
320       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
321       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
322     }
323     catch (QueryException eQ) {
324       Assert.fail("unable to query: " + eQ.getMessage());
325     }
326   } 
327   
328   /**
329    * Should return nothing if cannot view group.
330    * @throws Exception 
331    */
332   public void testSecurityScoped() throws Exception {
333     GrouperSession  s     = SessionHelper.getRootSession();
334     Stem            root  = StemHelper.findRootStem(s);
335     Stem            edu   = StemHelper.addChildStem(root, "edu", "education");
336     Group           i2    = StemHelper.addChildGroup(edu, "i2", "internet2");
337     Group           uofc  = StemHelper.addChildGroup(edu, "uofc", "uchicago");
338     Stem            com   = StemHelper.addChildStem(root, "com", "commercial");
339     Group           dev   = StemHelper.addChildGroup(com, "devclue", "devclue");
340     
341     i2.revokePriv(AccessPrivilege.READ);
342     i2.revokePriv(AccessPrivilege.VIEW);
343     
344     R r = R.populateRegistry(0, 0, 1);
345     Subject subjA = r.getSubject("a");
346     GrouperSession subjASession = GrouperSession.start(subjA);
347     
348     try {
349       GrouperQuery gq = GrouperQuery.createQuery(
350           subjASession, new GroupCurrentNameFilter("edu:i2", edu)
351       );
352       Assert.assertTrue("groups",  gq.getGroups().size()      == 0);
353       Assert.assertTrue("members", gq.getMembers().size()     == 0);
354       Assert.assertTrue("mships",  gq.getMemberships().size() == 0);
355       Assert.assertTrue("stems",   gq.getStems().size()       == 0);
356     }
357     catch (QueryException eQ) {
358       Assert.fail("unable to query: " + eQ.getMessage());
359     }
360   } 
361 }