From b6a2b55190c36fd9b42fdb3c61e8ff0e06776263 Mon Sep 17 00:00:00 2001 From: Danesh Dadachanji Date: Mon, 4 Jun 2012 13:35:25 -0400 Subject: Handle absolute paths passed into jnlp_href's value. --- .../net/sourceforge/jnlp/PluginBridgeTest.java | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java (limited to 'tests/netx/unit/net/sourceforge') diff --git a/tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java b/tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java new file mode 100644 index 0000000..c006fef --- /dev/null +++ b/tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java @@ -0,0 +1,99 @@ +/* + * Copyright 2012 Red Hat, Inc. + * This file is part of IcedTea, http://icedtea.classpath.org + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package net.sourceforge.jnlp; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Hashtable; + +import net.sourceforge.jnlp.cache.UpdatePolicy; + +import org.junit.Test; + +public class PluginBridgeTest { + private class MockJNLPCreator extends JNLPCreator { + + private URL JNLPHref; + + public URL getJNLPHref() { + return JNLPHref; + } + + public JNLPFile create(URL location, Version version, boolean strict, + UpdatePolicy policy, URL forceCodebase) throws IOException, ParseException { + JNLPHref = location; + return new MockJNLPFile(); + } + } + + private class MockJNLPFile extends JNLPFile { + public AppletDesc getApplet() { + return new AppletDesc(null, null, null, 0, 0, new HashMap()); + } + + public ResourcesDesc getResources() { + return new ResourcesDesc(null, null, null, null); + } + } + + @Test + public void testAbsoluteJNLPHref() throws MalformedURLException, Exception { + URL codeBase = new URL("http://undesired.absolute.codebase.com"); + String absoluteLocation = "http://absolute.href.com/test.jnlp"; + Hashtable atts = new Hashtable(); + atts.put("jnlp_href", absoluteLocation); + MockJNLPCreator mockCreator = new MockJNLPCreator(); + PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, atts, "", mockCreator); + assertEquals(absoluteLocation, mockCreator.getJNLPHref().toExternalForm()); + } + + @Test + public void testRelativeJNLPHref() throws MalformedURLException, Exception { + URL codeBase = new URL("http://desired.absolute.codebase.com/"); + String relativeLocation = "sub/dir/test.jnlp"; + Hashtable atts = new Hashtable(); + atts.put("jnlp_href", relativeLocation); + MockJNLPCreator mockCreator = new MockJNLPCreator(); + PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, atts, "", mockCreator); + assertEquals(codeBase.toExternalForm() + relativeLocation, + mockCreator.getJNLPHref().toExternalForm()); + } + + @Test + public void testNoSubDirInCodeBase() throws MalformedURLException, Exception { + String desiredDomain = "http://desired.absolute.codebase.com"; + URL codeBase = new URL(desiredDomain + "/undesired/sub/dir"); + String relativeLocation = "/app/test/test.jnlp"; + Hashtable atts = new Hashtable(); + atts.put("jnlp_href", relativeLocation); + MockJNLPCreator mockCreator = new MockJNLPCreator(); + PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, atts, "", mockCreator); + assertEquals(desiredDomain + relativeLocation, + mockCreator.getJNLPHref().toExternalForm()); + } + +} \ No newline at end of file -- cgit v1.2.3