aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cpp-unit-tests/IcedTeaPluginUtilsTest.cc2
-rw-r--r--tests/cpp-unit-tests/PluginParametersTest.cc93
-rw-r--r--tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java53
-rw-r--r--tests/netx/unit/net/sourceforge/jnlp/PluginParametersTest.java114
-rw-r--r--tests/netx/unit/sun/applet/PluginParameterParserTest.java73
5 files changed, 311 insertions, 24 deletions
diff --git a/tests/cpp-unit-tests/IcedTeaPluginUtilsTest.cc b/tests/cpp-unit-tests/IcedTeaPluginUtilsTest.cc
index 9d77564..1ad1698 100644
--- a/tests/cpp-unit-tests/IcedTeaPluginUtilsTest.cc
+++ b/tests/cpp-unit-tests/IcedTeaPluginUtilsTest.cc
@@ -48,7 +48,7 @@ TEST(NPVariantAsString) {
STRINGZ_TO_NPVARIANT("test", var);
std::string cppstr = IcedTeaPluginUtilities::NPVariantAsString(var);
- CHECK(cppstr == "test");
+ CHECK_EQUAL("test", cppstr);
}
diff --git a/tests/cpp-unit-tests/PluginParametersTest.cc b/tests/cpp-unit-tests/PluginParametersTest.cc
new file mode 100644
index 0000000..e0136e4
--- /dev/null
+++ b/tests/cpp-unit-tests/PluginParametersTest.cc
@@ -0,0 +1,93 @@
+/* Copyright (C) 2012 Red Hat
+
+ 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. */
+
+/******************************************************************************
+ * Unit tests for functions related to sending applet parameters *
+ * (key value pairs). *
+ ******************************************************************************/
+
+#include <UnitTest++.h>
+
+#include "IcedTeaNPPlugin.h"
+
+
+/* Not normally exposed */
+std::string escape_parameter_string(const char* to_encode);
+
+TEST(escape_parameter_string) {
+ CHECK_EQUAL("\\n", escape_parameter_string("\n"));
+ CHECK_EQUAL("\\\\", escape_parameter_string("\\"));
+ CHECK_EQUAL("\\:", escape_parameter_string(";"));
+
+ CHECK_EQUAL(std::string("test") + "\\n" + "\\\\" + "\\:",
+ escape_parameter_string("test\n\\;"));
+}
+
+/* Not normally exposed */
+std::string plugin_parameters_string(int argc, char* argn[], char* argv[]);
+
+TEST(plugin_parameters_string) {
+
+ /* test empty */{
+ const char* argn[] = { "" };
+ const char* argv[] = { "" };
+ CHECK_EQUAL("",
+ plugin_parameters_string(0, (char**)argn, (char**)argv));
+ }
+
+ /* test simple key & value */{
+ const char* argn[] = { "key" };
+ const char* argv[] = { "value" };
+ CHECK_EQUAL("key;value;",
+ plugin_parameters_string(1, (char**)argn, (char**)argv));
+ }
+
+ /* test key & value characters that require escaping */{
+ const char* argn[] = { "key\\" };
+ const char* argv[] = { "value;" };
+ CHECK_EQUAL("key\\\\;value\\:;",
+ plugin_parameters_string(1, (char**)argn, (char**)argv));
+ }
+
+ /* multiple key & value pairs that require escaping*/{
+ const char* argn[] = { "key1\\", "key2\\" };
+ const char* argv[] = { "value1;", "value2;" };
+ CHECK_EQUAL("key1\\\\;value1\\:;key2\\\\;value2\\:;",
+ plugin_parameters_string(2, (char**)argn, (char**)argv));
+ }
+}
+
+
diff --git a/tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java b/tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java
index e9069f2..9015acf 100644
--- a/tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java
+++ b/tests/netx/unit/net/sourceforge/jnlp/PluginBridgeTest.java
@@ -29,6 +29,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Map;
import java.util.Hashtable;
import java.util.List;
import junit.framework.Assert;
@@ -64,14 +65,20 @@ public class PluginBridgeTest {
}
}
+ static private PluginParameters createValidParamObject() {
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("code", ""); // Avoids an exception being thrown
+ return new PluginParameters(params);
+ }
+
@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<String, String> atts = new Hashtable<String, String>();
- atts.put("jnlp_href", absoluteLocation);
+ PluginParameters params = createValidParamObject();
+ params.put("jnlp_href", absoluteLocation);
MockJNLPCreator mockCreator = new MockJNLPCreator();
- PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, atts, "", mockCreator);
+ PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, params, mockCreator);
assertEquals(absoluteLocation, mockCreator.getJNLPHref().toExternalForm());
}
@@ -79,12 +86,12 @@ public class PluginBridgeTest {
public void testRelativeJNLPHref() throws MalformedURLException, Exception {
URL codeBase = new URL("http://desired.absolute.codebase.com/");
String relativeLocation = "sub/dir/test.jnlp";
- Hashtable<String, String> atts = new Hashtable<String, String>();
- atts.put("jnlp_href", relativeLocation);
+ PluginParameters params = createValidParamObject();
+ params.put("jnlp_href", relativeLocation);
MockJNLPCreator mockCreator = new MockJNLPCreator();
- PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, atts, "", mockCreator);
+ PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, params, mockCreator);
assertEquals(codeBase.toExternalForm() + relativeLocation,
- mockCreator.getJNLPHref().toExternalForm());
+ mockCreator.getJNLPHref().toExternalForm());
}
@Test
@@ -92,12 +99,12 @@ public class PluginBridgeTest {
String desiredDomain = "http://desired.absolute.codebase.com";
URL codeBase = new URL(desiredDomain + "/undesired/sub/dir");
String relativeLocation = "/app/test/test.jnlp";
- Hashtable<String, String> atts = new Hashtable<String, String>();
- atts.put("jnlp_href", relativeLocation);
+ PluginParameters params = createValidParamObject();
+ params.put("jnlp_href", relativeLocation);
MockJNLPCreator mockCreator = new MockJNLPCreator();
- PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, atts, "", mockCreator);
+ PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, params, mockCreator);
assertEquals(desiredDomain + relativeLocation,
- mockCreator.getJNLPHref().toExternalForm());
+ mockCreator.getJNLPHref().toExternalForm());
}
@Test
@@ -166,12 +173,12 @@ public class PluginBridgeTest {
"ICAgICAgLz4NCiAgICAgICAgICAgIDwvam5scD4=";
MockJNLPCreator mockCreator = new MockJNLPCreator();
- Hashtable<String, String> atts = new Hashtable<String, String>();
- atts.put("jnlp_href", relativeLocation);
- atts.put("jnlp_embedded", jnlpFileEncoded);
+ PluginParameters params = createValidParamObject();
+ params.put("jnlp_href", relativeLocation);
+ params.put("jnlp_embedded", jnlpFileEncoded);
String jnlpCodebase = "http://www.redhat.com";
- PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, atts, "", mockCreator);
+ PluginBridge pb = new PluginBridge(codeBase, null, "", "", 0, 0, params, mockCreator);
JARDesc[] jars = pb.getResources().getJARs();
//Check if there are two jars cached
@@ -239,11 +246,11 @@ public class PluginBridgeTest {
"ICAgICAgICAgICAgPC9qbmxwPg==";
MockJNLPCreator mockCreator = new MockJNLPCreator();
- Hashtable<String, String> atts = new Hashtable<String, String>();
- atts.put("jnlp_href", relativeLocation);
- atts.put("jnlp_embedded", jnlpFileEncoded);
+ PluginParameters params = createValidParamObject();
+ params.put("jnlp_href", relativeLocation);
+ params.put("jnlp_embedded", jnlpFileEncoded);
- PluginBridge pb = new PluginBridge(overwrittenCodebase, null, "", "", 0, 0, atts, "", mockCreator);
+ PluginBridge pb = new PluginBridge(overwrittenCodebase, null, "", "", 0, 0, params, mockCreator);
JARDesc[] jars = pb.getResources().getJARs();
//Check if there are two jars cached
@@ -268,12 +275,12 @@ public class PluginBridgeTest {
String jnlpFileEncoded = "thisContextIsInvalid";
MockJNLPCreator mockCreator = new MockJNLPCreator();
- Hashtable<String, String> atts = new Hashtable<String, String>();
- atts.put("jnlp_href", relativeLocation);
- atts.put("jnlp_embedded", jnlpFileEncoded);
+ PluginParameters params = createValidParamObject();
+ params.put("jnlp_href", relativeLocation);
+ params.put("jnlp_embedded", jnlpFileEncoded);
try {
- new PluginBridge(overwrittenCodebase, null, "", "", 0, 0, atts, "", mockCreator);
+ new PluginBridge(overwrittenCodebase, null, "", "", 0, 0, params, mockCreator);
} catch (Exception e) {
return;
}
diff --git a/tests/netx/unit/net/sourceforge/jnlp/PluginParametersTest.java b/tests/netx/unit/net/sourceforge/jnlp/PluginParametersTest.java
new file mode 100644
index 0000000..0e05b53
--- /dev/null
+++ b/tests/netx/unit/net/sourceforge/jnlp/PluginParametersTest.java
@@ -0,0 +1,114 @@
+package net.sourceforge.jnlp;
+
+import static org.junit.Assert.*;
+
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class PluginParametersTest {
+
+ @Test
+ public void testAttributeParseJavaPrefix() {
+ // java_* aliases override older names:
+ // http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/using_tags.html#in-nav
+
+ Map<String, String> rawParams;
+ Hashtable<String, String> params;
+
+ rawParams = new HashMap<String, String>();
+ rawParams.put("code", "codeValue");
+ rawParams.put("java_code", "java_codeValue");
+ params = PluginParameters.createParameterTable(rawParams);
+
+ assertEquals("java_codeValue", params.get("code"));
+
+ rawParams = new HashMap<String, String>();
+ rawParams.put("codebase", "codebaseValue");
+ rawParams.put("java_codebase", "java_codebaseValue");
+ params = PluginParameters.createParameterTable(rawParams);
+
+ assertEquals("java_codebaseValue", params.get("codebase"));
+
+ rawParams = new HashMap<String, String>();
+ rawParams.put("archive", "archiveValue");
+ rawParams.put("java_archive", "java_archiveValue");
+ params = PluginParameters.createParameterTable(rawParams);
+
+ assertEquals("java_archiveValue", params.get("archive"));
+
+ rawParams = new HashMap<String, String>();
+ rawParams.put("object", "objectValue");
+ rawParams.put("java_object", "java_objectValue");
+ params = PluginParameters.createParameterTable(rawParams);
+
+ assertEquals("java_objectValue", params.get("object"));
+
+ rawParams = new HashMap<String, String>();
+ rawParams.put("type", "typeValue");
+ rawParams.put("java_type", "java_typeValue");
+ params = PluginParameters.createParameterTable(rawParams);
+
+ assertEquals("java_typeValue", params.get("type"));
+ }
+
+ @Test
+ public void testEnsureJavaPrefixTakesPrecedence() {
+ Map<String, String> params;
+ params = new HashMap<String, String>();
+ params.put("test", "testValue");
+ params.put("java_test", "java_testValue");
+ PluginParameters.ensureJavaPrefixTakesPrecedence(params, "test");
+ assertEquals("java_testValue", params.get("test"));
+
+ params = new HashMap<String, String>();
+ params.put("test", "testValue");
+ PluginParameters.ensureJavaPrefixTakesPrecedence(params, "test");
+ assertEquals("testValue", params.get("test"));
+
+ params = new HashMap<String, String>();
+ params.put("java_test", "java_testValue");
+ PluginParameters.ensureJavaPrefixTakesPrecedence(params, "test");
+ assertEquals("java_testValue", params.get("test"));
+ }
+
+ @Test
+ public void testAttributeParseCodeAttribute() {
+ Map<String, String> rawParams;
+ Hashtable<String, String> params;
+
+ // Simple test of object tag being set
+ rawParams = new HashMap<String, String>();
+ rawParams.put("object", "objectValue");
+ params = PluginParameters.createParameterTable(rawParams);
+ assertEquals("objectValue", params.get("object"));
+
+ // Classid tag gets used as code tag
+ rawParams = new HashMap<String, String>();
+ rawParams.put("classid", "classidValue");
+ params = PluginParameters.createParameterTable(rawParams);
+ assertEquals("classidValue", params.get("code"));
+
+ // Java: gets stripped from code tag
+ rawParams = new HashMap<String, String>();
+ rawParams.put("code", "java:codeValue");
+ params = PluginParameters.createParameterTable(rawParams);
+ assertEquals("codeValue", params.get("code"));
+
+ // Classid tag gets used as code tag, and java: is stripped
+ rawParams = new HashMap<String, String>();
+ rawParams.put("classid", "java:classidValue");
+ params = PluginParameters.createParameterTable(rawParams);
+ assertEquals("classidValue", params.get("code"));
+
+ // Classid tag gets used as code tag, and clsid: is stripped
+ rawParams = new HashMap<String, String>();
+ rawParams.put("classid", "clsid:classidValue");
+ params = PluginParameters.createParameterTable(rawParams);
+ assertEquals(null, params.get("code"));
+
+ }
+
+}
diff --git a/tests/netx/unit/sun/applet/PluginParameterParserTest.java b/tests/netx/unit/sun/applet/PluginParameterParserTest.java
new file mode 100644
index 0000000..162d603
--- /dev/null
+++ b/tests/netx/unit/sun/applet/PluginParameterParserTest.java
@@ -0,0 +1,73 @@
+package sun.applet;
+
+import static org.junit.Assert.*;
+
+import java.util.Map;
+
+import net.sourceforge.jnlp.PluginParameters;
+
+import org.junit.Test;
+
+public class PluginParameterParserTest {
+
+ @Test
+ public void testIsInt() {
+ assertFalse(PluginParameterParser.isInt("1.0"));
+ assertFalse(PluginParameterParser.isInt("abc"));
+ assertTrue(PluginParameterParser.isInt("1"));
+ }
+
+ @Test
+ public void testUnescapeString() {
+ assertEquals("", PluginParameterParser.unescapeString(""));
+ assertEquals("\n", PluginParameterParser.unescapeString("\n"));
+ assertEquals("\\", PluginParameterParser.unescapeString("\\\\"));
+ assertEquals(";", PluginParameterParser.unescapeString("\\:"));
+
+ assertEquals("test\n\\;",
+ PluginParameterParser.unescapeString("test" + "\\n" + "\\\\" + "\\:"));
+
+ assertEquals("start\n;end\\;",
+ PluginParameterParser.unescapeString("start\\n\\:end\\\\;"));
+ }
+
+ @Test
+ public void testParseEscapedKeyValuePairs() {
+ Map<String, String> params;
+
+ params = PluginParameterParser.parseEscapedKeyValuePairs("key1;value1;KEY2\\:;value2\\\\;");
+ assertEquals(params.size(), 2);
+ assertEquals(params.get("key1"), "value1");
+ assertEquals(params.get("key2;"), "value2\\"); // ensure key is lowercased
+
+ params = PluginParameterParser.parseEscapedKeyValuePairs("");
+ assertEquals(params.size(), 0);
+
+ params = PluginParameterParser.parseEscapedKeyValuePairs("key;;");
+ assertEquals(params.size(), 1);
+ assertEquals(params.get("key"), "");
+
+ params = PluginParameterParser.parseEscapedKeyValuePairs(";value;");
+ assertEquals(params.size(), 1);
+ assertEquals(params.get(""), "value");
+ }
+
+ @Test
+ public void testAttributeParseWidthHeightAttributes() {
+ final String width = "1", height = "1";
+ final String codeKeyVal = "code;codeValue;";
+
+ PluginParameterParser parser = new PluginParameterParser();
+ PluginParameters params;
+
+ params = parser.parse(width, height, codeKeyVal);
+ assertEquals("1", params.get("width"));
+ assertEquals("1", params.get("height"));
+
+ //Test that width height are defaulted to in case of not-a-number attributes:
+ params = parser.parse(width, height, codeKeyVal + " width;NAN;height;NAN;");
+ assertEquals("1", params.get("width"));
+ assertEquals("1", params.get("height"));
+ }
+
+}