/************************************************************************** * 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 * **************************************************************************/ package gnu.testlet.wonka.security.Permissions; //complete the package name ... import gnu.testlet.Testlet; import gnu.testlet.TestHarness; import java.security.*; // at least the class you are testing ... import java.net.SocketPermission; import java.net.NetPermission; import java.io.FilePermission; import java.awt.AWTPermission; import java.util.Enumeration; import java.util.Vector; import java.util.PropertyPermission; import java.util.NoSuchElementException; import java.lang.reflect.ReflectPermission; /** * this file contains test for java.security.Permissions <br> * */ public class AcuniaPermissionsTest implements Testlet { protected TestHarness th; public void test (TestHarness harness) { th = harness; th.setclass("java.security.Permissions"); test_Permissions(); test_add(); test_implies(); test_elements(); th.setclass("java.security.PermissionCollection"); test_isReadOnly(); test_setReadOnly(); test_toString(); } /** * not implemented. <br> * nothing to test ... */ public void test_Permissions(){ th.checkPoint("Permissions()"); } /** * implemented. <br> * see also elements and implies */ public void test_add(){ th.checkPoint("add(java.security.Permission)void"); Permissions ps = new Permissions(); ps.setReadOnly(); try { ps.add(new SecurityPermission("com.*")); Enumeration e = ps.elements(); th.check(! e.hasMoreElements()); } catch (SecurityException se) { th.check(true); } } /** * implemented. <br> * */ public void test_elements(){ th.checkPoint("elements()java.util.Enumeration"); Permissions ps = new Permissions(); Enumeration e = ps.elements(); th.check(!e.hasMoreElements()); try { e.nextElement(); th.fail("should throw a NoSuchElementException"); } catch(NoSuchElementException nse) { th.check(true); } Permission p = new SecurityPermission("com.*"); Vector v = new Vector(11); p = new AWTPermission("com.*"); v.add(p); ps.add(p); p = new NetPermission("com.*"); v.add(p); ps.add(p); p = new FilePermission("com.*","read,write"); v.add(p); ps.add(p); p = new PropertyPermission("com.*","read"); v.add(p); ps.add(p); p = new AllPermission(); v.add(p); ps.add(p); p = new AWTPermission("funny"); v.add(p); ps.add(p); p = new SocketPermission("*.com","connect"); v.add(p); ps.add(p); p = new SecurityPermission("com.acunia"); v.add(p); ps.add(p); p = new FilePermission("com.*","delete"); v.add(p); ps.add(p); p = new SecurityPermission("*"); v.add(p); ps.add(p); p = new SecurityPermission("toppie"); v.add(p); ps.add(p); e = ps.elements(); boolean ok=true; while (e.hasMoreElements()){ Object o = e.nextElement(); //th.debug("got "+o); if (!v.remove(o)){ th.debug("element "+o+" not found in vector"); ok = false; } } th.check(ok, "bad references returned"); th.check(v.isEmpty(), "not all element were removed "+v); } /** * implemented. <br> * */ public void test_implies(){ th.checkPoint("implies(java.security.Permission)boolean"); Permissions ps = new Permissions(); Permission p = new SecurityPermission("com.*"); p = new AWTPermission("com.*"); ps.add(p); th.check(ps.implies(p) , "implies - 1"); p = new NetPermission("com.*"); ps.add(p); th.check(ps.implies(p) , "implies - 2"); p = new FilePermission("com.*","read,write"); ps.add(p); th.check(ps.implies(p) , "implies - 3"); p = new PropertyPermission("com.*","read"); ps.add(p); th.check(ps.implies(p) , "implies - 4"); p = new NetPermission("not"); ps.add(p); th.check(ps.implies(p) , "implies - 5"); p = new AWTPermission("funny"); ps.add(p); th.check(ps.implies(p) , "implies - 6"); p = new SocketPermission("*.com","connect"); ps.add(p); th.check(ps.implies(p) , "implies - 7"); p = new SecurityPermission("*"); ps.add(p); th.check(ps.implies(p) , "implies - 8"); p = new FilePermission("com/-","delete"); ps.add(p); th.check(ps.implies(p) , "implies - 9"); p = new FilePermission("com/*","write,read"); ps.add(p); th.check(ps.implies(p) , "implies - 10"); th.check(ps.implies(new FilePermission("com/file1","read,write,delete")),"implies - 11"); th.check(!ps.implies(new ReflectPermission("java.lang.*")) ,"not implied - 1"); th.check(ps.implies(new SecurityPermission("java.lang.*")) ,"implied - 12"); th.check(!ps.implies(new NetPermission("java.lang.*")) ,"not implied - 2"); th.check(!ps.implies(new AWTPermission("java.lang.*")) ,"not implied - 3"); th.check(!ps.implies(new FilePermission("java.lang.*","execute")) ,"not implied - 4"); th.check(!ps.implies(new SocketPermission("*.ac.be","connect")) ,"not implied - 5"); th.check(!ps.implies(new UnresolvedPermission("java","java",null,null)) ,"not implied - 6"); p = new AllPermission(); ps.add(p); th.check(ps.implies(new ReflectPermission("java.lang.*")) ,"implied - 13"); th.check(ps.implies(new NetPermission("java.lang.*")) ,"implied - 14"); } /** * implemented. <br> * see isReadOnly ... */ public void test_setReadOnly(){ th.checkPoint("setReadOnly()void"); } /** * implemented. <br> */ public void test_isReadOnly(){ th.checkPoint("isReadOnly()boolean"); Permissions ps = new Permissions(); th.check(! ps.isReadOnly() , "not readOnly"); ps.setReadOnly(); th.check( ps.isReadOnly() , "set to readOnly"); } /** * implemented. <br> */ public void test_toString(){ th.checkPoint("toString()java.lang.String"); Permissions ps = new Permissions(); th.check( ps.toString() , "java.security.Permissions@"+Integer.toHexString(ps.hashCode())+" (\n)\n"); } }