1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18package tests.api.javax.security.auth; 19 20import dalvik.annotation.TestLevel; 21import dalvik.annotation.TestTargetClass; 22import dalvik.annotation.TestTargetNew; 23import dalvik.annotation.TestTargets; 24 25import junit.framework.TestCase; 26 27import javax.security.auth.AuthPermission; 28import javax.security.auth.PrivateCredentialPermission; 29import javax.security.auth.Subject; 30 31import java.util.Set; 32import java.util.HashSet; 33import java.security.Permission; 34import java.security.Principal; 35import java.security.PrivilegedAction; 36import java.security.PrivilegedActionException; 37import java.security.PrivilegedExceptionAction; 38import java.security.AccessControlContext; 39import java.security.AccessController; 40import java.security.ProtectionDomain; 41 42import org.apache.harmony.security.tests.support.acl.PrincipalImpl; 43 44 45/** 46 * Tests for <code>Subject</code> class constructors and methods. 47 * 48 */ 49@TestTargetClass(Subject.class) 50public class SubjectTest extends TestCase { 51 52 SecurityManager old; 53 54 @Override 55 protected void setUp() throws Exception { 56 old = System.getSecurityManager(); 57 super.setUp(); 58 } 59 60 @Override 61 protected void tearDown() throws Exception { 62 System.setSecurityManager(old); 63 super.tearDown(); 64 } 65 66 /** 67 * @tests javax.security.auth.Subject#Subject() 68 */ 69 @TestTargetNew( 70 level = TestLevel.COMPLETE, 71 notes = "", 72 method = "Subject", 73 args = {} 74 ) 75 public void test_Constructor_01() { 76 try { 77 Subject s = new Subject(); 78 assertNotNull("Null object returned", s); 79 assertTrue("Set of principal is not empty", s.getPrincipals().isEmpty()); 80 assertTrue("Set of private credentials is not empty", s.getPrivateCredentials().isEmpty()); 81 assertTrue("Set of public credentials is not empty", s.getPublicCredentials().isEmpty()); 82 } catch (Exception e) { 83 fail("Unexpected exception: " + e); 84 } 85 } 86 87 /** 88 * @tests javax.security.auth.Subject#Subject(boolean readOnly, 89 * Set<? extends Principal> principals, 90 * Set<?> pubCredentials, 91 * Set<?> privCredentials) 92 */ 93 @TestTargetNew( 94 level = TestLevel.COMPLETE, 95 notes = "", 96 method = "Subject", 97 args = {boolean.class, Set.class, Set.class, Set.class} 98 ) 99 public void test_Constructor_02() { 100 Set <Principal> principal = new HashSet<Principal>(); 101 Set <Object> pubCredentials = new HashSet<Object>(); 102 Set <Object> privCredentials = new HashSet<Object>(); 103 Principal pr1 = new PrincipalImpl("TestPrincipal1"); 104 Principal pr2 = new PrincipalImpl("TestPrincipal2"); 105 principal.add(pr1); 106 principal.add(pr2); 107 Object pubCredential1 = new Object(); 108 Object pubCredential2 = new Object(); 109 pubCredentials.add(pubCredential1); 110 pubCredentials.add(pubCredential2); 111 Object privCredential1 = new Object(); 112 Object privCredential2 = new Object(); 113 privCredentials.add(privCredential1); 114 privCredentials.add(privCredential2); 115 116 try { 117 Subject s = new Subject(true, principal, pubCredentials, privCredentials); 118 assertNotNull("Null object returned", s); 119 assertTrue("Not read-only object", s.isReadOnly()); 120 assertFalse("Set of principal is empty", s.getPrincipals().isEmpty()); 121 assertFalse("Set of private credentials is empty", s.getPrivateCredentials().isEmpty()); 122 assertFalse("Set of public credentials is empty", s.getPublicCredentials().isEmpty()); 123 } catch (Exception e) { 124 fail("Unexpected exception: " + e); 125 } 126 127 try { 128 Subject s = new Subject(false, principal, pubCredentials, privCredentials); 129 assertNotNull("Null object returned", s); 130 assertFalse("Read-only object", s.isReadOnly()); 131 assertFalse("Set of principal is empty", s.getPrincipals().isEmpty()); 132 assertFalse("Set of private credentials is empty", s.getPrivateCredentials().isEmpty()); 133 assertFalse("Set of public credentials is empty", s.getPublicCredentials().isEmpty()); 134 } catch (Exception e) { 135 fail("Unexpected exception: " + e); 136 } 137 138 try { 139 Subject s = new Subject(true, null, pubCredentials, privCredentials); 140 fail("NullPointerException wasn't thrown"); 141 } catch (NullPointerException npe) { 142 } 143 144 try { 145 Subject s = new Subject(true, principal, null, privCredentials); 146 fail("NullPointerException wasn't thrown"); 147 } catch (NullPointerException npe) { 148 } 149 150 try { 151 Subject s = new Subject(true, principal, pubCredentials, null); 152 fail("NullPointerException wasn't thrown"); 153 } catch (NullPointerException npe) { 154 } 155 156 try { 157 Subject s = new Subject(true, null, null, null); 158 fail("NullPointerException wasn't thrown"); 159 } catch (NullPointerException npe) { 160 } 161 } 162 163 /** 164 * @tests javax.security.auth.Subject#doAs(Subject subject, PrivilegedAction action) 165 */ 166 @TestTargetNew( 167 level = TestLevel.COMPLETE, 168 notes = "", 169 method = "doAs", 170 args = {Subject.class, PrivilegedAction.class} 171 ) 172 public void test_doAs_01() { 173 Subject subj = new Subject(); 174 PrivilegedAction<Object> pa = new myPrivilegedAction(); 175 PrivilegedAction<Object> paNull = null; 176 177 try { 178 Object obj = Subject.doAs(null, pa); 179 } catch (Exception e) { 180 fail("Unexpected exception: " + e); 181 } 182 183 try { 184 Object obj = Subject.doAs(subj, pa); 185 } catch (Exception e) { 186 fail("Unexpected exception: " + e); 187 } 188 189 try { 190 Object obj = Subject.doAs(subj, paNull); 191 fail("NullPointerException wasn't thrown"); 192 } catch (NullPointerException npe) { 193 } 194 195 class TestSecurityManager extends SecurityManager { 196 @Override 197 public void checkPermission(Permission permission) { 198 if (permission instanceof AuthPermission 199 && "doAs".equals(permission.getName())) { 200 throw new SecurityException(); 201 } 202 super.checkPermission(permission); 203 } 204 } 205 TestSecurityManager s = new TestSecurityManager(); 206 System.setSecurityManager(s); 207 try { 208 Object obj = Subject.doAs(subj, pa); 209 fail("SecurityException wasn't thrown"); 210 } catch (SecurityException se) { 211 } 212 } 213 214 /** 215 * @tests javax.security.auth.Subject#doAs(Subject subject, PrivilegedExceptionAction action) 216 */ 217 @TestTargetNew( 218 level = TestLevel.COMPLETE, 219 notes = "", 220 method = "doAs", 221 args = {Subject.class, PrivilegedExceptionAction.class} 222 ) 223 public void test_doAs_02() { 224 Subject subj = new Subject(); 225 PrivilegedExceptionAction<Object> pea = new myPrivilegedExceptionAction(); 226 PrivilegedExceptionAction<Object> peaNull = null; 227 228 try { 229 Object obj = Subject.doAs(null, pea); 230 } catch (Exception e) { 231 fail("Unexpected exception: " + e); 232 } 233 234 try { 235 Object obj = Subject.doAs(subj, pea); 236 } catch (Exception e) { 237 fail("Unexpected exception: " + e); 238 } 239 240 try { 241 Object obj = Subject.doAs(subj, peaNull); 242 fail("NullPointerException wasn't thrown"); 243 } catch (NullPointerException npe) { 244 } catch (Exception e) { 245 fail(e + " was thrown instead of NullPointerException"); 246 } 247 248 try { 249 Subject.doAs(subj, new PrivilegedExceptionAction<Object>(){ 250 public Object run() throws PrivilegedActionException { 251 throw new PrivilegedActionException(null); 252 } 253 }); 254 fail("PrivilegedActionException wasn't thrown"); 255 } catch (PrivilegedActionException e) { 256 } 257 258 class TestSecurityManager extends SecurityManager { 259 @Override 260 public void checkPermission(Permission permission) { 261 if (permission instanceof AuthPermission 262 && "doAs".equals(permission.getName())) { 263 throw new SecurityException(); 264 } 265 super.checkPermission(permission); 266 } 267 } 268 TestSecurityManager s = new TestSecurityManager(); 269 System.setSecurityManager(s); 270 try { 271 Object obj = Subject.doAs(subj, pea); 272 fail("SecurityException wasn't thrown"); 273 } catch (SecurityException se) { 274 } catch (Exception e) { 275 fail(e + " was thrown instead of SecurityException"); 276 } 277 } 278 279 /** 280 * @tests javax.security.auth.Subject#doAsPrivileged(Subject subject, 281 * PrivilegedAction action, 282 * AccessControlContext acc) 283 */ 284 @TestTargetNew( 285 level = TestLevel.COMPLETE, 286 notes = "", 287 method = "doAsPrivileged", 288 args = {Subject.class, PrivilegedAction.class, AccessControlContext.class} 289 ) 290 public void test_doAsPrivileged_01() { 291 Subject subj = new Subject(); 292 PrivilegedAction<Object> pa = new myPrivilegedAction(); 293 PrivilegedAction<Object> paNull = null; 294 AccessControlContext acc = AccessController.getContext(); 295 296 try { 297 Object obj = Subject.doAsPrivileged(null, pa, acc); 298 } catch (Exception e) { 299 fail("Unexpected exception: " + e); 300 } 301 302 try { 303 Object obj = Subject.doAsPrivileged(subj, pa, acc); 304 } catch (Exception e) { 305 fail("Unexpected exception: " + e); 306 } 307 308 try { 309 Object obj = Subject.doAsPrivileged(subj, paNull, acc); 310 fail("NullPointerException wasn't thrown"); 311 } catch (NullPointerException npe) { 312 } 313 314 class TestSecurityManager extends SecurityManager { 315 @Override 316 public void checkPermission(Permission permission) { 317 if (permission instanceof AuthPermission 318 && "doAsPrivileged".equals(permission.getName())) { 319 throw new SecurityException(); 320 } 321 super.checkPermission(permission); 322 } 323 } 324 TestSecurityManager s = new TestSecurityManager(); 325 System.setSecurityManager(s); 326 try { 327 Object obj = Subject.doAsPrivileged(subj, pa, acc); 328 fail("SecurityException wasn't thrown"); 329 } catch (SecurityException se) { 330 } 331 } 332 333 /** 334 * @tests javax.security.auth.Subject#doAsPrivileged(Subject subject, 335 * PrivilegedExceptionAction action, 336 * AccessControlContext acc) 337 */ 338 @TestTargetNew( 339 level = TestLevel.COMPLETE, 340 notes = "", 341 method = "doAsPrivileged", 342 args = {Subject.class, PrivilegedExceptionAction.class, AccessControlContext.class} 343 ) 344 public void test_doAsPrivileged_02() { 345 Subject subj = new Subject(); 346 PrivilegedExceptionAction<Object> pea = new myPrivilegedExceptionAction(); 347 PrivilegedExceptionAction<Object> peaNull = null; 348 AccessControlContext acc = AccessController.getContext(); 349 350 try { 351 Object obj = Subject.doAsPrivileged(null, pea, acc); 352 } catch (Exception e) { 353 fail("Unexpected exception: " + e); 354 } 355 356 try { 357 Object obj = Subject.doAsPrivileged(subj, pea, acc); 358 } catch (Exception e) { 359 fail("Unexpected exception: " + e); 360 } 361 362 try { 363 Object obj = Subject.doAsPrivileged(subj, peaNull, acc); 364 fail("NullPointerException wasn't thrown"); 365 } catch (NullPointerException npe) { 366 } catch (Exception e) { 367 fail(e + " was thrown instead of NullPointerException"); 368 } 369 370 try { 371 Subject.doAsPrivileged(subj, new PrivilegedExceptionAction<Object>(){ 372 public Object run() throws PrivilegedActionException { 373 throw new PrivilegedActionException(null); 374 } 375 }, acc); 376 fail("PrivilegedActionException wasn't thrown"); 377 } catch (PrivilegedActionException e) { 378 } 379 380 class TestSecurityManager extends SecurityManager { 381 @Override 382 public void checkPermission(Permission permission) { 383 if (permission instanceof AuthPermission 384 && "doAsPrivileged".equals(permission.getName())) { 385 throw new SecurityException(); 386 } 387 super.checkPermission(permission); 388 } 389 } 390 TestSecurityManager s = new TestSecurityManager(); 391 System.setSecurityManager(s); 392 try { 393 Object obj = Subject.doAsPrivileged(subj, pea, acc); 394 fail("SecurityException wasn't thrown"); 395 } catch (SecurityException se) { 396 } catch (Exception e) { 397 fail(e + " was thrown instead of SecurityException"); 398 } 399 } 400 401 /** 402 * @tests javax.security.auth.Subject#equals(Object o) 403 */ 404 @TestTargetNew( 405 level = TestLevel.SUFFICIENT, 406 notes = "SecurityException wasn't tested", 407 method = "equals", 408 args = {Object.class} 409 ) 410 public void test_equals() { 411 Set <Principal> principal = new HashSet<Principal>(); 412 Set <Principal> principal1 = new HashSet<Principal>(); 413 Set <Object> pubCredentials = new HashSet<Object>(); 414 Set <Object> privCredentials = new HashSet<Object>(); 415 Principal pr1 = new PrincipalImpl("TestPrincipal1"); 416 Principal pr2 = new PrincipalImpl("TestPrincipal2"); 417 principal.add(pr1); 418 principal.add(pr2); 419 principal1.add(pr1); 420 Object pubCredential1 = new Object(); 421 Object pubCredential2 = new Object(); 422 pubCredentials.add(pubCredential1); 423 pubCredentials.add(pubCredential2); 424 Object privCredential1 = new Object(); 425 Object privCredential2 = new Object(); 426 privCredentials.add(privCredential1); 427 privCredentials.add(privCredential2); 428 429 Subject s1 = new Subject(true, principal, pubCredentials, privCredentials); 430 Subject s2 = new Subject(true, principal1, pubCredentials, privCredentials); 431 Subject s3 = new Subject(true, principal, pubCredentials, privCredentials); 432 433 try { 434 assertTrue(s1.equals(s1)); 435 assertFalse(s1.equals(s2)); 436 assertTrue(s1.equals(s3)); 437 assertFalse(s1.equals(new Object())); 438 } catch (Exception e) { 439 fail("Unexpected exception: " + e); 440 } 441 442 443 class TestSecurityManager extends SecurityManager { 444 @Override 445 public void checkPermission(Permission permission) { 446 if (permission instanceof PrivateCredentialPermission 447 && "equals".equals(permission.getName())) { 448 throw new SecurityException(); 449 } 450 super.checkPermission(permission); 451 } 452 } 453 TestSecurityManager s = new TestSecurityManager(); 454 System.setSecurityManager(s); 455 try { 456 s1.equals(s1); 457 //fail("SecurityException wasn't thrown"); 458 } catch (SecurityException se) { 459 } 460 } 461 462 /** 463 * @tests javax.security.auth.Subject#getPrincipals() 464 * @tests javax.security.auth.Subject#getPrivateCredentials() 465 * @tests javax.security.auth.Subject#getPublicCredentials() 466 * @tests javax.security.auth.Subject#isReadOnly() 467 * @tests javax.security.auth.Subject#setReadOnly() 468 */ 469 @TestTargets({ 470 @TestTargetNew( 471 level = TestLevel.COMPLETE, 472 notes = "", 473 method = "getPrincipals", 474 args = {} 475 ), 476 @TestTargetNew( 477 level = TestLevel.COMPLETE, 478 notes = "", 479 method = "getPrivateCredentials", 480 args = {} 481 ), 482 @TestTargetNew( 483 level = TestLevel.COMPLETE, 484 notes = "", 485 method = "getPublicCredentials", 486 args = {} 487 ) 488 }) 489 public void test_getPrincipals() { 490 Set <Principal> principal = new HashSet<Principal>(); 491 Set <Object> pubCredentials = new HashSet<Object>(); 492 Set <Object> privCredentials = new HashSet<Object>(); 493 Principal pr1 = new PrincipalImpl("TestPrincipal1"); 494 Principal pr2 = new PrincipalImpl("TestPrincipal2"); 495 principal.add(pr1); 496 principal.add(pr2); 497 Object pubCredential1 = new Object(); 498 pubCredentials.add(pubCredential1); 499 Object privCredential1 = new Object(); 500 Object privCredential2 = new Object(); 501 privCredentials.add(privCredential1); 502 privCredentials.add(privCredential2); 503 504 Subject s = new Subject(false, principal, pubCredentials, privCredentials); 505 506 try { 507 Set<Principal> pr = s.getPrincipals(); 508 assertNotNull(pr); 509 assertEquals(principal.size(), pr.size()); 510 } catch (Exception e) { 511 fail("Unexpected exception: " + e); 512 } 513 514 try { 515 Set<Object> privC = s.getPrivateCredentials(); 516 assertNotNull(privC); 517 assertEquals(privCredentials.size(), privC.size()); 518 } catch (Exception e) { 519 fail("Unexpected exception: " + e); 520 } 521 522 try { 523 Set<Object> pubC = s.getPublicCredentials(); 524 assertNotNull(pubC); 525 assertEquals(pubCredentials.size(), pubC.size()); 526 } catch (Exception e) { 527 fail("Unexpected exception: " + e); 528 } 529 } 530 531 /** 532 * @tests javax.security.auth.Subject#isReadOnly() 533 * @tests javax.security.auth.Subject#setReadOnly() 534 */ 535 @TestTargets({ 536 @TestTargetNew( 537 level = TestLevel.COMPLETE, 538 notes = "", 539 method = "isReadOnly", 540 args = {} 541 ), 542 @TestTargetNew( 543 level = TestLevel.COMPLETE, 544 notes = "", 545 method = "setReadOnly", 546 args = {} 547 ) 548 }) 549 public void test_ReadOnly() { 550 Set <Principal> principal = new HashSet<Principal>(); 551 Set <Object> pubCredentials = new HashSet<Object>(); 552 Set <Object> privCredentials = new HashSet<Object>(); 553 Principal pr1 = new PrincipalImpl("TestPrincipal1"); 554 Principal pr2 = new PrincipalImpl("TestPrincipal2"); 555 principal.add(pr1); 556 principal.add(pr2); 557 Object pubCredential1 = new Object(); 558 pubCredentials.add(pubCredential1); 559 Object privCredential1 = new Object(); 560 Object privCredential2 = new Object(); 561 privCredentials.add(privCredential1); 562 privCredentials.add(privCredential2); 563 564 Subject s = new Subject(false, principal, pubCredentials, privCredentials); 565 566 try { 567 assertFalse(s.isReadOnly()); 568 s.setReadOnly(); 569 assertTrue(s.isReadOnly()); 570 } catch (Exception e) { 571 fail("Unexpected exception " + e); 572 } 573 574 class TestSecurityManager extends SecurityManager { 575 @Override 576 public void checkPermission(Permission permission) { 577 if (permission instanceof AuthPermission 578 && "setReadOnly".equals(permission.getName())) { 579 throw new SecurityException(); 580 } 581 super.checkPermission(permission); 582 } 583 } 584 TestSecurityManager ss = new TestSecurityManager(); 585 System.setSecurityManager(ss); 586 try { 587 s.setReadOnly(); 588 fail("SecurityException wasn't thrown"); 589 } catch (SecurityException se) { 590 } 591 } 592 593 /** 594 * @tests javax.security.auth.Subject#getSubject(AccessControlContext acc) 595 */ 596 @TestTargetNew( 597 level = TestLevel.COMPLETE, 598 notes = "", 599 method = "getSubject", 600 args = {AccessControlContext.class} 601 ) 602 public void test_getSubject() { 603 Subject subj = new Subject(); 604 AccessControlContext acc = new AccessControlContext(new ProtectionDomain[0]); 605 606 try { 607 assertNull(Subject.getSubject(acc)); 608 } catch (Exception e) { 609 fail("Unexpected exception " + e); 610 } 611 612 class TestSecurityManager extends SecurityManager { 613 @Override 614 public void checkPermission(Permission permission) { 615 if (permission instanceof AuthPermission 616 && "getSubject".equals(permission.getName())) { 617 throw new SecurityException(); 618 } 619 super.checkPermission(permission); 620 } 621 } 622 TestSecurityManager s = new TestSecurityManager(); 623 System.setSecurityManager(s); 624 try { 625 Subject.getSubject(acc); 626 fail("SecurityException wasn't thrown"); 627 } catch (SecurityException se) { 628 } 629 } 630 631 /** 632 * @tests javax.security.auth.Subject#toString() 633 */ 634 @TestTargetNew( 635 level = TestLevel.COMPLETE, 636 notes = "", 637 method = "toString", 638 args = {} 639 ) 640 public void test_toString() { 641 Subject subj = new Subject(); 642 643 try { 644 assertNotNull("Null returned", subj.toString()); 645 } catch (Exception e) { 646 fail("Unexpected exception: " + e); 647 } 648 } 649 650 /** 651 * @tests javax.security.auth.Subject#hashCode() 652 */ 653 @TestTargetNew( 654 level = TestLevel.SUFFICIENT, 655 notes = "SecurityException wasn't tested", 656 method = "hashCode", 657 args = {} 658 ) 659 public void test_hashCode() { 660 Subject subj = new Subject(); 661 662 try { 663 assertNotNull("Null returned", subj.hashCode()); 664 } catch (Exception e) { 665 fail("Unexpected exception: " + e); 666 } 667 668 class TestSecurityManager extends SecurityManager { 669 @Override 670 public void checkPermission(Permission permission) { 671 if (permission instanceof AuthPermission 672 && "hashCode".equals(permission.getName())) { 673 throw new SecurityException(); 674 } 675 super.checkPermission(permission); 676 } 677 } 678 TestSecurityManager s = new TestSecurityManager(); 679 System.setSecurityManager(s); 680 try { 681 subj.hashCode(); 682 //fail("SecurityException wasn't thrown"); 683 } catch (SecurityException se) { 684 } 685 } 686 687 /** 688 * @tests javax.security.auth.Subject#getPrincipals(Class<T> c) 689 * @tests javax.security.auth.Subject#getPrivateCredentials(Class<T> c) 690 * @tests javax.security.auth.Subject#getPublicCredentials(Class<T> c) 691 */ 692 @TestTargets({ 693 @TestTargetNew( 694 level = TestLevel.COMPLETE, 695 notes = "", 696 method = "getPrincipals", 697 args = {Class.class} 698 ), 699 @TestTargetNew( 700 level = TestLevel.SUFFICIENT, 701 notes = "", 702 method = "getPrivateCredentials", 703 args = {Class.class} 704 ), 705 @TestTargetNew( 706 level = TestLevel.SUFFICIENT, 707 notes = "", 708 method = "getPublicCredentials", 709 args = {Class.class} 710 ) 711 }) 712 public void test_getPrincipals_Class() { 713 Set <Principal> principal = new HashSet<Principal>(); 714 Set <Object> pubCredentials = new HashSet<Object>(); 715 Set <Object> privCredentials = new HashSet<Object>(); 716 Principal pr1 = new PrincipalImpl("TestPrincipal1"); 717 Principal pr2 = new PrincipalImpl("TestPrincipal2"); 718 principal.add(pr1); 719 principal.add(pr2); 720 Object pubCredential1 = new Object(); 721 pubCredentials.add(pubCredential1); 722 Object privCredential1 = new Object(); 723 Object privCredential2 = new Object(); 724 privCredentials.add(privCredential1); 725 privCredentials.add(privCredential2); 726 727 Subject s = new Subject(true, principal, pubCredentials, privCredentials); 728 729 try { 730 Set<Principal> pr = s.getPrincipals(null); 731 fail("NullPointerException wasn't thrown"); 732 } catch (NullPointerException npe) { 733 } 734 735 try { 736 Set<Object> privC = s.getPrivateCredentials(null); 737 fail("NullPointerException wasn't thrown"); 738 } catch (NullPointerException npe) { 739 } 740 741 try { 742 Set<Object> pubC = s.getPublicCredentials(null); 743 fail("NullPointerException wasn't thrown"); 744 } catch (NullPointerException npe) { 745 } 746 747 try { 748 Set<Principal> pr = s.getPrincipals(Principal.class); 749 assertNotNull(pr); 750 assertEquals(principal.size(), pr.size()); 751 } catch (Exception e) { 752 fail("Unexpected exception: " + e); 753 } 754 755 try { 756 Set<Object> privC = s.getPrivateCredentials(Object.class); 757 assertNotNull(privC); 758 assertEquals(privCredentials.size(), privC.size()); 759 } catch (Exception e) { 760 fail("Unexpected exception: " + e); 761 } 762 763 try { 764 Set<Object> pubC = s.getPublicCredentials(Object.class); 765 assertNotNull(pubC); 766 assertEquals(pubCredentials.size(), pubC.size()); 767 } catch (Exception e) { 768 fail("Unexpected exception: " + e); 769 } 770 } 771} 772 773 774class myPrivilegedAction implements PrivilegedAction <Object> { 775 myPrivilegedAction(){} 776 public Object run() { 777 return new Object(); 778 } 779} 780 781class myPrivilegedExceptionAction implements PrivilegedExceptionAction <Object> { 782 myPrivilegedExceptionAction(){} 783 public Object run() { 784 return new Object(); 785 } 786} 787