blob: 87051a54d04fe5390eadb94a5b086b5874f4ae4f [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.harmony.security.tests.java.security;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import java.io.File;
import java.io.FilePermission;
import java.security.AllPermission;
import java.security.Permission;
import java.security.Permissions;
import java.util.Enumeration;
@TestTargetClass(Permissions.class)
public class Permissions2Test extends junit.framework.TestCase {
FilePermission readAllFiles = new FilePermission("<<ALL FILES>>", "read");
FilePermission alsoReadAllFiles = new FilePermission("<<ALL FILES>>",
"read");
FilePermission allInCurrent = new FilePermission("*",
"read, write, execute,delete");
FilePermission readInCurrent = new FilePermission("*", "read");
FilePermission readInFile = new FilePermission("aFile.file", "read");
/**
* @tests java.security.Permissions#Permissions()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "Permissions",
args = {}
)
public void test_Constructor() {
// Test for method java.security.Permissions()
new Permissions();
}
/**
* @tests java.security.Permissions#add(java.security.Permission)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "add",
args = {java.security.Permission.class}
)
public void test_addLjava_security_Permission() {
// Test for method void
// java.security.Permissions.add(java.security.Permission)
char s = File.separatorChar;
FilePermission perm[] = new FilePermission[7];
perm[0] = readAllFiles;
perm[1] = allInCurrent;
perm[2] = new FilePermission(s + "tmp" + s + "test" + s + "*",
"read,write");
perm[3] = new FilePermission(s + "tmp" + s + "test" + s
+ "collection.file", "read");
perm[4] = alsoReadAllFiles;
perm[5] = readInFile;
perm[6] = new FilePermission("hello.file", "write");
Permissions perms = new Permissions();
for (int i = 0; i < perm.length; i++) {
perms.add(perm[i]);
}
Enumeration e = perms.elements();
FilePermission perm2[] = new FilePermission[10];
int i = 0;
while (e.hasMoreElements()) {
perm2[i] = (FilePermission) e.nextElement();
i++;
}
assertEquals("Permissions.elements did not return the correct number "
+ "of permission - called in add() test ", i, perm.length);
perms.setReadOnly();
try {
perms.add(new AllPermission());
fail("expected SecurityException");
} catch (SecurityException ex) {
// ok
}
}
/**
* @tests java.security.Permissions#elements()
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "elements",
args = {}
)
public void test_elements() {
// Test for method java.util.Enumeration
// java.security.Permissions.elements()
char s = File.separatorChar;
FilePermission perm[] = new FilePermission[7];
perm[0] = readAllFiles;
perm[1] = allInCurrent;
perm[2] = new FilePermission(s + "tmp" + s + "test" + s + "*",
"read,write");
perm[3] = new FilePermission(s + "tmp" + s + "test" + s
+ "collection.file", "read");
perm[4] = alsoReadAllFiles;
perm[5] = readInFile;
perm[6] = new FilePermission("hello.file", "write");
Permissions perms = new Permissions();
for (int i = 0; i < perm.length; i++) {
perms.add(perm[i]);
}
Enumeration e = perms.elements();
FilePermission perm2[] = new FilePermission[10];
int i = 0;
while (e.hasMoreElements()) {
perm2[i] = (FilePermission) e.nextElement();
i++;
}
assertEquals("Permissions.elements did not return the correct "
+ "number of permission - called in element() test", i,
perm.length);
}
/**
* @tests java.security.Permissions#implies(java.security.Permission)
*/
@TestTargetNew(
level = TestLevel.PARTIAL_COMPLETE,
notes = "",
method = "implies",
args = {java.security.Permission.class}
)
public void test_impliesLjava_security_Permission() {
// Test for method boolean
// java.security.Permissions.implies(java.security.Permission)
char s = File.separatorChar;
FilePermission perm[] = new FilePermission[7];
perm[0] = new FilePermission("test1.file", "write");
perm[1] = allInCurrent;
perm[2] = new FilePermission(s + "tmp" + s + "test" + s + "*",
"read,write");
perm[3] = new FilePermission(s + "tmp" + s + "test" + s
+ "collection.file", "read");
perm[4] = new FilePermission(s + "windows" + "*", "delete");
perm[5] = readInFile;
perm[6] = new FilePermission("hello.file", "write");
Permissions perms = new Permissions();
for (int i = 0; i < perm.length; i++) {
perms.add(perm[i]);
}
assertTrue("Returned true for non-subset of files", !perms
.implies(new FilePermission("<<ALL FILES>>", "execute")));
assertTrue("Returned true for non-subset of action", !perms
.implies(new FilePermission(s + "tmp" + s + "test" + s + "*",
"execute")));
assertTrue("Returned false for subset of actions", perms
.implies(new FilePermission("*", "write")));
assertTrue("Returned false for subset of files", perms
.implies(new FilePermission(s + "tmp" + s + "test" + s
+ "test.file", "read")));
assertTrue("Returned false for subset of files and actions", perms
.implies(new FilePermission(s + "tmp" + s + "test" + s
+ "test2.file", "write")));
}
class TestSecurityManager extends SecurityManager {
@Override
public void checkPermission(Permission permission) {
}
}
}