/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestParsedHtml.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.test; import com.uwyn.rife.tools.FileUtils; import com.uwyn.rife.tools.StringUtils; import java.util.Collection; import java.util.List; import java.util.Map; import junit.framework.TestCase; public class TestParsedHtml extends TestCase { public TestParsedHtml(String name) { super(name); } public void testTitle() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); assertEquals("This is the title", parsed.getTitle()); } public void testLinks() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); List<MockLink> links = parsed.getLinks(); assertEquals(2, links.size()); MockLink link1 = links.get(0); assertEquals(0, link1.getParameters().size()); assertEquals(0, link1.getParameterNames().size()); assertEquals("link1", link1.getText()); assertEquals("/link/url/1", link1.getHref()); assertEquals("linkid1", link1.getId()); assertEquals("linkclass1", link1.getClassName()); assertEquals("linktitle1", link1.getTitle()); assertEquals("linktarget1", link1.getTarget()); assertEquals("linkname1", link1.getName()); MockLink link2 = links.get(1); assertEquals(2, link2.getParameters().size()); assertEquals(2, link2.getParameterNames().size()); assertTrue(link2.hasParameter("param1")); assertTrue(link2.hasParameter("param2")); assertEquals("value1", link2.getParameterValue("param1")); assertEquals("value2", link2.getParameterValue("param2")); assertNull(link2.getParameterValue("unknown")); assertEquals("value1,value3", StringUtils.join(link2.getParameterValues("param1"), ",")); assertEquals("value2", StringUtils.join(link2.getParameterValues("param2"), ",")); assertNull(link2.getParameterValues("unknown")); assertEquals("", link2.getText()); assertEquals("/link/url/2?param1=value1¶m2=value2¶m1=value3", link2.getHref()); assertEquals("linkid2", link2.getId()); assertEquals("linkclass2", link2.getClassName()); assertEquals("linktitle2", link2.getTitle()); assertEquals("linktarget2", link2.getTarget()); assertEquals("linkname2", link2.getName()); assertSame(link1, parsed.getLinkWithId("linkid1")); assertSame(link1, parsed.getLinkWithName("linkname1")); assertSame(link1, parsed.getLinkWithText("link1")); assertSame(link2, parsed.getLinkWithId("linkid2")); assertSame(link2, parsed.getLinkWithName("linkname2")); assertSame(link2, parsed.getLinkWithText("")); assertSame(link2, parsed.getLinkWithImageAlt("imagealt2")); assertSame(link2, parsed.getLinkWithImageName("imagename2")); } public void testUnknownLinks() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); assertNull(parsed.getLinkWithId("unknown")); assertNull(parsed.getLinkWithName("unknown")); assertNull(parsed.getLinkWithText("unknown")); assertNull(parsed.getLinkWithImageAlt("unknown")); assertNull(parsed.getLinkWithImageName("unknown")); } public void testForms() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); List<MockForm> forms = parsed.getForms(); assertEquals(2, forms.size()); MockForm form1 = forms.get(0); assertEquals("/form/url/1", form1.getAction()); assertEquals("POST", form1.getMethod()); assertEquals("formid1", form1.getId()); assertEquals("formclass1", form1.getClassName()); assertEquals("formtitle1", form1.getTitle()); assertEquals("formname1", form1.getName()); MockForm form2 = forms.get(1); assertEquals("/form/url/2", form2.getAction()); assertEquals("get", form2.getMethod()); assertEquals("formid2", form2.getId()); assertEquals("formclass2", form2.getClassName()); assertEquals("formtitle2", form2.getTitle()); assertEquals("formname2", form2.getName()); assertSame(form1, parsed.getFormWithId("formid1")); assertSame(form1, parsed.getFormWithName("formname1")); assertSame(form2, parsed.getFormWithId("formid2")); assertSame(form2, parsed.getFormWithName("formname2")); } public void testFormParameters() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); List<MockForm> forms = parsed.getForms(); assertEquals(2, forms.size()); MockForm form1 = forms.get(0); Map<String, String[]> params = form1.getParameters(); assertEquals(16, params.size()); assertTrue(params.containsKey("paramhidden1")); assertTrue(params.containsKey("paramhidden2")); assertTrue(params.containsKey("paramtext1")); assertTrue(params.containsKey("paramtext2")); assertTrue(params.containsKey("parampassword1")); assertTrue(params.containsKey("parampassword2")); assertTrue(params.containsKey("paramcheckbox2")); assertTrue(params.containsKey("paramcheckbox3")); assertTrue(params.containsKey("paramcheckbox4")); assertTrue(params.containsKey("paramradio2")); assertTrue(params.containsKey("paramradio3")); assertTrue(params.containsKey("textarea1")); assertTrue(params.containsKey("textarea2")); assertTrue(params.containsKey("select1")); assertTrue(params.containsKey("select2")); assertTrue(params.containsKey("select3")); } public void testFormParameterNames() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); List<MockForm> forms = parsed.getForms(); assertEquals(2, forms.size()); MockForm form1 = forms.get(0); Collection<String> paramvalues = form1.getParameterNames(); assertEquals(16, paramvalues.size()); assertTrue(paramvalues.contains("paramhidden1")); assertTrue(paramvalues.contains("paramhidden2")); assertTrue(paramvalues.contains("paramtext1")); assertTrue(paramvalues.contains("paramtext2")); assertTrue(paramvalues.contains("parampassword1")); assertTrue(paramvalues.contains("parampassword2")); assertTrue(paramvalues.contains("paramcheckbox2")); assertTrue(paramvalues.contains("paramcheckbox3")); assertTrue(paramvalues.contains("paramcheckbox4")); assertTrue(paramvalues.contains("paramradio2")); assertTrue(paramvalues.contains("paramradio3")); assertTrue(paramvalues.contains("textarea1")); assertTrue(paramvalues.contains("textarea2")); assertTrue(paramvalues.contains("select1")); assertTrue(paramvalues.contains("select2")); assertTrue(paramvalues.contains("select3")); } public void testFormDefaultValues() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); List<MockForm> forms = parsed.getForms(); assertEquals(2, forms.size()); MockForm form1 = forms.get(0); Map<String, String[]> params = form1.getParameters(); assertEquals("", StringUtils.join(params.get("paramhidden1"), ",")); assertEquals("paramhidden2avalue,paramhidden2bvalue", StringUtils.join(params.get("paramhidden2"), ",")); assertEquals("", StringUtils.join(params.get("paramtext1"), ",")); assertEquals("paramtext2avalue,paramtext2bvalue", StringUtils.join(params.get("paramtext2"), ",")); assertEquals("", StringUtils.join(params.get("parampassword1"), ",")); assertEquals("parampassword2avalue,parampassword2bvalue", StringUtils.join(params.get("parampassword2"), ",")); assertEquals("on", StringUtils.join(params.get("paramcheckbox2"), ",")); assertEquals("paramcheckbox3value", StringUtils.join(params.get("paramcheckbox3"), ",")); assertEquals("on,paramcheckbox4value", StringUtils.join(params.get("paramcheckbox4"), ",")); assertEquals("on", StringUtils.join(params.get("paramradio2"), ",")); assertEquals("paramradio3bvalue", StringUtils.join(params.get("paramradio3"), ",")); assertEquals("", StringUtils.join(params.get("textarea1"), ",")); assertEquals("paramtextarea2avalue,paramtextarea2bvalue", StringUtils.join(params.get("textarea2"), ",")); assertEquals("select1option1value,select1option3,select1option2", StringUtils.join(params.get("select1"), ",")); assertEquals("select2option3", StringUtils.join(params.get("select2"), ",")); assertEquals("select3option1", StringUtils.join(params.get("select3"), ",")); } public void testFormParameterValue() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); List<MockForm> forms = parsed.getForms(); assertEquals(2, forms.size()); MockForm form1 = forms.get(0); assertEquals("", form1.getParameterValue("paramhidden1")); assertEquals("paramhidden2avalue", form1.getParameterValue("paramhidden2")); assertEquals("", form1.getParameterValue("paramtext1")); assertEquals("paramtext2avalue", form1.getParameterValue("paramtext2")); assertEquals("", form1.getParameterValue("parampassword1")); assertEquals("parampassword2avalue", form1.getParameterValue("parampassword2")); assertEquals("on", form1.getParameterValue("paramcheckbox2")); assertEquals("paramcheckbox3value", form1.getParameterValue("paramcheckbox3")); assertEquals("on", form1.getParameterValue("paramcheckbox4")); assertEquals("on", form1.getParameterValue("paramradio2")); assertEquals("paramradio3bvalue", form1.getParameterValue("paramradio3")); assertEquals("", form1.getParameterValue("textarea1")); assertEquals("paramtextarea2avalue", form1.getParameterValue("textarea2")); assertEquals("select1option1value", form1.getParameterValue("select1")); assertEquals("select2option3", form1.getParameterValue("select2")); assertEquals("select3option1", form1.getParameterValue("select3")); } public void testFormParameterValues() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); List<MockForm> forms = parsed.getForms(); assertEquals(2, forms.size()); MockForm form1 = forms.get(0); assertEquals("", StringUtils.join(form1.getParameterValues("paramhidden1"), ",")); assertEquals("paramhidden2avalue,paramhidden2bvalue", StringUtils.join(form1.getParameterValues("paramhidden2"), ",")); assertEquals("", StringUtils.join(form1.getParameterValues("paramtext1"), ",")); assertEquals("paramtext2avalue,paramtext2bvalue", StringUtils.join(form1.getParameterValues("paramtext2"), ",")); assertEquals("", StringUtils.join(form1.getParameterValues("parampassword1"), ",")); assertEquals("parampassword2avalue,parampassword2bvalue", StringUtils.join(form1.getParameterValues("parampassword2"), ",")); assertEquals("on", StringUtils.join(form1.getParameterValues("paramcheckbox2"), ",")); assertEquals("paramcheckbox3value", StringUtils.join(form1.getParameterValues("paramcheckbox3"), ",")); assertEquals("on,paramcheckbox4value", StringUtils.join(form1.getParameterValues("paramcheckbox4"), ",")); assertEquals("on", StringUtils.join(form1.getParameterValues("paramradio2"), ",")); assertEquals("paramradio3bvalue", StringUtils.join(form1.getParameterValues("paramradio3"), ",")); assertEquals("", StringUtils.join(form1.getParameterValues("textarea1"), ",")); assertEquals("paramtextarea2avalue,paramtextarea2bvalue", StringUtils.join(form1.getParameterValues("textarea2"), ",")); assertEquals("select1option1value,select1option3,select1option2", StringUtils.join(form1.getParameterValues("select1"), ",")); assertEquals("select2option3", StringUtils.join(form1.getParameterValues("select2"), ",")); assertEquals("select3option1", StringUtils.join(form1.getParameterValues("select3"), ",")); } public void testUnknownForms() throws Exception { String text = FileUtils.readString(getClass().getClassLoader().getResource("parsed_html.html"), "UTF-8"); ParsedHtml parsed = ParsedHtml.parse(null, text); assertNull(parsed.getFormWithId("unknown")); assertNull(parsed.getFormWithName("unknown")); } }