View Javadoc
1   /**
2    * @author mchyzer
3    * $Id$
4    */
5   package edu.internet2.middleware.grouper.hooks.examples;
6   
7   import edu.internet2.middleware.grouper.Group;
8   import edu.internet2.middleware.grouper.GroupSave;
9   import edu.internet2.middleware.grouper.GrouperSession;
10  import edu.internet2.middleware.grouper.Stem;
11  import edu.internet2.middleware.grouper.StemSave;
12  import edu.internet2.middleware.grouper.cfg.GrouperConfig;
13  import edu.internet2.middleware.grouper.helper.GrouperTest;
14  import edu.internet2.middleware.grouper.helper.SubjectTestHelper;
15  import edu.internet2.middleware.grouper.hooks.logic.GrouperHookType;
16  import edu.internet2.middleware.grouper.hooks.logic.HookVeto;
17  import edu.internet2.middleware.grouper.privs.NamingPrivilege;
18  import edu.internet2.middleware.grouper.registry.RegistryReset;
19  
20  
21  /**
22   *
23   */
24  public class GroupUniqueExtensionHookTest extends GrouperTest {
25  
26    /**
27     * 
28     * @param args
29     */
30    public static void main(String[] args) {
31      
32    }
33    
34    /**
35     * 
36     * @param name
37     */
38    public GroupUniqueExtensionHookTest(String name) {
39      super(name);
40    }
41  
42    /**
43     * 
44     */
45    public GroupUniqueExtensionHookTest() {
46      super();
47    }
48  
49  
50    /**
51     * 
52     */
53    private void overrideHooksAdd() {
54      //this is the test hook imple
55      GrouperHookType.addHookOverride(GrouperHookType.GROUP.getPropertyFileKey(), 
56          GroupUniqueExtensionHook.class);
57    }
58  
59    /**
60     * 
61     */
62    private void overrideHooksRemove() {
63      //dont have the test hook imple
64      GrouperHookType.addHookOverride(GrouperHookType.GROUP.getPropertyFileKey(), (Class<?>)null);
65    }
66  
67    /**
68     * 
69     * @see edu.internet2.middleware.grouper.helper.GrouperTest#setUp()
70     */
71    protected void setUp () {
72      try {
73        overrideHooksAdd();
74        RegistryReset.internal_resetRegistryAndAddTestSubjects();
75        GrouperTest.initGroupsAndAttributes();
76    
77      } catch (Exception e) {
78        throw new RuntimeException(e);
79      }
80    }
81  
82    /**
83     * @see edu.internet2.middleware.grouper.helper.GrouperTest#tearDown()
84     */
85    @Override
86    protected void tearDown() {
87      overrideHooksRemove();
88    }
89  
90    /**
91     * test a built in attribute value
92     * @throws Exception
93     */
94    public void testHookCaseSensitive() throws Exception {
95      
96      GrouperSession grouperSession = GrouperSession.startRootSession();
97      
98      Stem testStem = new StemSave(grouperSession).assignName("test").save();
99      Stem testStem2 = new StemSave(grouperSession).assignName("test2").save();
100     
101     testStem.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.CREATE);
102     testStem.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.STEM);
103 
104     testStem2.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.CREATE);
105     testStem2.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.STEM);
106 
107     GrouperSession.stopQuietly(grouperSession);
108 
109     grouperSession = GrouperSession.start(SubjectTestHelper.SUBJ0);
110     
111     Group group = new GroupSave(grouperSession)
112         .assignName("test:someGroupName").save();
113 
114     try {
115       //alternate name
116       new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
117         .assignName("test2:someGroupName").save();
118       
119     } catch (HookVeto hv) {
120       //this is a success, it is supposed to veto  
121       assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
122     }
123 
124     try {
125       //name
126       group = new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
127         .assignName("test2:someGroupNamE").save();
128       
129     } catch (HookVeto hv) {
130       //this is a success, it is supposed to veto  
131       assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
132     }
133 
134     group = new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
135         .assignName("test2:someGroupNamE2").save();
136     
137     try {
138       //rename to alternate name
139       group.setExtension("someGroupNaME");
140       group.store();
141       
142     } catch (HookVeto hv) {
143       //this is a success, it is supposed to veto  
144       assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
145     }
146 
147   }
148   
149   /**
150    * test a built in attribute value
151    * @throws Exception
152    */
153   public void testHookCaseInsensitive() throws Exception {
154     
155     GrouperConfig.retrieveConfig().propertiesOverrideMap().put("hook.group.unique.extension.caseInsensitive", "true");
156 
157     GrouperSession grouperSession = GrouperSession.startRootSession();
158 
159     Stem testStem = new StemSave(grouperSession).assignName("test").save();
160     Stem testStem2 = new StemSave(grouperSession).assignName("test2").save();
161 
162     testStem.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.CREATE);
163     testStem.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.STEM);
164 
165     testStem2.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.CREATE);
166     testStem2.grantPriv(SubjectTestHelper.SUBJ0, NamingPrivilege.STEM);
167 
168     GrouperSession.stopQuietly(grouperSession);
169 
170     grouperSession = GrouperSession.start(SubjectTestHelper.SUBJ0);
171 
172     Group group = new GroupSave(grouperSession)
173         .assignName("test:someGroupName").save();
174 
175     try {
176       //alternate name
177       new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
178         .assignName("test2:someGroupName").save();
179       
180     } catch (HookVeto hv) {
181       //this is a success, it is supposed to veto  
182       assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
183     }
184 
185     //name
186     group = new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
187       .assignName("test2:someGroupNamE2").save();
188 
189     try {
190       //rename to alternate name
191       group.setExtension("someGroUpName");
192       group.store();
193       
194     } catch (HookVeto hv) {
195       //this is a success, it is supposed to veto  
196       assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
197     }
198 
199   }
200 
201   /**
202    * @throws Exception
203    */
204   public void testMove() throws Exception {
205     
206     GrouperSession grouperSession = GrouperSession.startRootSession();
207     
208     Stem testStem = new StemSave(grouperSession).assignName("test").save();
209     Stem testStem2 = new StemSave(grouperSession).assignName("test2").save();
210     new StemSave(grouperSession).assignName("test3").save();
211 
212     Group group = new GroupSave(grouperSession).assignName("test:someGroupName").save();
213     new GroupSave(grouperSession).assignName("test2:someGroupName2").save();
214     Group group3 = new GroupSave(grouperSession).assignName("test3:someGroupName3").save();
215 
216     group.move(testStem2);
217     group.move(testStem);
218     
219     group3.setExtension("someGroupName4");
220     group3.store();
221     
222     try {
223       group3.setExtension("someGroupName");
224       group3.store();
225       fail("No error??");
226     } catch (HookVeto hv) {
227       //this is a success, it is supposed to veto  
228       assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
229     }
230   }
231 }