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