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

This page was automatically generated by Maven