1<!DOCTYPE html> 2<html> 3<head> 4<title></title> 5<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script> 6<script src="parse_html_subset.js"></script> 7<script> 8 9goog.require('goog.testing.jsunit'); 10 11</script> 12 13</head> 14<body> 15<script> 16 17function parseAndAssertThrows(s) { 18 assertThrows(function() { 19 parseHtmlSubset(s); 20 }); 21} 22 23function parseAndAssertNotThrows(s) { 24 assertNotThrows(function() { 25 parseHtmlSubset(s); 26 }); 27} 28 29function testText() { 30 parseAndAssertNotThrows(''); 31 parseAndAssertNotThrows('abc'); 32 parseAndAssertNotThrows(' '); 33} 34 35function testSupportedTags() { 36 parseAndAssertNotThrows('<b>bold</b>'); 37 parseAndAssertNotThrows('Some <b>bold</b> text'); 38 parseAndAssertNotThrows('Some <strong>strong</strong> text'); 39 parseAndAssertNotThrows('<B>bold</B>'); 40 parseAndAssertNotThrows('Some <B>bold</B> text'); 41 parseAndAssertNotThrows('Some <STRONG>strong</STRONG> text'); 42} 43 44function testInvaliTags() { 45 parseAndAssertThrows('<unknown_tag>x</unknown_tag>'); 46 parseAndAssertThrows('<img>'); 47 parseAndAssertThrows('<script>alert(1)<' + '/script>'); 48} 49 50function testInvalidAttributes() { 51 parseAndAssertThrows('<b onclick="alert(1)">x</b>'); 52 parseAndAssertThrows('<b style="color:red">x</b>'); 53 parseAndAssertThrows('<b foo>x</b>'); 54 parseAndAssertThrows('<b foo=bar></b>'); 55} 56 57function testValidAnchors() { 58 parseAndAssertNotThrows('<a href="http://google.com">Google</a>'); 59 parseAndAssertNotThrows('<a href="https://google.com">Google</a>'); 60} 61 62function testInvalidAnchorHrefs() { 63 parseAndAssertThrows('<a href="ftp://google.com">Google</a>'); 64 parseAndAssertThrows('<a href="http/google.com">Google</a>'); 65 parseAndAssertThrows('<a href="javascript:alert(1)">Google</a>'); 66} 67 68function testInvalidAnchorAttributes() { 69 parseAndAssertThrows('<a name=foo>Google</a>'); 70 parseAndAssertThrows( 71 '<a onclick="alert(1)" href="http://google.com">Google</a>'); 72 parseAndAssertThrows('<a foo="bar(1)" href="http://google.com">Google</a>'); 73} 74 75function testAnchorTarget() { 76 parseAndAssertNotThrows( 77 '<a href="http://google.com" target="blank_">Google</a>'); 78 parseAndAssertNotThrows( 79 '<a href="http://google.com" target="foo">Google</a>'); 80} 81 82</script> 83 84</body> 85</html> 86