1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes* @author Stepan M. Mishura 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage javax.security.auth; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.NotSerializableException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectInputStream; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectOutputStream; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AccessControlContext; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AccessControlException; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AccessController; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Principal; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PrivilegedAction; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PrivilegedActionException; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PrivilegedExceptionAction; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.SecurityPermission; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashSet; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Iterator; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.NoSuchElementException; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.auth.internal.SecurityTest; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.Test; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestSuite; 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject and its inner classes implementation. 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SubjectTest extends SecurityTest { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Principal principal = new Principal() { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getName() { 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "name"; 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedAction<Object> emptyPAction = new PrivilegedAction<Object>() { 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Object run() { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedExceptionAction<Object> emptyPEAction = new PrivilegedExceptionAction<Object> 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes () { 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Object run() { 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedAction<AccessControlContext> contextPAction = new PrivilegedAction<AccessControlContext>() { 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public AccessControlContext run() { 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return AccessController.getContext(); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedExceptionAction<AccessControlContext> contextPEAction = new PrivilegedExceptionAction<AccessControlContext>() { 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public AccessControlContext run() { 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return AccessController.getContext(); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedAction<Subject> subjectPAction = new PrivilegedAction<Subject>() { 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Subject run() { 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return Subject.getSubject(AccessController.getContext()); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedExceptionAction<Subject> subjectPEAction = new PrivilegedExceptionAction<Subject>() { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Subject run() { 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return Subject.getSubject(AccessController.getContext()); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final HashSet<Principal> h1 = new HashSet<Principal>(); // principals 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final HashSet<Object> h2 = new HashSet<Object>(); // public credentials 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final HashSet<Object> h3 = new HashSet<Object>(); // private credentials 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static Test suite() throws Exception { 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite setSuite = new TestSuite("SubjectSets"); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setSuite.addTest(new PrincipalTestSuite()); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setSuite.addTest(new PrivateCredentialTestSuite()); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setSuite.addTest(new PublicCredentialTestSuite()); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setSuite.addTest(new PrincipalClassTestSuite()); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setSuite.addTest(new PrivateCredentialClassTestSuite()); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes setSuite.addTest(new PublicCredentialClassTestSuite()); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite suite = new TestSuite("Subject"); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes suite.addTestSuite(javax.security.auth.SubjectTest.class); 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes suite.addTest(setSuite); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return suite; 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SubjectTest() { 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h1.add(principal); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h2.add(new Object()); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h2.add(new Object()); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h3.add(new Object()); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h3.add(new Object()); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h3.add(new Object()); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Testing Subject() constructor 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSubject() { 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Read only state", subject.isReadOnly()); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Principals set", 0, subject.getPrincipals().size()); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Private credential set", 0, subject 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPrivateCredentials().size()); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Public credential set", 0, subject.getPublicCredentials() 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .size()); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Testing Subject(boolean,Set,Set,Set) constructor 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSubject_3Set() { 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(false, h1, h2, h3); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Read only state", subject.isReadOnly()); 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Principals set", h1, subject.getPrincipals()); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Private credential set", h3, subject 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPrivateCredentials()); 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Public credential set", h2, subject 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPublicCredentials()); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the same but for read only subject 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject = new Subject(true, h1, h2, h3); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Read only state", subject.isReadOnly()); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Principals set", 1, subject.getPrincipals().size()); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Private credential set", 3, subject 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPrivateCredentials().size()); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Public credential set", 2, subject.getPublicCredentials() 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .size()); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Testing Subject(boolean,Set,Set,Set) constructor 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * in restricted security context 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSubject_3Set_NoPermissions() { 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // all sets modifications are denied 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("*")); 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(true, h1, h2, h3); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Testing Subject(boolean,Set,Set,Set) constructor 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Checks NullPointerException if one of passed set is null 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unchecked") 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSubject_3Set_NPE() { 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(false, null, new HashSet(), new HashSet()); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(false, new HashSet(), null, new HashSet()); 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(false, new HashSet(), new HashSet(), null); 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Testing Subject(boolean,Set,Set,Set) constructor. 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Parameter set contains an invalid element. 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unchecked") 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSubject_3Set_InvalidSet() { 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet hash = new HashSet(); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(null); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(false, hash, new HashSet(), new HashSet()); 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // possible to add 'null' principal via constructor 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(false, new HashSet(), hash, new HashSet()); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(false, new HashSet(), new HashSet(), hash); 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.clear(); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(new Object()); 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Subject(false, hash, new HashSet(), new HashSet()); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // possible to add 'null' principal via constructor 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests SecurityException for Subject.doAs(Subject,PrivilegedAction) 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testACE_doAs_A() throws Exception { 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("doAs")); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAs(new Subject(), emptyPAction); 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, AuthPermission.class); 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests SecurityException for Subject.doAs(Subject,PrivilegedExceptionAction) 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testACE_doAs_EA() throws Exception { 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("doAs")); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAs(new Subject(), emptyPEAction); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, AuthPermission.class); 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (PrivilegedActionException e) { 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Unexpected PrivilegedActionException"); 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests SecurityException for Subject.doAsPrivileged( 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Subject,PrivilegedAction,AccessControlContext) 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testACE_doAsPrivileged_A() throws Exception { 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("doAsPrivileged")); 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAsPrivileged(new Subject(), emptyPAction, null); 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, AuthPermission.class); 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests SecurityException for Subject.doAsPrivileged( 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Subject,PrivilegedExceptionAction,AccessControlContext) 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testACE_doAsPrivileged_EA() throws Exception { 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("doAsPrivileged")); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAsPrivileged(new Subject(), emptyPEAction, null); 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, AuthPermission.class); 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests SecurityException for Subject.getSubject() 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testACE_getSubject() { 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("getSubject")); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.getSubject(AccessController.getContext()); 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, AuthPermission.class); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests SecurityException for Subject.setReadOnly() 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testACE_setReadOnly() { 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("setReadOnly")); 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (new Subject()).setReadOnly(); 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, AuthPermission.class); 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.doAs(Subject, PrivilegedAction) 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testDoAs() { 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject contextSubject = (Subject) Subject 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .doAs(subject, subjectPAction); 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned subject", subject == contextSubject); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes contextSubject = (Subject) Subject.doAs(null, subjectPAction); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Subject is null", contextSubject); 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject: check combiner (must be null) 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AccessControlContext context = (AccessControlContext) Subject.doAs( 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, contextPAction); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Combiner for null subject", context.getDomainCombiner()); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.doAs(Subject, PrivilegedExceptionAction) 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testDoAs_PEA() throws Exception { 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject contextSubject = (Subject) Subject.doAs(subject, 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subjectPEAction); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned subject", subject == contextSubject); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes contextSubject = (Subject) Subject.doAs(null, subjectPEAction); 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Subject is null", contextSubject); 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject: check combiner (must be null) 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AccessControlContext context = (AccessControlContext) Subject.doAs( 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null, contextPEAction); 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Combiner for null subject", context.getDomainCombiner()); 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.doAsPrivileged(Subject, PrivilegedAction, ACContext) 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testDoAsPrivileged() { 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject contextSubject = (Subject) Subject.doAsPrivileged(subject, 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subjectPAction, null); 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned subject", subject == contextSubject); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes contextSubject = (Subject) Subject.doAsPrivileged(null, subjectPAction, 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null); 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Subject is null", contextSubject); 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject: check combiner (must be null) 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AccessControlContext context = (AccessControlContext) Subject 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .doAsPrivileged(null, contextPAction, null); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Combiner for null subject", context.getDomainCombiner()); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.doAsPrivileged(Subject, PEAction, ACContext) 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testDoAsPrivileged_PEA() throws Exception { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject contextSubject = (Subject) Subject.doAsPrivileged(subject, 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subjectPEAction, null); 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned subject", subject == contextSubject); 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes contextSubject = (Subject) Subject.doAsPrivileged(null, 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subjectPEAction, null); 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Subject is null", contextSubject); 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null subject: check combiner (must be null) 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AccessControlContext context = (AccessControlContext) Subject 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .doAsPrivileged(null, contextPEAction, null); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Combiner for null subject", context.getDomainCombiner()); 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.doAs* methods for creating new context 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: no SecurityException 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testDoAs_newACC() throws Exception { 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAs(subject, emptyPAction); 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAs(subject, emptyPEAction); 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAsPrivileged(subject, emptyPAction, null); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAsPrivileged(subject, emptyPEAction, null); 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // each doAs* creates new ACContext 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new SecurityPermission("createAccessControlContext")); 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAs(subject, emptyPAction); 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAs(subject, emptyPEAction); 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAsPrivileged(subject, emptyPAction, null); 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.doAsPrivileged(subject, emptyPEAction, null); 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.equals() method 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unchecked") 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEquals() { 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // empty sets 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject s1 = new Subject(); 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject s2 = new Subject(false, new HashSet(), new HashSet(), 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new HashSet()); 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject s3 = new Subject(true, new HashSet(), new HashSet(), 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new HashSet()); 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes equalsTest(s1, s2, s3); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // non empty sets 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s1 = new Subject(false, h1, h2, h3); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s3 = new Subject(true, h1, h2, h3); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s2 = new Subject(); 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s2.getPrincipals().addAll(h1); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s2.getPublicCredentials().addAll(h2); 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s2.getPrivateCredentials().addAll(h3); 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes equalsTest(s1, s2, s3); 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // not equal subjects 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s1 = new Subject(); 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s2 = new Subject(true, h1, new HashSet(), h3); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s3 = new Subject(true, h1, h2, h3); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s1.equals(s2)); 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s1.equals(s3)); 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s2.equals(s3)); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void equalsTest(Object obj1, Object obj2, Object obj3) { 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Check passed parameters. 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Because we don't verify Object.equals() method 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (obj1 == obj2 || obj1 == obj3 || obj2 == obj3) { 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AssertionError("References MUST be different"); 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // reflexivity 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj1.equals(obj1)); 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // symmetry 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj1.equals(obj2)); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj2.equals(obj1)); 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // transitivity 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj1.equals(obj2)); 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj2.equals(obj3)); 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj1.equals(obj3)); 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // consistency 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj3.equals(obj1)); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(obj3.equals(obj1)); 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // null value 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(obj1.equals(null)); 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Verifies that Subject.equals() has defined comparison algorism. 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The sequence of checks is following: 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 1)principal set 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 2)public credential set 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 3)private credential set 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unchecked") 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEquals_VerifyCheckSequence() { 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); // no permissions 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet hash = new HashSet(); 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(principal); 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject1 = new Subject(false, new HashSet(), new HashSet(), 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash); 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //doesn't verify private credential permissions on itself 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(subject1.equals(subject1)); 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // principals comparison goes before 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no SecurityException expected 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject2 = new Subject(false, hash, new HashSet(), hash); 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(subject1.equals(subject2)); 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // public credential comparison goes before 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no SecurityException expected 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject2 = new Subject(false, new HashSet(), hash, hash); 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(subject1.equals(subject2)); 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // principal and public credentials sets are equal 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected: SecurityException 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject2 = new Subject(false, new HashSet(), new HashSet(), hash); 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject1.equals(subject2); 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Verifies no PrivateCredentialPermission 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * for 'this' subject and provided subject 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEquals_NoPCP() { 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subThis = new Subject(); 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subThat = new Subject(); 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subThis.getPrivateCredentials().add(new MyClass1()); 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subThat.getPrivateCredentials().add(new Object()); 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); // no permissions 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantPermission(new PrivateCredentialPermission( 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.lang.Object * \"*\"", "read")); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // verify permissions 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subThis.getPrivateCredentials().iterator().next(); 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subThat.getPrivateCredentials().iterator().next(); 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 'this' subject doesn't have permission 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subThis.equals(subThat); 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // provided subject doesn't have permission 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subThat.equals(subThis); 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.get<set>(Class) methods 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unchecked") 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetSetClass() { 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet hash = new HashSet(); 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MyClass1 p1 = new MyClass1(); 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MyClass1 p2 = new MyClass1(); 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(p1); 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(p2); 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet h = new HashSet(); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.add(principal); 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.addAll(hash); 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.add(new MyClass2()); 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(true, h, h, h); 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Principal", hash, subject.getPrincipals(MyClass1.class)); 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Private Credentials", hash, subject 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPrivateCredentials(MyClass1.class)); 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Public Credentials", hash, subject 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPublicCredentials(MyClass1.class)); 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.get<set>(Class) methods for null parameter 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetClass_NullParameter() { 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrincipals(null); 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials(null); 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPublicCredentials(null); 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.getSubject() for null parameter 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_getSubject_NPE() { 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.getSubject(null); 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.getSubject() for current context 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_getSubject() { 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Current context", Subject.getSubject(AccessController 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getContext())); 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject.getSubject(null); 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.getSubject() for associated context 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_getSubject_SameSubject() { 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject contextSubject = (Subject) Subject 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .doAs(subject, subjectPAction); 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Subject: ", subject == contextSubject); 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.getSubject() for associated context (2 subjects) 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unchecked") 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_getSubject_NotSameSubject() { 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final HashSet hash = new HashSet(); 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(new MyClass1()); 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedAction<Object> action = new PrivilegedAction<Object>() { 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Object run() { 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return Subject.doAs(new Subject(false, hash, hash, hash), 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subjectPAction); 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject contextSubject = (Subject) Subject.doAs(subject, action); 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull("Context subject: ", contextSubject); 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Subject: ", subject == contextSubject); 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Principals: ", hash.equals(contextSubject.getPrincipals())); 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Private Credentials: ", hash.equals(contextSubject 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPrivateCredentials())); 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Public Credentials: ", hash.equals(contextSubject 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getPublicCredentials())); 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.getSubject() for privileged action in associated context 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_getSubject_PrivilegedAction() { 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivilegedAction<Object> action = new PrivilegedAction<Object>() { 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Object run() { 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return AccessController.doPrivileged(subjectPAction); 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject contextSubject = (Subject) Subject.doAs(subject, action); 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Context subject: ", contextSubject); 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.hashCode() 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode() { 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject1 = new Subject(false, h1, h2, h3); 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject2 = new Subject(true, h1, h2, h3); 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(subject1.equals(subject2)); 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(subject1.hashCode() == subject2.hashCode()); 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.hashCode() for SecurityException 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testHashCode_ACE() { 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (new Subject(false, h1, h2, h3)).hashCode(); 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Subject.isReadOnly() and Subject.setReadOnly() 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSetReadOnly_isReadOnly() { 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check initialized value 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Read only state", subject.isReadOnly()); 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set the subject as read only 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Read only state", subject.isReadOnly()); 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // anyway invoke it again to verify subject's state 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Read only state", subject.isReadOnly()); 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testToString() { 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //FIXME grantMode(); 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //denyPermission(new PrivateCredentialPermission("* * \"*\"", "read")); 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //System.out.println((new Subject(false, h1, h2, h3)).toString()); 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSerialization() throws Exception { 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject subject = new Subject(); 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrincipals().add(new MyClass2()); 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayOutputStream out = new ByteArrayOutputStream(); 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectOutputStream sOut = new ObjectOutputStream(out); 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut.writeObject(subject); 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NotSerializableException"); 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NotSerializableException e) { 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut.close(); 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject = new Subject(); 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrincipals().add(new MyClass1()); 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPublicCredentials().add(new MyClass1()); 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials().add(new MyClass1()); 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out = new ByteArrayOutputStream(); 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut = new ObjectOutputStream(out); 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut.writeObject(subject); 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut.flush(); 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut.close(); 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectInputStream sIn = new ObjectInputStream(in); 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Subject ss = (Subject) sIn.readObject(); 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(ss.isReadOnly()); 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, ss.getPrincipals().size()); 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(ss.getPrincipals().iterator().next() instanceof MyClass1); 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, ss.getPublicCredentials().size()); 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, ss.getPrivateCredentials().size()); 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ss.getPrincipals().add(new MyClass1()); 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalStateException"); 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test subject's deserialization in case of invalid('null') principals 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Serialization byte array contains null element in principal set 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The array is invalid because it is not possible to add null element 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * to principal set via public API methods. 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSerialization_NullPrincipal() throws Exception { 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The array was produced in the following way: 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1) A check that verifies a passed principal object for null 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // value was disabled in Subject class. 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2) Subject object was created 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3) A null was added to subject's principal set by invoking 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // getPrincipals().add(null); 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4) ByteArrayOutputStream class was used to write subject object 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // and to get resulting array of bytes 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] nullPrincipal = new byte[] { (byte) 0xac, (byte) 0xed, 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x8c, (byte) 0xb2, (byte) 0x32, 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x93, (byte) 0x00, (byte) 0x33, (byte) 0xfa, 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x03, (byte) 0x00, (byte) 0x02, 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5a, (byte) 0x00, (byte) 0x0a, (byte) 0x69, 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x52, (byte) 0x65, (byte) 0x61, 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4f, (byte) 0x6e, (byte) 0x6c, 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x4c, (byte) 0x00, (byte) 0x0a, 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x72, (byte) 0x69, (byte) 0x6e, 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x69, (byte) 0x70, (byte) 0x61, 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x73, (byte) 0x74, (byte) 0x00, 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0f, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x3b, 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x73, 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x00, (byte) 0x25, (byte) 0x6a, 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x73, (byte) 0x65, (byte) 0x63, 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x72, (byte) 0x69, (byte) 0x74, 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x2e, (byte) 0x61, (byte) 0x75, 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x68, (byte) 0x2e, (byte) 0x53, 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x62, (byte) 0x6a, (byte) 0x65, 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x74, (byte) 0x24, (byte) 0x53, 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x75, (byte) 0x72, 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x74, 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6d, (byte) 0xcc, (byte) 0x32, (byte) 0x80, 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x17, (byte) 0x55, (byte) 0x7e, (byte) 0x27, 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, (byte) 0x00, (byte) 0x03, (byte) 0x49, 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x07, (byte) 0x73, (byte) 0x65, 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x54, (byte) 0x79, (byte) 0x70, 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x4c, (byte) 0x00, (byte) 0x08, 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x73, 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x00, (byte) 0x16, (byte) 0x4c, 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x6b, (byte) 0x65, (byte) 0x64, 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3b, (byte) 0x4c, (byte) 0x00, (byte) 0x06, 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x68, (byte) 0x69, (byte) 0x73, 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x24, (byte) 0x30, (byte) 0x74, (byte) 0x00, 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1d, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2f, 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x61, (byte) 0x75, (byte) 0x74, 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2f, (byte) 0x53, (byte) 0x75, 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x3b, (byte) 0x78, (byte) 0x70, 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x72, (byte) 0x00, (byte) 0x14, 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x2e, (byte) 0x4c, (byte) 0x69, 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x6b, (byte) 0x65, (byte) 0x64, 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0c, (byte) 0x29, (byte) 0x53, (byte) 0x5d, 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4a, (byte) 0x60, (byte) 0x88, (byte) 0x22, 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x78, 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x77, (byte) 0x04, (byte) 0x00, 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x70, 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x71, (byte) 0x00, (byte) 0x7e, 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x02, (byte) 0x78, (byte) 0x78 }; 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream in = new ByteArrayInputStream(nullPrincipal); 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectInputStream sIn = new ObjectInputStream(in); 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.readObject(); 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test subject's deserialization in case of invalid principals 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Byte stream contains object in principal set that doesn't 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * implement Principal interface. 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The array is invalid because it is not possible to add such object 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * to principal set via public API methods. 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testSerialization_IllegalPrincipal() throws Exception { 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The array was produced in the following way: 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1) A check for verifying that passed principal object 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // implements Principal interface was disabled in Subject class. 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2) Subject object was created 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3) A serializable object was added to subject's principal 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set by invoking: getPrincipals().add(object); 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4) ByteArrayOutputStream class was used to write subject object 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // and to get resulting array of bytes 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] objectPrincipal = new byte[] { (byte) 0xac, (byte) 0xed, 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x8c, (byte) 0xb2, (byte) 0x32, 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x93, (byte) 0x00, (byte) 0x33, (byte) 0xfa, 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x03, (byte) 0x00, (byte) 0x02, 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5a, (byte) 0x00, (byte) 0x0a, (byte) 0x69, 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x52, (byte) 0x65, (byte) 0x61, 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4f, (byte) 0x6e, (byte) 0x6c, 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x4c, (byte) 0x00, (byte) 0x0a, 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x72, (byte) 0x69, (byte) 0x6e, 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x69, (byte) 0x70, (byte) 0x61, 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x73, (byte) 0x74, (byte) 0x00, 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0f, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x3b, 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x73, 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x00, (byte) 0x25, (byte) 0x6a, 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x73, (byte) 0x65, (byte) 0x63, 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x72, (byte) 0x69, (byte) 0x74, 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x2e, (byte) 0x61, (byte) 0x75, 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x68, (byte) 0x2e, (byte) 0x53, 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x62, (byte) 0x6a, (byte) 0x65, 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x74, (byte) 0x24, (byte) 0x53, 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x75, (byte) 0x72, 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x74, 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6d, (byte) 0xcc, (byte) 0x32, (byte) 0x80, 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x17, (byte) 0x55, (byte) 0x7e, (byte) 0x27, 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, (byte) 0x00, (byte) 0x03, (byte) 0x49, 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x07, (byte) 0x73, (byte) 0x65, 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x54, (byte) 0x79, (byte) 0x70, 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x4c, (byte) 0x00, (byte) 0x08, 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x73, 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x00, (byte) 0x16, (byte) 0x4c, 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x6b, (byte) 0x65, (byte) 0x64, 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3b, (byte) 0x4c, (byte) 0x00, (byte) 0x06, 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x68, (byte) 0x69, (byte) 0x73, 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x24, (byte) 0x30, (byte) 0x74, (byte) 0x00, 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1d, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2f, 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2f, (byte) 0x53, (byte) 0x75, 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x3b, (byte) 0x78, (byte) 0x70, 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x72, (byte) 0x00, (byte) 0x14, 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, 1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x2e, (byte) 0x4c, (byte) 0x69, 1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x6b, (byte) 0x65, (byte) 0x64, 1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, 1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0c, (byte) 0x29, (byte) 0x53, (byte) 0x5d, 1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4a, (byte) 0x60, (byte) 0x88, (byte) 0x22, 1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x78, 1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x77, (byte) 0x04, (byte) 0x00, 1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x73, 1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x00, (byte) 0x28, (byte) 0x6a, 1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, 1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x73, (byte) 0x65, (byte) 0x63, 1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x72, (byte) 0x69, (byte) 0x74, 1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x2e, (byte) 0x61, (byte) 0x75, 1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x68, (byte) 0x2e, (byte) 0x53, 1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x62, (byte) 0x6a, (byte) 0x65, 1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x74, (byte) 0x54, (byte) 0x65, 1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x74, (byte) 0x24, (byte) 0x4d, 1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x4f, (byte) 0x62, (byte) 0x6a, 1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0xf7, 1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xbc, (byte) 0xdc, (byte) 0x95, (byte) 0xb2, 1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x33, (byte) 0x3a, (byte) 0x0f, (byte) 0x02, 1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x78, (byte) 0x70, 1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x71, (byte) 0x00, (byte) 0x7e, 1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x02, (byte) 0x78, (byte) 0x78 }; 1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream in = new ByteArrayInputStream(objectPrincipal); 1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectInputStream sIn = new ObjectInputStream(in); 1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.readObject(); 1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test subject's principal set deserialization in case 1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * of invalid principal set's elements. Two cases are tested: 1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 1) null object 1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 2) an object in principal set that doesn't implement Principal interface. 1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_PrincipalSetInvalidSerForm() throws Exception { 1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The array was produced in the following way: 1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1) A check that verifies a passed principal object for null 1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // value was disabled in Subject class. 1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2) Subject object was created 1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3) A null was added to subject's principal set by invoking 1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // getPrincipals().add(null); 1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4) ByteArrayOutputStream class was used to write 1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // subject's principal set object and to get resulting array of bytes 1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] nullElement = new byte[] { (byte) 0xac, (byte) 0xed, 1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, 1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x25, (byte) 0x6a, (byte) 0x61, 1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x24, (byte) 0x53, (byte) 0x65, 1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x75, (byte) 0x72, (byte) 0x65, 1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x6d, 1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xcc, (byte) 0x32, (byte) 0x80, (byte) 0x17, 1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x55, (byte) 0x7e, (byte) 0x27, (byte) 0x03, 1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x02, (byte) 0x4c, (byte) 0x00, 1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x08, (byte) 0x65, (byte) 0x6c, (byte) 0x65, 1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, 1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x74, (byte) 0x00, (byte) 0x16, 1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, 1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, 1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, 1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6e, (byte) 0x6b, (byte) 0x65, 1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4c, (byte) 0x69, (byte) 0x73, 1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x00, 1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x06, (byte) 0x74, (byte) 0x68, (byte) 0x69, 1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x24, (byte) 0x30, (byte) 0x74, 1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x1d, (byte) 0x4c, (byte) 0x6a, 1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, 1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x73, (byte) 0x65, (byte) 0x63, 1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x72, (byte) 0x69, (byte) 0x74, 1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x2f, (byte) 0x61, (byte) 0x75, 1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x68, (byte) 0x2f, (byte) 0x53, 1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x62, (byte) 0x6a, (byte) 0x65, 1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x74, (byte) 0x3b, (byte) 0x78, 1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x73, (byte) 0x72, (byte) 0x00, 1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x14, (byte) 0x6a, (byte) 0x61, (byte) 0x76, 1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, 1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x4c, 1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6e, (byte) 0x6b, (byte) 0x65, 1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4c, (byte) 0x69, (byte) 0x73, 1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x0c, (byte) 0x29, (byte) 0x53, 1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5d, (byte) 0x4a, (byte) 0x60, (byte) 0x88, 1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x22, (byte) 0x03, (byte) 0x00, (byte) 0x00, 1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x70, (byte) 0x77, (byte) 0x04, 1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, 1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x78, (byte) 0x73, (byte) 0x72, 1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, 1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x8c, (byte) 0xb2, (byte) 0x32, 1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x93, (byte) 0x00, (byte) 0x33, (byte) 0xfa, 1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x03, (byte) 0x00, (byte) 0x02, 1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5a, (byte) 0x00, (byte) 0x0a, (byte) 0x69, 1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x52, (byte) 0x65, (byte) 0x61, 1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4f, (byte) 0x6e, (byte) 0x6c, 1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x4c, (byte) 0x00, (byte) 0x0a, 1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x72, (byte) 0x69, (byte) 0x6e, 1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x69, (byte) 0x70, (byte) 0x61, 1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x73, (byte) 0x74, (byte) 0x00, 1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0f, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, 1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, 1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, 1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x3b, 1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x71, 1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x7e, (byte) 0x00, (byte) 0x03, 1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x78 }; 1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The array was produced in the following way: 1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1) A check for verifying that passed principal object 1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // implements Principal interface was disabled in Subject class. 1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2) Subject object was created 1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3) A serializable object was added to subject's principal 1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set by invoking: getPrincipals().add(object); 1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4) ByteArrayOutputStream class was used to write 1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // subject's principal set object and to get resulting array of bytes 1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] notPrincipalElement = new byte[] { (byte) 0xac, (byte) 0xed, 1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, 1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x25, (byte) 0x6a, (byte) 0x61, 1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x24, (byte) 0x53, (byte) 0x65, 1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x75, (byte) 0x72, (byte) 0x65, 1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x6d, 1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xcc, (byte) 0x32, (byte) 0x80, (byte) 0x17, 1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x55, (byte) 0x7e, (byte) 0x27, (byte) 0x03, 1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x02, (byte) 0x4c, (byte) 0x00, 1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x08, (byte) 0x65, (byte) 0x6c, (byte) 0x65, 1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, 1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x74, (byte) 0x00, (byte) 0x16, 1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, 1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, 1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, 1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6e, (byte) 0x6b, (byte) 0x65, 1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4c, (byte) 0x69, (byte) 0x73, 1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x00, 1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x06, (byte) 0x74, (byte) 0x68, (byte) 0x69, 1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x24, (byte) 0x30, (byte) 0x74, 1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x1d, (byte) 0x4c, (byte) 0x6a, 1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, 1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x73, (byte) 0x65, (byte) 0x63, 1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x72, (byte) 0x69, (byte) 0x74, 1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x2f, (byte) 0x61, (byte) 0x75, 1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x68, (byte) 0x2f, (byte) 0x53, 1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x62, (byte) 0x6a, (byte) 0x65, 1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x74, (byte) 0x3b, (byte) 0x78, 1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x73, (byte) 0x72, (byte) 0x00, 1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x14, (byte) 0x6a, (byte) 0x61, (byte) 0x76, 1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, 1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x4c, 1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6e, (byte) 0x6b, (byte) 0x65, 1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4c, (byte) 0x69, (byte) 0x73, 1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x0c, (byte) 0x29, (byte) 0x53, 1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5d, (byte) 0x4a, (byte) 0x60, (byte) 0x88, 1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x22, (byte) 0x03, (byte) 0x00, (byte) 0x00, 1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x70, (byte) 0x77, (byte) 0x04, 1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, 1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x72, (byte) 0x00, (byte) 0x28, 1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x2e, (byte) 0x73, (byte) 0x65, 1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x75, (byte) 0x72, (byte) 0x69, 1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x79, (byte) 0x2e, (byte) 0x61, 1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x74, (byte) 0x68, (byte) 0x2e, 1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x75, (byte) 0x62, (byte) 0x6a, 1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x54, 1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x24, 1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4d, (byte) 0x79, (byte) 0x4f, (byte) 0x62, 1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x65, (byte) 0x63, (byte) 0x74, 1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf7, (byte) 0xbc, (byte) 0xdc, (byte) 0x95, 1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb2, (byte) 0x33, (byte) 0x3a, (byte) 0x0f, 1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x78, 1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x78, (byte) 0x73, (byte) 0x72, 1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, 1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x8c, (byte) 0xb2, (byte) 0x32, 1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x93, (byte) 0x00, (byte) 0x33, (byte) 0xfa, 1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x03, (byte) 0x00, (byte) 0x02, 1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5a, (byte) 0x00, (byte) 0x0a, (byte) 0x69, 1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x52, (byte) 0x65, (byte) 0x61, 1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x64, (byte) 0x4f, (byte) 0x6e, (byte) 0x6c, 1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x4c, (byte) 0x00, (byte) 0x0a, 1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x72, (byte) 0x69, (byte) 0x6e, 1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x69, (byte) 0x70, (byte) 0x61, 1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x73, (byte) 0x74, (byte) 0x00, 1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0f, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, 1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, 1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, 1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x3b, 1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x70, (byte) 0x00, (byte) 0x71, 1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x7e, (byte) 0x00, (byte) 0x03, 1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x78 }; 1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream in = new ByteArrayInputStream(nullElement); 1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectInputStream sIn = new ObjectInputStream(in); 1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.readObject(); 1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.close(); 1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes in = new ByteArrayInputStream(notPrincipalElement); 1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn = new ObjectInputStream(in); 1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.readObject(); 1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected IllegalArgumentException"); 1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.close(); 1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test subject's private credential set deserialization in case 1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * of invalid null element. 1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_PrivateCredentialSetInvalidSerForm() throws Exception { 1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The array was produced in the following way: 1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1) A check that verifies a passed private credential object for null 1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // value was disabled in Subject class. 1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2) Subject object was created 1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3) A null was added to subject's private credential set by invoking 1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // getPrivateCredentials().add(null); 1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4) ByteArrayOutputStream class was used to write 1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // subject's private credential set object 1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // and to get resulting array of bytes 1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] nullElement = new byte[] { (byte) 0xac, (byte) 0xed, 1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, 1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x25, (byte) 0x6a, (byte) 0x61, 1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x24, (byte) 0x53, (byte) 0x65, 1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x75, (byte) 0x72, (byte) 0x65, 1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x6d, 1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xcc, (byte) 0x32, (byte) 0x80, (byte) 0x17, 1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x55, (byte) 0x7e, (byte) 0x27, (byte) 0x03, 1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x03, (byte) 0x49, (byte) 0x00, 1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x07, (byte) 0x73, (byte) 0x65, (byte) 0x74, 1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x54, (byte) 0x79, (byte) 0x70, (byte) 0x65, 1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x00, (byte) 0x08, (byte) 0x65, 1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, 1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x74, (byte) 0x73, (byte) 0x74, 1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x16, (byte) 0x4c, (byte) 0x6a, 1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, 1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, 1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x6e, 1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6b, (byte) 0x65, (byte) 0x64, (byte) 0x4c, 1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, 1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x00, (byte) 0x06, (byte) 0x74, 1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x24, 1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x30, (byte) 0x74, (byte) 0x00, (byte) 0x1d, 1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, 1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x78, (byte) 0x2f, (byte) 0x73, 1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x75, (byte) 0x72, 1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x74, (byte) 0x79, (byte) 0x2f, 1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x75, (byte) 0x74, (byte) 0x68, 1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x53, (byte) 0x75, (byte) 0x62, 1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x65, (byte) 0x63, (byte) 0x74, 1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x00, 1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x73, 1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x00, (byte) 0x14, (byte) 0x6a, 1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, 1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, 1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x4c, (byte) 0x69, (byte) 0x6e, 1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6b, (byte) 0x65, (byte) 0x64, (byte) 0x4c, 1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x0c, 1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x29, (byte) 0x53, (byte) 0x5d, (byte) 0x4a, 1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x60, (byte) 0x88, (byte) 0x22, (byte) 0x03, 1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x78, (byte) 0x70, 1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x77, (byte) 0x04, (byte) 0x00, (byte) 0x00, 1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x01, (byte) 0x70, (byte) 0x78, 1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x72, (byte) 0x00, (byte) 0x1b, 1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x2e, (byte) 0x73, (byte) 0x65, 1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x75, (byte) 0x72, (byte) 0x69, 1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x79, (byte) 0x2e, (byte) 0x61, 1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x74, (byte) 0x68, (byte) 0x2e, 1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x75, (byte) 0x62, (byte) 0x6a, 1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x8c, 1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb2, (byte) 0x32, (byte) 0x93, (byte) 0x00, 1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x33, (byte) 0xfa, (byte) 0x68, (byte) 0x03, 1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x02, (byte) 0x5a, (byte) 0x00, 1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0a, (byte) 0x69, (byte) 0x73, (byte) 0x52, 1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x61, (byte) 0x64, (byte) 0x4f, 1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x6c, (byte) 0x79, (byte) 0x4c, 1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x0a, (byte) 0x70, (byte) 0x72, 1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6e, (byte) 0x63, (byte) 0x69, 1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x61, (byte) 0x6c, (byte) 0x73, 1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x00, (byte) 0x0f, (byte) 0x4c, 1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, 1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x2f, (byte) 0x53, (byte) 0x65, 1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x3b, (byte) 0x78, (byte) 0x70, 1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x73, (byte) 0x71, (byte) 0x00, 1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7e, (byte) 0x00, (byte) 0x00, (byte) 0x00, 1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x73, 1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x71, (byte) 0x00, (byte) 0x7e, (byte) 0x00, 1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x04, (byte) 0x77, (byte) 0x04, (byte) 0x00, 1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x78, 1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x71, (byte) 0x00, (byte) 0x7e, (byte) 0x00, 1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x08, (byte) 0x78, (byte) 0x78, (byte) 0x78 }; 1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream in = new ByteArrayInputStream(nullElement); 1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectInputStream sIn = new ObjectInputStream(in); 1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.readObject(); 1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.close(); 1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class PermissionTest extends SecurityTest { 1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final Subject subject = new Subject(); 1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * FIXME??? presence of unaccessible element 1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * forbids all operations except adding new elements 1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testForbiddenElement() { 1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); // no permissions 1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantPermission(new AuthPermission("modifyPrivateCredentials")); 1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Principal privCr1 = new MyClass1(); 1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object privCr2 = new Object(); 1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet<Object> hash = new HashSet<Object>(); 1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(privCr1); 1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(new Object()); 1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set<Object> set = subject.getPrivateCredentials(); 1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Adding is not prohibited 1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(privCr1); 1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(privCr2); 1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.clear(); 1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // PrivateCredentialPermission check goes first 1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.contains(privCr1); 1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.contains(new Object()); 1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(set.equals(set)); 1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(set.equals(new HashSet<Object>())); 1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set with equal size initiates iteration 1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.equals(hash); 1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.isEmpty(); 1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.hashCode(); 1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.remove(privCr1); 1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // PrivateCredentialPermission check goes first 1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.remove(new Object()); 1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // PrivateCredentialPermission check goes first 1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.retainAll(new HashSet<Object>()); 1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // PrivateCredentialPermission check goes first 1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.toArray(); 1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.toArray(new Object[5]); 1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testIteratorNext_EmptySet() { 1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); // no permissions 1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (new Subject()).getPrivateCredentials().iterator().next(); 1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NoSuchElementException"); 1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw e; 1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testIteratorNext() { 1554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrincipals().add(new MyClass1()); 1556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set<Object> set = subject.getPrivateCredentials(); 1558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object obj1 = new Object(); 1560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object obj2 = new Object(); 1561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object obj3 = new Object(); 1562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(obj1); 1564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(new HashSet<Object>()); 1565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(obj2); 1566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(new HashSet<Object>()); 1567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(obj3); 1568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); // no permissions 1570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet<Object> hash = new HashSet<Object>(); 1572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantPermission(new PrivateCredentialPermission( 1574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.lang.Object * \"*\"", "read")); 1575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator<Object> it = set.iterator(); 1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (it.hasNext()) { 1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(it.next()); 1580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Size: ", 3, hash.size()); 1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("1 element", hash.contains(obj1)); 1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("2 element", hash.contains(obj2)); 1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("3 element", hash.contains(obj3)); 1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_Remove_NotExistingElement_EmptySet() { 1592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new PrivateCredentialPermission("* * \"*\"", "read")); 1594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials().remove(new Object()); 1596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_PrivateCredentialPermission() { 1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes class P implements Principal { 1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getName() { 1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "name"; 1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes P p = new P(); 1608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet<Principal> hash = new HashSet<Principal>(); 1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(p); 1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivateCredentialPermission p1 = new PrivateCredentialPermission( 1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.lang.Object", hash); 1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivateCredentialPermission p2 = new PrivateCredentialPermission( 1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.lang.Object " + P.class.getName() + " \"name\"", 1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "read"); 1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(p1.implies(p2)); 1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(p2.implies(p1)); 1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivateCredentialPermission p3 = new PrivateCredentialPermission( 1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.lang.Object * \"*\"", "read"); 1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrivateCredentialPermission p4 = new PrivateCredentialPermission( 1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.lang.Object", new HashSet<Principal>()); 1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(p3.implies(p4)); 1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_Principal() { 1631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Principal p1 = new MyClass1(); 1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Principal p2 = new MyClass2(); 1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet<Principal> hash = new HashSet<Principal>(); 1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(p2); 1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set<Object> set = subject.getPrivateCredentials(); 1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.add(new Object()); 1641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); // no permissions 1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantPermission(new AuthPermission("modifyPrincipals")); 1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantPermission(getPermission("java.lang.Object", hash)); 1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator<Object> it = set.iterator(); 1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.next(); 1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrincipals().add(p1); 1651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it = set.iterator(); 1652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.next(); 1654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrincipals().add(p2); 1660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it = set.iterator(); 1662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.next(); 1663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_Serialization() throws Exception { 1666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials().add(new MyClass1()); 1668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new PrivateCredentialPermission("* * \"*\"", "read")); 1670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayOutputStream out = new ByteArrayOutputStream(); 1672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectOutputStream sOut = new ObjectOutputStream(out); 1673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut.writeObject(subject.getPrivateCredentials()); 1676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 1680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sOut.close(); 1681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("unchecked") 1685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetClass() { 1686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes HashSet hash = new HashSet(); 1688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hash.add(new MyClass1()); 1689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrincipals().add(new MyClass1()); 1691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials().add(new MyClass1()); 1693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials().add(new MyClass2()); 1694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantMode(); // no permissions 1696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials(MyClass1.class); 1699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials(MyClass2.class); 1706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // subject hash partial permissions (only for MyClass1 class) 1712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantPermission(getPermission(MyClass1.class.getName(), hash)); 1713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // FIXME why security exception is thrown? 1715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the spec. require permissions for requested class only 1716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials(MyClass1.class); 1718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials(MyClass2.class); 1725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected AccessControlException"); 1726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (AccessControlException e) { 1727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e, PrivateCredentialPermission.class); 1728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // now subject has all permissions 1731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes grantPermission(getPermission(MyClass2.class.getName(), hash)); 1732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials(MyClass1.class); 1734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.getPrivateCredentials(MyClass2.class); 1735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PrivateCredentialPermission getPermission(String c, Set<? extends Principal> p) { 1738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuffer buf = new StringBuffer(c); 1739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (Iterator<? extends Principal> it = p.iterator(); it.hasNext();) { 1741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object o = it.next(); 1742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes buf.append(" "); 1743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes buf.append(o.getClass().getName()); 1744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes buf.append(" \""); 1745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes buf.append(((Principal) o).getName()); 1746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes buf.append("\""); 1747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new PrivateCredentialPermission(buf.toString(), "read"); 1749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test subject's public credential set deserialization in case 1754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * of invalid null element. 1755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_PublicCredentialInvalidSerForm() throws Exception { 1757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The array was produced in the following way: 1759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1) A check that verifies a passed public credential object for null 1760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // value was disabled in Subject class. 1761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2) Subject object was created 1762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3) A null was added to subject's public credential set by invoking 1763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // getPublicCredentials().add(null); 1764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4) ByteArrayOutputStream class was used to write 1765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // subject's public credential set object 1766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // and to get resulting array of bytes 1767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] nullElement = new byte[] { (byte) 0xac, (byte) 0xed, 1768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x05, (byte) 0x73, (byte) 0x72, 1769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x25, (byte) 0x6a, (byte) 0x61, 1770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, 1771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x65, (byte) 0x63, (byte) 0x75, 1772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, 1773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x61, (byte) 0x75, (byte) 0x74, 1774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x2e, (byte) 0x53, (byte) 0x75, 1775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, 1776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x24, (byte) 0x53, (byte) 0x65, 1777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x75, (byte) 0x72, (byte) 0x65, 1778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x65, (byte) 0x74, (byte) 0x6d, 1779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xcc, (byte) 0x32, (byte) 0x80, (byte) 0x17, 1780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x55, (byte) 0x7e, (byte) 0x27, (byte) 0x03, 1781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x03, (byte) 0x49, (byte) 0x00, 1782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x07, (byte) 0x73, (byte) 0x65, (byte) 0x74, 1783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x54, (byte) 0x79, (byte) 0x70, (byte) 0x65, 1784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x00, (byte) 0x08, (byte) 0x65, 1785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, 1786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x74, (byte) 0x73, (byte) 0x74, 1787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x16, (byte) 0x4c, (byte) 0x6a, 1788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, 1789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, 1790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x6e, 1791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6b, (byte) 0x65, (byte) 0x64, (byte) 0x4c, 1792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, 1793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x00, (byte) 0x06, (byte) 0x74, 1794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x24, 1795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x30, (byte) 0x74, (byte) 0x00, (byte) 0x1d, 1796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, 1797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x78, (byte) 0x2f, (byte) 0x73, 1798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x75, (byte) 0x72, 1799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x74, (byte) 0x79, (byte) 0x2f, 1800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x75, (byte) 0x74, (byte) 0x68, 1801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x53, (byte) 0x75, (byte) 0x62, 1802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x65, (byte) 0x63, (byte) 0x74, 1803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x00, 1804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x73, 1805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0x00, (byte) 0x14, (byte) 0x6a, 1806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, 1807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, 1808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x4c, (byte) 0x69, (byte) 0x6e, 1809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6b, (byte) 0x65, (byte) 0x64, (byte) 0x4c, 1810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x0c, 1811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x29, (byte) 0x53, (byte) 0x5d, (byte) 0x4a, 1812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x60, (byte) 0x88, (byte) 0x22, (byte) 0x03, 1813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x78, (byte) 0x70, 1814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x77, (byte) 0x04, (byte) 0x00, (byte) 0x00, 1815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x01, (byte) 0x70, (byte) 0x78, 1816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x73, (byte) 0x72, (byte) 0x00, (byte) 0x1b, 1817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 1818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x78, (byte) 0x2e, (byte) 0x73, (byte) 0x65, 1819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x75, (byte) 0x72, (byte) 0x69, 1820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x79, (byte) 0x2e, (byte) 0x61, 1821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0x74, (byte) 0x68, (byte) 0x2e, 1822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x75, (byte) 0x62, (byte) 0x6a, 1823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x8c, 1824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb2, (byte) 0x32, (byte) 0x93, (byte) 0x00, 1825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x33, (byte) 0xfa, (byte) 0x68, (byte) 0x03, 1826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x02, (byte) 0x5a, (byte) 0x00, 1827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0a, (byte) 0x69, (byte) 0x73, (byte) 0x52, 1828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x61, (byte) 0x64, (byte) 0x4f, 1829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x6c, (byte) 0x79, (byte) 0x4c, 1830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x0a, (byte) 0x70, (byte) 0x72, 1831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x69, (byte) 0x6e, (byte) 0x63, (byte) 0x69, 1832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x70, (byte) 0x61, (byte) 0x6c, (byte) 0x73, 1833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x00, (byte) 0x0f, (byte) 0x4c, 1834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, 1835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, 1836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6c, (byte) 0x2f, (byte) 0x53, (byte) 0x65, 1837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0x3b, (byte) 0x78, (byte) 0x70, 1838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x73, (byte) 0x71, (byte) 0x00, 1839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7e, (byte) 0x00, (byte) 0x00, (byte) 0x00, 1840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x73, 1841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x71, (byte) 0x00, (byte) 0x7e, (byte) 0x00, 1842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x04, (byte) 0x77, (byte) 0x04, (byte) 0x00, 1843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x78, 1844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x71, (byte) 0x00, (byte) 0x7e, (byte) 0x00, 1845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x08, (byte) 0x78, (byte) 0x78, (byte) 0x78 }; 1846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream in = new ByteArrayInputStream(nullElement); 1848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectInputStream sIn = new ObjectInputStream(in); 1849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.readObject(); 1852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!testing) { 1853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected NullPointerException"); 1854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 1856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 1857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes sIn.close(); 1858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("serial") 1862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class MyClass1 implements Principal, Serializable { 1863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getName() { 1864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "MyClass1"; 1865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class MyClass2 implements Principal { 1869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getName() { 1870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "MyClass2"; 1871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings("serial") 1875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class MyObject implements Serializable { 1876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class PrincipalTestSuite extends TestSuite { 1879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PrincipalTestSuite() { 1881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super("Principal"); 1882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite iterator = new TestSuite("Iterator"); 1884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator 1886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(IteratorInterface.class, "Interface")); 1887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.addTest(new TestSuite(IteratorReadOnly.class, "ReadOnly")); 1888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.addTest(new TestSuite(IteratorSecure.class, "Secure")); 1889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite set = new TestSuite("Set"); 1891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SetInterface.class, "Interface")); 1892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set 1893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(UnsupportedNull.class, 1894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UnsupportedNull")); 1895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(IneligibleElement.class, 1896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "IneligibleElement")); 1897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(ReadOnlySet.class, "ReadOnly")); 1898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SecureSet.class, "Secure")); 1899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite object = new TestSuite("Object"); 1901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes object.addTest(new TestSuite(SObjectTest.class, "Object")); 1902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(iterator); 1904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(set); 1905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(object); 1906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorInterface extends SecurityTest.IteratorTest { 1909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorInterface() { 1910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(); 1911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorReadOnly extends 1916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.ReadOnlyIteratorTest { 1917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final Subject subject = new Subject(); 1919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorReadOnly() { 1921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = subject.getPrincipals(); 1922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setReadOnly() { 1927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 1928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorSecure extends 1932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SecureIteratorTest { 1933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorSecure() { 1935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(); 1936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSecure() { 1941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("modifyPrincipals")); 1942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SetInterface extends SecurityTest.SetTest { 1946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SetInterface() { 1947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(); 1948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class UnsupportedNull extends 1953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.UnsupportedNullTest { 1954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public UnsupportedNull() { 1956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(); 1957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IneligibleElement extends 1962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.IneligibleElementTest { 1963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IneligibleElement() { 1965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(); 1966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iElement = new Object(); 1968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class ReadOnlySet extends SecurityTest.ReadOnlySetTest { 1972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final Subject subject = new Subject(); 1973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ReadOnlySet() { 1975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = subject.getPrincipals(); 1976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setReadOnly() { 1981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 1982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SecureSet extends SecurityTest.SecureSetTest { 1986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SecureSet() { 1988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(); 1989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 1990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 1993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSecure() { 1994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("modifyPrincipals")); 1995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SObjectTest extends 1999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SubjectSetObjectTest { 2000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SObjectTest() { 2001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj1 = subject.getPrincipals(); 2002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //intentionally another set 2004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj2 = subject.getPrivateCredentials(); 2005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class PrivateCredentialTestSuite extends TestSuite { 2010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PrivateCredentialTestSuite() { 2012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super("PrivateCredential"); 2013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite iterator = new TestSuite("Iterator"); 2015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator 2017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(IteratorInterface.class, "Interface")); 2018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.addTest(new TestSuite(IteratorReadOnly.class, "ReadOnly")); 2019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.addTest(new TestSuite(IteratorSecure.class, "Secure")); 2020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite set = new TestSuite("Set"); 2022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SetInterface.class, "Interface")); 2023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set 2024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(UnsupportedNull.class, 2025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UnsupportedNull")); 2026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(ReadOnlySet.class, "ReadOnly")); 2027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SecureSet.class, "Secure")); 2028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(PermissionTest.class, "PermissionTest")); 2029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite object = new TestSuite("Object"); 2031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes object.addTest(new TestSuite(SObjectTest.class, "Object")); 2032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(iterator); 2034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(set); 2035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(object); 2036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorInterface extends SecurityTest.IteratorTest { 2039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorInterface() { 2040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(); 2041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNext_EmptySet_NoSuchElementException() { 2046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (testing) { 2048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Unexpected: IndexOutOfBoundsException 2049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_EmptySet_NoSuchElementException(); 2051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 2052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 2054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_EmptySet_NoSuchElementException(); 2055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNext_NoSuchElementException() { 2060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (testing) { 2061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Unexpected: IndexOutOfBoundsException 2062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_NoSuchElementException(); 2064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 2065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 2067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_NoSuchElementException(); 2068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorReadOnly extends 2073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.ReadOnlyIteratorTest { 2074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final Subject subject = new Subject(); 2076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorReadOnly() { 2078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = subject.getPrivateCredentials(); 2079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setReadOnly() { 2084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 2085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNext_EmptySet_NoSuchElementException() { 2089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (testing) { 2091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Unexpected: IndexOutOfBoundsException 2092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_EmptySet_NoSuchElementException(); 2094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 2095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 2097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_EmptySet_NoSuchElementException(); 2098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNext_NoSuchElementException() { 2103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (testing) { 2104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Unexpected: IndexOutOfBoundsException 2105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_NoSuchElementException(); 2107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 2108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 2110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_NoSuchElementException(); 2111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorSecure extends 2116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SecureIteratorTest { 2117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorSecure() { 2119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(); 2120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSecure() { 2125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("modifyPrivateCredentials")); 2126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNext_EmptySet_NoSuchElementException() { 2130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (testing) { 2132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Unexpected: IndexOutOfBoundsException 2133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_EmptySet_NoSuchElementException(); 2135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 2136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 2138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_EmptySet_NoSuchElementException(); 2139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNext_NoSuchElementException() { 2144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (testing) { 2145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Unexpected: IndexOutOfBoundsException 2146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_NoSuchElementException(); 2148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 2149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 2151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.testNext_NoSuchElementException(); 2152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SetInterface extends SecurityTest.SetTest { 2157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SetInterface() { 2158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(); 2159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class UnsupportedNull extends 2164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.UnsupportedNullTest { 2165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public UnsupportedNull() { 2167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(); 2168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class ReadOnlySet extends SecurityTest.ReadOnlySetTest { 2173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final Subject subject = new Subject(); 2174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ReadOnlySet() { 2176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = subject.getPrivateCredentials(); 2177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setReadOnly() { 2182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 2183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SecureSet extends SecurityTest.SecureSetTest { 2187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SecureSet() { 2189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(); 2190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSecure() { 2195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("modifyPrivateCredentials")); 2196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SObjectTest extends 2200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SubjectSetObjectTest { 2201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SObjectTest() { 2202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj1 = subject.getPrivateCredentials(); 2203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //intentionally another set 2205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj2 = subject.getPublicCredentials(); 2206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class PublicCredentialTestSuite extends TestSuite { 2211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PublicCredentialTestSuite() { 2213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super("PublicCredential"); 2214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite iterator = new TestSuite("Iterator"); 2216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator 2218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(IteratorInterface.class, "Interface")); 2219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.addTest(new TestSuite(IteratorReadOnly.class, "ReadOnly")); 2220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.addTest(new TestSuite(IteratorSecure.class, "Secure")); 2221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite set = new TestSuite("Set"); 2223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SetInterface.class, "Interface")); 2224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set 2225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(UnsupportedNull.class, 2226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UnsupportedNull")); 2227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(ReadOnlySet.class, "ReadOnly")); 2228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SecureSet.class, "Secure")); 2229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite object = new TestSuite("Object"); 2231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes object.addTest(new TestSuite(SObjectTest.class, "Object")); 2232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(iterator); 2234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(set); 2235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(object); 2236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorInterface extends SecurityTest.IteratorTest { 2239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorInterface() { 2240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(); 2241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorReadOnly extends 2246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.ReadOnlyIteratorTest { 2247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final Subject subject = new Subject(); 2249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorReadOnly() { 2251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = subject.getPublicCredentials(); 2252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setReadOnly() { 2257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 2258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IteratorSecure extends 2262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SecureIteratorTest { 2263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IteratorSecure() { 2265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(); 2266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSecure() { 2271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("modifyPublicCredentials")); 2272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SetInterface extends SecurityTest.SetTest { 2276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SetInterface() { 2277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(); 2278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class UnsupportedNull extends 2283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.UnsupportedNullTest { 2284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public UnsupportedNull() { 2286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(); 2287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class ReadOnlySet extends SecurityTest.ReadOnlySetTest { 2292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final Subject subject = new Subject(); 2293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ReadOnlySet() { 2295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = subject.getPublicCredentials(); 2296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setReadOnly() { 2301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes subject.setReadOnly(); 2302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SecureSet extends SecurityTest.SecureSetTest { 2306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SecureSet() { 2308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(); 2309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = principal; 2310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @Override 2313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setSecure() { 2314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes denyPermission(new AuthPermission("modifyPublicCredentials")); 2315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SObjectTest extends 2319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SubjectSetObjectTest { 2320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SObjectTest() { 2321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj1 = subject.getPublicCredentials(); 2322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //intentionally another set 2324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj2 = subject.getPrincipals(); 2325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class PrincipalClassTestSuite extends TestSuite { 2330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PrincipalClassTestSuite() { 2332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super("PrincipalClass"); 2333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite set = new TestSuite("Set"); 2335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SetInterface.class, "Interface")); 2336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set 2337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(UnsupportedNull.class, 2338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UnsupportedNull")); 2339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(IneligibleElement.class, 2340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "IneligibleElement")); 2341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite object = new TestSuite("Object"); 2343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes object.addTest(new TestSuite(SObjectTest.class, "Object")); 2344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(set); 2346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(object); 2347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SetInterface extends SecurityTest.SetTest { 2350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SetInterface() { 2351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(MyClass1.class); 2352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class UnsupportedNull extends 2357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.UnsupportedNullTest { 2358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public UnsupportedNull() { 2360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(MyClass1.class); 2361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IneligibleElement extends 2366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.IneligibleElementTest { 2367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IneligibleElement() { 2369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrincipals(MyClass1.class); 2370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iElement = new MyClass2(); 2372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SObjectTest extends 2376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SubjectSetObjectTest { 2377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SObjectTest() { 2378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj1 = subject.getPrincipals(MyClass1.class); 2379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //intentionally another set 2381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj2 = subject.getPrivateCredentials(MyClass1.class); 2382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class PrivateCredentialClassTestSuite extends TestSuite { 2387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PrivateCredentialClassTestSuite() { 2389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super("PrivateCredentialClass"); 2390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite set = new TestSuite("Set"); 2392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SetInterface.class, "Interface")); 2393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set 2394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(UnsupportedNull.class, 2395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UnsupportedNull")); 2396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(IneligibleElement.class, 2397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "IneligibleElement")); 2398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite object = new TestSuite("Object"); 2400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes object.addTest(new TestSuite(SObjectTest.class, "Object")); 2401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(set); 2403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(object); 2404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SetInterface extends SecurityTest.SetTest { 2407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SetInterface() { 2408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(MyClass1.class); 2409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class UnsupportedNull extends 2414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.UnsupportedNullTest { 2415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public UnsupportedNull() { 2417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(MyClass1.class); 2418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IneligibleElement extends 2423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.IneligibleElementTest { 2424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IneligibleElement() { 2426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPrivateCredentials(MyClass1.class); 2427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iElement = new MyClass2(); 2429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SObjectTest extends 2433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SubjectSetObjectTest { 2434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SObjectTest() { 2435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj1 = subject.getPrivateCredentials(MyClass1.class); 2436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //intentionally another set 2438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj2 = subject.getPublicCredentials(MyClass1.class); 2439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class PublicCredentialClassTestSuite extends TestSuite { 2444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PublicCredentialClassTestSuite() { 2446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super("PublicCredentialClass"); 2447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite set = new TestSuite("Set"); 2449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(SetInterface.class, "Interface")); 2450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set 2451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .addTest(new TestSuite(UnsupportedNull.class, 2452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UnsupportedNull")); 2453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set.addTest(new TestSuite(IneligibleElement.class, 2454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "IneligibleElement")); 2455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestSuite object = new TestSuite("Object"); 2457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes object.addTest(new TestSuite(SObjectTest.class, "Object")); 2458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(set); 2460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes addTest(object); 2461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SetInterface extends SecurityTest.SetTest { 2464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SetInterface() { 2465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(MyClass1.class); 2466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class UnsupportedNull extends 2471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.UnsupportedNullTest { 2472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public UnsupportedNull() { 2474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(MyClass1.class); 2475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class IneligibleElement extends 2480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.IneligibleElementTest { 2481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public IneligibleElement() { 2483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes set = (new Subject()).getPublicCredentials(MyClass1.class); 2484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes element = new MyClass1(); 2485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iElement = new MyClass2(); 2486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class SObjectTest extends 2490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecurityTest.SubjectSetObjectTest { 2491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SObjectTest() { 2492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj1 = subject.getPublicCredentials(MyClass1.class); 2493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //intentionally another set 2495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes obj2 = subject.getPrincipals(MyClass1.class); 2496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}