def test_parsable_text_once(self):
        def fake_parser(input, show_everything):
            fake_parser.count += 1
            return ""

        fake_parser.count = 0
        orig_rst = ParsableText.rst
        ParsableText.rst = fake_parser

        pt = ParsableText("""``test``""", "rst")
        pt.rst = fake_parser

        pt.parse()
        str(pt)
        unicode(pt)

        ParsableText.rst = orig_rst

        assert fake_parser.count == 1
    def test_parsable_text_once(self):
        def fake_parser(input, show_everything):
            fake_parser.count += 1
            return ""

        fake_parser.count = 0
        orig_rst = ParsableText.rst
        ParsableText.rst = fake_parser

        pt = ParsableText("""``test``""", "rst")
        pt.rst = fake_parser

        pt.parse()
        str(pt)
        unicode(pt)

        ParsableText.rst = orig_rst

        assert fake_parser.count == 1
    def test_failing_parser_injection(self):
        def fake_parser(input):
            raise Exception()

        fake_parser.count = 0
        orig_rst = ParsableText.rst
        ParsableText.rst = fake_parser

        pt = ParsableText("""<script type="text/javascript">alert('Eh, XSS injection!');</script>""")
        rendered = pt.parse()

        ParsableText.rst = orig_rst

        assert "&lt;script " in rendered
    def test_failing_parser_injection(self):
        def fake_parser(input):
            raise Exception()

        fake_parser.count = 0
        orig_rst = ParsableText.rst
        ParsableText.rst = fake_parser

        pt = ParsableText(
            """<script type="text/javascript">alert('Eh, XSS injection!');</script>"""
        )
        rendered = pt.parse()

        ParsableText.rst = orig_rst

        assert "&lt;script " in rendered