Package org.apache.harmony.security.tests

Source Code of org.apache.harmony.security.tests.PolicyEntryTest

/*
*  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.
*/

/**
* @author Alexey V. Varlamov
* @version $Revision$
*/

package org.apache.harmony.security.tests;

import java.net.URL;
import java.security.cert.Certificate;
import java.security.AllPermission;
import java.security.CodeSource;
import java.security.Permission;
import java.security.Principal;
import java.security.SecurityPermission;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;

import org.apache.harmony.security.PolicyEntry;
import org.apache.harmony.security.UnresolvedPrincipal;
import junit.framework.TestCase;


/**
* TODO Put your class description here
*
*/

public class PolicyEntryTest extends TestCase {

    /**
     * Tests constructor and accessors of PolicyEntry
     */
    public void testCtor() {
        PolicyEntry pe = new PolicyEntry(null, null, null);
        assertTrue(pe.isVoid());
        assertNull(pe.getPermissions());

        pe = new PolicyEntry(new CodeSource(null, (Certificate[])null),
            new ArrayList(), new ArrayList());
        assertTrue(pe.isVoid());
        assertNull(pe.getPermissions());

        Collection perms = Arrays.asList(new Permission[] {
            new SecurityPermission("dsfg"), new AllPermission() });
        pe = new PolicyEntry(null, null, perms);
        assertFalse(pe.isVoid());
        assertEquals(perms, new ArrayList(pe.getPermissions()));
    }

