Home | History | Annotate | Download | only in security
      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