/************************************************************************** * Copyright (c) 2001 by Acunia N.V. All rights reserved. * * * * This software is copyrighted by and is the sole property of Acunia N.V. * * and its licensors, if any. All rights, title, ownership, or other * * interests in the software remain the property of Acunia N.V. and its * * licensors, if any. * * * * This software may only be used in accordance with the corresponding * * license agreement. Any unauthorized use, duplication, transmission, * * distribution or disclosure of this software is expressly forbidden. * * * * This Copyright notice may not be removed or modified without prior * * written consent of Acunia N.V. * * * * Acunia N.V. reserves the right to modify this software without notice. * * * * Acunia N.V. * * Vanden Tymplestraat 35 info@acunia.com * * 3000 Leuven http://www.acunia.com * * Belgium - EUROPE * **************************************************************************/ /* ** $Id: AcuniaPermissionTest.java,v 1.3 2006/10/04 14:24:18 cvsroot Exp $ */ package gnu.testlet.wonka.security; import gnu.testlet.*; import com.acunia.wonka.*; import java.util.Dictionary; import java.util.Enumeration; import java.security.Permission; import java.security.PermissionCollection; import java.util.PropertyPermission; import gnu.testlet.wonka.security.BasicPermission.ExBasicPermission; /** * this test was origanally written by Chris Gray. <br> * the code was adapted to run under the mauve framework <br> * <br> * this file contains test on permissions */ public class AcuniaPermissionTest implements Testlet { protected TestHarness th; private void test_implies(Permission a, Permission b, boolean expected) { boolean result = a.implies(b); th.check(result == expected , a+" implies "+b+": "+result+", expected: "+expected); } private void test_implies(PermissionCollection c, Permission b, boolean expected) { boolean result = c.implies(b); th.check(result==expected,c+" implies "+b+": "+result+", expected: "+expected); } public void test(TestHarness harness) { th = harness; th.setclass("permissions"); String arch = System.getProperty("os.arch"); Runtime rt = Runtime.getRuntime(); Boolean impl; ExBasicPermission ba_foo_bar_baz = new ExBasicPermission("foo.bar.baz"); ExBasicPermission ba_foo_bar_quux = new ExBasicPermission("foo.bar.quux"); ExBasicPermission ba_foo_bar_bacon = new ExBasicPermission("foo.bar.bacon"); ExBasicPermission ba_foo_bar_star = new ExBasicPermission("foo.bar.*"); ExBasicPermission ba_foo_balls = new ExBasicPermission("foo.balls"); ExBasicPermission ba_off_the_wall = new ExBasicPermission("off.the.wall"); java.io.FilePermission fi_fish_fillet = new java.io.FilePermission("wonka","execute"); test_implies(ba_foo_bar_baz,ba_foo_bar_baz,true); test_implies(ba_foo_bar_baz,ba_foo_bar_star,false); test_implies(ba_foo_bar_star,ba_foo_bar_baz,true); test_implies(ba_foo_bar_star,ba_foo_balls,false); PermissionCollection ba_pc = ba_foo_bar_baz.newPermissionCollection(); ba_pc.add(ba_foo_bar_baz); ba_pc.add(ba_foo_bar_quux); ba_pc.add(ba_foo_bar_star); try { ba_pc.add(fi_fish_fillet); // not a BasicPermission! th.fail(ba_pc+" accepted add("+fi_fish_fillet+") ==> ERROR"); } catch (IllegalArgumentException e) { th.check(true, "Threw "+e+" ==> OK"); } th.checkPoint("BasicPermissionCollection: "); Enumeration bae = ba_pc.elements(); while (bae.hasMoreElements()) { th.debug(" "+bae.nextElement()); } test_implies(ba_pc,ba_foo_bar_baz,true); test_implies(ba_pc,ba_foo_bar_quux,true); test_implies(ba_pc,ba_foo_bar_star,true); test_implies(ba_pc,ba_foo_bar_bacon,true); test_implies(ba_pc,ba_foo_balls,false); test_implies(ba_pc,ba_off_the_wall,false); th.checkPoint("FilePermission"); java.io.FilePermission fi_foo_bar_baz = new java.io.FilePermission("/foo/bar/baz","read,write"); java.io.FilePermission fi_foo_bar_quux = new java.io.FilePermission("/foo/bar/quux","execute"); java.io.FilePermission fi_foo_bar_bacon = new java.io.FilePermission("/foo/bar/bacon","read"); java.io.FilePermission fi_foo_bar_star = new java.io.FilePermission("/foo/bar/*","read"); java.io.FilePermission fi_foo_balls = new java.io.FilePermission("/foo/balls","read"); java.io.FilePermission fi_foo_falls = new java.io.FilePermission("/foo/falls","delete"); java.io.FilePermission fi_off_the_wall = new java.io.FilePermission("/off/the/wall","write"); java.io.FilePermission fi_delete_all = new java.io.FilePermission("<<ALL FILES>>","delete"); ExBasicPermission ba_fish_fillet = new ExBasicPermission("wonk"); test_implies(fi_foo_bar_baz,fi_foo_bar_baz,true); test_implies(fi_foo_bar_baz,fi_foo_bar_star,false); test_implies(fi_foo_bar_star,fi_foo_bar_baz,false); test_implies(fi_foo_bar_star,fi_foo_falls,false); th.checkPoint("FilePermissionCollection"); java.security.PermissionCollection fi_pc = fi_foo_bar_baz.newPermissionCollection(); fi_pc.add(fi_foo_bar_baz); fi_pc.add(fi_foo_bar_quux); fi_pc.add(fi_foo_bar_star); fi_pc.add(fi_delete_all); try { fi_pc.add(ba_fish_fillet); // not a FilePermission! th.fail(fi_pc+" accepted add("+ba_fish_fillet+") ==> ERROR"); } catch (IllegalArgumentException e) { th.check(true , "Threw "+e+" ==> OK"); } Enumeration fi_pce = fi_pc.elements(); while (fi_pce.hasMoreElements()) { th.debug(" "+fi_pce.nextElement()); } test_implies(fi_pc,fi_foo_bar_baz,true); test_implies(fi_pc,fi_foo_bar_quux,true); test_implies(fi_pc,fi_foo_bar_star,true); test_implies(fi_pc,fi_foo_bar_bacon,true); test_implies(fi_pc,fi_foo_falls,true); test_implies(fi_pc,fi_foo_balls,false); test_implies(fi_pc,fi_off_the_wall,false); th.checkPoint("PropertyPermissionCollection"); java.util.PropertyPermission pr_foo_bar_baz = new java.util.PropertyPermission("foo.bar.baz","read,write"); java.util.PropertyPermission pr_foo_bar_quux = new java.util.PropertyPermission("foo.bar.quux","read,write"); java.util.PropertyPermission pr_foo_bar_bacon = new java.util.PropertyPermission("foo.bar.bacon","write"); java.util.PropertyPermission pr_foo_bar_star = new java.util.PropertyPermission("foo.bar.*","read"); java.util.PropertyPermission pr_foo_balls = new java.util.PropertyPermission("foo.balls","read,write"); try { java.util.PropertyPermission pr_off_the_wall = new java.util.PropertyPermission("off.the.wall","pruts"); th.fail("bad action should trigger IllegalArgumentException"); } catch (IllegalArgumentException iae) { th.check(true); } test_implies(pr_foo_bar_baz,pr_foo_bar_baz,true); test_implies(pr_foo_bar_baz,pr_foo_bar_star,false); test_implies(pr_foo_bar_star,pr_foo_bar_baz,false); PermissionCollection pr_pc = pr_foo_bar_baz.newPermissionCollection(); pr_pc.add(pr_foo_bar_baz); pr_pc.add(pr_foo_bar_quux); pr_pc.add(pr_foo_bar_star); try { pr_pc.add(fi_fish_fillet); // not a PropertyPermission! th.fail(pr_pc+" accepted add("+fi_fish_fillet+") ==> ERROR"); } catch (IllegalArgumentException e) { th.check(true ,"Threw "+e+" ==> OK"); } th.checkPoint("PropertyPermissionCollection:"); Enumeration pr_pce = pr_pc.elements(); while (pr_pce.hasMoreElements()) { th.debug(" "+pr_pce.nextElement()); } test_implies(pr_pc,pr_foo_bar_baz,true); test_implies(pr_pc,pr_foo_bar_quux,true); test_implies(pr_pc,pr_foo_bar_star,true); test_implies(pr_pc,pr_foo_bar_bacon,false); test_implies(pr_pc,pr_foo_balls,false); java.security.AllPermission ap1 = new java.security.AllPermission("foo","bar"); java.security.AllPermission ap2 = new java.security.AllPermission(); test_implies(ap1,ap2,true); th.check(ap1.equals(ap2),"ap1.equals(ap2) should be true"); } }