KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > loom > xmlpolicy > builder > BuilderTestCase


1 /*
2  * Copyright (C) The Spice Group. All rights reserved.
3  *
4  * This software is published under the terms of the Spice
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.loom.xmlpolicy.builder;
9
10 import java.net.URL JavaDoc;
11 import java.security.AllPermission JavaDoc;
12 import java.security.CodeSource JavaDoc;
13 import java.security.PermissionCollection JavaDoc;
14 import java.security.Policy JavaDoc;
15 import java.security.UnresolvedPermission JavaDoc;
16 import java.security.cert.Certificate JavaDoc;
17 import java.util.Enumeration JavaDoc;
18 import java.io.FilePermission JavaDoc;
19 import junit.framework.TestCase;
20
21 import org.codehaus.loom.xmlpolicy.builder.PolicyBuilder;
22 import org.codehaus.loom.xmlpolicy.metadata.GrantMetaData;
23 import org.codehaus.loom.xmlpolicy.metadata.KeyStoreMetaData;
24 import org.codehaus.loom.xmlpolicy.metadata.PermissionMetaData;
25 import org.codehaus.loom.xmlpolicy.metadata.PolicyMetaData;
26
27 /**
28  * TestCase for Builder package.
29  *
30  * @author Peter Donald
31  */

