diff options
Diffstat (limited to 'tests/reproducers/signed/DownloadService/testcases/DownloadServiceTest.java')
-rw-r--r-- | tests/reproducers/signed/DownloadService/testcases/DownloadServiceTest.java | 377 |
1 files changed, 377 insertions, 0 deletions
diff --git a/tests/reproducers/signed/DownloadService/testcases/DownloadServiceTest.java b/tests/reproducers/signed/DownloadService/testcases/DownloadServiceTest.java new file mode 100644 index 0000000..69c5736 --- /dev/null +++ b/tests/reproducers/signed/DownloadService/testcases/DownloadServiceTest.java @@ -0,0 +1,377 @@ +/* DownloadServiceTest.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.io.File; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.List; + +import junit.framework.Assert; +import net.sourceforge.jnlp.ProcessResult; +import net.sourceforge.jnlp.ServerAccess; + +import org.junit.BeforeClass; +import org.junit.Test; + +public class DownloadServiceTest { + private static ServerAccess server = new ServerAccess(); + private final String exitString = "Exiting DownloadService.."; + private static List<String> checkCache = new ArrayList<String>(); + private static List<String> manageJnlpResources = new ArrayList<String>(); + private static List<String> manageExternalResources = new ArrayList<String>(); + + @BeforeClass + public static void initalizeClass() throws MalformedURLException { + //Check Cache + checkCache.add(server.getJavawsLocation()); + checkCache.add("-arg"); + checkCache.add(server.getUrl().toString() + "/"); + checkCache.add("-arg"); + checkCache.add("checkCache"); + checkCache.add("-Xtrustall"); + checkCache.add(ServerAccess.HEADLES_OPTION); + checkCache.add(server.getUrl() + "/DownloadService.jnlp"); + + //Manage Jnlp Resouces + manageJnlpResources.add(server.getJavawsLocation()); + manageJnlpResources.add("-arg"); + manageJnlpResources.add(server.getUrl().toString() + "/"); + manageJnlpResources.add("-arg"); + manageJnlpResources.add("manageJnlpJars"); + manageJnlpResources.add("-Xtrustall"); + manageJnlpResources.add(ServerAccess.HEADLES_OPTION); + manageJnlpResources.add(server.getUrl() + "/DownloadService.jnlp"); + + //Manage External Resources + manageExternalResources.add(server.getJavawsLocation()); + manageExternalResources.add("-arg"); + manageExternalResources.add(server.getUrl().toString() + "/"); + manageExternalResources.add("-arg"); + manageExternalResources.add("manageExternalJars"); + manageExternalResources.add("-Xtrustall"); + manageExternalResources.add(ServerAccess.HEADLES_OPTION); + manageExternalResources.add(server.getUrl() + "/DownloadService.jnlp"); + } + + /** + * Executes reproducer to checks if DownloadServices's cache checks are working correctly. + * @return stdout of reproducer. + */ + private String runCacheCheckTests() throws Exception { + //Check cache test + ProcessResult processResult = ServerAccess.executeProcess(checkCache); + String stdoutCheckCache = processResult.stdout; + Assert.assertTrue("CheckCache - DownloadServiceRunner instance did not close as expected, this test may fail.", + stdoutCheckCache.contains(exitString)); + + return stdoutCheckCache; + } + + /** + * Executes reproducer to checks if DownloadServices's management of external jars are working correctly. + * @return stdout of reproducer. + */ + private String runExternalTests() throws Exception { + ProcessResult processResult = ServerAccess.executeProcess(manageExternalResources); + String stdoutExternalResources = processResult.stdout; + Assert.assertTrue("ManageExternalResources - DownloadServiceRunner instance did not close as expected, this test may fail.", + stdoutExternalResources.contains(exitString)); + + return stdoutExternalResources; + } + + /** + * Executes reproducer to checks if DownloadServices's management of jnlp jars are working correctly. + * @return stdout of reproducer. + */ + private String runJnlpResourceTests() throws Exception { + ProcessResult processResult = ServerAccess.executeProcess(manageJnlpResources); + String stdoutJnlpResources = processResult.stdout; + Assert.assertTrue("ManageJnlpResources - DownloadServiceRunner instance did not close as expected, this test may fail.", + stdoutJnlpResources.contains(exitString)); + + return stdoutJnlpResources; + } + + @Test + public void checkIfRequiredResourcesExist() { + //Jnlp files + Assert.assertTrue("DownloadService.jnlp is a required resource that's missing.", + new File(server.getDir().getAbsolutePath() + "/DownloadService.jnlp").isFile()); + Assert.assertTrue("DownloadServiceExtension.jnlp is a required resource that's missing.", new File(server.getDir().getAbsolutePath() + + "/DownloadServiceExtension.jnlp").isFile()); + + //Jar files + Assert.assertTrue("DownloadService.jar is a required resource that's missing.", + new File(server.getDir().getAbsolutePath() + "/DownloadService.jar").isFile()); + Assert.assertTrue("SignedJnlpResource.jar is a required resource that's missing.", new File(server.getDir().getAbsolutePath() + + "/SignedJnlpResource.jar").isFile()); + Assert.assertTrue("SignedJarResource.jar is a required resource that's missing.", + new File(server.getDir().getAbsolutePath() + "/SignedJarResource.jar").isFile()); + Assert.assertTrue("MultiJar-NoSignedJnlp.jar is a required resource that's missing.", new File(server.getDir().getAbsolutePath() + + "/MultiJar-NoSignedJnlp.jar").isFile()); + } + + @Test + public void testcheckCaches() throws Exception { + String stdoutCheckCache = runCacheCheckTests(); + + //Stdout validations + String s = "CHECKCACHE-isPartCached: LaunchPartOne: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKCACHE-isPartCached: LaunchPartTwo: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKCACHE-isPartCached: NonExistingPart: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + } + + @Test + public void testcheckCachesUsingArray() throws Exception { + String stdoutCheckCache = runCacheCheckTests(); + + //Stdout validations + String s = "CHECKCACHEUSINGMUTIPLEPARTS-isPartCached(Array): ValidLaunchParts: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKCACHEUSINGMUTIPLEPARTS-isPartCached(Array): HalfValidLaunchParts: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKCACHEUSINGMUTIPLEPARTS-isPartCached(Array): InvalidParts: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + } + + @Test + public void testExtensioncheckCaches() throws Exception { + String stdoutCheckCache = runCacheCheckTests(); + + //Stdout validations + String s = "CHECKEXTENSIONCACHE-isExtensionPartCached: ExtensionPartOne: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKEXTENSIONCACHE-isExtensionPartCached: NonExistingPart: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKEXTENSIONCACHE-isExtensionPartCached: NonExistingUrl: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + } + + @Test + public void testExtensioncheckCachesUsingArray() throws Exception { + String stdoutCheckCache = runCacheCheckTests(); + + //Stdout validations + String s = "CHECKEXTENSIONCACHEUSINGMUTIPLEPARTS-isExtensionPartCached(Array): ValidExtensionParts: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKEXTENSIONCACHEUSINGMUTIPLEPARTS-isExtensionPartCached(Array): HalfValidExtensionParts: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + s = "CHECKEXTENSIONCACHEUSINGMUTIPLEPARTS-isExtensionPartCached(Array): InvalidParts: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutCheckCache.contains(s)); + + } + + @Test + public void testExternalResourceChecks() throws Exception { + runCacheCheckTests(); + String stdoutExternalResources = runExternalTests(); + + //Stdout validations + //This is automatically cached from the test engine because the .jar exists + String s = "CHECKEXTERNALCACHE-isResourceCached: UrlToExternalResource: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + + s = "CHECKEXTERNALCACHE-isResourceCached: NonExistingUrl: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + } + + @Test + public void testRemovePart() throws Exception { + runCacheCheckTests(); + String stdoutJnlpResources = runJnlpResourceTests(); + + String s = "REMOVEPART-removePart: LaunchPartOne-BEFORE: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + s = "REMOVEPART-removePart: LaunchPartOne-AFTER: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "REMOVEPART-removePart: LaunchPartTwo-BEFORE: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + s = "REMOVEPART-removePart: LaunchPartTwo-AFTER: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + } + + @Test + public void testRemoveExtensionPart() throws Exception { + runCacheCheckTests(); + String stdoutJnlpResources = runJnlpResourceTests(); + + //Stdout validations + String s = "REMOVEEXTENSIONPART-removeExtensionPart: ExtensionPartOne-BEFORE: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "REMOVEEXTENSIONPART-removeExtensionPart: ExtensionPartOne-AFTER: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + } + + @Test + public void testRemoveExtensionPartUsingArray() throws Exception { + runCacheCheckTests(); + String stdoutJnlpResources = runJnlpResourceTests(); + + //Stdout validations + String s = "REMOVEEXTENSIONUSINGVALIDPARTINARRAY-removeExtensionPart(Array): ValidExtensionParts-BEFORE: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "REMOVEEXTENSIONUSINGVALIDPARTINARRAY-removeExtensionPart(Array): ValidExtensionParts-AFTER: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "REMOVEEXTENSIONUSINGHALFVALIDPARTINARRAY-removeExtensionPart(Array): HalfValidExtensionParts-BEFORE: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "REMOVEEXTENSIONUSINGHALFVALIDPARTINARRAY-removeExtensionPart(Array): HalfValidExtensionParts-AFTER: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + } + + @Test + public void testRemoveExternalResource() throws Exception { + runCacheCheckTests(); + String stdoutExternalResources = runExternalTests(); + + //Stdout validations + String s = "REMOVEEXTERNALPART-removeResource: UrlToExternalResource-BEFORE: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + + s = "REMOVEEXTERNALPART-removeResource: UrlToExternalResource-AFTER: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + + } + + @Test + public void testLoadPart() throws Exception { + runCacheCheckTests(); + String stdoutJnlpResources = runJnlpResourceTests(); + + //Stdout validations + //Part 'one' + String s = "LOADPART-loadPart: LaunchPartOne-BEFORE: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + s = "LOADPART-loadPart: LaunchPartOne-AFTER: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + //Part 'two' + s = "LOADPART-loadPart: LaunchPartTwo-BEFORE: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + s = "LOADPART-loadPart: LaunchPartTwo-AFTER: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + } + + @Test + public void testLoadExtensionPart() throws Exception { + runCacheCheckTests(); + String stdoutJnlpResources = runJnlpResourceTests(); + + //Stdout validations + String s = "LOADEXTENSIONPART-loadExtensionPart: ExtensionPartOne-BEFORE: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "LOADEXTENSIONPART-loadExtensionPart: ExtensionPartOne-AFTER: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + } + + @Test + public void testLoadExtensionPartUsingArray() throws Exception { + runCacheCheckTests(); + String stdoutJnlpResources = runJnlpResourceTests(); + + //Stdout validations + String s = "LOADEXTENSIONUSINGVALIDPARTINARRAY-loadExtensionPart(Array): ValidExtensionParts-BEFORE: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "LOADEXTENSIONUSINGVALIDPARTINARRAY-loadExtensionPart(Array): ValidExtensionParts-AFTER: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "LOADEXTENSIONUSINGHALFVALIDPARTINARRAY-loadExtensionPart(Array): HalfValidExtensionParts-BEFORE: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "LOADEXTENSIONUSINGHALFVALIDPARTINARRAY-loadExtensionPart(Array): HalfValidExtensionParts-AFTER: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + } + + @Test + public void testLoadExternalResource() throws Exception { + runCacheCheckTests(); + String stdoutExternalResources = runExternalTests(); + + //Stdout validations + String s = "LOADEXTERNALRESOURCE-loadResource: UrlToExternalResource-BEFORE: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + + s = "LOADEXTERNALRESOURCE-loadResource: UrlToExternalResource-AFTER: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + + } + + @Test + public void testRepeatedlyLoadingAndUnloadingJnlpResources() throws Exception { + runCacheCheckTests(); + String stdoutJnlpResources = runJnlpResourceTests(); + + //Stdout validations + String s = "MULTIPLEMETHODCALLS - removePart: LaunchPartOne: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + s = "MULTIPLEMETHODCALLS - loadPart: LaunchPartOne: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutJnlpResources.contains(s)); + + } + + @Test + public void testRepeatedlyLoadingAndUnloadingExternalResources() throws Exception { + runCacheCheckTests(); + String stdoutExternalResources = runExternalTests(); + + //Stdout validations + String s = "MULTIPLEMETHODCALLS - removeResource: UrlToExternalResource: false"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + + s = "MULTIPLEMETHODCALLS - loadResource: UrlToExternalResource: true"; + Assert.assertTrue("stdout should contain \"" + s + "\" but did not.", stdoutExternalResources.contains(s)); + } +} |