diff options
author | Saad Mohammad <[email protected]> | 2012-09-07 17:06:08 -0400 |
---|---|---|
committer | Saad Mohammad <[email protected]> | 2012-09-07 17:06:08 -0400 |
commit | 0981b57894fefab486ac7b2fad37690ad1a139b6 (patch) | |
tree | 5f5676453cc79f562b9c8cd099804d510fb3f125 | |
parent | bc5b84ae6abc18b9f21e9d5518792e283b2cc6fe (diff) |
Add signed jnlp tests for applications with multiple jars
12 files changed, 807 insertions, 0 deletions
@@ -1,3 +1,35 @@ +2012-09-07 Saad Mohammad <[email protected]> + + Added signed jnlp tests for applications with multiple jar resources. + * tests/reproducers/signed/MultiJar-NoSignedJnlp/resources/MainJarWithoutSignedJnlp.jnlp: + Launching jnlp file that's main jar does not have a signed jnlp file, but + other jar resources do. + * tests/reproducers/signed/MultiJar-NoSignedJnlp/srcs/SimpleApplication.java: + A class that uses reflection to access resources from different jars. + * tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithMatchingSignedJnlpApplication.jnlp: + Launching jnlp file that's main jar matches the signed jnlp application + file. + * tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithUnmatchingSignedJnlpApplication.jnlp: + Launching jnlp file that's main jar does not match the signed jnlp + application file. + * tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp: + Signed JNLP application file for MultiJar-SignedJnlpApplication. + * tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/SignedJnlpApplication.java: + A class that uses reflection to access resources from different jars. + * tests/reproducers/signed/MultiJar-SignedJnlpApplication/testcases/MultiJarSignedJnlpTest.java: + Testcase that tests the launch and validation of signed jnlp files for + application that have multiple jar resources. + * tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithMatchingSignedJnlpTemplate.jnlp: + Launching jnlp file that's main jar matches the signed jnlp application + template file. + * tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithUnmatchingSignedJnlpTemplate.jnlp: + Launching jnlp file that's main jar does not match the signed jnlp + application template file. + * tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp: + Signed JNLP application template file for MultiJar-SignedJnlpTemplate.jar + * tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/SignedJnlpTemplate.java: + A class that uses reflection to access resources from different jars. + 2012-09-07 Jiri Vanek <[email protected]> Added strict test diff --git a/tests/reproducers/signed/MultiJar-NoSignedJnlp/resources/MainJarWithoutSignedJnlp.jnlp b/tests/reproducers/signed/MultiJar-NoSignedJnlp/resources/MainJarWithoutSignedJnlp.jnlp new file mode 100644 index 0000000..788aae3 --- /dev/null +++ b/tests/reproducers/signed/MultiJar-NoSignedJnlp/resources/MainJarWithoutSignedJnlp.jnlp @@ -0,0 +1,69 @@ +<!-- + +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. + +************************************************************************ +This file launches an application where the main jar does not contain +a signed jnlp file but the other jars do. The signed jnlp file +check is to be skipped and no validation is taken place or enforced. +************************************************************************ + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="MainJarWithoutSignedJnlp.jnlp" codebase="."> + <information> + <title>Main Jar does have a signed jnlp </title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>Main Jar does have a signed jnlp </description> + <offline/> + </information> + + <security> + <all-permissions/> + </security> + + <resources> + <property name="specialProperty" value="icedtea"/> + </resources> + + <resources> + <j2se version="1.6+"/> + <jar href="MultiJar-SignedJnlpTemplate.jar"/> + <jar href="MultiJar-NoSignedJnlp.jar" main="true"/> + <jar href="MultiJar-SignedJnlpApplication.jar"/> + </resources> + <application-desc main-class="SimpleApplication"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/signed/MultiJar-NoSignedJnlp/srcs/SimpleApplication.java b/tests/reproducers/signed/MultiJar-NoSignedJnlp/srcs/SimpleApplication.java new file mode 100644 index 0000000..6a9528b --- /dev/null +++ b/tests/reproducers/signed/MultiJar-NoSignedJnlp/srcs/SimpleApplication.java @@ -0,0 +1,64 @@ +/* SimpleApplication.java +Copyright (C) 2012 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. + */ +import java.lang.reflect.*; + +public class SimpleApplication { + + public static void run() { + System.out.println("**Running SimpleApplication"); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static void main(String[] args) throws Exception { + System.out.println("Starting application without a Signed Jnlp"); + + //No parameters + Class noparam[] = {}; + + //Run SignedJnlpApplication + Class c1 = Class.forName("SignedJnlpApplication"); + Method m1 = c1.getDeclaredMethod("run", noparam); + m1.invoke(c1); + + //Run SignedJnlpTemplate + Class c2 = Class.forName("SignedJnlpTemplate"); + Method m2 = c2.getDeclaredMethod("run", noparam); + m2.invoke(c2); + + System.out.println("Ending application without a Signed Jnlp"); + } +} diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithMatchingSignedJnlpApplication.jnlp b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithMatchingSignedJnlpApplication.jnlp new file mode 100644 index 0000000..5fd6bdb --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithMatchingSignedJnlpApplication.jnlp @@ -0,0 +1,71 @@ +<!-- + +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. + +************************************************************************ +This file _MATCHES_ the signed jnlp application file stored within +MultiJar-SignedJnlpApplication.jar. When this file is launched, the jnlp +client validates the signed jnlp with this file and continues launching +the application normally. +************************************************************************ + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="MainJarWithMatchingSignedJnlpApplication.jnlp" codebase="."> + <information> + <title>Matching Signed JNLP</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>Matching Signed JNLP</description> + <offline/> + </information> + + <security> + <all-permissions/> + </security> + + <resources> + <property name="specialProperty" value="icedtea"/> + </resources> + + <resources> + <j2se version="1.6+"/> + <jar href="MultiJar-SignedJnlpTemplate.jar"/> + <jar href="MultiJar-SignedJnlpApplication.jar" main="true"/> + <jar href="MultiJar-NoSignedJnlp.jar"/> + </resources> + <application-desc main-class="SignedJnlpApplication"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithUnmatchingSignedJnlpApplication.jnlp b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithUnmatchingSignedJnlpApplication.jnlp new file mode 100644 index 0000000..38b9869 --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/resources/MainJarWithUnmatchingSignedJnlpApplication.jnlp @@ -0,0 +1,71 @@ +<!-- + +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. + +************************************************************************ +This file _DOES_NOT_MATCH_ the signed jnlp application file stored within +MultiJar-SignedJnlpApplication.jar. When this file is launched, the +application is terminated with an exception stating the signed jnlp and +the launching jnlp did not match. +************************************************************************ + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="MainJarWithUnmatchingSignedJnlpApplication.jnlp" codebase="."> + <information> + <title>XXXXXXX - THIS FILE DOES NOT MATCH THE SIGNED JNLP FILE - XXXXXXX</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>XXXXXXX - THIS FILE DOES NOT MATCH THE SIGNED JNLP FILE - XXXXXXX</description> + <offline/> + </information> + + <security> + <all-permissions/> + </security> + + <resources> + <property name="specialProperty" value="icedtea"/> + </resources> + + <resources> + <j2se version="1.6+"/> + <jar href="MultiJar-SignedJnlpTemplate.jar"/> + <jar href="MultiJar-NoSignedJnlp.jar"/> + <jar href="MultiJar-SignedJnlpApplication.jar" main="true"/> + </resources> + <application-desc main-class="SignedJnlpApplication"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp new file mode 100644 index 0000000..c1b6d9e --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp @@ -0,0 +1,64 @@ +<!-- + +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" href="MainJarWithMatchingSignedJnlpApplication.jnlp" codebase="."> + <information> + <title>Matching Signed JNLP</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>Matching Signed JNLP</description> + <offline/> + </information> + + <security> + <all-permissions/> + </security> + + <resources> + <property name="specialProperty" value="icedtea"/> + </resources> + + <resources> + <j2se version="1.6+"/> + <jar href="MultiJar-SignedJnlpTemplate.jar"/> + <jar href="MultiJar-SignedJnlpApplication.jar" main="true"/> + <jar href="MultiJar-NoSignedJnlp.jar"/> + </resources> + <application-desc main-class="SignedJnlpApplication"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/SignedJnlpApplication.java b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/SignedJnlpApplication.java new file mode 100644 index 0000000..b9aacaa --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/srcs/SignedJnlpApplication.java @@ -0,0 +1,64 @@ +/* SignedJnlpApplication.java +Copyright (C) 2012 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. + */ +import java.lang.reflect.*; + +public class SignedJnlpApplication { + + public static void run() { + System.out.println("**Running SignedJnlpApplication"); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static void main(String[] args) throws Exception { + System.out.println("Starting application with signed application jnlp"); + + //No parameters + Class noparam[] = {}; + + //Run SignedJnlpTemplate + Class c1 = Class.forName("SignedJnlpTemplate"); + Method m1 = c1.getDeclaredMethod("run", noparam); + m1.invoke(c1); + + //Run SimpleApplication + Class c2 = Class.forName("SimpleApplication"); + Method m2 = c2.getDeclaredMethod("run", noparam); + m2.invoke(c2); + + System.out.println("Ending application with signed application jnlp"); + } +} diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpApplication/testcases/MultiJarSignedJnlpTest.java b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/testcases/MultiJarSignedJnlpTest.java new file mode 100644 index 0000000..131ee0b --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpApplication/testcases/MultiJarSignedJnlpTest.java @@ -0,0 +1,102 @@ +/* MultiJarSignedJnlpTest.java +Copyright (C) 2012 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. + */ + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import net.sourceforge.jnlp.ProcessResult; +import net.sourceforge.jnlp.ServerAccess; +import org.junit.Assert; +import org.junit.Test; + +public class MultiJarSignedJnlpTest { + + private static ServerAccess server = new ServerAccess(); + private final List<String> l = Collections.unmodifiableList(Arrays.asList(new String[] { "-Xtrustall" })); + private final String signedJnlpException = "net.sourceforge.jnlp.LaunchException: Fatal: Application Error: " + + "The signed JNLP file did not match the launching JNLP file. Missing Resource: Signed Application " + + "did not match launching JNLP File"; + + @Test + public void checkingForRequiredResources() throws Exception { + //MainJarWithoutSignedJnlp.jnlp includes all three required jars + String s = "Ending application without a Signed Jnlp"; + ProcessResult pr = server.executeJavawsHeadless(l, "/MainJarWithoutSignedJnlp.jnlp"); + Assert.assertTrue("Could not locate the required resources required to run this test", pr.stdout.contains(s)); + } + + @Test + public void mainJarMatchingSignedJnlpTemplate() throws Exception { + ProcessResult pr = server.executeJavawsHeadless(l, "/MainJarWithMatchingSignedJnlpTemplate.jnlp"); + String s = "Ending application with signed application_template jnlp"; + Assert.assertTrue("Could not locate SignedJnlpTemplate class within MultiJar-SignedJnlpTemplate.jar", pr.stdout.contains(s)); + Assert.assertFalse(pr.stderr.contains(signedJnlpException)); + } + + @Test + public void mainJarMatchingSignedJnlpApplication() throws Exception { + ProcessResult pr = server.executeJavawsHeadless(l, "/MainJarWithMatchingSignedJnlpApplication.jnlp"); + String s = "Ending application with signed application jnlp"; + Assert.assertTrue("Could not locate SignedJnlpApplication class within MultiJar-SignedJnlpApplication.jar", pr.stdout.contains(s)); + Assert.assertFalse(pr.stderr.contains(signedJnlpException)); + } + + @Test + public void mainJarWithUnmatchingSignedJnlpApplication() throws Exception { + String s = "Ending application with signed application jnlp"; + ProcessResult pr = server.executeJavawsHeadless(l, "/MainJarWithUnmatchingSignedJnlpApplication.jnlp"); + Assert.assertTrue("Stdout should contains " + signedJnlpException + " but did not", pr.stderr.contains(signedJnlpException)); + Assert.assertFalse( pr.stdout.contains(s)); + } + + @Test + public void mainJarWithUnmatchingSignedJnlpTemplate() throws Exception { + String s = "Ending application with signed application_template jnlp"; + ProcessResult pr = server.executeJavawsHeadless(l, "/MainJarWithUnmatchingSignedJnlpTemplate.jnlp"); + Assert.assertTrue("Stdout should contains " + signedJnlpException + " but did not", pr.stderr.contains(signedJnlpException)); + Assert.assertFalse(pr.stdout.contains(s)); + } + + @Test + public void mainJarWithoutSignedJnlp() throws Exception { + ProcessResult pr = server.executeJavawsHeadless(l, "/MainJarWithoutSignedJnlp.jnlp"); + String s = "Ending application without a Signed Jnlp"; + Assert.assertTrue("Stdout should contains " + s + " but did not", pr.stdout.contains(s)); + } + +} diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithMatchingSignedJnlpTemplate.jnlp b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithMatchingSignedJnlpTemplate.jnlp new file mode 100644 index 0000000..d751979 --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithMatchingSignedJnlpTemplate.jnlp @@ -0,0 +1,71 @@ +<!-- + +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. + +************************************************************************ +This file _MATCHES_ the signed jnlp template file stored within +MultiJar-SignedJnlpTemplate.jar. When this file is launched, the jnlp +client validates the signed jnlp with this file and continues launching +the application normally. +************************************************************************ + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="MainJarWithMatchingSignedJnlpTemplate.jnlp" codebase="."> + <information> + <title>Matching Signed Jnlp Template</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>Matching Signed Jnlp Template</description> + <offline/> + </information> + + <security> + <all-permissions/> + </security> + + <resources> + <property name="specialProperty" value="icedtea"/> + </resources> + + <resources> + <j2se version="1.6+"/> + <jar href="MultiJar-SignedJnlpTemplate.jar"/> + <jar href="MultiJar-SignedJnlpApplication.jar"/> + <jar href="MultiJar-NoSignedJnlp.jar"/> + </resources> + <application-desc main-class="SignedJnlpTemplate"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithUnmatchingSignedJnlpTemplate.jnlp b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithUnmatchingSignedJnlpTemplate.jnlp new file mode 100644 index 0000000..b024a79 --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/resources/MainJarWithUnmatchingSignedJnlpTemplate.jnlp @@ -0,0 +1,71 @@ +<!-- + +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. + +************************************************************************ +This file _DOES_NOT_MATCH_ the signed jnlp template file stored within +MultiJar-SignedJnlpTemplate.jar. When this file is launched, the +application is terminated with an exception stating the signed jnlp and +the launching jnlp did not match. +************************************************************************ + + --> +<?xml version="1.0" encoding="utf-8"?> +<jnlp spec="1.0" href="MainJarWithUnmatchingSignedJnlpTemplate.jnlp" codebase="."> + <information> + <title>XXXXXXX - THIS FILE DOES NOT MATCH THE SIGNED JNLP TEMPLATE FILE - XXXXXXX</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>XXXXXXX - THIS FILE DOES NOT MATCH THE SIGNED JNLP TEMPLATE FILE - XXXXXXX</description> + <offline/> + </information> + + <security> + <all-permissions/> + </security> + + <resources> + <property name="specialProperty" value="icedtea"/> + </resources> + + <resources> + <j2se version="1.6+"/> + <jar href="MultiJar-SignedJnlpTemplate.jar"/> + <jar href="MultiJar-SignedJnlpApplication.jar"/> + <jar href="MultiJar-NoSignedJnlp.jar"/> + </resources> + <application-desc main-class="SignedJnlpTemplate"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp new file mode 100644 index 0000000..c521167 --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp @@ -0,0 +1,64 @@ +<!-- + +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" href="*" codebase="*"> + <information> + <title>Matching Signed Jnlp Template</title> + <vendor>IcedTea</vendor> + <homepage href="http://icedtea.classpath.org/wiki/IcedTea-Web#Testing_IcedTea-Web"/> + <description>Matching Signed Jnlp Template</description> + <offline/> + </information> + + <security> + <all-permissions/> + </security> + + <resources> + <property name="*" value="icedtea"/> + </resources> + + <resources> + <j2se version="1.6+"/> + <jar href="*"/> + <jar href="*"/> + <jar href="*"/> + </resources> + <application-desc main-class="*"> + </application-desc> +</jnlp> diff --git a/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/SignedJnlpTemplate.java b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/SignedJnlpTemplate.java new file mode 100644 index 0000000..a767d55 --- /dev/null +++ b/tests/reproducers/signed/MultiJar-SignedJnlpTemplate/srcs/SignedJnlpTemplate.java @@ -0,0 +1,64 @@ +/* SignedJnlpTemplate.java +Copyright (C) 2012 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. + */ +import java.lang.reflect.*; + +public class SignedJnlpTemplate { + + public static void run() { + System.out.println("**Running SignedJnlpTemplate"); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static void main(String[] args) throws Exception { + System.out.println("Starting application with signed application_template jnlp"); + + //No parameters + Class noparam[] = {}; + + //Run SignedJnlpApplication + Class c1 = Class.forName("SignedJnlpApplication"); + Method m1 = c1.getDeclaredMethod("run", noparam); + m1.invoke(c1); + + //Run SimpleApplication + Class c2 = Class.forName("SimpleApplication"); + Method m2 = c2.getDeclaredMethod("run", noparam); + m2.invoke(c2); + + System.out.println("Ending application with signed application_template jnlp"); + } +} |