[jboss-cvs] JBossAS SVN: r84304 - in projects/aop/trunk: asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Feb 17 07:44:29 EST 2009


Author: kabir.khan at jboss.com
Date: 2009-02-17 07:44:29 -0500 (Tue, 17 Feb 2009)
New Revision: 84304

Added:
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java
Modified:
   projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java
   projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
   projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java
Log:
[JBAOP-666] Turn on security for the tests

Modified: projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java	2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java	2009-02-17 12:44:29 UTC (rev 84304)
@@ -77,7 +77,11 @@
    
    public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
    {
-      return new ClassPoolTestDelegate(clazz);
+      AbstractTestDelegate delegate = new ClassPoolTestDelegate(clazz);
+      String property = System.getProperty("jboss.aop.secure", "true");
+      boolean enableSecurity = Boolean.valueOf(property).booleanValue();
+      delegate.enableSecurity = enableSecurity;
+      return delegate;
    }
 
    protected static ClassPoolDomain createClassPoolDomain(String name, ClassPoolDomain parent, boolean parentFirst)

Modified: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java	2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java	2009-02-17 12:44:29 UTC (rev 84304)
@@ -107,7 +107,11 @@
 
    public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
    {
-      return new UclClassPoolTestDelegate(clazz);
+      AbstractTestDelegate delegate = new UclClassPoolTestDelegate(clazz);
+      String property = System.getProperty("jboss.aop.secure", "true");
+      boolean enableSecurity = Boolean.valueOf(property).booleanValue();
+      delegate.enableSecurity = enableSecurity;
+      return delegate;
    }
    
    protected static URL getURLRelativeToProjectRoot(String relativePath)

Added: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java	2009-02-17 12:44:29 UTC (rev 84304)
@@ -0,0 +1,118 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.classpool.jbosscl.support;
+
+import java.security.CodeSource;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.SecurityPermission;
+import java.util.Enumeration;
+import java.util.PropertyPermission;
+
+import org.jboss.test.security.TestsPolicyPlugin;
+
+/**
+ * The original TestPolicyPlugin reuses the underlying PermissionCollection. This causes problems
+ * for tests creating several ProtectionDomains, since the ProtectionDomain's constructor 
+ * marks the PolicyCollection as read-only so we get errors
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AlwaysWritablePermissionCollectionTestPolicyPlugin extends TestsPolicyPlugin
+{
+   public AlwaysWritablePermissionCollectionTestPolicyPlugin(Class<?> clazz)
+   {
+      super(clazz);
+   }
+
+   public synchronized PermissionCollection getPermissions(CodeSource codesource)
+   {
+      return new AlwaysWritablePermissionCollection(super.getPermissions(codesource));
+   }
+   
+   public static void initialisePlugin()
+   {
+      System.setProperty("org.jboss.test.security.PolicyPlugin", AlwaysWritablePermissionCollectionTestPolicyPlugin.class.getName());
+   }
+   
+   public static void cleanupPlugin()
+   {
+      System.clearProperty("org.jboss.test.security.PolicyPlugin");
+   }
+   
+   private static class AlwaysWritablePermissionCollection extends PermissionCollection
+   {
+      private static final long serialVersionUID = 1L;
+      
+      volatile PermissionCollection lastDelegate;
+      volatile PermissionCollection delegate;
+      
+      final static Permission GET_POLICY = new SecurityPermission("getPolicy");
+      final static Permission PARENT_PKGS = new PropertyPermission("jboss.test.parent.pkgs", "read");
+      
+      private AlwaysWritablePermissionCollection(PermissionCollection delegate)
+      {
+         this.delegate = delegate;
+      }
+
+      public void add(Permission permission)
+      {
+         delegate.add(permission);
+      }
+
+      public Enumeration<Permission> elements()
+      {
+         return delegate.elements();
+      }
+
+      public boolean equals(Object obj)
+      {
+         return delegate.equals(obj);
+      }
+
+      public int hashCode()
+      {
+         return delegate.hashCode();
+      }
+
+      public boolean implies(Permission permission)
+      {
+         return delegate.implies(permission);
+      }
+
+      public boolean isReadOnly()
+      {
+         return delegate.isReadOnly();
+      }
+
+      public void setReadOnly()
+      {
+         //ignore
+      }
+
+      public String toString()
+      {
+         return delegate.toString();
+      }
+   }
+}

Added: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java	                        (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java	2009-02-17 12:44:29 UTC (rev 84304)
@@ -0,0 +1,53 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.classpool.jbosscl.test;
+
+import org.jboss.test.aop.classpool.jbosscl.support.AlwaysWritablePermissionCollectionTestPolicyPlugin;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate extends JBossClClassPoolTestDelegate
+{
+   public AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate(Class<?> clazz) throws Exception
+   {
+      super(clazz);
+   }
+
+   @Override
+   protected void setUpSecurity() throws Exception
+   {
+      AlwaysWritablePermissionCollectionTestPolicyPlugin.initialisePlugin();
+      super.setUpSecurity();
+   }
+
+   @Override
+   public void tearDownSecurity() throws Exception
+   {
+      super.tearDownSecurity();
+      AlwaysWritablePermissionCollectionTestPolicyPlugin.cleanupPlugin();
+   }
+
+   
+}

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java	2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java	2009-02-17 12:44:29 UTC (rev 84304)
@@ -21,18 +21,13 @@
 */
 package org.jboss.test.aop.classpool.jbosscl.test;
 
