1
2
3
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
29
30 public static void main(String[] args) {
31
32 }
33
34
35
36
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
55 GrouperHookType.addHookOverride(GrouperHookType.GROUP.getPropertyFileKey(),
56 GroupUniqueExtensionHook.class);
57 }
58
59
60
61
62 private void overrideHooksRemove() {
63
64 GrouperHookType.addHookOverride(GrouperHookType.GROUP.getPropertyFileKey(), (Class<?>)null);
65 }
66
67
68
69
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
84
85 @Override
86 protected void tearDown() {
87 overrideHooksRemove();
88 }
89
90
91
92
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
116 new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
117 .assignName("test2:someGroupName").save();
118
119 } catch (HookVeto hv) {
120
121 assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
122 }
123
124 try {
125
126 group = new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
127 .assignName("test2:someGroupNamE").save();
128
129 } catch (HookVeto hv) {
130
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
139 group.setExtension("someGroupNaME");
140 group.store();
141
142 } catch (HookVeto hv) {
143
144 assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
145 }
146
147 }
148
149
150
151
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
177 new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
178 .assignName("test2:someGroupName").save();
179
180 } catch (HookVeto hv) {
181
182 assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
183 }
184
185
186 group = new GroupSave(grouperSession).assignCreateParentStemsIfNotExist(true)
187 .assignName("test2:someGroupNamE2").save();
188
189 try {
190
191 group.setExtension("someGroUpName");
192 group.store();
193
194 } catch (HookVeto hv) {
195
196 assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
197 }
198
199 }
200
201
202
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
228 assertEquals(hv.getReasonKey(), GroupUniqueExtensionHook.VETO_GROUP_UNIQUE_EXTENSION);
229 }
230 }
231 }