1 22 package org.jboss.test.security.test; 23 24 import java.io.FilePermission ; 25 import java.net.URL ; 26 import java.security.CodeSource ; 27 import java.security.Permission ; 28 import java.security.PermissionCollection ; 29 import java.security.Policy ; 30 import java.security.Principal ; 31 32 import javax.security.auth.Subject ; 33 34 import junit.framework.TestCase; 35 import org.jboss.security.SecurityAssociation; 36 import org.jboss.security.SimplePrincipal; 37 38 44 public class SAInheritableThreadLocalUnitTestCase extends TestCase 45 { 46 private Principal authPrincipal; 47 private Subject authSubject; 48 49 public SAInheritableThreadLocalUnitTestCase(String name) 50 { 51 super(name); 52 } 53 54 57 public void testSecurityContext() 58 { 59 authPrincipal = new SimplePrincipal("jduke"); 60 authSubject = new Subject (); 61 authSubject.getPrincipals().add(authPrincipal); 62 SecurityAssociation.pushSubjectContext(authSubject, authPrincipal, "theduke"); 63 validateSettings(false); 64 } 65 68 public void testInheritableThreadLocal() throws Exception 69 { 70 authPrincipal = new SimplePrincipal("jduke"); 71 authSubject = new Subject (); 72 authSubject.getPrincipals().add(authPrincipal); 73 SecurityAssociation.pushSubjectContext(authSubject, authPrincipal, "theduke"); 74 validateSettings(false); 75 76 TestThread t = new TestThread("testInheritableThreadLocal", false); 77 t.start(); 78 t.join(); 79 if( t.error != null ) 80 { 81 t.error.printStackTrace(); 82 fail("TestThread saw an error"); 83 } 84 } 85 86 90 private void validateSettings(boolean expectNull) 91 { 92 Subject s = SecurityAssociation.getSubject(); 93 Principal p = SecurityAssociation.getPrincipal(); 94 95 if( expectNull ) 96 { 97 assertNull("getSubject() == null", s); 98 assertNull("getPrincipal() == null", p); 99 } 100 else 101 { 102 assertTrue("getSubject() == authSubject", authSubject.equals(s)); 103 assertTrue("getPrincipal() == authPrincipal", authPrincipal.equals(p)); 104 } 105 } 106 107 class TestThread extends Thread 108 { 109 Throwable error; 110 boolean expectNull; 111 TestThread(String name, boolean expectNull) 112 { 113 super(name); 114 this.expectNull = expectNull; 115 } 116 117 public void run() 118 { 119 try 120 { 121 validateSettings(expectNull); 122 } 123 catch(Throwable e) 124 { 125 error = e; 126 } 127 } 128 } 129 130 protected void setUp() 131 { 132 System.setProperty("org.jboss.security.SecurityAssociation.ThreadLocal", "false"); 133 SecurityAssociation.setServer(); 134 } 135 } 136 | Popular Tags |