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 18 /** 19 * @author Alexey V. Varlamov 20 * @version $Revision$ 21 */ 22 23 package tests.java.security; 24 25 import dalvik.annotation.TestTargetClass; 26 import dalvik.annotation.TestTargets; 27 import dalvik.annotation.TestLevel; 28 import dalvik.annotation.TestTargetNew; 29 30 import java.security.BasicPermission; 31 import java.security.PermissionCollection; 32 33 import junit.framework.TestCase; 34 35 /** 36 * Tests for <code>BasicPermission</code> 37 * 38 */ 39 @TestTargetClass(BasicPermission.class) 40 public class BasicPermissionTest extends TestCase { 41 /** 42 * Check all constructors: an object is created with the specified valid name. 43 * If name equal null then NPE should be thrown. 44 * If name is empty then IAE should be thrown. 45 * Action is ignored. 46 */ 47 @TestTargets({ 48 @TestTargetNew( 49 level = TestLevel.COMPLETE, 50 notes = "", 51 method = "BasicPermission", 52 args = {java.lang.String.class} 53 ), 54 @TestTargetNew( 55 level = TestLevel.COMPLETE, 56 notes = "", 57 method = "BasicPermission", 58 args = {java.lang.String.class, java.lang.String.class} 59 ) 60 }) 61 public void testCtor() 62 { 63 String name = "basic123*$%#"; 64 BasicPermission test = new BasicPermission(name){}; 65 assertEquals(name, test.getName()); 66 assertEquals("", test.getActions()); 67 test = new BasicPermission(name, "#$!#12435"){}; 68 assertEquals(name, test.getName()); 69 assertEquals("", test.getActions()); 70 try{ 71 new BasicPermission(null){}; 72 fail("NPE is not thrown"); 73 } 74 catch (NullPointerException ok){} 75 76 try{ 77 new BasicPermission(null, "ds235"){}; 78 fail("NPE is not thrown"); 79 } 80 catch (NullPointerException ok){} 81 82 try{ 83 new BasicPermission(""){}; 84 fail("IAE is not thrown"); 85 } 86 catch (IllegalArgumentException ok){} 87 try{ 88 new BasicPermission("", "ertre 3454"){}; 89 fail("IAE is not thrown"); 90 } 91 catch (IllegalArgumentException ok){} 92 } 93 94 private final class BasicPermissionImpl extends BasicPermission 95 { 96 public BasicPermissionImpl(String name) 97 { 98 super(name); 99 } 100 } 101 102 /** 103 * two BasicPermissions are equal if name and class are equal; 104 * equal permissions should have the same hash code 105 */ 106 @TestTargetNew( 107 level = TestLevel.COMPLETE, 108 notes = "", 109 method = "equals", 110 args = {java.lang.Object.class} 111 ) 112 public void testEquals() 113 { 114 BasicPermission b1 = new BasicPermissionImpl("abc"); 115 BasicPermission b2 = null; 116 assertTrue(b1.equals(b1)); 117 assertFalse(b1.equals(null)); 118 assertFalse(b1.equals(new Object())); 119 assertFalse(b1.equals("abc")); 120 assertTrue(b1.equals(b2 = new BasicPermissionImpl("abc"))); 121 assertTrue(b1.hashCode() == b2.hashCode()); 122 assertFalse(b1.equals(new BasicPermission("abc"){})); 123 assertFalse(b1.equals(new BasicPermissionImpl("abc.*"))); 124 } 125 126 /** 127 * implies() should return true if a permission is equal to or is implied 128 * by wildcarded permission, false otherwise. 129 */ 130 @TestTargetNew( 131 level = TestLevel.COMPLETE, 132 notes = "", 133 method = "implies", 134 args = {java.security.Permission.class} 135 ) 136 public void testImplies() 137 { 138 BasicPermission b1 = new BasicPermissionImpl("a.b.c"); 139 assertTrue(b1.implies(b1)); 140 assertTrue(b1.implies(new BasicPermissionImpl("a.b.c"))); 141 assertFalse(b1.implies(new BasicPermissionImpl("a.b.c.*"))); 142 assertFalse(b1.implies(new BasicPermission("a.b.c"){})); 143 assertTrue(new BasicPermissionImpl("a.b.*").implies(b1)); 144 assertTrue(new BasicPermissionImpl("a.*").implies(b1)); 145 assertTrue(new BasicPermissionImpl("*").implies(b1)); 146 assertFalse(new BasicPermissionImpl("a.b*").implies(b1)); 147 assertFalse(new BasicPermissionImpl("a.b.c.*").implies(b1)); 148 assertTrue(new BasicPermissionImpl("1.*").implies(new BasicPermissionImpl("1.234.*"))); 149 assertTrue(new BasicPermissionImpl("*").implies(new BasicPermissionImpl("*"))); 150 } 151 152 /** 153 * newPermissionCollection() should return new BasicPermissionCollection on every invocation 154 */ 155 @TestTargetNew( 156 level = TestLevel.COMPLETE, 157 notes = "", 158 method = "newPermissionCollection", 159 args = {} 160 ) 161 public void testCollection() 162 { 163 BasicPermission b1 = new BasicPermissionImpl("a.b.c"); 164 PermissionCollection pc1 = b1.newPermissionCollection(); 165 PermissionCollection pc2 = b1.newPermissionCollection(); 166 // assertTrue((pc1 instanceof BasicPermissionCollection) && (pc2 instanceof BasicPermissionCollection)); 167 assertNotSame(pc1, pc2); 168 } 169 } 170