blob: 7c6e062c6f1fdfdbc329a33b854f6943518ecffe [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.tools.ant.types;
import junit.framework.TestCase;
import org.apache.tools.ant.ExitException;
/**
* JUnit 3 testcases for org.apache.tools.ant.types.Permissions.
*
*/
public class PermissionsTest extends TestCase {
Permissions perms;
public PermissionsTest(String name) {
super(name);
}
public void setUp() {
perms = new Permissions();
Permissions.Permission perm = new Permissions.Permission();
// Grant extra permissions to read and write the user.* properties and read to the
// java.home property
perm.setActions("read, write");
perm.setName("user.*");
perm.setClass("java.util.PropertyPermission");
perms.addConfiguredGrant(perm);
perm = new Permissions.Permission();
perm.setActions("read");
perm.setName("java.home");
perm.setClass("java.util.PropertyPermission");
perms.addConfiguredGrant(perm);
perm = new Permissions.Permission();
perm.setActions("read");
perm.setName("file.encoding");
perm.setClass("java.util.PropertyPermission");
perms.addConfiguredGrant(perm);
// Revoke permission to write user.home (granted above via user.*), still able to read though.
// and the default granted permission to read os.name.
perm = new Permissions.Permission();
perm.setActions("write");
perm.setName("user.home");
perm.setClass("java.util.PropertyPermission");
perms.addConfiguredRevoke(perm);
perm = new Permissions.Permission();
perm.setActions("read");
perm.setName("os.*");
perm.setClass("java.util.PropertyPermission");
perms.addConfiguredRevoke(perm);
}
/** Tests a permission that is granted per default. */
public void testDefaultGranted() {
perms.setSecurityManager();
try {
String s = System.getProperty("line.separator");
} finally {
perms.restoreSecurityManager();
}
}
/** Tests a permission that has been granted later via wildcard. */
public void testGranted() {
perms.setSecurityManager();
try {
String s = System.getProperty("user.name");
System.setProperty("user.name", s);
} finally {
perms.restoreSecurityManager();
}
}
/** Tests a permission that has been granted and revoked later. */
public void testGrantedAndRevoked() {
perms.setSecurityManager();
try {
String s = System.getProperty("user.home");
System.setProperty("user.home", s);
fail("Could perform an action that should have been forbidden.");
} catch (SecurityException e){
// Was expected, test passes
} finally {
perms.restoreSecurityManager();
}
}
/** Tests a permission that is granted as per default but revoked later via wildcard. */
public void testDefaultRevoked() {
perms.setSecurityManager();
try {
System.getProperty("os.name");
fail("Could perform an action that should have been forbidden.");
} catch (SecurityException e){
// Was expected, test passes
} finally {
perms.restoreSecurityManager();
}
}
/** Tests a permission that has not been granted or revoked. */
public void testOther() {
String ls = System.getProperty("line.separator");
perms.setSecurityManager();
try {
String s = System.setProperty("line.separator",ls);
fail("Could perform an action that should have been forbidden.");
} catch (SecurityException e){
// Was expected, test passes
} finally {
perms.restoreSecurityManager();
}
}
/** Tests an exit condition. */
public void testExit() {
perms.setSecurityManager();
try {
System.out.println("If this is the last line on standard out the testExit f.a.i.l.e.d");
System.exit(3);
fail("Totaly impossible that this fail is ever executed. Please let me know if it is!");
} catch (ExitException e) {
if (e.getStatus() != 3) {
fail("Received wrong exit status in Exit Exception.");
}
System.out.println("testExit successful.");
} finally {
perms.restoreSecurityManager();
}
}
public void tearDown() {
}
}