# -*- encoding: utf-8 -*- import unittest import textwrap from isso import config from isso.utils import html class TestHTML(unittest.TestCase): def test_markdown(self): convert = html.Markdown(extensions=()) examples = [ ("*Ohai!*", "

Ohai!

"), ("Hi", "

Hi

"), ("http://example.org/", '

http://example.org/

')] for (input, expected) in examples: self.assertEqual(convert(input), expected) def test_markdown_extensions(self): convert = html.Markdown(extensions=("strikethrough", "superscript")) examples = [ ("~~strike~~ through", "

strike through

"), ("sup^(script)", "

supscript

")] for (input, expected) in examples: self.assertEqual(convert(input), expected) def test_github_flavoured_markdown(self): convert = html.Markdown(extensions=("fenced-code", )) # without lang _in = textwrap.dedent("""\ Hello, World ``` #!/usr/bin/env python print("Hello, World")""") _out = textwrap.dedent("""\

Hello, World

#!/usr/bin/env python
            print("Hello, World")
            
""") self.assertEqual(convert(_in), _out) # w/ lang _in = textwrap.dedent("""\ Hello, World ```python #!/usr/bin/env python print("Hello, World")""") _out = textwrap.dedent("""\

Hello, World

#!/usr/bin/env python
            print("Hello, World")
            
""") def test_sanitizer(self): sanitizer = html.Sanitizer(elements=[], attributes=[]) examples = [ ('Look: ', 'Look: '), ('Ha', ['Ha', 'Ha']), ('Ha', 'Ha'), ('

Test

', '

Test

'), ('', 'alert("Onoe")')] for (input, expected) in examples: if isinstance(expected, list): self.assertIn(sanitizer.sanitize(input), expected) else: self.assertEqual(sanitizer.sanitize(input), expected) def test_sanitizer_extensions(self): sanitizer = html.Sanitizer(elements=["img"], attributes=["src"]) examples = [ ('', ''), ('', '')] for (input, expected) in examples: self.assertEqual(sanitizer.sanitize(input), expected) def test_render(self): conf = config.new({ "markup": { "options": "autolink", "flags": "", "allowed-elements": "", "allowed-attributes": "" } }) renderer = html.Markup(conf.section("markup")).render self.assertIn(renderer("http://example.org/ and sms:+1234567890"), ['

http://example.org/ and sms:+1234567890

', '

http://example.org/ and sms:+1234567890

'])