/*
* 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 tests.security.acl;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
import dalvik.annotation.TestTargetClass;
import junit.framework.TestCase;
import java.security.acl.Acl;
import java.security.acl.AclEntry;
import java.security.acl.NotOwnerException;
import java.security.acl.Permission;
import java.security.Principal;
import java.util.Enumeration;
import java.util.Vector;
import org.apache.harmony.security.tests.support.acl.*;
@TestTargetClass(Acl.class)
public class IAclTest extends TestCase {
class MyAcl extends AclImpl {
public MyAcl(Principal principal, String str) {
super(principal, str);
}
}
/**
* @tests java.security.acl.Acl#addEntry(Principal caller, AclEntry entry)
* @tests java.security.acl.Acl#removeEntry(Principal caller, AclEntry entry)
*/
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "addEntry",
args = {java.security.Principal.class, java.security.acl.AclEntry.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "removeEntry",
args = {java.security.Principal.class, java.security.acl.AclEntry.class}
)
})
public void test_Acl01() {
Principal pr = new PrincipalImpl("TestPrincipal");
String str = "TestName";
MyAcl acl = new MyAcl(pr, str);
AclEntry ae = new AclEntryImpl(pr);
try {
assertTrue(acl.addEntry(pr, ae));
assertFalse(acl.addEntry(pr, ae));
assertTrue(acl.removeEntry(pr, ae));
assertFalse(acl.removeEntry(pr, ae));
} catch (Exception ex) {
fail("Unexpected exception " + ex);
}
try {
acl.addEntry(new PrincipalImpl("NewPrincipal"), ae);
fail("NotOwnerException was not thrown");
} catch (NotOwnerException noe) {
//expected
}
try {
acl.removeEntry(new PrincipalImpl("NewPrincipal"), ae);
fail("NotOwnerException was not thrown");
} catch (NotOwnerException noe) {
//expected
}
}
/**
* @tests java.security.acl.Acl#setName(Principal caller, String name)
* @tests java.security.acl.Acl#getName()
*/
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "setName",
args = {java.security.Principal.class, java.lang.String.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getName",
args = {}
)
})
public void test_Acl02() {
Principal pr = new PrincipalImpl("TestPrincipal");
String str = "TestName";
String newStr = "NewName";
MyAcl acl = new MyAcl(pr, str);
try {
assertEquals("Names are not equal", str, acl.getName());
acl.setName(pr, newStr);
assertEquals("Names are not equal", newStr, acl.getName());
} catch (Exception ex) {
fail("Unexpected exception " + ex);
}
try {
acl.setName(new PrincipalImpl("NewPrincipal"), str);
fail("NotOwnerException was not thrown");
} catch (NotOwnerException noe) {
//expected
}
}
/**
* @tests java.security.acl.Acl#toString()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "toString",
args = {}
)
public void test_Acl03() {
Principal pr = new PrincipalImpl("TestPrincipal");
String str = "TestName";
MyAcl acl = new MyAcl(pr, str);
AclEntry ae = new AclEntryImpl(pr);
Permission perm = new PermissionImpl("Permission_1");
try {
ae.addPermission(perm);
acl.addEntry(pr, ae);
String res = acl.toString();
assertTrue(res.contains(perm.toString()));
} catch (Exception ex) {
fail("Unexpected exception " + ex);
}
}
/**
* @tests java.security.acl.Acl#entries()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "entries",
args = {}
)
public void test_Acl04() {
Principal pr = new PrincipalImpl("TestPrincipal");
String str = "TestName";
MyAcl acl = new MyAcl(pr, str);
AclEntry ae1 = new AclEntryImpl(pr);
try {
ae1.addPermission(new PermissionImpl("Permission_1"));
acl.addEntry(pr, ae1);
Enumeration en = acl.entries();
Vector v = new Vector();
while (en.hasMoreElements()) {
v.addElement(en.nextElement());
}
assertEquals(v.size(), 1);
} catch (Exception ex) {
fail("Unexpected exception " + ex);
}
}
/**
* @tests java.security.acl.Acl#checkPermission(Principal principal, Permission permission)
* @tests java.security.acl.Acl#getPermissions(Principal principal)
*/
@TestTargets({
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "checkPermission",
args = {java.security.Principal.class, java.security.acl.Permission.class}
),
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getPermissions",
args = {java.security.Principal.class}
)
})
public void test_Acl05() {
Principal pr = new PrincipalImpl("TestPrincipal");
String str = "TestName";
MyAcl acl = new MyAcl(pr, str);
AclEntry ae = new AclEntryImpl(pr);
Permission perm = new PermissionImpl("Permission_1");
try {
ae.addPermission(perm);
acl.addEntry(pr, ae);
//checkPermission verification
assertTrue("Incorrect permission", acl.checkPermission(pr, perm));
assertFalse(acl.checkPermission(pr, new PermissionImpl("Permission_2")));
//getPermissions
Enumeration en = acl.getPermissions(pr);
Vector v = new Vector();
while (en.hasMoreElements()) {
v.addElement(en.nextElement());
}
assertEquals(v.size(), 1);
assertEquals(v.elementAt(0).toString(), perm.toString());
} catch (Exception ex) {
fail("Exception " + ex + " was thrown");
}
}
} |