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 SAThreadLocalUnitTestCase extends TestCase 45 { 46 private Principal authPrincipal; 47 private Subject authSubject; 48 49 public SAThreadLocalUnitTestCase(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 public void testThreadLocal() throws Exception 66 { 67 testSecurityContext(); 68 TestThread t = new TestThread("testThreadLocal", true); 69 t.start(); 70 t.join(); 71 if( t.error != null ) 72 { 73 t.error.printStackTrace(); 74 fail("TestThread saw an error"); 75 } 76 } 77 78 82 private void validateSettings(boolean expectNull) 83 { 84 Subject s = SecurityAssociation.getSubject(); 85 Principal p = SecurityAssociation.getPrincipal(); 86 87 if( expectNull ) 88 { 89 assertNull("getSubject() == null", s); 90 assertNull("getPrincipal() == null", p); 91 } 92 else 93 { 94 assertTrue("getSubject() == authSubject", authSubject.equals(s)); 95 assertTrue("getPrincipal() == authPrincipal", authPrincipal.equals(p)); 96 } 97 } 98 99 class TestThread extends Thread 100 { 101 Throwable error; 102 boolean expectNull; 103 TestThread(String name, boolean expectNull) 104 { 105 super(name); 106 this.expectNull = expectNull; 107 } 108 109 public void run() 110 { 111 try 112 { 113 validateSettings(expectNull); 114 } 115 catch(Throwable e) 116 { 117 error = e; 118 } 119 } 120 } 121 122 protected void setUp() 123 { 124 System.setProperty("org.jboss.security.SecurityAssociation.ThreadLocal", "true"); 125 SecurityAssociation.setServer(); 126 } 127 } 128 | Popular Tags |