""" make sure only valid html gets to the app """ from django.test import TestCase from bookwyrm.sanitize_html import InputHtmlParser class Sanitizer(TestCase): """sanitizer tests""" def test_no_html(self): """just text""" input_text = "no html " parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() self.assertEqual(input_text, output) def test_valid_html(self): """leave the html untouched""" input_text = "<b>yes </b> <i>html</i>" parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() self.assertEqual(input_text, output) def test_valid_html_attrs(self): """and don't remove attributes""" input_text = '<a href="fish.com">yes </a> <i>html</i>' parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() self.assertEqual(input_text, output) def test_invalid_html(self): """remove all html when the html is malformed""" input_text = "<b>yes <i>html</i>" parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() self.assertEqual("yes html", output) input_text = "yes <i></b>html </i>" parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() self.assertEqual("yes html ", output) def test_disallowed_html(self): """remove disallowed html but keep allowed html""" input_text = "<div> yes <i>html</i></div>" parser = InputHtmlParser() parser.feed(input_text) output = parser.get_output() self.assertEqual(" yes <i>html</i>", output)