import org.junit.Test; import static org.junit.Assert.*; public class HTMLSanitiserTest { @Test public void testEncodeInvalidMarkup() { assertEquals("abc",HTMLSanitiser.encodeInvalidMarkup("abc")); // return text verbatim without markup assertEquals("ab & c",HTMLSanitiser.encodeInvalidMarkup("ab & c")); // encode text assertEquals("abc

def

geh",HTMLSanitiser.encodeInvalidMarkup("abc

def

geh")); // keep

element assertEquals("abc def geh",HTMLSanitiser.encodeInvalidMarkup("abc def geh")); // keep element assertEquals("abc def geh",HTMLSanitiser.encodeInvalidMarkup("abc def geh")); // keep element assertEquals("abc def geh",HTMLSanitiser.encodeInvalidMarkup("abc def geh")); // keep element assertEquals("abc def geh",HTMLSanitiser.encodeInvalidMarkup("abc def geh")); // keep href, target and title attributes assertEquals("abc def geh",HTMLSanitiser.encodeInvalidMarkup("abc def geh")); // encode parameter values assertEquals("abc <u>def</u> geh",HTMLSanitiser.encodeInvalidMarkup("abc def geh")); // element not allowed assertEquals("

abc

",HTMLSanitiser.encodeInvalidMarkup("

abc")); // add optional end tag assertEquals("abc
def",HTMLSanitiser.encodeInvalidMarkup("abc
def")); // convert to XHTML empty element tag assertEquals("<script>abc</script>",HTMLSanitiser.encodeInvalidMarkup("")); // remove potentially dangerous script assertEquals("

abc

",HTMLSanitiser.encodeInvalidMarkup("

abc

")); // keep approved attributes but strip non-approved attributes assertEquals("

abc

",HTMLSanitiser.encodeInvalidMarkup("

abc

")); // keep id and class attributes assertEquals("

abc

",HTMLSanitiser.encodeInvalidMarkup("

abc

")); // tidy up attributes to make them XHTML compliant assertEquals("List:
  • A
  • B
  • C
",HTMLSanitiser.encodeInvalidMarkup("List:
  • A
  • B
  • C
")); // inserts optional end tags assertEquals("List:<li>A</li><li>B<li>C",HTMLSanitiser.encodeInvalidMarkup("List:
  • A
  • B
  • C")); // missing required
      or
        element assertEquals("List:<ul><li>A</li><li>B<li>C",HTMLSanitiser.encodeInvalidMarkup("List:
        • A
        • B
        • C")); // missing required
        end tag assertEquals("List:
        • A
        • B
        • C
        ",HTMLSanitiser.encodeInvalidMarkup("List:
        • A
        • B
        • C
        ")); // inserts optional end tags assertEquals("List:
        • A
        • <li>B
        • C
        ",HTMLSanitiser.encodeInvalidMarkup("List:
        • A
        • B
        • C
        ")); //
      1. is invalid as it is not directly under
          or
            } @Test public void testStripInvalidMarkup() { assertEquals("abc",HTMLSanitiser.stripInvalidMarkup("abc")); // return text verbatim without markup assertEquals("ab & c",HTMLSanitiser.stripInvalidMarkup("ab & c")); // encode text assertEquals("abc

            def

            geh",HTMLSanitiser.stripInvalidMarkup("abc

            def

            geh")); // keep

            element assertEquals("abc def geh",HTMLSanitiser.stripInvalidMarkup("abc def geh")); // keep element assertEquals("abc def geh",HTMLSanitiser.stripInvalidMarkup("abc def geh")); // keep element assertEquals("abc def geh",HTMLSanitiser.stripInvalidMarkup("abc def geh")); // keep element assertEquals("abc def geh",HTMLSanitiser.stripInvalidMarkup("abc def geh")); // keep href, target and title attributes assertEquals("abc def geh",HTMLSanitiser.stripInvalidMarkup("abc def geh")); // encode parameter values assertEquals("abc def geh",HTMLSanitiser.stripInvalidMarkup("abc def geh")); // element not allowed assertEquals("

            abc

            ",HTMLSanitiser.stripInvalidMarkup("

            abc")); // add optional end tag assertEquals("abc
            def",HTMLSanitiser.stripInvalidMarkup("abc
            def")); // convert to XHTML empty element tag assertEquals("abc",HTMLSanitiser.stripInvalidMarkup("")); // remove potentially dangerous script assertEquals("

            abc

            ",HTMLSanitiser.stripInvalidMarkup("

            abc

            ")); // keep approved attributes but strip non-approved attributes assertEquals("

            abc

            ",HTMLSanitiser.stripInvalidMarkup("

            abc

            ")); // keep id and class attributes assertEquals("

            abc

            ",HTMLSanitiser.stripInvalidMarkup("

            abc

            ")); // tidy up attributes to make them XHTML compliant assertEquals("List:
            • A
            • B
            • C
            ",HTMLSanitiser.stripInvalidMarkup("List:
            • A
            • B
            • C
            ")); // inserts optional end tags assertEquals("List:ABC",HTMLSanitiser.stripInvalidMarkup("List:
          1. A
          2. B
          3. C")); // missing required
              or
                element assertEquals("List:ABC",HTMLSanitiser.stripInvalidMarkup("List:
                • A
                • B
                • C")); // missing required
                end tag assertEquals("List:
                • A
                • B
                • C
                ",HTMLSanitiser.stripInvalidMarkup("List:
                • A
                • B
                • C
                ")); // inserts optional end tags assertEquals("List:
                • A
                • B
                • C
                ",HTMLSanitiser.stripInvalidMarkup("List:
                • A
                • B
                • C
                ")); //
              1. is invalid as it is not directly under
                  or
                    } @Test public void testStripInvalidMarkupWithFormatting() { assertEquals("abc\n def",HTMLSanitiser.stripInvalidMarkup("abc\n def",false)); // no conversion of formatting characters assertEquals("abc
                    def",HTMLSanitiser.stripInvalidMarkup("abc\ndef",true)); // convert LF to
                    assertEquals("abc
                    def",HTMLSanitiser.stripInvalidMarkup("abc\rdef",true)); // convert CR to
                    assertEquals("abc
                    def",HTMLSanitiser.stripInvalidMarkup("abc\r\ndef",true)); // convert CRLF to
                    assertEquals("    abc",HTMLSanitiser.stripInvalidMarkup(" abc",true)); // ensure consecutive spaces are rendered assertEquals("    abc",HTMLSanitiser.stripInvalidMarkup("\tabc",true)); // convert TAB to equivalent of four spaces } }