mx4j/src/test/test/javax/management/remote JMXConnectorInvocationTestCase.java,1.3,1.4

Simone Bordet <[email protected]>
Newsgroups gmane.comp.java.mx4j.cvs
Message-ID <[email protected]>
Update of /cvsroot/mx4j/mx4j/src/test/test/javax/management/remote
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21000/src/test/test/javax/management/remote

Modified Files:
	JMXConnectorInvocationTestCase.java 
Log Message:
More tests for authenticated and delegated subject

Index: JMXConnectorInvocationTestCase.java
===================================================================
RCS file: /cvsroot/mx4j/mx4j/src/test/test/javax/management/remote/JMXConnectorInvocationTestCase.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** JMXConnectorInvocationTestCase.java	25 Dec 2003 22:31:02 -0000	1.3
--- JMXConnectorInvocationTestCase.java	22 Jul 2004 17:19:51 -0000	1.4
***************
*** 11,19 ****
  import java.io.IOException;
  import java.net.MalformedURLException;
  import java.util.Map;
  import java.util.Set;
- 
  import javax.management.Attribute;
  import javax.management.AttributeList;
  import javax.management.MBeanException;
  import javax.management.MBeanInfo;
--- 11,23 ----
  import java.io.IOException;
  import java.net.MalformedURLException;
+ import java.security.AccessController;
+ import java.util.Collections;
+ import java.util.HashSet;
  import java.util.Map;
  import java.util.Set;
  import javax.management.Attribute;
  import javax.management.AttributeList;
+ import javax.management.AttributeNotFoundException;
+ import javax.management.InstanceNotFoundException;
  import javax.management.MBeanException;
  import javax.management.MBeanInfo;
***************
*** 23,39 ****
  import javax.management.ObjectInstance;
  import javax.management.ObjectName;
