/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, 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.security.test;
import java.rmi.RemoteException;
import java.lang.reflect.Method;
import javax.security.jacc.EJBMethodPermission;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
import javax.ejb.EJBObject;
import junit.framework.TestCase;
/** Tests of the JAAC EJB*Permissions
*
* @author Scott.Stark@jboss.org
* @author Anil.Saldhana@jboss.org
* @version $Revision: 81036 $
*/
public class EJBPermissionUnitTestCase
extends TestCase
{
static interface AHome extends EJBHome
{
public void create() throws CreateException, RemoteException;
}
static interface ARemote extends EJBObject
{
public void methodX() throws RemoteException;
public void methodX(int x) throws RemoteException;
}
public EJBPermissionUnitTestCase(String name)
{
super(name);
}
/** Tests of the EJBMethodPermission(String name, String actions)
* @throws Exception
*/
public void testCtor1() throws Exception
{
EJBMethodPermission p = new EJBMethodPermission("someEJB", null);
String actions = p.getActions();
assertTrue("actions("+actions+") == null", actions == null);
p = new EJBMethodPermission("someEJB", "methodX");
actions = p.getActions();
assertTrue("actions("+actions+") == methodX", actions.equals("methodX"));
p = new EJBMethodPermission("someEJB", "methodX,,int");
actions = p.getActions();
assertTrue("actions("+actions+") == methodX,,int",
actions.equals("methodX,,int"));
p = new EJBMethodPermission("someEJB", "methodX,ServiceEndpoint,int");
actions = p.getActions();
assertTrue("actions("+actions+") == methodX,ServiceEndpoint,int",
actions.equals("methodX,ServiceEndpoint,int"));
p = new EJBMethodPermission("someEJB", "methodX,ServiceEndpoint,");
actions = p.getActions();
assertTrue("actions("+actions+") == methodX,ServiceEndpoint,",
actions.equals("methodX,ServiceEndpoint,"));
}
/** Tests of EJBMethodPermission(String ejbName, String methodInterface, Method method)
*
* @throws Exception
*/
public void testCtor2() throws Exception
{
Class[] createSig = {};
Method method = AHome.class.getMethod("create", createSig);
EJBMethodPermission p = new EJBMethodPermission("someEJB", "Home", method);
String actions = p.getActions();
assertTrue("actions("+actions+") == create,Home,",
actions.equals("create,Home,"));
Class[] methodXSig = {int.class};
Method methodX = ARemote.class.getMethod("methodX", methodXSig);
p = new EJBMethodPermission("someEJB", "Remote", methodX);
actions = p.getActions();
assertTrue("actions("+actions+") == create,Home,",
actions.equals("methodX,Remote,int"));
}
/** Tests of EJBMethodPermission(String ejbName, String methodName,
String methodInterface, String[] methodParams)
@throws Exception
*/
public void testCtor3() throws Exception
{
String methodName = null;
String methodInterface = null;
String[] methodParams = null;
EJBMethodPermission p = new EJBMethodPermission("someEJB", methodName,
methodInterface, methodParams);
String actions = p.getActions();
assertTrue("actions("+actions+") == null", actions == null);
methodName = "methodX";
methodInterface = null;
methodParams = null;
p = new EJBMethodPermission("someEJB", methodName,
methodInterface, methodParams);
actions = p.getActions();
assertTrue("actions("+actions+") == methodX", actions.equals("methodX"));
methodName = "methodX";
methodInterface = null;
methodParams = new String[0];
p = new EJBMethodPermission("someEJB", methodName,
methodInterface, methodParams);
actions = p.getActions();
assertTrue("actions("+actions+") == methodX,,", actions.equals("methodX,,"));
methodName = "methodX";
methodInterface = null;
methodParams = new String[]{"int"};
p = new EJBMethodPermission("someEJB", methodName,
methodInterface, methodParams);
actions = p.getActions();
assertTrue("actions("+actions+") == methodX,,int",
actions.equals("methodX,,int"));
methodName = "methodX";
methodInterface = "ServiceEndpoint";
methodParams = new String[]{"int"};
p = new EJBMethodPermission("someEJB", methodName,
methodInterface, methodParams);
actions = p.getActions();
assertTrue("actions("+actions+") == methodX,ServiceEndpoint,int",
actions.equals("methodX,ServiceEndpoint,int"));
}
public void testImpliesPermission() throws Exception
{
EJBMethodPermission p0 = new EJBMethodPermission("someEJB", null);
EJBMethodPermission p1 = new EJBMethodPermission("someEJB", "methodX");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", null);
p1 = new EJBMethodPermission("someEJB", "methodX,Remote");
assertTrue("p0.implies(p1)", p0.implies(p1));
p1 = new EJBMethodPermission("someEJB", "methodX,Remote,");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX,Remote");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", null);
p1 = new EJBMethodPermission("someEJB", "methodX,Local,int,java.lang.String");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX,,int,java.lang.String");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX,Local");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", ",,int,java.lang.String");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX,Local,int,java.lang.String");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX,Local,int,java.lang.String");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("someEJB", "methodX");
p1 = new EJBMethodPermission("someEJB", "methodX,,");
assertTrue("p0.implies(p1)", p0.implies(p1));
p0 = new EJBMethodPermission("ejbName", null, null, new String[0]);
p1 = new EJBMethodPermission("ejbName", "create", dummyInterface.class.getMethods()[0]);
assertTrue("p0.implies(p1)", p0.implies(p1));
}
public void testNotImpliesPermission() throws Exception
{
EJBMethodPermission p0 = new EJBMethodPermission("someEJB", "methodX");
EJBMethodPermission p1 = new EJBMethodPermission("someEJB", null);
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", "methodX");
p1 = new EJBMethodPermission("someEJB", "methodY");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", "methodX,,");
p1 = new EJBMethodPermission("someEJB", "methodX");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", "methodX,Local");
p1 = new EJBMethodPermission("someEJB", "methodX,Remote");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", "methodX,,int");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", "methodX,Remote");
p1 = new EJBMethodPermission("someEJB", "methodX,Local,int,java.lang.String");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", "methodX,Local,int");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", "methodX,,float,java.lang.String");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("someEJB", ",,int,java.lang.String2");
assertTrue("! p0.implies(p1)", p0.implies(p1) == false);
p0 = new EJBMethodPermission("ejbName", null, null, new String[0]);
p1 = new EJBMethodPermission("ejbName", "a", "LocalHome",
new String[]{"java.lang.String"});
assertTrue("!p0.implies(p1)", p0.implies(p1) == false);
}
public interface dummyInterface { void noop(); }
}