1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Alexander V. Astapchuk
208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security;
238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.*;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLClassLoader;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unit tests for java.security.ProtectionDomain.
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ProtectionDomainTest extends TestCase {
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private final AllPermission allperm = new AllPermission();
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private URL url = null;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private CodeSource cs = null;
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private PermissionCollection perms = null;
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private ClassLoader classldr = null;
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private Principal[] principals = null; // changed in setUp()
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /*
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @see TestCase#setUp()
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() throws Exception {
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super.setUp();
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            url = new URL("http://localhost");
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (MalformedURLException ex) {
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throw new Error(ex);
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cs = new CodeSource(url, (java.security.cert.Certificate[]) null);
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        perms = allperm.newPermissionCollection();
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        perms.add(allperm);
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        classldr = URLClassLoader.newInstance(new URL[] { url });
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        principals = new Principal[] { new TestPrincipal("0"),
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new TestPrincipal("1"), new TestPrincipal("2"),
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new TestPrincipal("3"), new TestPrincipal("4"), };
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Class under test for void ProtectionDomain(CodeSource,
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * PermissionCollection)
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testProtectionDomainCodeSourcePermissionCollection_00() {
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, null);
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(cs, null);
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(cs, perms);
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * the ctor must set the PermissionCollection read-only
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testProtectionDomainCodeSourcePermissionCollection_01() {
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(perms.isReadOnly());
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, perms);
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(perms.isReadOnly());
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for ProtectionDomain(CodeSource, PermissionCollection, ClassLoader, Principal[])
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testProtectionDomainCodeSourcePermissionCollectionClassLoaderPrincipalArray() {
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, null, null, null);
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(cs, null, null, null);
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, perms, null, null);
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, null, classldr, null);
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, null, null, principals);
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(cs, perms, classldr, principals);
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests for ProtectionDomain.getClassLoader()
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetClassLoader() {
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(new ProtectionDomain(null, null).getClassLoader());
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(new ProtectionDomain(null, null, classldr, null)
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getClassLoader(), classldr);
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests for ProtectionDomain.getCodeSource()
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetCodeSource() {
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(new ProtectionDomain(null, null).getCodeSource());
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(new ProtectionDomain(cs, null).getCodeSource(), cs);
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests for ProtectionDomain.getPermissions()
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetPermissions() {
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(new ProtectionDomain(null, null).getPermissions());
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(new ProtectionDomain(null, perms).getPermissions(), perms);
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getPrincipals() always returns non null array
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetPrincipals_00() {
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(new ProtectionDomain(null, null).getPrincipals());
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getPrincipals() returns new array each time it's called
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetPrincipals_01() {
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ProtectionDomain pd = new ProtectionDomain(null, null, null, principals);
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Principal[] got = pd.getPrincipals();
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(got);
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotSame(got, principals);
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotSame(got, pd.getPrincipals());
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(got.length == principals.length);
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * ProtectionDomain with null Permissions must not imply() permissions.
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testImplies_00() {
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(new ProtectionDomain(null, null).implies(allperm));
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * ProtectionDomain with PermissionCollection which contains AllPermission
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * must imply() AllPermission.
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testImplies_01() {
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(new ProtectionDomain(null, perms).implies(allperm));
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
163e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * ProtectionDomain created with a static set of permissions must not query
164e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * policy.
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testImplies_02() {
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestPolicy policy = new TestPolicy();
168e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        // null set of permissions [must] force the PD to use Policy - for
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // dynamic permissions
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ProtectionDomain pd = new ProtectionDomain(cs, null);
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        policy.setTrackPD(pd);
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Policy.setPolicy(policy);
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            pd.implies(allperm);
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Policy.setPolicy(null);
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(policy.getPdTracked());
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
182e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * ProtectionDomain created with dynamic set of permissions must query
183e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * policy.
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testImplies_03() {
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestPolicy policy = new TestPolicy();
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ProtectionDomain pd = new ProtectionDomain(cs, null, ClassLoader
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getSystemClassLoader(), principals);
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        policy.setTrackPD(pd);
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Policy.setPolicy(policy);
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            pd.implies(allperm);
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Policy.setPolicy(null);
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(policy.getPdTracked());
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Simply checks that it's working somehow
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testToString() {
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, null).toString();
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(cs, perms).toString();
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(null, null, null, null).toString();
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ProtectionDomain(cs, perms, classldr, principals).toString();
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test principal used during the testing. Does nothing.
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static class TestPrincipal implements Principal {
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        private String name;
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestPrincipal(String name) {
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.name = name;
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getName() {
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return "TestPrincipal: " + name;
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static class TestPolicy extends Policy {
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ProtectionDomain trackPD = null;
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean pdTracked = false;
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ProtectionDomain setTrackPD(ProtectionDomain pd) {
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ProtectionDomain tmp = trackPD;
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            trackPD = pd;
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            pdTracked = false;
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return tmp;
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean getPdTracked() {
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return pdTracked;
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public PermissionCollection getPermissions(CodeSource cs) {
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return new Permissions();
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //        public PermissionCollection getPermissions(ProtectionDomain domain) {
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //            return super.getPermissions(domain);
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //        }
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean implies(ProtectionDomain domain, Permission permission) {
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (trackPD != null && trackPD == domain) {
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                pdTracked = true;
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return super.implies(domain, permission);
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void refresh() {
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // do nothing
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
261