- import javax.management.AttributeNotFoundException;
- import javax.management.InstanceNotFoundException;
  import javax.management.RuntimeMBeanException;
  import javax.management.remote.JMXConnector;
  import javax.management.remote.JMXConnectorFactory;
  import javax.management.remote.JMXConnectorServer;
  import javax.management.remote.JMXConnectorServerFactory;
  import javax.management.remote.JMXServiceURL;
  
  import test.MX4JTestCase;
  
  /**
-  *
   * @author <a href="mailto:[email protected]">Simone Bordet</a>
   * @version $Revision$
--- 27,43 ----
  import javax.management.ObjectInstance;
  import javax.management.ObjectName;
  import javax.management.RuntimeMBeanException;
+ import javax.management.remote.JMXAuthenticator;
  import javax.management.remote.JMXConnector;
  import javax.management.remote.JMXConnectorFactory;
  import javax.management.remote.JMXConnectorServer;
  import javax.management.remote.JMXConnectorServerFactory;
+ import javax.management.remote.JMXPrincipal;
  import javax.management.remote.JMXServiceURL;
+ import javax.security.auth.Subject;
  
  import test.MX4JTestCase;
  
  /**
   * @author <a href="mailto:[email protected]">Simone Bordet</a>
   * @version $Revision$
***************
*** 69,97 ****
     public void testCallToMBeanServerWithAttributeNotFoundException() throws Exception
     {
!       JMXConnectorServer cntorServer = null;
!       JMXConnector cntor = null;
        try
        {
!          JMXServiceURL url = createJMXConnectorServerAddress();
!          MBeanServer server = newMBeanServer();
!          cntorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, getEnvironment(), server);
!          cntorServer.start();
! 
!          cntor = JMXConnectorFactory.connect(cntorServer.getAddress(), getEnvironment());
!          MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
!          try
!          {
!             // The attribute does not exist
!             mbsc.getAttribute(new ObjectName("JMImplementation:type=MBeanServerDelegate"), "dummy");
!             fail();
!          }
!          catch (AttributeNotFoundException e)
!          {
!          }
        }
!       finally
        {
-          if (cntor != null) cntor.close();
-          if (cntorServer != null) cntorServer.stop();
        }
     }
--- 73,85 ----
     public void testCallToMBeanServerWithAttributeNotFoundException() throws Exception
     {
!       MBeanServerConnection mbsc = getMBeanServerConnection(newMBeanServer());
        try
        {
!          // The attribute does not exist
!          mbsc.getAttribute(new ObjectName("JMImplementation:type=MBeanServerDelegate"), "dummy");
!          fail();
        }
!       catch (AttributeNotFoundException e)
        {
        }
     }
***************
*** 99,127 ****
     public void testCallToMBeanServerWithInstanceNotFoundException() throws Exception
     {
!       JMXConnectorServer cntorServer = null;
!       JMXConnector cntor = null;
        try
        {
!          JMXServiceURL url = createJMXConnectorServerAddress();
!          MBeanServer server = newMBeanServer();
!          cntorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, getEnvironment(), server);
!          cntorServer.start();
! 
!          cntor = JMXConnectorFactory.connect(cntorServer.getAddress(), getEnvironment());
!          MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
!          try
!          {
!             // The mbean does not exist
!             mbsc.getAttribute(new ObjectName(":type=dummy"), "ImplementationVersion");
!             fail();
!          }
!          catch (InstanceNotFoundException x)
!          {
!          }
        }
!       finally
        {
-          if (cntor != null) cntor.close();
-          if (cntorServer != null) cntorServer.stop();
        }
     }
--- 87,99 ----
     public void testCallToMBeanServerWithInstanceNotFoundException() throws Exception
     {
!       MBeanServerConnection mbsc = getMBeanServerConnection(newMBeanServer());
        try
        {
!          // The mbean does not exist
!          mbsc.getAttribute(new ObjectName(":type=dummy"), "ImplementationVersion");
!          fail();
        }
!       catch (InstanceNotFoundException x)
        {
        }
     }
***************
*** 235,239 ****
  
        String value = "value";
!       String result = (String)mbsc.invoke(name, "echo", new Object[] {value}, new String[] {String.class.getName()});
        assertNotNull(result);
        assertEquals(result, value);
--- 207,211 ----
  
        String value = "value";
!       String result = (String)mbsc.invoke(name, "echo", new Object[]{value}, new String[]{String.class.getName()});
        assertNotNull(result);
        assertEquals(result, value);
***************
*** 370,373 ****
--- 342,411 ----
     }
  
+    public void testAuthenticatedInvoke() throws Exception
+    {
+       final String principalName = "authenticatedPrincipal";
+ 
+       JMXServiceURL url = createJMXConnectorServerAddress();
+       Map serverEnv = getEnvironment();
+       serverEnv.put(JMXConnectorServer.AUTHENTICATOR, new JMXAuthenticator()
+       {
+          public Subject authenticate(Object credentials) throws SecurityException
+          {
+             Set principals = new HashSet();
+             principals.add(new JMXPrincipal(principalName));
+             return new Subject(true, principals, Collections.EMPTY_SET, Collections.EMPTY_SET);
+          }
+       });
+       JMXConnectorServer cntorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, serverEnv, newMBeanServer());
+       cntorServer.start();
+ 
+       Map clientEnv = getEnvironment();
+       clientEnv.put(JMXConnector.CREDENTIALS, new String[0]);
+ 
+       JMXConnector cntor = JMXConnectorFactory.connect(cntorServer.getAddress(), clientEnv);
+       MBeanServerConnection mbsc = cntor.getMBeanServerConnection();
+ 
+       ObjectName name = ObjectName.getInstance("", "test", "invocation");
+       ObjectInstance instance = mbsc.createMBean(Support.class.getName(), name, null);
+       assertNotNull(instance);
+ 
+       Boolean result = (Boolean)mbsc.invoke(name, "authenticated", new Object[]{principalName}, new String[]{String.class.getName()});
+       assertTrue(result.booleanValue());
+    }
+ 
+    public void testDelegatedInvoke() throws Exception
+    {
+       JMXServiceURL url = createJMXConnectorServerAddress();
+       Map serverEnv = getEnvironment();
+       serverEnv.put(JMXConnectorServer.AUTHENTICATOR, new JMXAuthenticator()
+       {
+          public Subject authenticate(Object credentials) throws SecurityException
+          {
+             Set principals = new HashSet();
+             principals.add(new JMXPrincipal("authenticatedPrincipal"));
+             return new Subject(true, principals, Collections.EMPTY_SET, Collections.EMPTY_SET);
+          }
+       });
+       JMXConnectorServer cntorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, serverEnv, newMBeanServer());
+       cntorServer.start();
+ 
+       Map clientEnv = getEnvironment();
+       clientEnv.put(JMXConnector.CREDENTIALS, new String[0]);
+ 
+       JMXConnector cntor = JMXConnectorFactory.connect(cntorServer.getAddress(), clientEnv);
+       Set principals = new HashSet();
+       String delegatedName = "delegatedPrincipal";
+       principals.add(new JMXPrincipal(delegatedName));
+       Subject delegate = new Subject(true, principals, Collections.EMPTY_SET, Collections.EMPTY_SET);
+       MBeanServerConnection mbsc = cntor.getMBeanServerConnection(delegate);
+ 
+       ObjectName name = ObjectName.getInstance("", "test", "invocation");
+       ObjectInstance instance = mbsc.createMBean(Support.class.getName(), name, null);
+       assertNotNull(instance);
+ 
+       Boolean result = (Boolean)mbsc.invoke(name, "delegated", new Object[]{delegatedName}, new String[]{String.class.getName()});
+       assertTrue(result.booleanValue());
+    }
+ 
     public static class SupportException extends Exception
     {
***************
*** 377,384 ****
--- 415,430 ----
     {
        public String getName();
+ 
        public void setName(String name);
+ 
        public void throwCustomException() throws SupportException;
+ 
        public void throwRuntimeException() throws IllegalArgumentException;
+ 
        public String echo(String argument);
+ 
+       public boolean authenticated(String name);
+ 
+       public boolean delegated(String name);
     }
  
***************
*** 420,423 ****
--- 466,485 ----
           return argument;
        }
+ 
+       public boolean authenticated(String name)
+       {
+          Subject subject = Subject.getSubject(AccessController.getContext());
+          if (subject == null) return false;
+          Set principals = subject.getPrincipals();
+          return principals.contains(new JMXPrincipal(name));
+       }
+ 
+       public boolean delegated(String name)
+       {
+          Subject subject = Subject.getSubject(AccessController.getContext());
+          if (subject == null) return false;
+          Set principals = subject.getPrincipals();
+          return principals.contains(new JMXPrincipal(name));
+       }
     }
  }



-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.