    /**
     * Null CodeSource of PolicyEntry implies any CodeSource; non-null
     * CodeSource should delegate to its own imply() functionality
     */
    public void testImpliesCodeSource() throws Exception {
        CodeSource cs0  = new CodeSource(null, (Certificate[]) null);

        CodeSource cs10 = new CodeSource(new URL("file:"), (Certificate[]) null);
        CodeSource cs11 = new CodeSource(new URL("file:/"), (Certificate[]) null);
        CodeSource cs12 = new CodeSource(new URL("file://"), (Certificate[]) null);
        CodeSource cs13 = new CodeSource(new URL("file:///"), (Certificate[]) null);

        CodeSource cs20 = new CodeSource(new URL("file:*"), (Certificate[]) null);
        CodeSource cs21 = new CodeSource(new URL("file:/*"), (Certificate[]) null);
        CodeSource cs22 = new CodeSource(new URL("file://*"), (Certificate[]) null);
        CodeSource cs23 = new CodeSource(new URL("file:///*"), (Certificate[]) null);

        CodeSource cs30 = new CodeSource(new URL("file:-"), (Certificate[]) null);
        CodeSource cs31 = new CodeSource(new URL("file:/-"), (Certificate[]) null);
        CodeSource cs32 = new CodeSource(new URL("file://-"), (Certificate[]) null);
        CodeSource cs33 = new CodeSource(new URL("file:///-"), (Certificate[]) null);

        PolicyEntry pe0  = new PolicyEntry(null, null, null);

        PolicyEntry pe10 = new PolicyEntry(cs10, null, null);
        PolicyEntry pe11 = new PolicyEntry(cs11, null, null);
        PolicyEntry pe12 = new PolicyEntry(cs12, null, null);
        PolicyEntry pe13 = new PolicyEntry(cs13, null, null);

        PolicyEntry pe20 = new PolicyEntry(cs20, null, null);
        PolicyEntry pe21 = new PolicyEntry(cs21, null, null);
        PolicyEntry pe22 = new PolicyEntry(cs22, null, null);
        PolicyEntry pe23 = new PolicyEntry(cs23, null, null);

        PolicyEntry pe30 = new PolicyEntry(cs30, null, null);
        PolicyEntry pe31 = new PolicyEntry(cs31, null, null);
        PolicyEntry pe32 = new PolicyEntry(cs32, null, null);
        PolicyEntry pe33 = new PolicyEntry(cs33, null, null);

        assertTrue (pe0.impliesCodeSource(null));
        assertTrue (pe0.impliesCodeSource(cs10));
        assertTrue (pe0.impliesCodeSource(cs11));
        assertTrue (pe0.impliesCodeSource(cs12));
        assertTrue (pe0.impliesCodeSource(cs13));
        assertTrue (pe0.impliesCodeSource(cs20));
        assertTrue (pe0.impliesCodeSource(cs21));
        assertTrue (pe0.impliesCodeSource(cs22));
        assertTrue (pe0.impliesCodeSource(cs23));
        assertTrue (pe0.impliesCodeSource(cs30));
        assertTrue (pe0.impliesCodeSource(cs31));
        assertTrue (pe0.impliesCodeSource(cs32));
        assertTrue (pe0.impliesCodeSource(cs33));

        assertFalse(pe10.impliesCodeSource(null));
        assertTrue (pe10.impliesCodeSource(cs10));
        assertFalse(pe10.impliesCodeSource(cs11));
        assertTrue (pe10.impliesCodeSource(cs12));
        assertFalse(pe10.impliesCodeSource(cs13));
        assertTrue (pe10.impliesCodeSource(cs20));
        assertFalse(pe10.impliesCodeSource(cs21));
        assertFalse(pe10.impliesCodeSource(cs22));
        assertFalse(pe10.impliesCodeSource(cs23));
        assertTrue (pe10.impliesCodeSource(cs30));
        assertFalse(pe10.impliesCodeSource(cs31));
        assertFalse(pe10.impliesCodeSource(cs32));
        assertFalse(pe10.impliesCodeSource(cs33));

        assertFalse(pe11.impliesCodeSource(null));
        assertFalse(pe11.impliesCodeSource(cs10));
        assertTrue (pe11.impliesCodeSource(cs11));
        assertFalse(pe11.impliesCodeSource(cs12));
        assertTrue (pe11.impliesCodeSource(cs13));
        assertFalse(pe11.impliesCodeSource(cs20));
        assertFalse(pe11.impliesCodeSource(cs21));
        assertFalse(pe11.impliesCodeSource(cs22));
        assertFalse(pe11.impliesCodeSource(cs23));
        assertFalse(pe11.impliesCodeSource(cs30));
        assertFalse(pe11.impliesCodeSource(cs31));
        assertFalse(pe11.impliesCodeSource(cs32));
        assertFalse(pe11.impliesCodeSource(cs33));

        assertFalse(pe12.impliesCodeSource(null));
        assertTrue (pe12.impliesCodeSource(cs10));
        assertFalse(pe12.impliesCodeSource(cs11));
        assertTrue (pe12.impliesCodeSource(cs12));
        assertFalse(pe12.impliesCodeSource(cs13));
        assertTrue (pe12.impliesCodeSource(cs20));
        assertFalse(pe12.impliesCodeSource(cs21));
        assertFalse(pe12.impliesCodeSource(cs22));
        assertFalse(pe12.impliesCodeSource(cs23));
        assertTrue (pe12.impliesCodeSource(cs30));
        assertFalse(pe12.impliesCodeSource(cs31));
        assertFalse(pe12.impliesCodeSource(cs32));
        assertFalse(pe12.impliesCodeSource(cs33));

        assertFalse(pe13.impliesCodeSource(null));
        assertFalse(pe13.impliesCodeSource(cs10));
        assertTrue (pe13.impliesCodeSource(cs11));
        assertFalse(pe13.impliesCodeSource(cs12));
        assertTrue (pe13.impliesCodeSource(cs13));
        assertFalse(pe13.impliesCodeSource(cs20));
        assertFalse(pe13.impliesCodeSource(cs21));
        assertFalse(pe13.impliesCodeSource(cs22));
        assertFalse(pe13.impliesCodeSource(cs23));
        assertFalse(pe13.impliesCodeSource(cs30));
        assertFalse(pe13.impliesCodeSource(cs31));
        assertFalse(pe13.impliesCodeSource(cs32));
        assertFalse(pe13.impliesCodeSource(cs33));

        assertFalse(pe20.impliesCodeSource(null));
        assertTrue (pe20.impliesCodeSource(cs10));
        assertFalse(pe20.impliesCodeSource(cs11));
        assertTrue (pe20.impliesCodeSource(cs12));
        assertFalse(pe20.impliesCodeSource(cs13));
        assertTrue (pe20.impliesCodeSource(cs20));
        assertFalse(pe20.impliesCodeSource(cs21));
        assertFalse(pe20.impliesCodeSource(cs22));
        assertFalse(pe20.impliesCodeSource(cs23));
        assertTrue (pe20.impliesCodeSource(cs30));
        assertFalse(pe20.impliesCodeSource(cs31));
        assertFalse(pe20.impliesCodeSource(cs32));
        assertFalse(pe20.impliesCodeSource(cs33));

        assertFalse(pe21.impliesCodeSource(null));
        assertFalse(pe21.impliesCodeSource(cs10));
        assertTrue (pe21.impliesCodeSource(cs11));
        assertFalse(pe21.impliesCodeSource(cs12));
        assertTrue (pe21.impliesCodeSource(cs13));
        assertFalse(pe21.impliesCodeSource(cs20));
        assertTrue (pe21.impliesCodeSource(cs21));
        assertFalse(pe21.impliesCodeSource(cs22));
        assertTrue (pe21.impliesCodeSource(cs23));
        assertFalse(pe21.impliesCodeSource(cs30));
        assertTrue (pe21.impliesCodeSource(cs31));
        assertFalse(pe21.impliesCodeSource(cs32));
        assertTrue (pe21.impliesCodeSource(cs33));

        assertFalse(pe22.impliesCodeSource(null));
        assertFalse(pe22.impliesCodeSource(cs10));
        // assertFalse(pe22.impliesCodeSource(cs11));
        assertFalse(pe22.impliesCodeSource(cs12));
        // assertFalse(pe22.impliesCodeSource(cs13));
        assertFalse(pe22.impliesCodeSource(cs20));
        assertFalse(pe22.impliesCodeSource(cs21));
        assertTrue (pe22.impliesCodeSource(cs22));
        assertFalse(pe22.impliesCodeSource(cs23));
        assertFalse(pe22.impliesCodeSource(cs30));
        assertFalse(pe22.impliesCodeSource(cs31));
        assertTrue (pe22.impliesCodeSource(cs32));
        assertFalse(pe22.impliesCodeSource(cs33));

        assertFalse(pe23.impliesCodeSource(null));
        assertFalse(pe23.impliesCodeSource(cs10));
        assertTrue (pe23.impliesCodeSource(cs11));
        assertFalse(pe23.impliesCodeSource(cs12));
        assertTrue (pe23.impliesCodeSource(cs13));
        assertFalse(pe23.impliesCodeSource(cs20));
        assertTrue (pe23.impliesCodeSource(cs21));
        assertFalse(pe23.impliesCodeSource(cs22));
        assertTrue (pe23.impliesCodeSource(cs23));
        assertFalse(pe23.impliesCodeSource(cs30));
        assertTrue (pe23.impliesCodeSource(cs31));
        assertFalse(pe23.impliesCodeSource(cs32));
        assertTrue (pe23.impliesCodeSource(cs33));

        assertFalse(pe30.impliesCodeSource(null));
        assertTrue (pe30.impliesCodeSource(cs10));
        assertFalse(pe30.impliesCodeSource(cs11));
        assertTrue (pe30.impliesCodeSource(cs12));
        assertFalse(pe30.impliesCodeSource(cs13));
        assertTrue (pe30.impliesCodeSource(cs20));
        assertFalse(pe30.impliesCodeSource(cs21));
        assertFalse(pe30.impliesCodeSource(cs22));
        assertFalse(pe30.impliesCodeSource(cs23));
        assertTrue (pe30.impliesCodeSource(cs30));
        assertFalse(pe30.impliesCodeSource(cs31));
        assertFalse(pe30.impliesCodeSource(cs32));
        assertFalse(pe30.impliesCodeSource(cs33));

        assertFalse(pe31.impliesCodeSource(null));
        assertTrue (pe31.impliesCodeSource(cs10));
        assertTrue (pe31.impliesCodeSource(cs11));
        assertTrue (pe31.impliesCodeSource(cs12));
        assertTrue (pe31.impliesCodeSource(cs13));
        assertTrue (pe31.impliesCodeSource(cs20));
        assertTrue (pe31.impliesCodeSource(cs21));
        assertFalse(pe31.impliesCodeSource(cs22));
        assertTrue (pe31.impliesCodeSource(cs23));
        assertTrue (pe31.impliesCodeSource(cs30));
        assertTrue (pe31.impliesCodeSource(cs31));
        assertFalse(pe31.impliesCodeSource(cs32));
        assertTrue (pe31.impliesCodeSource(cs33));

        assertFalse(pe32.impliesCodeSource(null));
        assertFalse(pe32.impliesCodeSource(cs10));
        assertFalse(pe32.impliesCodeSource(cs11));
        assertFalse(pe32.impliesCodeSource(cs12));
        assertFalse(pe32.impliesCodeSource(cs13));
        assertFalse(pe32.impliesCodeSource(cs20));
        assertFalse(pe32.impliesCodeSource(cs21));
        assertFalse(pe32.impliesCodeSource(cs22));
        assertFalse(pe32.impliesCodeSource(cs23));
        assertFalse(pe32.impliesCodeSource(cs30));
        assertFalse(pe32.impliesCodeSource(cs31));
        assertTrue (pe32.impliesCodeSource(cs32));
        assertFalse(pe32.impliesCodeSource(cs33));

        assertFalse(pe33.impliesCodeSource(null));
        assertTrue (pe33.impliesCodeSource(cs10));
        assertTrue (pe33.impliesCodeSource(cs11));
        assertTrue (pe33.impliesCodeSource(cs12));
        assertTrue (pe33.impliesCodeSource(cs13));
        assertTrue (pe33.impliesCodeSource(cs20));
        assertTrue (pe33.impliesCodeSource(cs21));
        assertFalse(pe33.impliesCodeSource(cs22));
        assertTrue (pe33.impliesCodeSource(cs23));
        assertTrue (pe33.impliesCodeSource(cs30));
        assertTrue (pe33.impliesCodeSource(cs31));
        assertFalse(pe33.impliesCodeSource(cs32));
        assertTrue (pe33.impliesCodeSource(cs33));
    }

    /**
     * Null or empty set of Principals of PolicyEntry implies any Principals;
     * otherwise tested set must contain all Principals of PolicyEntry.
     */
    public void testImpliesPrincipals() {
        PolicyEntry pe = new PolicyEntry(null, null, null);
        Principal[] pp1 = new Principal[] {};
        Principal[] pp2 = new Principal[] { new UnresolvedPrincipal("a.b.c",
            "XXX") };
        Principal[] pp3 = new Principal[] {
            new UnresolvedPrincipal("a.b.c", "YYY"),
            new UnresolvedPrincipal("a.b.c", "XXX"),
            new UnresolvedPrincipal("e.f.g", "ZZZ") };

        assertTrue(pe.impliesPrincipals(null));
        assertTrue(pe.impliesPrincipals(pp1));

        pe = new PolicyEntry(null, new HashSet(), null);
        assertTrue(pe.impliesPrincipals(pp3));

        pe = new PolicyEntry(null, Arrays.asList(pp2), null);
        assertFalse(pe.impliesPrincipals(null));
        assertFalse(pe.impliesPrincipals(pp1));
        assertTrue(pe.impliesPrincipals(pp3));
    }
}
TOP

Related Classes of org.apache.harmony.security.tests.PolicyEntryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.