# -*- 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
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
'), ('', '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
'])