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, <<World>>!</title></head>" 375c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com + "<body><p id=\"p'0\">Hello," 385c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com + "<br><<World>>!</p></body></html>", 395c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com htmlOutputBuffer.toString()); 405c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com } 415c702c12be71d8070da9287cc4a044617dd726a7manico.james@gmail.com} 42