diff options
author | Jiri Vanek <[email protected]> | 2012-03-07 18:00:41 +0100 |
---|---|---|
committer | Jiri Vanek <[email protected]> | 2012-03-07 18:00:41 +0100 |
commit | 8af7bb7b6bcbfc8e2d1dfadd3c0ee9842bcbd08c (patch) | |
tree | 1d33df76a033e932814c2953d55eaa5721b5a5b4 | |
parent | 14f611f487699f3d4aa97cf039473fd24c930863 (diff) |
Extended reflection test
14 files changed, 1394 insertions, 24 deletions
@@ -1,3 +1,24 @@ +2012-03-06 Jiri Vanek <[email protected]> + + Improved reflection test: + * tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java: + This testcase was extended for three more unsigned reflection tries and four signed + *tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java: + now accepting class to be findByName as argument. Four new jnlp files in + signed a four in simple are then passing those argument + *tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp: + *tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp: + *tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp: + *tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp: + *tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackage.jnlp: + removed + * tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java + signed variation of AccessClassInPackage, tescase is also in AccessClassInPackage + * tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp + * tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp + * tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp + * tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp + 2012-02-29 Deepak Bhole <[email protected]> * configure.ac: Bumped version to 1.3pre diff --git a/extendedReflectionTests.diff b/extendedReflectionTests.diff new file mode 100644 index 0000000..6d2b4bc --- /dev/null +++ b/extendedReflectionTests.diff @@ -0,0 +1,735 @@ +diff -r f1c6e1562fcf tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,57 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageJAVAXJNLP.jnlp"> ++ <information> ++ <title>Test accessClassInPackage signed</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing access to some javax.jnlp.* package by signed app</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackageSigned.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackageSigned"> ++ <argument>javax.jnlp.ServiceManager</argument> ++ </application-desc> ++ <security> ++ <all-permissions/> ++ </security> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,57 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageSignedNETSF.jnlp"> ++ <information> ++ <title>Test accessClassInPackage by signed app</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing access to net.sourceforge.* package by signed app</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackageSigned.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackageSigned"> ++ <argument>net.sourceforge.jnlp.Parser</argument> ++ </application-desc> ++ <security> ++ <all-permissions/> ++ </security> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,57 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageSignedSELF.jnlp"> ++ <information> ++ <title>Test accessClassInPackage by signed app</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing aaccess to package's internal class by signed app</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackageSigned.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackageSigned"> ++ <argument>AccessClassInPackageSigned</argument> ++ </application-desc> ++ <security> ++ <all-permissions/> ++ </security> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,57 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageSignedSUNSEC.jnlp"> ++ <information> ++ <title>Test accessClassInPackage by signed app</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing access to sun.security.* package by signed app</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackageSigned.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackageSigned"> ++ <argument>sun.security.internal.spec.TlsKeyMaterialSpec</argument> ++ </application-desc> ++ <security> ++ <all-permissions/> ++ </security> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,44 @@ ++/* AccessClassInPackage.java ++Copyright (C) 2011 Red Hat, Inc. ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or ++modify it under the terms of the GNU General Public License as published by ++the Free Software Foundation, version 2. ++ ++IcedTea is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to ++the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ */ ++ ++public class AccessClassInPackageSigned { ++ ++ public static void main(String[] args) throws Exception{ ++ Class.forName(args[0]); ++ System.out.println("Class was obtained: "+ args[0]); ++ } ++} +diff -r f1c6e1562fcf tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackage.jnlp +--- a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackage.jnlp Wed Feb 29 15:13:14 2012 -0500 ++++ /dev/null Thu Jan 01 00:00:00 1970 +0000 +@@ -1,12 +0,0 @@ +-<?xml version="1.0" encoding="utf-8"?> +-<jnlp spec="1.0" +- codebase="." +- href="AccessClassInPackage.jnlp"> +- <information> +- <title>Test accessClassInPackage</title> +- </information> +- <resources> +- <jar href="AccessClassInPackage.jar" main="true"/> +- </resources> +- <application-desc main-class="AccessClassInPackage"/> +-</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,54 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageJAVAXJNLP.jnlp"> ++ <information> ++ <title>Test accessClassInPackage</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing access to some javax.jnlp.* package</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackage.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackage"> ++ <argument>javax.jnlp.ServiceManager</argument> ++ </application-desc> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,54 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageNETSF.jnlp"> ++ <information> ++ <title>Test accessClassInPackage</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing access to net.sourceforge.* package</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackage.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackage"> ++ <argument>net.sourceforge.jnlp.Parser</argument> ++ </application-desc> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,54 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageSELF.jnlp"> ++ <information> ++ <title>Test accessClassInPackage</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing aaccess to package's internal class</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackage.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackage"> ++ <argument>AccessClassInPackage</argument> ++ </application-desc> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp Tue Mar 06 11:39:43 2012 +0100 +@@ -0,0 +1,54 @@ ++<!-- ++ ++This file is part of IcedTea. ++ ++IcedTea is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++IcedTea is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with IcedTea; see the file COPYING. If not, write to the ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. ++ ++Linking this library statically or dynamically with other modules is ++making a combined work based on this library. Thus, the terms and ++conditions of the GNU General Public License cover the whole ++combination. ++ ++As a special exception, the copyright holders of this library give you ++permission to link this library with independent modules to produce an ++executable, regardless of the license terms of these independent ++modules, and to copy and distribute the resulting executable under ++terms of your choice, provided that you also meet, for each linked ++independent module, the terms and conditions of the license of that ++module. An independent module is a module which is not derived from ++or based on this library. If you modify this library, you may extend ++this exception to your version of the library, but you are not ++obligated to do so. If you do not wish to do so, delete this ++exception statement from your version. ++ ++ --> ++<?xml version="1.0" encoding="utf-8"?> ++<jnlp spec="1.0" ++ codebase="." ++ href="AccessClassInPackageSUNSEC.jnlp"> ++ <information> ++ <title>Test accessClassInPackage</title> ++ <vendor>NetX</vendor> ++ <homepage href="http://jnlp.sourceforge.net/netx/"/> ++ <description>testing access to sun.security.* package</description> ++ </information> ++ <resources> ++ <jar href="AccessClassInPackage.jar" main="true"/> ++ </resources> ++ <application-desc main-class="AccessClassInPackage"> ++ <argument>sun.security.internal.spec.TlsKeyMaterialSpec</argument> ++ </application-desc> ++</jnlp> +diff -r f1c6e1562fcf tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java +--- a/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java Wed Feb 29 15:13:14 2012 -0500 ++++ b/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java Tue Mar 06 11:39:43 2012 +0100 +@@ -38,6 +38,7 @@ + public class AccessClassInPackage { + + public static void main(String[] args) throws Exception{ +- Class.forName("sun.security.internal.spec.TlsKeyMaterialSpec"); ++ Class.forName(args[0]); ++ System.out.println("Class was obtained: "+ args[0]); + } + } +diff -r f1c6e1562fcf tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java +--- a/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java Wed Feb 29 15:13:14 2012 -0500 ++++ b/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java Tue Mar 06 11:39:43 2012 +0100 +@@ -35,7 +35,10 @@ + exception statement from your version. + */ + ++import java.util.Arrays; ++import java.util.List; + import net.sourceforge.jnlp.ServerAccess; ++import net.sourceforge.jnlp.ServerAccess.ProcessResult; + import org.junit.Assert; + + import org.junit.Test; +@@ -43,21 +46,155 @@ + public class AccessClassInPackageTest { + + private static ServerAccess server = new ServerAccess(); ++ private String[] files = { ++ "AccessClassInPackageJAVAXJNLP.jnlp", ++ "AccessClassInPackageSELF.jnlp", ++ "AccessClassInPackageNETSF.jnlp", ++ "AccessClassInPackageSUNSEC.jnlp" ++ }; ++ private String[] filesSigned = { ++ "AccessClassInPackageSignedJAVAXJNLP.jnlp", ++ "AccessClassInPackageSignedSELF.jnlp", ++ "AccessClassInPackageSignedNETSF.jnlp", ++ "AccessClassInPackageSignedSUNSEC.jnlp" ++ }; ++ private String[] badExceptions = { ++ "accessClassInPackage.javax.jnlp.ServiceManager", ++ "accessClassInPackage.AccessClassInPackage", ++ "accessClassInPackage.net.sourceforge.jnlp", ++ "accessClassInPackage.sun.security.internal.spec" ++ }; ++ private String[] pass = { ++ "javax.jnlp.ServiceManager", ++ "AccessClassInPackage", ++ "net.sourceforge.jnlp.Parser", ++ "sun.security.internal.spec.TlsKeyMaterialSpec" ++ }; ++ private static final List<String> xta = Arrays.asList(new String[]{"-Xtrustall"}); + +- @Test +- public void AccessClassInPackageTestLunch1() throws Exception { +- System.out.println("connecting AccessClassInPackageTest request"); +- System.err.println("connecting AccessClassInPackageTest request"); +- ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/AccessClassInPackage.jnlp"); +- System.out.println(pr.stdout); +- System.err.println(pr.stderr); +- String c="java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.security.internal.spec)"; +- Assert.assertTrue("stderr should contains `"+c+"`, but didn't ",pr.stderr.contains(c)); +- String cc="ClassNotFoundException"; +- Assert.assertFalse("stderr should NOT contains `"+cc+"`, but did",pr.stderr.contains(cc)); +- Assert.assertFalse("stdout length should be <=2, but was "+pr.stdout.length(),pr.stdout.length()>2); +- Assert.assertFalse("AccessClassInPackageTestLunch1 should not be terminated, but was",pr.wasTerminated); ++ private void testShouldFail(ServerAccess.ProcessResult pr, String s) { ++ String c = "(?s).*java.security.AccessControlException.*access denied.*java.lang.RuntimePermission.*" + s + ".*"; ++ Assert.assertTrue("stderr should match `" + c + "`, but didn't ", pr.stderr.matches(c)); ++ } ++ ++ private void testShouldNOTFail(ServerAccess.ProcessResult pr, String s) { ++ String c = "(?s).*java.security.AccessControlException.*access denied.*java.lang.RuntimePermission.*" + s + ".*"; ++ Assert.assertFalse("stderr should NOT match `" + c + "`, but did ", pr.stderr.matches(c)); ++ } ++ ++ private void commonPitfall(ProcessResult pr) { ++ String cc = "ClassNotFoundException"; ++ Assert.assertFalse("stderr should NOT contains `" + cc + "`, but did", pr.stderr.contains(cc)); ++ Assert.assertFalse("AccessClassInPackageTestLunch1 should not be terminated, but was", pr.wasTerminated); + Assert.assertEquals((Integer) 0, pr.returnValue); + } + ++ private void testShouldPass(ServerAccess.ProcessResult pr, String s) { ++ String c = "Class was obtained: " + s; ++ Assert.assertTrue("stdout should contains `" + c + "`, but didn't ", pr.stdout.contains(c)); ++ } ++ ++ private void testShouldNOTPass(ServerAccess.ProcessResult pr, String s) { ++ String c = "Class was obtained: " + s; ++ Assert.assertFalse("stdout should not contains `" + c + "`, but did ", pr.stdout.contains(c)); ++ } ++ ++ @Test ++ public void AccessClassInPackageJAVAXJNLP() throws Exception { ++ System.out.println("AccessClassInPackageJAVAXJNLP"); ++ System.err.println("AccessClassInPackageJAVAXJNLP"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[0]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ testShouldPass(pr, pass[0]); ++ testShouldNOTFail(pr, badExceptions[0]); ++ } ++ ++ @Test ++ public void AccessClassInPackageSELF() throws Exception { ++ System.out.println("AccessClassInPackageSELF"); ++ System.err.println("AccessClassInPackageSELF"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[1]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ testShouldPass(pr, pass[1]); ++ testShouldNOTFail(pr, badExceptions[1]); ++ } ++ ++ @Test ++ public void AccessClassInPackageNETSF() throws Exception { ++ System.out.println("AccessClassInPackageNETSF"); ++ System.err.println("AccessClassInPackageNETSF"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[2]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ testShouldFail(pr, badExceptions[2]); ++ testShouldNOTPass(pr, pass[2]); ++ } ++ ++ @Test ++ public void AccessClassInPackageSUNSEC() throws Exception { ++ System.out.println("AccessClassInPackageSUNSEC"); ++ System.err.println("AccessClassInPackageSUNSEC"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[3]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ commonPitfall(pr); ++ testShouldFail(pr, badExceptions[3]); ++ testShouldNOTPass(pr, pass[3]); ++ } ++ ++ //now signed vaiants ++ @Test ++ public void AccessClassInPackageSignedJAVAXJNLP() throws Exception { ++ System.out.println("AccessClassInPackageSignedJAVAXJNLP"); ++ System.err.println("AccessClassInPackageSignedJAVAXJNLP"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[0]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ testShouldPass(pr, pass[0]); ++ testShouldNOTFail(pr, badExceptions[0]); ++ } ++ ++ @Test ++ public void AccessClassInPackageSignedSELF() throws Exception { ++ System.out.println("AccessClassInPackageSignedSELF"); ++ System.err.println("AccessClassInPackageSignedSELF"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[1]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ testShouldPass(pr, pass[1]); ++ testShouldNOTFail(pr, badExceptions[1]); ++ } ++ ++ @Test ++ public void AccessClassInPackageSignedNETSF() throws Exception { ++ System.out.println("AccessClassInPackageSignedNETSF"); ++ System.err.println("AccessClassInPackageSignedNETSF"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[2]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ testShouldPass(pr, pass[2]); ++ testShouldNOTFail(pr, badExceptions[2]); ++ } ++ ++ @Test ++ public void AccessClassInPackageSignedSUNSEC() throws Exception { ++ System.out.println("AccessClassInPackageSignedSUNSEC"); ++ System.err.println("AccessClassInPackageSignedSUNSEC"); ++ ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[3]); ++ System.out.println(pr.stdout); ++ System.err.println(pr.stderr); ++ commonPitfall(pr); ++ testShouldPass(pr, pass[3]); ++ testShouldNOTFail(pr, badExceptions[3]); ++ } ++ + } diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp new file mode 100644 index 0000000..d76a94d --- /dev/null +++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp @@ -0,0 +1,57 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageJAVAXJNLP.jnlp"> + <information> + <title>Test accessClassInPackage signed</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing access to some javax.jnlp.* package by signed app</description> + </information> + <resources> + <jar href="AccessClassInPackageSigned.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackageSigned"> + <argument>javax.jnlp.ServiceManager</argument> + </application-desc> + <security> + <all-permissions/> + </security> +</jnlp> diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp new file mode 100644 index 0000000..8307d51 --- /dev/null +++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp @@ -0,0 +1,57 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageSignedNETSF.jnlp"> + <information> + <title>Test accessClassInPackage by signed app</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing access to net.sourceforge.* package by signed app</description> + </information> + <resources> + <jar href="AccessClassInPackageSigned.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackageSigned"> + <argument>net.sourceforge.jnlp.Parser</argument> + </application-desc> + <security> + <all-permissions/> + </security> +</jnlp> diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp new file mode 100644 index 0000000..64c4403 --- /dev/null +++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp @@ -0,0 +1,57 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageSignedSELF.jnlp"> + <information> + <title>Test accessClassInPackage by signed app</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing aaccess to package's internal class by signed app</description> + </information> + <resources> + <jar href="AccessClassInPackageSigned.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackageSigned"> + <argument>AccessClassInPackageSigned</argument> + </application-desc> + <security> + <all-permissions/> + </security> +</jnlp> diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp new file mode 100644 index 0000000..2e5b4e2 --- /dev/null +++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp @@ -0,0 +1,57 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageSignedSUNSEC.jnlp"> + <information> + <title>Test accessClassInPackage by signed app</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing access to sun.security.* package by signed app</description> + </information> + <resources> + <jar href="AccessClassInPackageSigned.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackageSigned"> + <argument>sun.security.internal.spec.TlsKeyMaterialSpec</argument> + </application-desc> + <security> + <all-permissions/> + </security> +</jnlp> diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java b/tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java new file mode 100644 index 0000000..63c681d --- /dev/null +++ b/tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java @@ -0,0 +1,44 @@ +/* AccessClassInPackage.java +Copyright (C) 2011 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + */ + +public class AccessClassInPackageSigned { + + public static void main(String[] args) throws Exception{ + Class.forName(args[0]); + System.out.println("Class was obtained: "+ args[0]); + } +} diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackage.jnlp b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackage.jnlp deleted file mode 100644 index e73e807..0000000 --- a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackage.jnlp +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<jnlp spec="1.0" - codebase="." - href="AccessClassInPackage.jnlp"> - <information> - <title>Test accessClassInPackage</title> - </information> - <resources> - <jar href="AccessClassInPackage.jar" main="true"/> - </resources> - <application-desc main-class="AccessClassInPackage"/> -</jnlp> diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp new file mode 100644 index 0000000..513d90b --- /dev/null +++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp @@ -0,0 +1,54 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageJAVAXJNLP.jnlp"> + <information> + <title>Test accessClassInPackage</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing access to some javax.jnlp.* package</description> + </information> + <resources> + <jar href="AccessClassInPackage.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackage"> + <argument>javax.jnlp.ServiceManager</argument> + </application-desc> +</jnlp> diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp new file mode 100644 index 0000000..51d692e --- /dev/null +++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp @@ -0,0 +1,54 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageNETSF.jnlp"> + <information> + <title>Test accessClassInPackage</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing access to net.sourceforge.* package</description> + </information> + <resources> + <jar href="AccessClassInPackage.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackage"> + <argument>net.sourceforge.jnlp.Parser</argument> + </application-desc> +</jnlp> diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp new file mode 100644 index 0000000..a78b92b --- /dev/null +++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp @@ -0,0 +1,54 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageSELF.jnlp"> + <information> + <title>Test accessClassInPackage</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing aaccess to package's internal class</description> + </information> + <resources> + <jar href="AccessClassInPackage.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackage"> + <argument>AccessClassInPackage</argument> + </application-desc> +</jnlp> diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp new file mode 100644 index 0000000..e617bbc --- /dev/null +++ b/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp @@ -0,0 +1,54 @@ +<!-- + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +IcedTea is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" + codebase="." + href="AccessClassInPackageSUNSEC.jnlp"> + <information> + <title>Test accessClassInPackage</title> + <vendor>NetX</vendor> + <homepage href="http://jnlp.sourceforge.net/netx/"/> + <description>testing access to sun.security.* package</description> + </information> + <resources> + <jar href="AccessClassInPackage.jar" main="true"/> + </resources> + <application-desc main-class="AccessClassInPackage"> + <argument>sun.security.internal.spec.TlsKeyMaterialSpec</argument> + </application-desc> +</jnlp> diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java b/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java index 272f245..7164006 100644 --- a/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java +++ b/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java @@ -38,6 +38,7 @@ exception statement from your version. public class AccessClassInPackage { public static void main(String[] args) throws Exception{ - Class.forName("sun.security.internal.spec.TlsKeyMaterialSpec"); + Class.forName(args[0]); + System.out.println("Class was obtained: "+ args[0]); } } diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java b/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java index c1166d0..b72b828 100644 --- a/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java +++ b/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java @@ -35,7 +35,10 @@ obligated to do so. If you do not wish to do so, delete this exception statement from your version. */ +import java.util.Arrays; +import java.util.List; import net.sourceforge.jnlp.ServerAccess; +import net.sourceforge.jnlp.ServerAccess.ProcessResult; import org.junit.Assert; import org.junit.Test; @@ -43,21 +46,155 @@ import org.junit.Test; public class AccessClassInPackageTest { private static ServerAccess server = new ServerAccess(); + private String[] files = { + "AccessClassInPackageJAVAXJNLP.jnlp", + "AccessClassInPackageSELF.jnlp", + "AccessClassInPackageNETSF.jnlp", + "AccessClassInPackageSUNSEC.jnlp" + }; + private String[] filesSigned = { + "AccessClassInPackageSignedJAVAXJNLP.jnlp", + "AccessClassInPackageSignedSELF.jnlp", + "AccessClassInPackageSignedNETSF.jnlp", + "AccessClassInPackageSignedSUNSEC.jnlp" + }; + private String[] badExceptions = { + "accessClassInPackage.javax.jnlp.ServiceManager", + "accessClassInPackage.AccessClassInPackage", + "accessClassInPackage.net.sourceforge.jnlp", + "accessClassInPackage.sun.security.internal.spec" + }; + private String[] pass = { + "javax.jnlp.ServiceManager", + "AccessClassInPackage", + "net.sourceforge.jnlp.Parser", + "sun.security.internal.spec.TlsKeyMaterialSpec" + }; + private static final List<String> xta = Arrays.asList(new String[]{"-Xtrustall"}); + + private void testShouldFail(ServerAccess.ProcessResult pr, String s) { + String c = "(?s).*java.security.AccessControlException.{0,5}access denied.{0,5}java.lang.RuntimePermission.{0,5}" + s + ".*"; + Assert.assertTrue("stderr should match `" + c + "`, but didn't ", pr.stderr.matches(c)); + } + + private void testShouldNOTFail(ServerAccess.ProcessResult pr, String s) { + String c = "(?s).*java.security.AccessControlException.{0,5}access denied.{0,5}java.lang.RuntimePermission.{0,5}" + s + ".*"; + Assert.assertFalse("stderr should NOT match `" + c + "`, but did ", pr.stderr.matches(c)); + } + + private void commonPitfall(ProcessResult pr) { + String cc = "ClassNotFoundException"; + Assert.assertFalse("stderr should NOT contains `" + cc + "`, but did", pr.stderr.contains(cc)); + Assert.assertFalse("AccessClassInPackageTestLunch1 should not be terminated, but was", pr.wasTerminated); + Assert.assertEquals((Integer) 0, pr.returnValue); + } + + private void testShouldPass(ServerAccess.ProcessResult pr, String s) { + String c = "Class was obtained: " + s; + Assert.assertTrue("stdout should contains `" + c + "`, but didn't ", pr.stdout.contains(c)); + } + + private void testShouldNOTPass(ServerAccess.ProcessResult pr, String s) { + String c = "Class was obtained: " + s; + Assert.assertFalse("stdout should not contains `" + c + "`, but did ", pr.stdout.contains(c)); + } @Test - public void AccessClassInPackageTestLunch1() throws Exception { - System.out.println("connecting AccessClassInPackageTest request"); - System.err.println("connecting AccessClassInPackageTest request"); - ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/AccessClassInPackage.jnlp"); + public void AccessClassInPackageJAVAXJNLP() throws Exception { + System.out.println("AccessClassInPackageJAVAXJNLP"); + System.err.println("AccessClassInPackageJAVAXJNLP"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[0]); System.out.println(pr.stdout); System.err.println(pr.stderr); - String c="java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.security.internal.spec)"; - Assert.assertTrue("stderr should contains `"+c+"`, but didn't ",pr.stderr.contains(c)); - String cc="ClassNotFoundException"; - Assert.assertFalse("stderr should NOT contains `"+cc+"`, but did",pr.stderr.contains(cc)); - Assert.assertFalse("stdout length should be <=2, but was "+pr.stdout.length(),pr.stdout.length()>2); - Assert.assertFalse("AccessClassInPackageTestLunch1 should not be terminated, but was",pr.wasTerminated); - Assert.assertEquals((Integer) 0, pr.returnValue); + commonPitfall(pr); + testShouldPass(pr, pass[0]); + testShouldNOTFail(pr, badExceptions[0]); + } + + @Test + public void AccessClassInPackageSELF() throws Exception { + System.out.println("AccessClassInPackageSELF"); + System.err.println("AccessClassInPackageSELF"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[1]); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + commonPitfall(pr); + testShouldPass(pr, pass[1]); + testShouldNOTFail(pr, badExceptions[1]); + } + + @Test + public void AccessClassInPackageNETSF() throws Exception { + System.out.println("AccessClassInPackageNETSF"); + System.err.println("AccessClassInPackageNETSF"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[2]); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + commonPitfall(pr); + testShouldFail(pr, badExceptions[2]); + testShouldNOTPass(pr, pass[2]); + } + + @Test + public void AccessClassInPackageSUNSEC() throws Exception { + System.out.println("AccessClassInPackageSUNSEC"); + System.err.println("AccessClassInPackageSUNSEC"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(null, "/" + files[3]); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + commonPitfall(pr); + commonPitfall(pr); + testShouldFail(pr, badExceptions[3]); + testShouldNOTPass(pr, pass[3]); + } + + //now signed vaiants + @Test + public void AccessClassInPackageSignedJAVAXJNLP() throws Exception { + System.out.println("AccessClassInPackageSignedJAVAXJNLP"); + System.err.println("AccessClassInPackageSignedJAVAXJNLP"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[0]); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + commonPitfall(pr); + testShouldPass(pr, pass[0]); + testShouldNOTFail(pr, badExceptions[0]); + } + + @Test + public void AccessClassInPackageSignedSELF() throws Exception { + System.out.println("AccessClassInPackageSignedSELF"); + System.err.println("AccessClassInPackageSignedSELF"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[1]); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + commonPitfall(pr); + testShouldPass(pr, pass[1]); + testShouldNOTFail(pr, badExceptions[1]); + } + + @Test + public void AccessClassInPackageSignedNETSF() throws Exception { + System.out.println("AccessClassInPackageSignedNETSF"); + System.err.println("AccessClassInPackageSignedNETSF"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[2]); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + commonPitfall(pr); + testShouldPass(pr, pass[2]); + testShouldNOTFail(pr, badExceptions[2]); + } + + @Test + public void AccessClassInPackageSignedSUNSEC() throws Exception { + System.out.println("AccessClassInPackageSignedSUNSEC"); + System.err.println("AccessClassInPackageSignedSUNSEC"); + ServerAccess.ProcessResult pr = server.executeJavawsHeadless(xta, "/" + filesSigned[3]); + System.out.println(pr.stdout); + System.err.println(pr.stderr); + commonPitfall(pr); + testShouldPass(pr, pass[3]); + testShouldNOTFail(pr, badExceptions[3]); } } |