diff options
Diffstat (limited to 'tests/netx/unit/net/sourceforge/jnlp/JNLPMatcherTest.java')
-rw-r--r-- | tests/netx/unit/net/sourceforge/jnlp/JNLPMatcherTest.java | 464 |
1 files changed, 464 insertions, 0 deletions
diff --git a/tests/netx/unit/net/sourceforge/jnlp/JNLPMatcherTest.java b/tests/netx/unit/net/sourceforge/jnlp/JNLPMatcherTest.java new file mode 100644 index 0000000..d767343 --- /dev/null +++ b/tests/netx/unit/net/sourceforge/jnlp/JNLPMatcherTest.java @@ -0,0 +1,464 @@ +/* JNLPMatcherTest.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. + */ + +package net.sourceforge.jnlp; + +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import junit.framework.Assert; +import org.junit.Test; + +public class JNLPMatcherTest { + + final String tests[] = { + "Testing template with CDATA", + "Testing template with an exact duplicate of the launching JNLP file", + "Testing template with wildchars as attribute/element values", + "Testing template with attributes/elements in different order", + "Testing template with wildchars as ALL element/attribute values", + "Testing template with comments", + "Testing template with different attribute/element values", + "Testing template by adding an additional children to element", + "Testing template by removing children from element", + "Testing template with a complete different JNLP template file ", + "Testing application with CDATA", + "Testing application with an exact duplicate of the launching JNLP file", + "Testing application with the same element/attribute name and value pair in different orders", + "Testing application with comments", + "Testing application with wildchars as attribute/element values", + "Testing application with a different codebase attribute value", + "Testing application by adding additional children to element", + "Testing application by removing children from element", + "Testing application with a complete different JNLP application file", + "Testing by calling JNLPMatcher.match() multiple times. Checking to see if the returns value is consistent" }; + + final ClassLoader cl = JNLPMatcherTest.class.getClassLoader(); + + private InputStreamReader getLaunchReader() { + InputStream launchStream = cl + .getResourceAsStream("net/sourceforge/jnlp/launchApp.jnlp"); + return new InputStreamReader(launchStream); + } + + @Test + public void testTemplateCDATA() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template0.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[0], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateDuplicate() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template1.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[1], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateWildCharsRandom() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template2.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[2], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateDifferentOrder() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template3.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[3], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateWildCharsAsAllValues() throws JNLPMatcherException, + IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template4.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[4], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateComments() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template5.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[5], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateDifferentValues() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template6.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[6], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateExtraChild() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template7.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[7], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateFewerChild() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template8.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[8], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testTemplateDifferentFile() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template9.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[9], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationCDATA() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application0.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[10], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationDuplicate() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application1.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[11], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationDifferentOrder() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application2.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[12], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationComments() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application3.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[13], true, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationWildCharsRandom() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application4.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[14], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationDifferentCodebaseValue() throws JNLPMatcherException, + IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application5.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[15], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationExtraChild() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application6.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[16], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationFewerChild() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application7.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[17], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @Test + public void testApplicationDifferentFile() throws JNLPMatcherException, IOException { + + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application8.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[18], false, test.isMatch()); + fileReader.close(); + launchReader.close(); + } + + @SuppressWarnings("unused") + @Test + public void testNullJNLPFiles() throws IOException { + + Exception expectedException = null; + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application8.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + try { + JNLPMatcher test = new JNLPMatcher(null, launchReader, false); + } catch (Exception e) { + expectedException = e; + } + Assert.assertEquals( + "Checking exception after trying to create an instance with null signed application/template reader", + expectedException.getClass().getName(), + "net.sourceforge.jnlp.JNLPMatcherException"); + + try { + JNLPMatcher test = new JNLPMatcher(fileReader, null, false); + } catch (Exception e) { + expectedException = e; + } + Assert.assertEquals( + "Checking exception after trying to create an instance with null launching JNLP file reader", + expectedException.getClass().getName(), + "net.sourceforge.jnlp.JNLPMatcherException"); + + try { + JNLPMatcher test = new JNLPMatcher(null, null, false); + } catch (Exception e) { + expectedException = e; + } + Assert.assertEquals( + "Checking exception after trying to create an instance with both readers being null", + expectedException.getClass().getName(), + "net.sourceforge.jnlp.JNLPMatcherException"); + + launchReader.close(); + fileReader.close(); + } + + @Test + public void testCallingMatchMultiple() throws JNLPMatcherException, IOException { + + // Check with application + InputStreamReader launchReader = this.getLaunchReader(); + + InputStream fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/application/application8.jnlp"); + InputStreamReader fileReader = new InputStreamReader(fileStream); + + JNLPMatcher test = new JNLPMatcher(fileReader, launchReader, false); + + Assert.assertEquals(tests[19], false, test.isMatch()); + Assert.assertEquals(tests[19], false, test.isMatch()); + + fileReader.close(); + launchReader.close(); + + // Check with template + launchReader = this.getLaunchReader(); + + fileStream = cl + .getResourceAsStream("net/sourceforge/jnlp/templates/template6.jnlp"); + fileReader = new InputStreamReader(fileStream); + + test = new JNLPMatcher(fileReader, launchReader, true); + + Assert.assertEquals(tests[19], false, test.isMatch()); + Assert.assertEquals(tests[19], false, test.isMatch()); + + fileReader.close(); + launchReader.close(); + } +} |