1/* 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 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 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. 16 */ 17 18package tests.security.acl; 19 20import dalvik.annotation.TestTargets; 21import dalvik.annotation.TestLevel; 22import dalvik.annotation.TestTargetNew; 23import dalvik.annotation.TestTargetClass; 24 25import junit.framework.TestCase; 26 27import java.security.acl.Acl; 28import java.security.acl.AclEntry; 29import java.security.acl.NotOwnerException; 30import java.security.acl.Permission; 31import java.security.Principal; 32import java.util.Enumeration; 33import java.util.Vector; 34 35import org.apache.harmony.security.tests.support.acl.*; 36 37@TestTargetClass(Acl.class) 38public class IAclTest extends TestCase { 39 40 class MyAcl extends AclImpl { 41 public MyAcl(Principal principal, String str) { 42 super(principal, str); 43 } 44 } 45 46 47 /** 48 * @tests java.security.acl.Acl#addEntry(Principal caller, AclEntry entry) 49 * @tests java.security.acl.Acl#removeEntry(Principal caller, AclEntry entry) 50 */ 51 @TestTargets({ 52 @TestTargetNew( 53 level = TestLevel.COMPLETE, 54 notes = "", 55 method = "addEntry", 56 args = {java.security.Principal.class, java.security.acl.AclEntry.class} 57 ), 58 @TestTargetNew( 59 level = TestLevel.COMPLETE, 60 notes = "", 61 method = "removeEntry", 62 args = {java.security.Principal.class, java.security.acl.AclEntry.class} 63 ) 64 }) 65 public void test_Acl01() { 66 Principal pr = new PrincipalImpl("TestPrincipal"); 67 String str = "TestName"; 68 MyAcl acl = new MyAcl(pr, str); 69 AclEntry ae = new AclEntryImpl(pr); 70 try { 71 assertTrue(acl.addEntry(pr, ae)); 72 assertFalse(acl.addEntry(pr, ae)); 73 assertTrue(acl.removeEntry(pr, ae)); 74 assertFalse(acl.removeEntry(pr, ae)); 75 } catch (Exception ex) { 76 fail("Unexpected exception " + ex); 77 } 78 79 try { 80 acl.addEntry(new PrincipalImpl("NewPrincipal"), ae); 81 fail("NotOwnerException was not thrown"); 82 } catch (NotOwnerException noe) { 83 //expected 84 } 85 86 try { 87 acl.removeEntry(new PrincipalImpl("NewPrincipal"), ae); 88 fail("NotOwnerException was not thrown"); 89 } catch (NotOwnerException noe) { 90 //expected 91 } 92 } 93 94 /** 95 * @tests java.security.acl.Acl#setName(Principal caller, String name) 96 * @tests java.security.acl.Acl#getName() 97 */ 98 @TestTargets({ 99 @TestTargetNew( 100 level = TestLevel.COMPLETE, 101 notes = "", 102 method = "setName", 103 args = {java.security.Principal.class, java.lang.String.class} 104 ), 105 @TestTargetNew( 106 level = TestLevel.COMPLETE, 107 notes = "", 108 method = "getName", 109 args = {} 110 ) 111 }) 112 public void test_Acl02() { 113 Principal pr = new PrincipalImpl("TestPrincipal"); 114 String str = "TestName"; 115 String newStr = "NewName"; 116 MyAcl acl = new MyAcl(pr, str); 117 try { 118 assertEquals("Names are not equal", str, acl.getName()); 119 acl.setName(pr, newStr); 120 assertEquals("Names are not equal", newStr, acl.getName()); 121 } catch (Exception ex) { 122 fail("Unexpected exception " + ex); 123 } 124 125 try { 126 acl.setName(new PrincipalImpl("NewPrincipal"), str); 127 fail("NotOwnerException was not thrown"); 128 } catch (NotOwnerException noe) { 129 //expected 130 } 131 } 132 133 /** 134 * @tests java.security.acl.Acl#toString() 135 */ 136 @TestTargetNew( 137 level = TestLevel.COMPLETE, 138 notes = "", 139 method = "toString", 140 args = {} 141 ) 142 public void test_Acl03() { 143 Principal pr = new PrincipalImpl("TestPrincipal"); 144 String str = "TestName"; 145 MyAcl acl = new MyAcl(pr, str); 146 AclEntry ae = new AclEntryImpl(pr); 147 Permission perm = new PermissionImpl("Permission_1"); 148 try { 149 ae.addPermission(perm); 150 acl.addEntry(pr, ae); 151 String res = acl.toString(); 152 assertTrue(res.contains(perm.toString())); 153 } catch (Exception ex) { 154 fail("Unexpected exception " + ex); 155 } 156 } 157 158 /** 159 * @tests java.security.acl.Acl#entries() 160 */ 161 @TestTargetNew( 162 level = TestLevel.COMPLETE, 163 notes = "", 164 method = "entries", 165 args = {} 166 ) 167 public void test_Acl04() { 168 Principal pr = new PrincipalImpl("TestPrincipal"); 169 String str = "TestName"; 170 MyAcl acl = new MyAcl(pr, str); 171 AclEntry ae1 = new AclEntryImpl(pr); 172 try { 173 ae1.addPermission(new PermissionImpl("Permission_1")); 174 acl.addEntry(pr, ae1); 175 Enumeration en = acl.entries(); 176 Vector v = new Vector(); 177 while (en.hasMoreElements()) { 178 v.addElement(en.nextElement()); 179 } 180 assertEquals(v.size(), 1); 181 } catch (Exception ex) { 182 fail("Unexpected exception " + ex); 183 } 184 } 185 186 /** 187 * @tests java.security.acl.Acl#checkPermission(Principal principal, Permission permission) 188 * @tests java.security.acl.Acl#getPermissions(Principal principal) 189 */ 190 @TestTargets({ 191 @TestTargetNew( 192 level = TestLevel.COMPLETE, 193 notes = "", 194 method = "checkPermission", 195 args = {java.security.Principal.class, java.security.acl.Permission.class} 196 ), 197 @TestTargetNew( 198 level = TestLevel.COMPLETE, 199 notes = "", 200 method = "getPermissions", 201 args = {java.security.Principal.class} 202 ) 203 }) 204 public void test_Acl05() { 205 Principal pr = new PrincipalImpl("TestPrincipal"); 206 String str = "TestName"; 207 MyAcl acl = new MyAcl(pr, str); 208 AclEntry ae = new AclEntryImpl(pr); 209 Permission perm = new PermissionImpl("Permission_1"); 210 try { 211 ae.addPermission(perm); 212 acl.addEntry(pr, ae); 213 214 //checkPermission verification 215 assertTrue("Incorrect permission", acl.checkPermission(pr, perm)); 216 assertFalse(acl.checkPermission(pr, new PermissionImpl("Permission_2"))); 217 218 //getPermissions 219 Enumeration en = acl.getPermissions(pr); 220 Vector v = new Vector(); 221 while (en.hasMoreElements()) { 222 v.addElement(en.nextElement()); 223 } 224 assertEquals(v.size(), 1); 225 assertEquals(v.elementAt(0).toString(), perm.toString()); 226 } catch (Exception ex) { 227 fail("Exception " + ex + " was thrown"); 228 } 229 } 230}