View Javadoc

1   /**
2    * Copyright 2005-2011 The Kuali Foundation
3    *
4    * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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  package org.kuali.rice.krad.document;
17  
18  import org.junit.Ignore;
19  import org.junit.Test;
20  import org.kuali.test.KRADTestCase;
21  
22  @Ignore
23  public class DocumentAuthorizerBaseTest extends KRADTestCase {
24  	// TODO rewrite this test
25  //    private static final Logger LOG = Logger.getLogger(DocumentAuthorizerBaseTest.class);
26  //
27  //    private static final String SUPERVISOR_USER = "ABNEY";
28  //    private static final String SUPERVISOR_UNIVERSAL = "2237202707";
29  //    private static final String NONSUPER_USER = "BARTH";
30  //    private static final String NONSUPER_UNIVERSAL = "5998202207";
31  //    private static final String NONSUPER_2_USER = "COOTER";
32  //    private static final String NONSUPER_2_UNIVERSAL = "598746310";
33  //
34  //    private DocumentAuthorizer documentAuthorizer;
35  //    private PessimisticLockService pessimisticLock;
36  //
37  //    @Override
38  //    public void setUp() throws Exception {
39  //        super.setUp();
40  //        documentAuthorizer = new DocumentAuthorizerBase();
41  //        pessimisticLock = KRADServiceLocatorInternal.getPessimisticLockService();
42  //    }
43  //
44  //    @Override
45  //    public void tearDown() throws Exception {
46  //        try {
47  //            new ClearDatabaseLifecycle(Arrays.asList(new String[]{"KNS_PESSIMISTIC_LOCK_T"}), null).start();
48  //        } catch (Exception e) {
49  //            LOG.warn("Caught exception trying to clear Pessimistic Lock table");
50  //        }
51  //        super.tearDown();
52  //    }
53  //
54  //    // following is the Supervisor & Initiator grid
55  //
56  //    // ## Supervisor? UserIsInitiator? ApprovalRequested? canSupervise Result
57  //    // -----------------------------------------------------------------------------------
58  //    // A true true true true
59  //    //
60  //    // B true true false false
61  //    //
62  //    // C true false true true
63  //    //
64  //    // D true false false true
65  //    //
66  //    // E false * * false
67  //    //
68  
69      /* This test can no longer use mock objects because the isSupervisor() method is no longer on the Person object.
70       * To check for supervisor status you know must to through the group service and check membership in the supervisor group.
71       */
72  	@Test
73      public void testCanSuperviseAsInitiatorA() {
74  //
75  //        DocumentActionFlags flags;
76  //        Document document;
77  //
78  //        // scenario A
79  //        //document = new MockDocument(getSuperUser(), true);
80  //        //flags = documentAuthorizer.getDocumentActionFlags(document, getSuperUser());
81  //        //assertTrue(flags.getCanSupervise());
82  //
83  //        // scenario B
84  //        document = new MockDocument(getSuperUser(), false);
85  //        flags = documentAuthorizer.getDocumentActionFlags(document, getSuperUser());
86  //        assertFalse(flags.getCanSupervise());
87  //
88  //        // scenario C
89  //        document = new MockDocument(getNonSuperUser(), true);
90  //        flags = documentAuthorizer.getDocumentActionFlags(document, getSuperUser());
91  //        assertTrue(flags.getCanSupervise());
92  //
93  //        // scenario D
94  //        document = new MockDocument(getNonSuperUser(), false);
95  //        flags = documentAuthorizer.getDocumentActionFlags(document, getSuperUser());
96  //        assertTrue(flags.getCanSupervise());
97  //
98      }
99  
100 //
101 //    private void verifyEditModeExists(Map editMode, String editModeToTest, String expectedValue) {
102 //        assertNotNull("Edit mode map should have a valid value for " + editModeToTest, editMode.get(editModeToTest));
103 //        assertEquals("Edit mode map should contain entry with key '" + editModeToTest + "' and value '" + expectedValue + "'", expectedValue, editMode.get(editModeToTest));
104 //    }
105 //
106 //    private void verifyEditModeDoesNotExist(Map editMode, String editModeToTest) {
107 //        assertNull("Edit mode map should not have an entry for " + editModeToTest, editMode.get(editModeToTest));
108 //    }
109 //
110 //    protected Person getWorkflowPessimisticLockOwnerUser() {
111 //        Person person = KimImplServiceLocator.getPersonService().getPersonByPrincipalName(KNSConstants.SYSTEM_USER);
112 //        if (person == null) {
113 //            throw new RuntimeException("Cannot find user with network id '" + KNSConstants.SYSTEM_USER);
114 //        }
115 //        return person;
116 //    }
117 //
118 //    /**
119 //     * This method tests the Pessimistic locking mechanism when no custom lock descriptors are being used by the document in
120 //     * the default manner (locks are unique to user and document)
121 //     *
122 //     * @throws Exception
123 //     */
124     @Test
125     public void testEstablishLocks_DefaultDocumentAuthorizerBase() throws Exception {
126 //        PessimisticLockService lockService = KRADServiceLocatorInternal.getPessimisticLockService();
127 //
128 //        // test no lock creation needed
129 //        Document document = new MockDocument(getNonSuperUser(), false);
130 //        int originalExpectedLockCount = 0;
131 //        // no lock should be created
132 //        int expectedLockCountIncrease = 0;
133 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
134 //        Map oldEditMode = getEditMode_ReadOnly();
135 //        String testString = "dummyString";
136 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
137 //        Map newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
138 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
139 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
140 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY);
141 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
142 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
143 //
144 //        // test valid lock creation where no user has any locks and edit modes returned are same as passed in
145 //        document = new MockDocument(getNonSuperUser(), false);
146 //        originalExpectedLockCount = 0;
147 //        // one lock should be created
148 //        expectedLockCountIncrease = 1;
149 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
150 //        oldEditMode = getEditMode_FullEntry();
151 //        testString = "dummyString";
152 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
153 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
154 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
155 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
156 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
157 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY);
158 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
159 //
160 //        // test invalid lock status (2 locks by 2 different users) throws exception
161 //        document = new MockDocument(getNonSuperUser(), false);
162 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), getNonSuperUser()));
163 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), getSuperUser()));
164 //        try {
165 //            this.pessimisticLock.establishLocks(document, getEditMode_FullEntry(), getNonSuperUser());
166 //            fail("Document authorizer should have thrown exception of type PessimisticLockingException");
167 //        } catch (PessimisticLockingException e) {
168 //            // expected result
169 //        } catch (Exception e) {
170 //            fail("Document authorizer threw an exception but it was not of type PessimisticLockingException... it was a " + e.getClass().getName());
171 //        }
172 //
173 //        // test valid lock status (2 locks by 2 different users with one user being workflow lock user) does not throw
174 //        // exception
175 //        document = new MockDocument(getNonSuperUser(), false);
176 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), getNonSuperUser()));
177 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), getWorkflowPessimisticLockOwnerUser()));
178 //        try {
179 //            this.pessimisticLock.establishLocks(document, getEditMode_FullEntry(), getNonSuperUser());
180 //        } catch (Exception e) {
181 //            fail("Document authorizer should not have thrown an exception but did with type '" + e.getClass().getName() + "' and message: " + e.getMessage());
182 //        }
183 //
184 //        // test other user already has lock should return editMode of ReadOnly
185 //        document = new MockDocument(getNonSuperUser(), false);
186 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), getSuperUser()));
187 //        originalExpectedLockCount = 1;
188 //        // one lock should be created
189 //        expectedLockCountIncrease = 0;
190 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
191 //        oldEditMode = getEditMode_FullEntry();
192 //        testString = "dummyString";
193 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
194 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
195 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
196 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
197 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY);
198 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
199 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
200 //
201 //        // test current user already has lock and that edit modes returned are same as passed in
202 //        document = new MockDocument(getNonSuperUser(), false);
203 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), getNonSuperUser()));
204 //        originalExpectedLockCount = 1;
205 //        // one lock should be created
206 //        expectedLockCountIncrease = 0;
207 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
208 //        oldEditMode = getEditMode_FullEntry();
209 //        testString = "dummyString";
210 //        oldEditMode.put(AuthorizationConstants.EditMode.VIEW_ONLY, testString);
211 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
212 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
213 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
214 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE);
215 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
216 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, testString);
217 //
218     }
219 //
220 //    /**
221 //     * This method tests the Pessimistic locking mechanism when custom lock descriptors are being used by the document in the
222 //     * default manner (locks are unique to user, document, and lock descriptor)
223 //     *
224 //     * @throws Exception
225 //     */
226     @Test
227     public void testEstablishLocks_CustomDocumentAuthorizerBase() throws Exception {
228 //        GlobalVariables.setUserSession(new UserSession("quickstart"));
229 //        PessimisticLockService lockService = KRADServiceLocatorInternal.getPessimisticLockService();
230 //        DocumentAuthorizer documentAuthorizer = new TestDocumentAuthorizerBase();
231 //        String lockDescriptor1 = "test the first lock";
232 //        String lockDescriptor2 = "this is the second lock";
233 //        String lockDescriptor3 = "booyah locks";
234 //
235 //        // test no lock creation needed
236 //        Document document = new MockDocument(getNonSuperUser(), false);
237 //        String expectedLockDescriptor = lockDescriptor1;
238 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
239 //        int originalExpectedLockCount = 0;
240 //        // no lock should be created
241 //        int expectedLockCountIncrease = 0;
242 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
243 //        Map oldEditMode = getEditMode_ReadOnly();
244 //        String testString = "dummyString";
245 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
246 //        Map newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
247 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
248 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
249 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY);
250 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
251 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
252 //
253 //        // test lock descriptors nullify PessimisticLockingException throwing
254 //        document = new MockDocument(getNonSuperUser(), false);
255 //        expectedLockDescriptor = lockDescriptor3;
256 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
257 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getNonSuperUser()));
258 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor2, getSuperUser()));
259 //        try {
260 //            this.pessimisticLock.establishLocks(document, getEditMode_FullEntry(), getNonSuperUser());
261 //        } catch (Exception e) {
262 //            fail("Document authorizer should not have thrown an exception but did with type '" + e.getClass().getName() + "' and message: " + e.getMessage());
263 //        }
264 //
265 //        // test valid lock status (2 locks by 2 different users with one user being workflow lock user) does not throw
266 //        // exception
267 //        document = new MockDocument(getNonSuperUser(), false);
268 //        expectedLockDescriptor = lockDescriptor3;
269 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
270 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getNonSuperUser()));
271 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor2, getWorkflowPessimisticLockOwnerUser()));
272 //        try {
273 //            //documentAuthorizer.establishLocks(document, getEditMode_FullEntry(), getNonSuperUser());
274 //            this.pessimisticLock.establishLocks(document,getEditMode_FullEntry(), getNonSuperUser());
275 //        } catch (Exception e) {
276 //            fail("Document authorizer should not have thrown an exception but did with type '" + e.getClass().getName() + "' and message: " + e.getMessage());
277 //        }
278 //
279 //        // test valid lock creation with descriptor where no user has any locks and edit modes returned are same as passed in
280 //        document = new MockDocument(getNonSuperUser(), false);
281 //        expectedLockDescriptor = lockDescriptor3;
282 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
283 //        originalExpectedLockCount = 0;
284 //        // one lock should be created
285 //        expectedLockCountIncrease = 1;
286 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
287 //        oldEditMode = getEditMode_FullEntry();
288 //        testString = "dummyString";
289 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
290 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
291 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
292 //        assertEquals("Lock descriptor from new lock is incorrect", expectedLockDescriptor, document.getPessimisticLocks().get(0).getLockDescriptor());
293 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
294 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
295 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY);
296 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
297 //
298 //        // test other user already has lock with same descriptor should return editMode of ReadOnly
299 //        document = new MockDocument(getNonSuperUser(), false);
300 //        expectedLockDescriptor = lockDescriptor1;
301 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
302 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getSuperUser()));
303 //        originalExpectedLockCount = 1;
304 //        // no lock should be created
305 //        expectedLockCountIncrease = 0;
306 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
307 //        oldEditMode = getEditMode_FullEntry();
308 //        testString = "dummyString";
309 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
310 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
311 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
312 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
313 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY);
314 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
315 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
316 //        assertNotNull("Establish locks should return a UNVIEWABLE edit mode", newEditMode.get(AuthorizationConstants.EditMode.UNVIEWABLE));
317 //        assertEquals("Establish locks method returned invalid UNVIEWABLE edit mode", testString, newEditMode.get(AuthorizationConstants.EditMode.UNVIEWABLE));
318 //
319 //        // test other user already has lock with different descriptor should return given edit modes
320 //        document = new MockDocument(getNonSuperUser(), false);
321 //        expectedLockDescriptor = lockDescriptor1;
322 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
323 //        PessimisticLock oldLock = lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor2, getNonSuperUser());
324 //        document.addPessimisticLock(oldLock);
325 //        originalExpectedLockCount = 1;
326 //        // one lock should be created
327 //        expectedLockCountIncrease = 1;
328 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
329 //        oldEditMode = getEditMode_FullEntry();
330 //        testString = "is this the string";
331 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
332 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
333 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
334 //        for (PessimisticLock lock : document.getPessimisticLocks()) {
335 //            if (!lock.getId().equals(oldLock.getId())) {
336 //                assertEquals("Lock descriptor of new lock is incorrect", expectedLockDescriptor, lock.getLockDescriptor());
337 //            }
338 //        }
339 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
340 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
341 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY);
342 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
343 //
344 //        // test current user has lock with same lock descriptor and other users have no locks should return given edit modes
345 //        document = new MockDocument(getNonSuperUser(), false);
346 //        expectedLockDescriptor = lockDescriptor1;
347 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
348 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), expectedLockDescriptor, getNonSuperUser()));
349 //        originalExpectedLockCount = 1;
350 //        // no lock should be created
351 //        expectedLockCountIncrease = 0;
352 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
353 //        oldEditMode = getEditMode_FullEntry();
354 //        testString = "is this the string";
355 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
356 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
357 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
358 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
359 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
360 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY);
361 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
362 //
363 //        // test current user has lock with different lock descriptor and other users have no locks should return given edit
364 //        // modes
365 //        document = new MockDocument(getNonSuperUser(), false);
366 //        expectedLockDescriptor = lockDescriptor1;
367 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
368 //        oldLock = lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor3, getNonSuperUser());
369 //        document.addPessimisticLock(oldLock);
370 //        originalExpectedLockCount = 1;
371 //        // one lock should be created
372 //        expectedLockCountIncrease = 1;
373 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
374 //        oldEditMode = getEditMode_FullEntry();
375 //        testString = "is this the string";
376 //        oldEditMode.put(AuthorizationConstants.EditMode.VIEW_ONLY, testString);
377 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
378 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
379 //        for (PessimisticLock lock : document.getPessimisticLocks()) {
380 //            if (!lock.getId().equals(oldLock.getId())) {
381 //                assertEquals("Lock descriptor of new lock is incorrect", expectedLockDescriptor, lock.getLockDescriptor());
382 //            }
383 //        }
384 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
385 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
386 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, testString);
387 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE);
388 //
389 //        // test invalid lock status (2 locks with same lock descriptor by 2 different users) throws exception
390 //        document = new MockDocument(getNonSuperUser(), false);
391 //        expectedLockDescriptor = lockDescriptor3;
392 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
393 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getNonSuperUser()));
394 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor3, getSecondNonSuperUser()));
395 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getSuperUser()));
396 //        try {
397 //            this.pessimisticLock.establishLocks(document, getEditMode_FullEntry(), getNonSuperUser());
398 //            fail("Document authorizer should have thrown exception of type PessimisticLockingException");
399 //        } catch (PessimisticLockingException e) {
400 //            // expected result
401 //        } catch (Exception e) {
402 //            fail("Document authorizer threw an exception but it was not of type PessimisticLockingException... it was a " + e.getClass().getName());
403 //        }
404 //
405 //        // test valid lock status (2 locks by 2 different users with one user being workflow lock user) does not throw
406 //        // exception
407 //        document = new MockDocument(getNonSuperUser(), false);
408 //        expectedLockDescriptor = lockDescriptor3;
409 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
410 //        Person user = getWorkflowPessimisticLockOwnerUser();
411 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor3, user));
412 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getSuperUser()));
413 //        try {
414 //            this.pessimisticLock.establishLocks(document, getEditMode_FullEntry(), getNonSuperUser());
415 //        } catch (Exception e) {
416 //            fail("Document authorizer should not have thrown an exception but did with type '" + e.getClass().getName() + "' and message: " + e.getMessage());
417 //        }
418 //
419 //        // test current user has lock with different descriptor and other users have locks with same descriptors should
420 //        // return read only editmodes
421 //        document = new MockDocument(getNonSuperUser(), false);
422 //        expectedLockDescriptor = lockDescriptor3;
423 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
424 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getNonSuperUser()));
425 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor3, getSuperUser()));
426 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor2, getSecondNonSuperUser()));
427 //        originalExpectedLockCount = 3;
428 //        // no lock should be created
429 //        expectedLockCountIncrease = 0;
430 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
431 //        oldEditMode = getEditMode_FullEntry();
432 //        testString = "is this the string";
433 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
434 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
435 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
436 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
437 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY);
438 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
439 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
440 //
441 //        // test current user has lock with same descriptor and other users have locks with different descriptors should
442 //        // return given editmodes
443 //        document = new MockDocument(getNonSuperUser(), false);
444 //        expectedLockDescriptor = lockDescriptor3;
445 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
446 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), expectedLockDescriptor, getNonSuperUser()));
447 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getSuperUser()));
448 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor2, getSecondNonSuperUser()));
449 //        originalExpectedLockCount = 3;
450 //        // no lock should be created
451 //        expectedLockCountIncrease = 0;
452 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
453 //        oldEditMode = getEditMode_FullEntry();
454 //        testString = "is this the string";
455 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
456 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
457 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
458 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
459 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
460 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY);
461 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
462 //
463 //        // test current user has lock with different lock descriptor and other users have locks with different lock
464 //        // descriptor should return given edit modes
465 //        document = new MockDocument(getNonSuperUser(), false);
466 //        expectedLockDescriptor = lockDescriptor1;
467 //        List<Long> existingLockIds = new ArrayList<Long>();
468 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
469 //        oldLock = lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor3, getSecondNonSuperUser());
470 //        existingLockIds.add(oldLock.getId());
471 //        document.addPessimisticLock(oldLock);
472 //        oldLock = lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor2, getSecondNonSuperUser());
473 //        existingLockIds.add(oldLock.getId());
474 //        document.addPessimisticLock(oldLock);
475 //        oldLock = lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor3, getSuperUser());
476 //        existingLockIds.add(oldLock.getId());
477 //        document.addPessimisticLock(oldLock);
478 //        originalExpectedLockCount = existingLockIds.size();
479 //        // one lock should be created
480 //        expectedLockCountIncrease = 1;
481 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
482 //        oldEditMode = getEditMode_FullEntry();
483 //        testString = "is this the string";
484 //        oldEditMode.put(AuthorizationConstants.EditMode.VIEW_ONLY, testString);
485 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
486 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
487 //        for (PessimisticLock lock : document.getPessimisticLocks()) {
488 //            if (!existingLockIds.contains(lock.getId())) {
489 //                // this must be the newly created lock
490 //                assertEquals("Lock descriptor of new lock is incorrect", expectedLockDescriptor, lock.getLockDescriptor());
491 //            }
492 //        }
493 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
494 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
495 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, testString);
496 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE);
497 //
498 //        // test current user has lock with wrong descriptor and no entry edit modes return given editmodes
499 //        document = new MockDocument(getNonSuperUser(), false);
500 //        expectedLockDescriptor = lockDescriptor3;
501 //        GlobalVariables.getUserSession().addObject(TestDocumentAuthorizerBase.USER_SESSION_OBJECT_KEY, (Object) expectedLockDescriptor);
502 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor1, getNonSuperUser()));
503 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor3, getSuperUser()));
504 //        document.addPessimisticLock(lockService.generateNewLock(document.getDocumentNumber(), lockDescriptor2, getSecondNonSuperUser()));
505 //        originalExpectedLockCount = 3;
506 //        // no lock should be created
507 //        expectedLockCountIncrease = 0;
508 //        assertEquals("Lock count is incorrect", originalExpectedLockCount, document.getPessimisticLocks().size());
509 //        oldEditMode = getEditMode_ReadOnly();
510 //        testString = "is this the string";
511 //        oldEditMode.put(AuthorizationConstants.EditMode.UNVIEWABLE, testString);
512 //        newEditMode = this.pessimisticLock.establishLocks(document, oldEditMode, getNonSuperUser());
513 //        assertEquals("Lock count is incorrect", originalExpectedLockCount + expectedLockCountIncrease, document.getPessimisticLocks().size());
514 //        assertEquals("Establish locks method returned invalid number of edit modes", oldEditMode.size(), newEditMode.size());
515 //        verifyEditModeDoesNotExist(newEditMode, AuthorizationConstants.EditMode.FULL_ENTRY);
516 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.VIEW_ONLY, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
517 //        verifyEditModeExists(newEditMode, AuthorizationConstants.EditMode.UNVIEWABLE, testString);
518     }
519 //
520     @Test
521     public void testHasPreRouteEditAuthorization() throws Exception {
522 //    	//TODO: the test for preRouteEditAuthorization should be removed
523 //        GlobalVariables.setUserSession(new UserSession("quickstart"));
524 //        PessimisticLockTestDocumentAuthorizer lockDocumentAuthorizer = new PessimisticLockTestDocumentAuthorizer();
525 //        lockDocumentAuthorizer.USES_PESSIMISTIC_LOCKING = false;
526 //
527 //        Person initiatorUser = getNonSuperUser();
528 //        Person authorizerUser = getNonSuperUser();
529 //        Document document = new MockDocument(initiatorUser, false);
530 //        assertTrue(authorizerUser + " should have Initiate Authorization due to initator being " + initiatorUser, lockDocumentAuthorizer.hasInitiateAuthorization(document, authorizerUser));
531 //        //assertTrue(authorizerUser + " should have Pre Route Edit Authorization", lockDocumentAuthorizer.hasPreRouteEditAuthorization(document, authorizerUser));
532 //
533 //        initiatorUser = getNonSuperUser();
534 //        authorizerUser = getSuperUser();
535 //        document = new MockDocument(initiatorUser, false);
536 //        assertFalse(authorizerUser + " should not have Initiate Authorization due to initator being " + initiatorUser, lockDocumentAuthorizer.hasInitiateAuthorization(document, authorizerUser));
537 //        //assertFalse(authorizerUser + " should not have Pre Route Edit Authorization", lockDocumentAuthorizer.hasPreRouteEditAuthorization(document, authorizerUser));
538 //
539 //        // switch to using pessimistic locking for the next tests
540 //        lockDocumentAuthorizer.USES_PESSIMISTIC_LOCKING = true;
541 //
542 //        initiatorUser = getNonSuperUser();
543 //        authorizerUser = getSuperUser();
544 //        document = new MockDocument(initiatorUser, false);
545 //        assertFalse(authorizerUser + " should not have Initiate Authorization due to initator being " + initiatorUser, lockDocumentAuthorizer.hasInitiateAuthorization(document, authorizerUser));
546 //        //assertFalse(authorizerUser + " should not have Pre Route Edit Authorization", lockDocumentAuthorizer.hasPreRouteEditAuthorization(document, authorizerUser));
547 //
548 //        initiatorUser = getNonSuperUser();
549 //        authorizerUser = getNonSuperUser();
550 //        document = new MockDocument(initiatorUser, false);
551 //        document.addPessimisticLock(KRADServiceLocatorInternal.getPessimisticLockService().generateNewLock(document.getDocumentNumber(), getSecondNonSuperUser()));
552 //        assertTrue(authorizerUser + " should have Initiate Authorization due to initator being " + initiatorUser, lockDocumentAuthorizer.hasInitiateAuthorization(document, authorizerUser));
553 //        //assertFalse(authorizerUser + " should not have Pre Route Edit Authorization", lockDocumentAuthorizer.hasPreRouteEditAuthorization(document, authorizerUser));
554 //
555 //        initiatorUser = getNonSuperUser();
556 //        authorizerUser = getNonSuperUser();
557 //        document = new MockDocument(initiatorUser, false);
558 //        document.addPessimisticLock(KRADServiceLocatorInternal.getPessimisticLockService().generateNewLock(document.getDocumentNumber(), authorizerUser));
559 //        assertTrue(authorizerUser + " should have Initiate Authorization due to initator being " + initiatorUser, lockDocumentAuthorizer.hasInitiateAuthorization(document, authorizerUser));
560 //        //assertTrue(authorizerUser + " should have Pre Route Edit Authorization", lockDocumentAuthorizer.hasPreRouteEditAuthorization(document, authorizerUser));
561     }
562 //
563     @Test
564     public void testGetDocumentActionFlagsUsingPessimisticLocking() throws Exception {
565 //        GlobalVariables.setUserSession(new UserSession("quickstart"));
566 //        String editModeTrueValue = "TRUE";
567 //        String editModeFalseValue = "FALSE";
568 //        PessimisticLockTestDocumentAuthorizer lockDocumentAuthorizer = new PessimisticLockTestDocumentAuthorizer();
569 //
570 //        Person initiatorUser = getNonSuperUser();
571 //        Person authorizerUser = getNonSuperUser();
572 //        Document document = new MockDocument(initiatorUser, false);
573 //        lockDocumentAuthorizer.USES_PESSIMISTIC_LOCKING = false;
574 //        Map editMode = new HashMap();
575 //        lockDocumentAuthorizer.setEditMode(MapUtils.putAll(editMode, new Map.Entry[]{new DefaultMapEntry(AuthorizationConstants.EditMode.VIEW_ONLY,"TRUE")}));
576 //        DocumentFormPlaceholder formDummy = implementDocumentAuthorizerMethods(lockDocumentAuthorizer, document, new MockPerson(GlobalVariables.getUserSession().getPerson()));
577     }
578 //
579 //    /**
580 //     * This is a stand-in object for a {@link KualiDocumentFormBase} object
581 //     */
582 //    private class DocumentFormPlaceholder {
583 //        public Map editingMode;
584 //        public DocumentActionFlags documentActionFlags;
585 //    }
586 //
587 //    /**
588 //     * This method is a stand-in method to duplicate the behavior of
589 //     * {@link KualiDocumentFormBase#populateAuthorizationFields(DocumentAuthorizer)} and
590 //     * {@link KualiDocumentFormBase#useDocumentAuthorizer(DocumentAuthorizer)}
591 //     *
592 //     * @param document -
593 //     *            document to use for edit modes and action flags
594 //     * @param kualiUser -
595 //     *            user to use in place of what may be in GlobalVariables
596 //     * @return a stand-in object for {@link KualiDocumentFormBase} that holds the edit mode map and the
597 //     *         {@link DocumentActionFlags} object that would be held in the {@link KualiDocumentFormBase}
598 //     */
599 //    private DocumentFormPlaceholder implementDocumentAuthorizerMethods(PessimisticLockTestDocumentAuthorizer documentAuthorizer, Document document, Person kualiUser) {
600 //        // Person kualiUser = GlobalVariables.getUserSession().getPerson();
601 //        // DocumentAuthorizer documentAuthorizer = KRADServiceLocatorInternal.getDocumentAuthorizationService().getDocumentAuthorizer(document);
602 //        Map editMode = documentAuthorizer.getEditMode(document, kualiUser);
603 //        if (documentAuthorizer.usesPessimisticLocking(document)) {
604 //            editMode = this.pessimisticLock.establishLocks(document, editMode, kualiUser);
605 //        }
606 //        DocumentFormPlaceholder formPlaceholder = new DocumentFormPlaceholder();
607 //        formPlaceholder.editingMode = editMode;
608 //        formPlaceholder.documentActionFlags = documentAuthorizer.getDocumentActionFlags(document, kualiUser);
609 //        return formPlaceholder;
610 //    }
611 //
612 //    private Person getSuperUser() {
613 //        return new MockPerson(SUPERVISOR_UNIVERSAL, SUPERVISOR_USER, true);
614 //    }
615 //
616 //    private Person getNonSuperUser() {
617 //        return new MockPerson(NONSUPER_UNIVERSAL, NONSUPER_USER, false);
618 //    }
619 //
620 //    private Person getSecondNonSuperUser() {
621 //        return new MockPerson(NONSUPER_2_UNIVERSAL, NONSUPER_2_USER, false);
622 //    }
623 //
624 //    private Map getEditMode_ReadOnly() {
625 //        return constructEditMode(AuthorizationConstants.EditMode.VIEW_ONLY);
626 //    }
627 //
628 //    private Map getEditMode_FullEntry() {
629 //        return constructEditMode(AuthorizationConstants.EditMode.FULL_ENTRY);
630 //    }
631 //
632 //    private Map constructEditMode(String editModeValue) {
633 //        Map editMode = new HashMap();
634 //        editMode.put(editModeValue, DocumentAuthorizerBase.EDIT_MODE_DEFAULT_TRUE_VALUE);
635 //        return editMode;
636 //    }
637 //
638 //    private class MockDocument extends DocumentBase {
639 //
640 //        private MockDocument() {
641 //            super();
642 //        }
643 //
644 //        public MockDocument(Person initiator, boolean isApprovalRequested) {
645 //            this();
646 //            this.documentNumber = "1234567890";
647 //            getDocumentHeader().setWorkflowDocument(new MockWorkflowDocument(initiator, isApprovalRequested));
648 //        }
649 //
650 //        @Override
651 //        protected LinkedHashMap toStringMapper() {
652 //            LinkedHashMap map = new LinkedHashMap();
653 //            map.put("class", "MockDocument");
654 //            map.put(KNSPropertyConstants.DOCUMENT_NUMBER, documentNumber);
655 //            map.put("initiator", getDocumentHeader().getWorkflowDocument().getInitiatorNetworkId());
656 //            return map;
657 //        }
658 //
659 //        public boolean getAllowsCopy() {
660 //            return false;
661 //        }
662 //
663 //    }
664 //
665 //    private class MockWorkflowDocument extends MockWorkflowDocument {
666 //
667 //        private Person initiator;
668 //        private boolean approvalRequested;
669 //
670 //        private MockWorkflowDocument() {};
671 //
672 //        public MockWorkflowDocument(Person initiator, boolean isApprovalRequested) {
673 //            this.initiator = initiator;
674 //            this.approvalRequested = isApprovalRequested;
675 //        }
676 //
677 //        public String getInitiatorNetworkId() {
678 //            return initiator.getPrincipalName();
679 //        }
680 //
681 //        public boolean isApprovalRequested() {
682 //            return approvalRequested;
683 //        }
684 //
685 //        public boolean userIsInitiator(Person user) {
686 //            return initiator.getPrincipalId().equalsIgnoreCase(user.getPrincipalId());
687 //        }
688 //
689 //		/**
690 //		 * This overridden method ...
691 //		 *
692 //		 * @see org.kuali.rice.krad.workflow.service.KualiWorkflowDocument#appSpecificRouteDocumentToGroup(java.lang.String, java.lang.String, int, java.lang.String, org.kuali.rice.kim.bo.group.dto.GroupInfo, java.lang.String, boolean)
693 //		 */
694 //		public void appSpecificRouteDocumentToGroup(String actionRequested,
695 //				String routeTypeName, String annotation,
696 //				GroupIdDTO groupId, String responsibilityDesc,
697 //				boolean forceAction) throws WorkflowException {
698 //			// TODO sp20369 - THIS METHOD NEEDS JAVADOCS
699 //
700 //		}
701 //
702 //    }
703 //
704 //    private class MockPerson extends PersonImpl {
705 //        private boolean supervisor;
706 //        private String principalId;
707 //        private String principalName;
708 //
709 //        private MockPerson() {};
710 //
711 //        public MockPerson(Person user) {
712 //            this(user.getPrincipalId(), user.getPrincipalName(), KimApiServiceLocator.getIdentityManagementService().isMemberOfGroup(user.getPrincipalId(), org.kuali.rice.kim.util.KimApiConstants.KIM_GROUP_KFS_NAMESPACE_CODE, KRADServiceLocatorInternal.getKualiConfigurationService().getPropertyValueAsString(KNSConstants.KNS_NAMESPACE, KNSConstants.DetailTypes.DOCUMENT_DETAIL_TYPE, KNSConstants.CoreApcParms.SUPERVISOR_WORKGROUP)));
713 //        }
714 //
715 //        public MockPerson(String universalId, String userId, boolean supervisor) {
716 //            this.principalId = universalId;
717 //            this.principalName = userId;
718 //            this.supervisor = supervisor;
719 //        }
720 //
721 //        public boolean isSupervisorUser() {
722 //            return supervisor;
723 //        }
724 //
725 //        public String toString() {
726 //            return ((supervisor) ? "Supervisor " : "") + "User (" + getPrincipalName() + ")";
727 //        }
728 //
729 //		public String getPrincipalId() {
730 //			return this.principalId == null ? super.getPrincipalId() : this.principalId;
731 //		}
732 //
733 //		public String getPrincipalName() {
734 //			return this.principalName == null ? super.getPrincipalName() : this.principalName;
735 //		}
736 //
737 //    }
738 }