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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 package org.apache.harmony.security.tests.java.security;
20 import java.security.AccessControlContext;
21 import java.security.AccessControlException;
22 import java.security.AccessController;
23 import java.security.AllPermission;
24 import java.security.Permission;
25 import java.security.PrivilegedAction;
26 import java.security.PrivilegedActionException;
27 import java.security.PrivilegedExceptionAction;
29 import dalvik.annotation.KnownFailure;
30 import dalvik.annotation.TestLevel;
31 import dalvik.annotation.TestTargetClass;
32 import dalvik.annotation.TestTargetNew;
34 @TestTargetClass(AccessController.class)
35 public class AccessController2Test extends junit.framework.TestCase {
37 PrivilegedAction<Boolean> privAction = new PrivilegedAction<Boolean>() {
38 public Boolean run() {
40 AccessController.checkPermission(new AllPermission());
41 return new Boolean(false);
42 } catch (SecurityException ex) {
43 return new Boolean(true);
48 PrivilegedExceptionAction<Boolean> privExceptAction =
49 new PrivilegedExceptionAction<Boolean>() {
50 public Boolean run() {
52 AccessController.checkPermission(new AllPermission());
53 return new Boolean(false);
54 } catch (SecurityException ex) {
55 return new Boolean(true);
61 * @tests java.security.AccessController#doPrivileged(java.security.PrivilegedAction,
62 * java.security.AccessControlContext))
65 level = TestLevel.COMPLETE,
66 method = "doPrivileged",
67 args = {java.security.PrivilegedAction.class, java.security.AccessControlContext.class}
69 @KnownFailure("Fails (probably) because no protection domain is set.")
70 public void test_doPrivilegedLjava_security_PrivilegedActionLjava_security_AccessControlContext() {
74 AccessController.doPrivileged((PrivilegedAction<?>) null, null);
75 fail("Test 1: NullPointerException expected.");
76 } catch (NullPointerException e) {
80 pass = AccessController.doPrivileged(privAction, null);
81 assertTrue("Test 2: Got AllPermission when providing a null " +
82 "AccessControlContext.", pass.booleanValue());
84 AccessControlContext acc = AccessController.getContext();
85 assertNotNull("Test 3: AccessControlContext must not be null", acc);
87 pass = AccessController.doPrivileged(privAction, acc);
88 assertTrue("Test 4: Got AllPermission when providing a non-null " +
89 "AccessControlContext.", pass.booleanValue());
93 * @tests java.security.AccessController#doPrivileged(java.security.PrivilegedAction))
96 level = TestLevel.PARTIAL_COMPLETE,
97 method = "doPrivileged",
98 args = {java.security.PrivilegedAction.class}
100 @KnownFailure("Fails (probably) because no protection domain is set.")
101 public void test_doPrivilegedLjava_security_PrivilegedAction() {
105 AccessController.doPrivileged((PrivilegedAction<?>) null);
106 fail("Test 1: NullPointerException expected.");
107 } catch (NullPointerException e) {
111 pass = AccessController.doPrivileged(privAction);
112 assertTrue("Test 2: Got AllPermission when providing no " +
113 "AccessControlContext.", pass.booleanValue());
117 * @tests java.security.AccessController#doPrivileged(java.security.PrivilegedExceptionAction,
118 * java.security.AccessControlContext))
121 level = TestLevel.COMPLETE,
122 method = "doPrivileged",
123 args = {java.security.PrivilegedExceptionAction.class, java.security.AccessControlContext.class}
125 @KnownFailure("Fails (probably) because no protection domain is set.")
126 public void test_doPrivilegedLjava_security_PrivilegedExceptionActionLjava_security_AccessControlContext() {
130 AccessController.doPrivileged((PrivilegedExceptionAction<?>) null);
131 fail("Test 1: NullPointerException expected.");
132 } catch (NullPointerException e) {
134 } catch (PrivilegedActionException e) {
135 fail("Test 2: Unexpected PrivilegedActionException " +
140 pass = AccessController.doPrivileged(privExceptAction, null);
141 assertTrue("Test 3: Got AllPermission when providing a null " +
142 "AccessControlContext.", pass.booleanValue());
143 } catch (PrivilegedActionException e) {
144 fail("Test 4: Unexpected PrivilegedActionException " +
148 AccessControlContext acc = AccessController.getContext();
149 assertNotNull("Test 5: AccessControlContext must not be null", acc);
152 pass = AccessController.doPrivileged(privExceptAction, acc);
153 assertTrue("Test 6: Got AllPermission when providing non-null " +
154 "AccessControlContext.", pass.booleanValue());
155 } catch (PrivilegedActionException e) {
156 fail("Test 7: Unexpected PrivilegedActionException " +
162 * @tests java.security.AccessController#doPrivileged(java.security.PrivilegedExceptionAction))
165 level = TestLevel.COMPLETE,
166 method = "doPrivileged",
167 args = {java.security.PrivilegedExceptionAction.class}
169 @KnownFailure("Fails (probably) because no protection domain is set.")
170 public void test_doPrivilegedLjava_security_PrivilegedExceptionAction() {
174 AccessController.doPrivileged((PrivilegedExceptionAction<?>) null);
175 fail("Test 1: NullPointerException expected.");
176 } catch (NullPointerException e) {
178 } catch (PrivilegedActionException e) {
179 fail("Test 2: Unexpected PrivilegedActionException " +
184 pass = AccessController.doPrivileged(privExceptAction);
185 assertTrue("Test 3: Got AllPermission when providing no " +
186 "AccessControlContext.", pass.booleanValue());
187 } catch (PrivilegedActionException e) {
188 fail("Test 4: Unexpected exception " + e.getMessage());
193 * @tests java.security.AccessController#checkPermission(Permission perm)
196 level = TestLevel.PARTIAL_COMPLETE,
198 method = "checkPermission",
199 args = {java.security.Permission.class}
201 public void test_checkPermission_NullParameter() {
204 AccessController.checkPermission(null);
205 fail("Test 1: NullPointerException expected.");
206 } catch (NullPointerException npe) {
212 * @tests java.security.AccessController#checkPermission(Permission perm)
215 level = TestLevel.PARTIAL_COMPLETE,
217 method = "checkPermission",
218 args = {java.security.Permission.class}
220 @KnownFailure("Fails (probably) because no protection domain is set.")
221 public void test_checkPermission_InvalidPermission() {
222 String[] perm_invalid = {null, "1", "", "invalid", "bla-bla", "testCtor123^%$#&^ &^$"};
227 AccessController.checkPermission(null);
228 fail("NullPointerException should be thrown for NULL parameter");
229 } catch (NullPointerException npe) {
234 for (int i = 0; i < perm_invalid.length; i++) {
236 perm = new RealPermission(perm_invalid[i]);
237 AccessController.checkPermission(perm);
238 fail("AccessControlException should be thrown for INVALID parameter " + perm_invalid[i]);
239 } catch (AccessControlException ace) {
241 } catch (Exception e) {
242 fail("Unexpected exception caught: " + e.toString());
249 * @tests java.security.AccessController#getContext()
252 level = TestLevel.COMPLETE,
254 method = "getContext",
257 public void test_getContext() {
259 AccessControlContext acc = AccessController.getContext();
261 assertTrue(acc instanceof AccessControlContext);
262 } catch (Exception e) {
263 fail("Unexpected exception");
267 // Bare extension to instantiate abstract Permission class
268 static final class RealPermission extends Permission {
270 private static final long serialVersionUID = 1L;
272 public RealPermission(String name) {
276 public boolean equals(Object obj) {
280 public String getActions() {
284 public int hashCode() {
288 public boolean implies(Permission permission) {