-import java.lang.instrument.IllegalClassFormatException;
 import java.lang.reflect.Method;
 import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.security.ProtectionDomain;
 import java.util.Collection;
 
-import org.jboss.aop.AspectManager;
-import org.jboss.aop.classpool.AOPClassPool;
-import org.jboss.aop.classpool.AOPClassPoolRepository;
-import org.jboss.classloading.spi.DomainClassLoader;
-import org.jboss.util.loading.Translator;
-
 import javassist.ClassPool;
 import javassist.CodeConverter;
 import javassist.CtClass;
@@ -43,6 +38,13 @@
 import javassist.Modifier;
 import junit.framework.Test;
 
+import org.jboss.aop.AspectManager;
+import org.jboss.aop.classpool.AOPClassPool;
+import org.jboss.aop.classpool.AOPClassPoolRepository;
+import org.jboss.classloading.spi.DomainClassLoader;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.util.loading.Translator;
+
 /**
  * Test that field/constructor wrapper replacement works since there were some problems in AS5
  * 
@@ -83,6 +85,11 @@
       return suite(ClassPoolWithReplaceReferencesTestCase.class);
    }
 
+   public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+   {
+      return new AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate(clazz);
+   }
+   
    public void testParentLoadedParentDelegation() throws Exception
    {
       ClassPool globalPool = null;
@@ -297,12 +304,18 @@
          }
       }
 
-      private void replaceReferences(CtClass clazz) throws Exception
+      private void replaceReferences(final CtClass clazz) throws Exception
       {
          CodeConverter conv = new CodeConverter();
          AOPClassPool pool = AOPClassPool
                .createAOPClassPool(clazz.getClassPool(), AOPClassPoolRepository.getInstance());
-         Collection<String> refs = clazz.getRefClasses();
+         Collection<String> refs = AccessController.doPrivileged(new PrivilegedAction<Collection<String>>() {
+
+            public Collection<String> run()
+            {
+               return clazz.getRefClasses();
+            }});
+         
          for (String ref : refs)
          {
             if (ref.startsWith(PACKAGE_REPLACEMENT_CHILD) || ref.startsWith(PACKAGE_REPLACEMENT_PARENT))

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java	2009-02-17 12:44:29 UTC (rev 84304)
@@ -155,11 +155,13 @@
       super(name);
    }
 
+
    public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
    {
       return new JBossClClassPoolTestDelegate(clazz);
    }
    
+
    protected static URL getURLRelativeToProjectRoot(String relativePath)
    {
       try

Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java	2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java	2009-02-17 12:44:29 UTC (rev 84304)
@@ -34,5 +34,8 @@
    public JBossClClassPoolTestDelegate(Class<?> clazz) throws Exception
    {
       super(clazz);
+      String property = System.getProperty("jboss.aop.secure", "true");
+      boolean enableSecurity = Boolean.valueOf(property).booleanValue();
+      this.enableSecurity = enableSecurity;
    }
 }




More information about the jboss-cvs-commits mailing list