1 8 package org.codehaus.loom.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 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 32 public class BuilderTestCase 33 extends TestCase 34 { 35 public BuilderTestCase( final String name ) 36 { 37 super( name ); 38 } 39 40 public void testEmptyMetaData() 41 throws Exception 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 policy = builder.buildPolicy( metaData, resolver ); 50 final PermissionCollection permissions = 51 policy.getPermissions( new CodeSource ( null, new Certificate [ 0 ] ) ); 52 assertEquals( "Expect no permissions for empty metaData", 53 false, 54 permissions.elements().hasMoreElements() ); 55 } 56 catch( final Exception e ) 57 { 58 fail( "Expected to be able to build Policy with empty metadata" ); 59 } 60 } 61 62 public void testNullResolverInBuildPolicy() 63 throws Exception 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 npe ) 74 { 75 assertEquals( "NPE message", 76 "resolver", 77 npe.getMessage() ); 78 } 79 } 80 81 public void testNullMetaDataInBuildPolicy() 82 throws Exception 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 npe ) 91 { 92 assertEquals( "NPE message", 93 "policy", 94 npe.getMessage() ); 95 } 96 97 } 98 99 public void testMetaDataWithAPermission() 100 throws Exception 101 { 102 final PolicyBuilder builder = new PolicyBuilder(); 103 final PermissionMetaData permission = 104 new PermissionMetaData( AllPermission .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 policy = builder.buildPolicy( metaData, resolver ); 114 final CodeSource codesource = 115 new CodeSource ( new URL ( "file:/" ), new Certificate [ 0 ] ); 116 final PermissionCollection permissions = policy.getPermissions( codesource ); 117 final Enumeration enumeration = permissions.elements(); 118 while( enumeration.hasMoreElements() ) 119 { 120 final Object perm = enumeration.nextElement(); 121 if( perm instanceof AllPermission ) 122 { 123 return; 124 } 125 } 126 fail( "Expected to get permission set with ALlPermission contained" ); 127 } 128 catch( final Exception e ) 129 { 130 fail( "Expected to be able to build Policy with empty metadata" ); 131 } 132 } 133 134 public void testMetaDataWithAPermissionAndCerts() 135 throws Exception 136 { 137 final PolicyBuilder builder = new TestPolicyBuilder(); 138 final PermissionMetaData permission = 139 new PermissionMetaData( FilePermission .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 policy = builder.buildPolicy( metaData, resolver ); 150 final CodeSource codesource = 151 new CodeSource ( new URL ( "file:/" ), new Certificate []{MockCertificate.JENNY_CERTIFICATE} ); 152 final PermissionCollection permissions = policy.getPermissions( codesource ); 153 final Enumeration enumeration = permissions.elements(); 154 while( enumeration.hasMoreElements() ) 155 { 156 final Object perm = enumeration.nextElement(); 157 if( perm instanceof FilePermission ) 158 { 159 return; 160 } 161 } 162 fail( "Expected to get permission set with ALlPermission contained" ); 163 } 164 165 public void testMetaDataWithAPermissionAndMultipleCerts() 166 throws Exception 167 { 168 final PolicyBuilder builder = new TestPolicyBuilder(); 169 final PermissionMetaData permission = 170 new PermissionMetaData( RuntimePermission .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 policy = builder.buildPolicy( metaData, resolver ); 181 final CodeSource codesource = 182 new CodeSource ( new URL ( "file:/" ), new Certificate []{MockCertificate.JENNY_CERTIFICATE} ); 183 final PermissionCollection permissions = policy.getPermissions( codesource ); 184 final Enumeration enumeration = permissions.elements(); 185 while( enumeration.hasMoreElements() ) 186 { 187 final Object perm = enumeration.nextElement(); 188 if( perm instanceof RuntimePermission ) 189 { 190 return; 191 } 192 } 193 fail( "Expected to get permission set with ALlPermission contained" ); 194 } 195 196 public void testMetaDataWithAPermissionAndCertsAndUnResolverPerm() 197 throws Exception 198 { 199 final PolicyBuilder builder = new TestPolicyBuilder(); 200 final PermissionMetaData permission = 201 new PermissionMetaData( AllPermission .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 policy = builder.buildPolicy( metaData, resolver ); 212 final CodeSource codesource = 213 new CodeSource ( new URL ( "file:/" ), new Certificate []{MockCertificate.JENNY_CERTIFICATE} ); 214 final PermissionCollection permissions = policy.getPermissions( codesource ); 215 final Enumeration enumeration = permissions.elements(); 216 while( enumeration.hasMoreElements() ) 217 { 218 final Object perm = enumeration.nextElement(); 219 if( perm instanceof UnresolvedPermission ) 220 { 221 return; 222 } 223 } 224 fail( "Expected to get permission set with UnresolvedPermission contained" ); 225 } 226 227 public void testMetaDataWithAPermissionAndCertsAndMisnamedPerm() 228 throws Exception 229 { 230 final PolicyBuilder builder = new TestPolicyBuilder(); 231 final PermissionMetaData permission = 232 new PermissionMetaData( AllPermission .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 policy = builder.buildPolicy( metaData, resolver ); 243 final CodeSource codesource = 244 new CodeSource ( new URL ( "file:/" ), new Certificate []{MockCertificate.JENNY_CERTIFICATE} ); 245 final PermissionCollection permissions = policy.getPermissions( codesource ); 246 final Enumeration enumeration = permissions.elements(); 247 while( enumeration.hasMoreElements() ) 248 { 249 final Object perm = enumeration.nextElement(); 250 if( perm instanceof UnresolvedPermission ) 251 { 252 return; 253 } 254 } 255 fail( "Expected to get permission set with UnresolvedPermission contained" ); 256 } 257 258 public void testFailureWhenCreatingKeyStore() 259 throws Exception 260 { 261 final PolicyBuilder builder = new TestPolicyBuilder(); 262 final PermissionMetaData permission = 263 new PermissionMetaData( AllPermission .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 e ) 279 { 280 } 281 } 282 283 public void testFailureRetrievingCertForAlias() 284 throws Exception 285 { 286 final PolicyBuilder builder = new TestNoInitPolicyBuilder(); 287 final PermissionMetaData permission = 288 new PermissionMetaData( AllPermission .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 e ) 304 { 305 } 306 } 307 308 public void testAliasNoExist() 309 throws Exception 310 { 311 final PolicyBuilder builder = new TestPolicyBuilder(); 312 final PermissionMetaData permission = 313 new PermissionMetaData( AllPermission .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 e ) 329 { 330 } 331 } 332 333 public void testNoKeyStore() 334 throws Exception 335 { 336 final PolicyBuilder builder = new TestPolicyBuilder(); 337 final PermissionMetaData permission = 338 new PermissionMetaData( AllPermission .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 e ) 352 { 353 } 354 } 355 } 356 | Popular Tags |