TagBalancingHtmlStreamRendererTest.java revision 5c702c12be71d8070da9287cc4a044617dd726a7
15c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.compackage org.owasp.html;
25c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com
35c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.comimport com.google.common.collect.ImmutableList;
45c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com
55c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.comimport junit.framework.TestCase;
65c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com
75c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.compublic class TagBalancingHtmlStreamRendererTest extends TestCase {
85c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com
95c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com  public final void testTagBalancing() {
105c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    final StringBuilder htmlOutputBuffer = new StringBuilder();
115c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    HtmlStreamEventReceiver balancer = new TagBalancingHtmlStreamEventReceiver(
125c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com        HtmlStreamRenderer.create(htmlOutputBuffer, new Handler<String>() {
135c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com          @Override
145c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com          public void handle(String x) {
155c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com            fail("An unexpected error was raised during the testcase");
165c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com          }
175c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com        }));
185c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com
195c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.openDocument();
205c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.openTag("html", ImmutableList.<String>of());
215c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.openTag("head", ImmutableList.<String>of());
225c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.openTag("title", ImmutableList.<String>of());
235c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.text("Hello, <<World>>!");
245c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    // TITLE closed with case-insensitive differnet name.
255c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.closeTag("TITLE");
265c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.closeTag("head");
275c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.openTag("body", ImmutableList.<String>of());
285c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.openTag("p", ImmutableList.of("id", "p'0"));
295c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.text("Hello,");
305c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.openTag("Br", ImmutableList.<String>of());
315c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.text("<<World>>!");
325c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    // HTML, P, and BODY unclosed, but BR not.
335c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    balancer.closeDocument();
345c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com
355c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com    assertEquals(
365c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com        "<html><head><title>Hello, &lt;&lt;World&gt;&gt;!</title></head>"
375c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com        + "<body><p id=\"p&#39;0\">Hello,"
385c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com        + "<br>&lt;&lt;World&gt;&gt;!</p></body></html>",
395c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com        htmlOutputBuffer.toString());
405c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com  }
415c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com}
42