| <!DOCTYPE html> |
| <html> |
| <head> |
| <title></title> |
| <script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script> |
| <script src="parse_html_subset.js"></script> |
| <script> |
| |
| goog.require('goog.testing.jsunit'); |
| |
| </script> |
| |
| </head> |
| <body> |
| <script> |
| |
| function parseAndAssertThrows(s) { |
| assertThrows(function() { |
| parseHtmlSubset(s); |
| }); |
| } |
| |
| function parseAndAssertNotThrows(s) { |
| assertNotThrows(function() { |
| parseHtmlSubset(s); |
| }); |
| } |
| |
| function testText() { |
| parseAndAssertNotThrows(''); |
| parseAndAssertNotThrows('abc'); |
| parseAndAssertNotThrows(' '); |
| } |
| |
| function testSupportedTags() { |
| parseAndAssertNotThrows('<b>bold</b>'); |
| parseAndAssertNotThrows('Some <b>bold</b> text'); |
| parseAndAssertNotThrows('Some <strong>strong</strong> text'); |
| parseAndAssertNotThrows('<B>bold</B>'); |
| parseAndAssertNotThrows('Some <B>bold</B> text'); |
| parseAndAssertNotThrows('Some <STRONG>strong</STRONG> text'); |
| } |
| |
| function testInvaliTags() { |
| parseAndAssertThrows('<unknown_tag>x</unknown_tag>'); |
| parseAndAssertThrows('<img>'); |
| parseAndAssertThrows('<script>alert(1)<' + '/script>'); |
| } |
| |
| function testInvalidAttributes() { |
| parseAndAssertThrows('<b onclick="alert(1)">x</b>'); |
| parseAndAssertThrows('<b style="color:red">x</b>'); |
| parseAndAssertThrows('<b foo>x</b>'); |
| parseAndAssertThrows('<b foo=bar></b>'); |
| } |
| |
| function testValidAnchors() { |
| parseAndAssertNotThrows('<a href="http://google.com">Google</a>'); |
| parseAndAssertNotThrows('<a href="https://google.com">Google</a>'); |
| } |
| |
| function testInvalidAnchorHrefs() { |
| parseAndAssertThrows('<a href="ftp://google.com">Google</a>'); |
| parseAndAssertThrows('<a href="http/google.com">Google</a>'); |
| parseAndAssertThrows('<a href="javascript:alert(1)">Google</a>'); |
| } |
| |
| function testInvalidAnchorAttributes() { |
| parseAndAssertThrows('<a name=foo>Google</a>'); |
| parseAndAssertThrows( |
| '<a onclick="alert(1)" href="http://google.com">Google</a>'); |
| parseAndAssertThrows('<a foo="bar(1)" href="http://google.com">Google</a>'); |
| } |
| |
| function testAnchorTarget() { |
| parseAndAssertNotThrows( |
| '<a href="http://google.com" target="blank_">Google</a>'); |
| parseAndAssertNotThrows( |
| '<a href="http://google.com" target="foo">Google</a>'); |
| } |
| |
| </script> |
| |
| </body> |
| </html> |