1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage tests.api.java.security; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AccessControlContext; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AccessController; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PermissionCollection; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.ProtectionDomain; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.PropertyPermission; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class AccessControlContextTest extends junit.framework.TestCase { 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @tests java.security.AccessControlContext#AccessControlContext(java.security.ProtectionDomain[]) 318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void test_Constructor$Ljava_security_ProtectionDomain() { 338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // Test for method 348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // java.security.AccessControlContext(java.security.ProtectionDomain []) 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // Create a permission which is not normally granted 378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath final Permission perm = new PropertyPermission("java.class.path", 388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "read"); 398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath PermissionCollection col = perm.newPermissionCollection(); 408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath col.add(perm); 418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath final ProtectionDomain pd = new ProtectionDomain(null, col); 428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath AccessControlContext acc = new AccessControlContext( 438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ProtectionDomain[] { pd }); 448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath acc.checkPermission(perm); 468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (SecurityException e) { 478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail("Should have permission"); 488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath final boolean[] result = new boolean[] { false }; 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Thread th = new Thread(new Runnable() { 528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void run() { 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath AccessControlContext acc = new AccessControlContext( 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ProtectionDomain[] { pd }); 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath acc.checkPermission(perm); 578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath result[0] = true; 588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (SecurityException e) { 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath }); 628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath th.start(); 638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath th.join(); 658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (InterruptedException e) { 668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // ignore 678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue("Thread should have permission", result[0]); 698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @tests java.security.AccessControlContext#AccessControlContext(java.security.AccessControlContext, 738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath *java.security.DomainCombiner) 748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void test_ConstructorLjava_security_AccessControlContextLjava_security_DomainCombiner() { 768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath AccessControlContext context = AccessController.getContext(); 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new AccessControlContext(context, null); 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NullPointerException e) { 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail("should not throw NullPointerException"); 818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}