32 public class BuilderTestCase
33     extends TestCase
34 {
35     public BuilderTestCase( final String JavaDoc name )
36     {
37         super( name );
38     }
39
40     public void testEmptyMetaData()
41         throws Exception JavaDoc
42     {
43         final PolicyBuilder builder = new PolicyBuilder();
44         final PolicyMetaData metaData =
45             new PolicyMetaData( new KeyStoreMetaData[ 0 ], new GrantMetaData[ 0 ] );
46         final TestResolver resolver = new TestResolver();
47         try
48         {
49             final Policy JavaDoc policy = builder.buildPolicy( metaData, resolver );
50             final PermissionCollection JavaDoc permissions =
51                 policy.getPermissions( new CodeSource JavaDoc( null, new Certificate JavaDoc[ 0 ] ) );
52             assertEquals( "Expect no permissions for empty metaData",
53                           false,
54                           permissions.elements().hasMoreElements() );
55         }
56         catch( final Exception JavaDoc e )
57         {
58             fail( "Expected to be able to build Policy with empty metadata" );
59         }
60     }
61
62     public void testNullResolverInBuildPolicy()
63         throws Exception JavaDoc
64     {
65         final PolicyBuilder builder = new PolicyBuilder();
66         final PolicyMetaData metaData =
67             new PolicyMetaData( new KeyStoreMetaData[ 0 ], new GrantMetaData[ 0 ] );
68         try
69         {
70             builder.buildPolicy( metaData, null );
71             fail( "Expected to fail due to null pointer in buildPolicy" );
72         }
73         catch( final NullPointerException JavaDoc npe )
74         {
75             assertEquals( "NPE message",
76                           "resolver",
77                           npe.getMessage() );
78         }
79     }
80
81     public void testNullMetaDataInBuildPolicy()
82         throws Exception JavaDoc
83     {
84         final PolicyBuilder builder = new PolicyBuilder();
85         try
86         {
87             builder.buildPolicy( null, new TestResolver() );
88             fail( "Expected to fail due to null pointer in buildPolicy" );
89         }
90         catch( final NullPointerException JavaDoc npe )
91         {
92             assertEquals( "NPE message",
93                           "policy",
94                           npe.getMessage() );
95         }
96
97     }
98
99     public void testMetaDataWithAPermission()
100         throws Exception JavaDoc
101     {
102         final PolicyBuilder builder = new PolicyBuilder();
103         final PermissionMetaData permission =
104             new PermissionMetaData( AllPermission JavaDoc.class.getName(), null, null, null, null );
105         final GrantMetaData grant =
106             new GrantMetaData( "file:/", null, null,
107                                new PermissionMetaData[]{permission} );
108         final PolicyMetaData metaData =
109             new PolicyMetaData( new KeyStoreMetaData[ 0 ], new GrantMetaData[]{grant} );
110         final TestResolver resolver = new TestResolver();
111         try
112         {
113             final Policy JavaDoc policy = builder.buildPolicy( metaData, resolver );
114             final CodeSource JavaDoc codesource =
115                 new CodeSource JavaDoc( new URL JavaDoc( "file:/" ), new Certificate JavaDoc[ 0 ] );
116             final PermissionCollection JavaDoc permissions = policy.getPermissions( codesource );
117             final Enumeration JavaDoc enumeration = permissions.elements();
118             while( enumeration.hasMoreElements() )
119             {
120                 final Object JavaDoc perm = enumeration.nextElement();
121                 if( perm instanceof AllPermission JavaDoc )
122                 {
123                     return;
124                 }
125             }
126             fail( "Expected to get permission set with ALlPermission contained" );
127         }
128         catch( final Exception JavaDoc e )
129         {
130             fail( "Expected to be able to build Policy with empty metadata" );
131         }
132     }
133
134     public void testMetaDataWithAPermissionAndCerts()
135         throws Exception JavaDoc
136     {
137         final PolicyBuilder builder = new TestPolicyBuilder();
138         final PermissionMetaData permission =
139             new PermissionMetaData( FilePermission JavaDoc.class.getName(), "/", "read",
140                                     null, null );
141         final GrantMetaData grant =
142             new GrantMetaData( "file:/", "jenny", "default",
143                                new PermissionMetaData[]{permission} );
144         final KeyStoreMetaData keyStore =
145             new KeyStoreMetaData( "default", "http://spice.sourceforge.net", "DoDgY" );
146         final PolicyMetaData metaData =
147             new PolicyMetaData( new KeyStoreMetaData[]{keyStore}, new GrantMetaData[]{grant} );
148         final TestResolver resolver = new TestResolver();
149         final Policy JavaDoc policy = builder.buildPolicy( metaData, resolver );
150         final CodeSource JavaDoc codesource =
151             new CodeSource JavaDoc( new URL JavaDoc( "file:/" ), new Certificate JavaDoc[]{MockCertificate.JENNY_CERTIFICATE} );
152         final PermissionCollection JavaDoc permissions = policy.getPermissions( codesource );
153         final Enumeration JavaDoc enumeration = permissions.elements();
154         while( enumeration.hasMoreElements() )
155         {
156             final Object JavaDoc perm = enumeration.nextElement();
157             if( perm instanceof FilePermission JavaDoc )
158             {
159                 return;
160             }
161         }
162         fail( "Expected to get permission set with ALlPermission contained" );
163     }
164
165     public void testMetaDataWithAPermissionAndMultipleCerts()
166         throws Exception JavaDoc
167     {
168         final PolicyBuilder builder = new TestPolicyBuilder();
169         final PermissionMetaData permission =
170             new PermissionMetaData( RuntimePermission JavaDoc.class.getName(), "getFactory", null,
171                                     null, null );
172         final GrantMetaData grant =
173             new GrantMetaData( "file:/", "jenny,mischelle,jenny", "default",
174                                new PermissionMetaData[]{permission} );
175         final KeyStoreMetaData keyStore =
176             new KeyStoreMetaData( "default", "http://spice.sourceforge.net", "DoDgY" );
177         final PolicyMetaData metaData =
178             new PolicyMetaData( new KeyStoreMetaData[]{keyStore}, new GrantMetaData[]{grant} );
179         final TestResolver resolver = new TestResolver();
180         final Policy JavaDoc policy = builder.buildPolicy( metaData, resolver );
181         final CodeSource JavaDoc codesource =
182             new CodeSource JavaDoc( new URL JavaDoc( "file:/" ), new Certificate JavaDoc[]{MockCertificate.JENNY_CERTIFICATE} );
183         final PermissionCollection JavaDoc permissions = policy.getPermissions( codesource );
184         final Enumeration JavaDoc enumeration = permissions.elements();
185         while( enumeration.hasMoreElements() )
186         {
187             final Object JavaDoc perm = enumeration.nextElement();
188             if( perm instanceof RuntimePermission JavaDoc )
189             {
190                 return;
191             }
192         }
193         fail( "Expected to get permission set with ALlPermission contained" );
194     }
195
196     public void testMetaDataWithAPermissionAndCertsAndUnResolverPerm()
197         throws Exception JavaDoc
198     {
199         final PolicyBuilder builder = new TestPolicyBuilder();
200         final PermissionMetaData permission =
201             new PermissionMetaData( AllPermission JavaDoc.class.getName(), null, null,
202                                     "jenny", "default" );
203         final GrantMetaData grant =
204             new GrantMetaData( "file:/", "jenny", "default",
205                                new PermissionMetaData[]{permission} );
206         final KeyStoreMetaData keyStore =
207             new KeyStoreMetaData( "default", "http://spice.sourceforge.net", "DoDgY" );
208         final PolicyMetaData metaData =
209             new PolicyMetaData( new KeyStoreMetaData[]{keyStore}, new GrantMetaData[]{grant} );
210         final TestResolver resolver = new TestResolver();
211         final Policy JavaDoc policy = builder.buildPolicy( metaData, resolver );
212         final CodeSource JavaDoc codesource =
213             new CodeSource JavaDoc( new URL JavaDoc( "file:/" ), new Certificate JavaDoc[]{MockCertificate.JENNY_CERTIFICATE} );
214         final PermissionCollection JavaDoc permissions = policy.getPermissions( codesource );
215         final Enumeration JavaDoc enumeration = permissions.elements();
216         while( enumeration.hasMoreElements() )
217         {
218             final Object JavaDoc perm = enumeration.nextElement();
219             if( perm instanceof UnresolvedPermission JavaDoc )
220             {
221                 return;
222             }
223         }
224         fail( "Expected to get permission set with UnresolvedPermission contained" );
225     }
226
227     public void testMetaDataWithAPermissionAndCertsAndMisnamedPerm()
228         throws Exception JavaDoc
229     {
230         final PolicyBuilder builder = new TestPolicyBuilder();
231         final PermissionMetaData permission =
232             new PermissionMetaData( AllPermission JavaDoc.class.getName() + "sss", null, null,
233                                     null, null );
234         final GrantMetaData grant =
235             new GrantMetaData( "file:/", "jenny", "default",
236                                new PermissionMetaData[]{permission} );
237         final KeyStoreMetaData keyStore =
238             new KeyStoreMetaData( "default", "http://spice.sourceforge.net", "DoDgY" );
239         final PolicyMetaData metaData =
240             new PolicyMetaData( new KeyStoreMetaData[]{keyStore}, new GrantMetaData[]{grant} );
241         final TestResolver resolver = new TestResolver();
242         final Policy JavaDoc policy = builder.buildPolicy( metaData, resolver );
243         final CodeSource JavaDoc codesource =
244             new CodeSource JavaDoc( new URL JavaDoc( "file:/" ), new Certificate JavaDoc[]{MockCertificate.JENNY_CERTIFICATE} );
245         final PermissionCollection JavaDoc permissions = policy.getPermissions( codesource );
246         final Enumeration JavaDoc enumeration = permissions.elements();
247         while( enumeration.hasMoreElements() )
248         {
249             final Object JavaDoc perm = enumeration.nextElement();
250             if( perm instanceof UnresolvedPermission JavaDoc )
251             {
252                 return;
253             }
254         }
255         fail( "Expected to get permission set with UnresolvedPermission contained" );
256     }
257
258     public void testFailureWhenCreatingKeyStore()
259         throws Exception JavaDoc
260     {
261         final PolicyBuilder builder = new TestPolicyBuilder();
262         final PermissionMetaData permission =
263             new PermissionMetaData( AllPermission JavaDoc.class.getName() + "sss", null, null,
264                                     null, null );
265         final GrantMetaData grant =
266             new GrantMetaData( "file:/", "jenny", "default",
267                                new PermissionMetaData[]{permission} );
268         final KeyStoreMetaData keyStore =
269             new KeyStoreMetaData( "default", "http://spice.sourceforge.net/NoExist", "DoDgY" );
270         final PolicyMetaData metaData =
271             new PolicyMetaData( new KeyStoreMetaData[]{keyStore}, new GrantMetaData[]{grant} );
272         final TestResolver resolver = new TestResolver();
273         try
274         {
275             builder.buildPolicy( metaData, resolver );
276             fail( "Expected to fail when creating policy as unable to create store" );
277         }
278         catch( Exception JavaDoc e )
279         {
280         }
281     }
282
283     public void testFailureRetrievingCertForAlias()
284         throws Exception JavaDoc
285     {
286         final PolicyBuilder builder = new TestNoInitPolicyBuilder();
287         final PermissionMetaData permission =
288             new PermissionMetaData( AllPermission JavaDoc.class.getName() + "sss", null, null,
289                                     null, null );
290         final GrantMetaData grant =
291             new GrantMetaData( "file:/", "peter", "default",
292                                new PermissionMetaData[]{permission} );
293         final KeyStoreMetaData keyStore =
294             new KeyStoreMetaData( "default", "http://spice.sourceforge.net", "DoDgY" );
295         final PolicyMetaData metaData =
296             new PolicyMetaData( new KeyStoreMetaData[]{keyStore}, new GrantMetaData[]{grant} );
297         final TestResolver resolver = new TestResolver();
298         try
299         {
300             builder.buildPolicy( metaData, resolver );
301             fail( "Expected to fail when creating policy as unable to create store" );
302         }
303         catch( Exception JavaDoc e )
304         {
305         }
306     }
307
308     public void testAliasNoExist()
309         throws Exception JavaDoc
310     {
311         final PolicyBuilder builder = new TestPolicyBuilder();
312         final PermissionMetaData permission =
313             new PermissionMetaData( AllPermission JavaDoc.class.getName() + "sss", null, null,
314                                     null, null );
315         final GrantMetaData grant =
316             new GrantMetaData( "file:/", "peter", "default",
317                                new PermissionMetaData[]{permission} );
318         final KeyStoreMetaData keyStore =
319             new KeyStoreMetaData( "default", "http://spice.sourceforge.net", "DoDgY" );
320         final PolicyMetaData metaData =
321             new PolicyMetaData( new KeyStoreMetaData[]{keyStore}, new GrantMetaData[]{grant} );
322         final TestResolver resolver = new TestResolver();
323         try
324         {
325             builder.buildPolicy( metaData, resolver );
326             fail( "Expected to fail when creating policy as unable to load alias" );
327         }
328         catch( Exception JavaDoc e )
329         {
330         }
331     }
332
333     public void testNoKeyStore()
334         throws Exception JavaDoc
335     {
336         final PolicyBuilder builder = new TestPolicyBuilder();
337         final PermissionMetaData permission =
338             new PermissionMetaData( AllPermission JavaDoc.class.getName(), null, null,
339                                     null, null );
340         final GrantMetaData grant =
341             new GrantMetaData( "file:/", "peter", "default",
342                                new PermissionMetaData[]{permission} );
343         final PolicyMetaData metaData =
344             new PolicyMetaData( new KeyStoreMetaData[]{}, new GrantMetaData[]{grant} );
345         final TestResolver resolver = new TestResolver();
346         try
347         {
348             builder.buildPolicy( metaData, resolver );
349             fail( "Expected to fail when creating policy as missing keystore" );
350         }
351         catch( Exception JavaDoc e )
352         {
353         }
354     }
355 }
356
Popular Tags