1 22 package org.jboss.test.jmx.test; 23 24 import javax.management.Attribute ; 25 import javax.management.MBeanServerConnection ; 26 import javax.management.ObjectName ; 27 import javax.naming.InitialContext ; 28 import javax.naming.Name ; 29 30 import junit.framework.Test; 31 import junit.framework.TestSuite; 32 33 import org.jboss.security.SecurityAssociation; 34 import org.jboss.security.SimplePrincipal; 35 import org.jboss.test.JBossTestCase; 36 import org.jboss.test.jmx.xmbean.CustomType; 37 import org.jnp.interfaces.Naming; 38 39 46 public class DeployXMBeanUnitTestCase extends JBossTestCase 47 { 48 private final static String PACKAGE_NAME = "user-xmbean.sar"; 49 50 public DeployXMBeanUnitTestCase(String name) 51 { 52 super(name); 53 } 54 55 public static Test suite() throws Exception 56 { 57 TestSuite suite = new TestSuite(); 60 suite.addTest(new DeployXMBeanUnitTestCase("testDeployXdocletUserXMBean")); 61 suite.addTest(new DeployXMBeanUnitTestCase("testGeneratedAVCFromWrappedStandardMBeanImpl")); 62 suite.addTest(new DeployXMBeanUnitTestCase("testDeployUserXMBean")); 63 suite.addTest(new DeployXMBeanUnitTestCase("testDeployUserEmbeddedDescriptorXMBean")); 64 suite.addTest(new DeployXMBeanUnitTestCase("testUserXMBeanValues")); 65 suite.addTest(new DeployXMBeanUnitTestCase("testUserXMBeanPersistentValues")); 66 suite.addTest(new DeployXMBeanUnitTestCase("testUserXMBeanPersistentValuesWithCustomPM")); 67 suite.addTest(new DeployXMBeanUnitTestCase("testSecuredXMBean")); 68 suite.addTest(new DeployXMBeanUnitTestCase("testSecuredJndiXMBean")); 69 suite.addTest(new DeployXMBeanUnitTestCase("testPersistentJndiXMBean")); 70 suite.addTest(new DeployXMBeanUnitTestCase("testXMBeanExternalEntityImport")); 71 72 return suite; 73 } 74 75 78 public void testDeployXdocletUserXMBean() throws Exception 79 { 80 getLog().info("+++ testDeployXdocletUserXMBean"); 81 ObjectName userName = new ObjectName ("jboss.test:service=xmbean-user"); 82 MBeanServerConnection server = getServer(); 83 try 84 { 85 deploy(PACKAGE_NAME); 86 getLog().info("Testing "+userName); 87 88 boolean isRegistered = server.isRegistered(userName); 89 assertTrue(userName+" is registered", isRegistered); 90 server.setAttribute(userName, new Attribute ("ArtificialAttribute", "test-value")); 91 String actual = (String )server.getAttribute(userName, "ArtificialAttribute"); 92 assertTrue("ArtificialAttribute should be 'test-value' rather than " + actual, "test-value".equals(actual)); 93 } 94 finally 95 { 96 undeploy(PACKAGE_NAME); 97 } } 99 100 104 public void testGeneratedAVCFromWrappedStandardMBeanImpl() throws Exception 105 { 106 getLog().info("+++ testGeneratedAVCFromWrappedStandardMBeanImpl"); 107 String module = "listener-xmbean.sar"; 108 ObjectName target = new ObjectName ("jboss.test:service=self-listener-xmbean"); 109 MBeanServerConnection server = getServer(); 110 try 111 { 112 deploy(module); 113 getLog().info("Testing " + target); 114 115 boolean isRegistered = server.isRegistered(target); 116 assertTrue(target + " is registered", isRegistered); 117 118 server.setAttribute(target, new Attribute ("Attr1", Boolean.TRUE)); 119 120 Boolean gotAttr1AVC = (Boolean )server.getAttribute(target, "GotAttr1AVC"); 121 assertTrue("XMBean got an AVC for the attribute change: " + gotAttr1AVC.booleanValue(), 122 gotAttr1AVC.booleanValue()); 123 } 124 finally 125 { 126 undeploy(module); 127 } 128 } 129 130 133 public void testDeployUserXMBean() throws Exception 134 { 135 getLog().info("+++ testDeployUserXMBean"); 136 ObjectName user2Name = new ObjectName ("jboss.test:service=xmbean-user2"); 137 MBeanServerConnection server = getServer(); 138 try 139 { 140 deploy(PACKAGE_NAME); 141 getLog().info("Testing "+user2Name); 142 assertTrue(user2Name+" is registered", server.isRegistered(user2Name)); 143 144 String attr1 = (String ) server.getAttribute(user2Name, "Attr1"); 146 getLog().info("Attr1: "+attr1); 147 assertTrue("Attr1 == attr1-string", attr1.equals("attr1-string")); 148 Attribute attr1Info = new Attribute ("Attr1", "attr1-string#2"); 149 server.setAttribute(user2Name, attr1Info); 150 attr1 = (String ) server.getAttribute(user2Name, "Attr1"); 151 assertTrue("Attr1 == attr1-string#2", attr1.equals("attr1-string#2")); 152 153 Integer attr2 = (Integer ) server.getAttribute(user2Name, "Attr2"); 155 getLog().info("Attr2: "+attr2); 156 assertTrue("Attr2 == 15", attr2.intValue() == 15); 157 Attribute attr2Info = new Attribute ("Attr2", new Integer (51)); 158 server.setAttribute(user2Name, attr2Info); 159 attr2 = (Integer ) server.getAttribute(user2Name, "Attr2"); 160 assertTrue("Attr2 == 51", attr2.intValue() == 51); 161 162 CustomType attr3 = (CustomType) server.getAttribute(user2Name, "Attr3"); 164 getLog().info("Attr3: "+attr3); 165 assertTrue("Attr3 == 15", attr3.toString().equals("{10.20}")); 166 Attribute attr3Info = new Attribute ("Attr3", new CustomType(11, 22)); 167 server.setAttribute(user2Name, attr3Info); 168 attr3 = (CustomType) server.getAttribute(user2Name, "Attr3"); 169 assertTrue("Attr3 == 51", attr3.toString().equals("{11.22}")); 170 171 Integer hash = (Integer ) server.getAttribute(user2Name, "HashCode"); 173 getLog().info("HashCode: "+hash); 174 Attribute hashInfo = new Attribute ("HashCode", new Integer (12345)); 175 try 176 { 177 server.setAttribute(user2Name, hashInfo); 178 fail("Was able to set HashCode attribute"); 179 } 180 catch(Exception e) 181 { 182 getLog().info("set HashCode attribute failed as expected", e); 183 } 184 185 Double pi = (Double ) server.getAttribute(user2Name, "Pi"); 187 getLog().info("Pi: "+pi); 188 assertTrue("Pi == 3.14159", pi.doubleValue() == 3.14159); 189 Attribute piInfo = new Attribute ("Pi", new Double (7.654321)); 190 try 191 { 192 server.setAttribute(user2Name, piInfo); 193 fail("Was able to set Pi attribute"); 194 } 195 catch(Exception e) 196 { 197 getLog().info("set Pi attribute failed as expected", e); 198 } 199 200 ObjectName defaultSecMgr = new ObjectName ("jboss.security:service=JaasSecurityManager"); 202 ObjectName secMgr = (ObjectName ) server.getAttribute(user2Name, "SecMgr"); 203 getLog().info("SecMgr: "+secMgr); 204 assertTrue("SecMgr == jboss.security:service=JaasSecurityManager", secMgr.equals(defaultSecMgr)); 205 ObjectName newSecMgr = new ObjectName ("jboss.security:service=JaasSecMgr2"); 206 Attribute secMgrInfo = new Attribute ("SecMgr", newSecMgr); 207 server.setAttribute(user2Name, secMgrInfo); 208 secMgr = (ObjectName ) server.getAttribute(user2Name, "SecMgr"); 209 assertTrue("SecMgr == jboss.security:service=JaasSecMgr2", secMgr.equals(newSecMgr)); 210 211 Object [] noopArgs = {}; 212 String [] noopSig = {}; 213 server.invoke(user2Name, "noop", noopArgs, noopSig); 214 215 Object [] echoArgs = {"testDeployUserXMBean"}; 216 String [] echoSig = {"java.lang.String"}; 217 String rtn = (String ) server.invoke(user2Name, "echoDate", echoArgs, echoSig); 218 getLog().info("echoDate: "+rtn); 219 } 220 finally 221 { 222 undeploy(PACKAGE_NAME); 223 } } 225 226 230 public void testDeployUserEmbeddedDescriptorXMBean() throws Exception 231 { 232 getLog().info("+++ testDeployUserEmbeddedDescriptorXMBean"); 233 ObjectName user2Name = new ObjectName ("jboss.test:service=xmbean-user2"); 234 MBeanServerConnection server = getServer(); 235 try 236 { 237 deploy("user2-xmbean-embedded.sar"); 238 getLog().info("Testing "+user2Name); 239 assertTrue(user2Name+" is registered", server.isRegistered(user2Name)); 240 241 String attr1 = (String ) server.getAttribute(user2Name, "Attr1"); 243 getLog().info("Attr1: "+attr1); 244 assertTrue("Attr1 == attr1-string", attr1.equals("attr1-string")); 245 Attribute attr1Info = new Attribute ("Attr1", "attr1-string#2"); 246 server.setAttribute(user2Name, attr1Info); 247 attr1 = (String ) server.getAttribute(user2Name, "Attr1"); 248 assertTrue("Attr1 == attr1-string#2", attr1.equals("attr1-string#2")); 249 250 Integer attr2 = (Integer ) server.getAttribute(user2Name, "Attr2"); 252 getLog().info("Attr2: "+attr2); 253 assertTrue("Attr2 == 15", attr2.intValue() == 15); 254 Attribute attr2Info = new Attribute ("Attr2", new Integer (51)); 255 server.setAttribute(user2Name, attr2Info); 256 attr2 = (Integer ) server.getAttribute(user2Name, "Attr2"); 257 assertTrue("Attr2 == 51", attr2.intValue() == 51); 258 259 CustomType attr3 = (CustomType) server.getAttribute(user2Name, "Attr3"); 261 getLog().info("Attr3: "+attr3); 262 assertTrue("Attr3 == 15", attr3.toString().equals("{10.20}")); 263 Attribute attr3Info = new Attribute ("Attr3", new CustomType(11, 22)); 264 server.setAttribute(user2Name, attr3Info); 265 attr3 = (CustomType) server.getAttribute(user2Name, "Attr3"); 266 assertTrue("Attr3 == 51", attr3.toString().equals("{11.22}")); 267 268 Integer hash = (Integer ) server.getAttribute(user2Name, "HashCode"); 270 getLog().info("HashCode: "+hash); 271 Attribute hashInfo = new Attribute ("HashCode", new Integer (12345)); 272 try 273 { 274 server.setAttribute(user2Name, hashInfo); 275 fail("Was able to set HashCode attribute"); 276 } 277 catch(Exception e) 278 { 279 getLog().info("set HashCode attribute failed as expected", e); 280 } 281 282 Double pi = (Double ) server.getAttribute(user2Name, "Pi"); 284 getLog().info("Pi: "+pi); 285 assertTrue("Pi == 3.14159", pi.doubleValue() == 3.14159); 286 Attribute piInfo = new Attribute ("Pi", new Double (7.654321)); 287 try 288 { 289 server.setAttribute(user2Name, piInfo); 290 fail("Was able to set Pi attribute"); 291 } 292 catch(Exception e) 293 { 294 getLog().info("set Pi attribute failed as expected", e); 295 } 296 297 ObjectName defaultSecMgr = new ObjectName ("jboss.security:service=JaasSecurityManager"); 299 ObjectName secMgr = (ObjectName ) server.getAttribute(user2Name, "SecMgr"); 300 getLog().info("SecMgr: "+secMgr); 301 assertTrue("SecMgr == jboss.security:service=JaasSecurityManager", secMgr.equals(defaultSecMgr)); 302 ObjectName newSecMgr = new ObjectName ("jboss.security:service=JaasSecMgr2"); 303 Attribute secMgrInfo = new Attribute ("SecMgr", newSecMgr); 304 server.setAttribute(user2Name, secMgrInfo); 305 secMgr = (ObjectName ) server.getAttribute(user2Name, "SecMgr"); 306 assertTrue("SecMgr == jboss.security:service=JaasSecMgr2", secMgr.equals(newSecMgr)); 307 308 Object [] noopArgs = {}; 309 String [] noopSig = {}; 310 server.invoke(user2Name, "noop", noopArgs, noopSig); 311 312 Object [] echoArgs = {"testDeployUserXMBean"}; 313 String [] echoSig = {"java.lang.String"}; 314 String rtn = (String ) server.invoke(user2Name, "echoDate", echoArgs, echoSig); 315 getLog().info("echoDate: "+rtn); 316 } 317 finally 318 { 319 undeploy("user2-xmbean-embedded.sar"); 320 } } 322 323 326 public void testUserXMBeanValues() throws Exception 327 { 328 getLog().info("+++ testUserXMBeanValues"); 329 try 330 { 331 ObjectName user2Name1 = new ObjectName ("jboss.test:service=xmbean-user2,version=values1"); 332 MBeanServerConnection server = getServer(); 333 deploy("user2-xmbean.sar"); 334 getLog().info("Testing "+user2Name1); 335 assertTrue(user2Name1+" is registered", server.isRegistered(user2Name1)); 336 String value = (String ) server.getAttribute(user2Name1, "Attr1"); 337 assertTrue("value == Att1InitialValue, value="+value, value.equals("Att1InitialValue")); 338 } 339 finally 340 { 341 undeploy("user2-xmbean.sar"); 342 } 343 } 344 345 348 public void testUserXMBeanPersistentValues() throws Exception 349 { 350 getLog().info("+++ testUserXMBeanPersistentValues"); 351 MBeanServerConnection server = getServer(); 352 deploy("RemoveUser2Store.bsh"); 354 355 ObjectName user2Name2 = new ObjectName ("jboss.test:service=xmbean-user2,version=values2"); 356 try 357 { 358 deploy("user2-xmbean.sar"); 359 log.info("Testing "+user2Name2); 360 assertTrue(user2Name2+" is registered", server.isRegistered(user2Name2)); 361 String value = (String ) server.getAttribute(user2Name2, "Attr1"); 362 assertTrue("value == Att1InitialValue, value="+value, value.equals("Att1InitialValue")); 363 log.info("Initial Attr1 value: "+value); 364 Attribute attr1 = new Attribute ("Attr1", "UpdatedAttr1Value"); 366 server.setAttribute(user2Name2, attr1); 367 undeploy("user2-xmbean.sar"); 369 deploy("user2-xmbean.sar"); 371 value = (String ) server.getAttribute(user2Name2, "Attr1"); 372 assertTrue("value == UpdatedAttr1Value, value="+value, value.equals("UpdatedAttr1Value")); 373 log.info("After redeploy Attr1 value: "+value); 374 } 375 finally 376 { 377 undeploy("user2-xmbean.sar"); 378 undeploy("RemoveUser2Store.bsh"); 379 } 380 } 381 382 385 public void testUserXMBeanPersistentValuesWithCustomPM() throws Exception 386 { 387 getLog().info("+++ testUserXMBeanPersistentValuesWithCustomPM"); 388 MBeanServerConnection server = getServer(); 389 deploy("RemoveUser3Store.bsh"); 391 392 ObjectName user3Name = new ObjectName ("jboss.test:service=xmbean-user2,version=xmlpm"); 393 try 394 { 395 deploy("user3-xmbean.sar"); 396 getLog().info("Testing "+user3Name); 397 assertTrue(user3Name+" is registered", server.isRegistered(user3Name)); 398 String value = (String ) server.getAttribute(user3Name, "Attr1"); 399 assertTrue("value == Att1InitialValue, value="+value, value.equals("Att1InitialValueXMLPM")); 400 log.info("Initial Attr1 value: "+value); 401 Attribute attr1 = new Attribute ("Attr1", "UpdatedAttr1ValueXMLPM"); 403 server.setAttribute(user3Name, attr1); 404 undeploy("user3-xmbean.sar"); 406 deploy("user3-xmbean.sar"); 408 value = (String ) server.getAttribute(user3Name, "Attr1"); 409 assertTrue("value == UpdatedAttr1Value, value="+value, value.equals("UpdatedAttr1ValueXMLPM")); 410 log.info("After redeploy Attr1 value: "+value); 411 } 412 finally 413 { 414 undeploy("user3-xmbean.sar"); 415 undeploy("RemoveUser3Store.bsh"); 416 } 417 } 418 419 422 public void testSecuredXMBean() throws Exception 423 { 424 getLog().info("+++ testSecuredXMBean"); 425 ObjectName xmbean = new ObjectName ("jboss.test:service=SecuredXMBean"); 426 MBeanServerConnection server = getServer(); 427 try 428 { 429 deploy("interceptors-xmbean.sar"); 430 getLog().info("Testing "+xmbean); 431 432 boolean isRegistered = server.isRegistered(xmbean); 433 assertTrue(xmbean+" is registered", isRegistered); 434 435 Object [] args = {"Hello"}; 436 String [] sig = {"java.lang.String"}; 437 try 438 { 439 server.invoke(xmbean, "secretEcho", args, sig); 440 fail("Was able to invoke secretEcho"); 441 } 442 catch(Exception e) 443 { 444 getLog().info("secretEcho op failed as expected", e); 445 } 446 447 String echo = (String ) server.invoke(xmbean, "echo", args, sig); 448 getLog().info("echo returned: "+echo); 449 } 450 finally 451 { 452 undeploy("interceptors-xmbean.sar"); 453 } } 455 456 459 public void testSecuredJndiXMBean() throws Exception 460 { 461 getLog().info("+++ testSecuredJndiXMBean"); 462 ObjectName xmbean = new ObjectName ("jboss.test:service=Naming,secured=true,persistent=true"); 463 MBeanServerConnection server = getServer(); 464 try 465 { 466 deploy("interceptors-xmbean.sar"); 467 getLog().info("Testing "+xmbean); 468 469 boolean isRegistered = server.isRegistered(xmbean); 470 assertTrue(xmbean+" is registered", isRegistered); 471 472 InitialContext ctx = this.getInitialContext(); 474 Naming naming = (Naming) ctx.lookup("secure/Naming"); 475 getLog().info("Found Naming proxy: "+naming); 476 Name hello = ctx.getNameParser("").parse("Hello"); 477 478 try 480 { 481 naming.bind(hello, "HelloBinding", "java.lang.String"); 482 fail("Was able to invoke secretEcho"); 483 } 484 catch(Exception e) 485 { 486 getLog().info("bind op failed as expected", e); 487 } 488 489 SimplePrincipal jduke = new SimplePrincipal("jduke"); 490 SecurityAssociation.setPrincipal(jduke); 491 SecurityAssociation.setCredential("theduke".toCharArray()); 492 naming.bind(hello, "HelloBinding", "java.lang.String"); 493 getLog().info("Was able to create Hello binding"); 494 495 SimplePrincipal guest = new SimplePrincipal("guest"); 496 SecurityAssociation.setPrincipal(guest); 497 SecurityAssociation.setCredential("guest".toCharArray()); 498 try 499 { 500 naming.bind(hello, "HelloBinding2", "java.lang.String"); 501 fail("guest was able to create binding"); 502 } 503 catch(Exception e) 504 { 505 getLog().info("guest bind op failed as expected", e); 506 } 507 } 508 finally 509 { 510 undeploy("interceptors-xmbean.sar"); 511 } } 513 514 519 public void testPersistentJndiXMBean() throws Exception 520 { 521 getLog().info("+++ testPersistentJndiXMBean"); 522 ObjectName xmbean = new ObjectName ("jboss.test:service=Naming,secured=true,persistent=true"); 523 MBeanServerConnection server = getServer(); 524 try 525 { 526 deploy("interceptors-xmbean.sar"); 527 getLog().info("Testing "+xmbean); 528 529 boolean isRegistered = server.isRegistered(xmbean); 530 assertTrue(xmbean+" is registered", isRegistered); 531 532 InitialContext ctx = this.getInitialContext(); 534 Naming naming = (Naming) ctx.lookup("secure/Naming"); 535 getLog().info("Found Naming proxy: "+naming); 536 Name hello = ctx.getNameParser("").parse("Hello"); 537 538 SimplePrincipal jduke = new SimplePrincipal("jduke"); 539 SecurityAssociation.setPrincipal(jduke); 540 SecurityAssociation.setCredential("theduke".toCharArray()); 541 542 String value = (String ) naming.lookup(hello); 544 assertTrue("lookup(Hello) == HelloBinding", value.equals("HelloBinding")); 545 getLog().info("lookup(Hello) = "+value); 546 } 547 finally 548 { 549 undeploy("interceptors-xmbean.sar"); 550 } } 552 553 559 public void testXMBeanExternalEntityImport() throws Exception 560 { 561 getLog().info("+++ testXMBeanExternalEntityImport"); 562 try 563 { 564 deploy("xmbean-entity-import.sar"); 565 566 boolean isRegistered = getServer().isRegistered(new ObjectName ("jboss:service=JNDIView2")); 567 assertTrue("'jboss:service=JNDIView2' registered", isRegistered); 568 } 569 finally 570 { 571 undeploy("xmbean-entity-import.sar"); 572 } 573 } 574 575 } 576 | Popular Tags |