test_inline_bbcode.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. from ..parser import parse
  2. def test_bold_bbcode(request_mock, user, snapshot):
  3. text = "Lorem [b]ipsum[/b]!"
  4. result = parse(text, request_mock, user, minify=False)
  5. snapshot.assert_match(result["parsed_text"])
  6. def test_italics_bbcode(request_mock, user, snapshot):
  7. text = "Lorem [i]ipsum[/i]!"
  8. result = parse(text, request_mock, user, minify=False)
  9. snapshot.assert_match(result["parsed_text"])
  10. def test_underline_bbcode(request_mock, user, snapshot):
  11. text = "Lorem [u]ipsum[/u]!"
  12. result = parse(text, request_mock, user, minify=False)
  13. snapshot.assert_match(result["parsed_text"])
  14. def test_simple_inline_bbcode_is_escaped(request_mock, user, snapshot):
  15. text = 'Lorem [b]ips <script language="application/javascript"> um[/b]!'
  16. result = parse(text, request_mock, user, minify=False)
  17. snapshot.assert_match(result["parsed_text"])
  18. def test_inline_bbcode_can_be_mixed(request_mock, user, snapshot):
  19. text = "Lorem [b][u]ipsum[/u][/b]!"
  20. result = parse(text, request_mock, user, minify=False)
  21. snapshot.assert_match(result["parsed_text"])
  22. def test_inline_bbcode_can_be_mixed_with_markdown(request_mock, user, snapshot):
  23. text = "Lorem [b]**ipsum**[/b]!"
  24. result = parse(text, request_mock, user, minify=False)
  25. snapshot.assert_match(result["parsed_text"])
  26. def test_image_bbcode(request_mock, user, snapshot):
  27. text = "Lorem [img]https://placekitten.com/g/1200/500[/img] ipsum"
  28. result = parse(text, request_mock, user, minify=False)
  29. snapshot.assert_match(result["parsed_text"])
  30. def test_image_bbcode_is_escaped(request_mock, user, snapshot):
  31. text = 'Lorem [img]<script language="application/javascript">[/img] ipsum'
  32. result = parse(text, request_mock, user, minify=False)
  33. snapshot.assert_match(result["parsed_text"])
  34. def test_image_bbcode_is_case_insensitive(request_mock, user, snapshot):
  35. text = "Lorem [iMg]https://placekitten.com/g/1200/500[/ImG] ipsum"
  36. result = parse(text, request_mock, user, minify=False)
  37. snapshot.assert_match(result["parsed_text"])
  38. def test_url_bbcode(request_mock, user, snapshot):
  39. text = "Lorem [url]https://placekitten.com/g/1200/500[/url] ipsum"
  40. result = parse(text, request_mock, user, minify=False)
  41. snapshot.assert_match(result["parsed_text"])
  42. def test_url_bbcode_includes_nofollow_and_noopener(request_mock, user, snapshot):
  43. text = "Lorem [url]https://placekitten.com/g/1200/500[/url] ipsum"
  44. result = parse(text, request_mock, user, minify=False)
  45. assert 'rel="nofollow noopener"' in result["parsed_text"]
  46. def test_url_bbcode_is_escaped(request_mock, user, snapshot):
  47. text = 'Lorem [url]<script language="application/javascript">[/url] ipsum'
  48. result = parse(text, request_mock, user, minify=False)
  49. snapshot.assert_match(result["parsed_text"])
  50. def test_url_bbcode_with_link_text(request_mock, user, snapshot):
  51. text = "Lorem [url=https://placekitten.com/g/1200/500]dolor[/url] ipsum"
  52. result = parse(text, request_mock, user, minify=False)
  53. snapshot.assert_match(result["parsed_text"])
  54. def test_url_bbcode_with_long_link_text(request_mock, user, snapshot):
  55. text = "Lorem [url=https://placekitten.com/g/1200/500]dolor met[/url] ipsum"
  56. result = parse(text, request_mock, user, minify=False)
  57. snapshot.assert_match(result["parsed_text"])
  58. def test_url_bbcode_with_quotes_and_link_text(request_mock, user, snapshot):
  59. text = 'Lorem [url="https://placekitten.com/g/1200/500"]dolor[/url] ipsum'
  60. result = parse(text, request_mock, user, minify=False)
  61. snapshot.assert_match(result["parsed_text"])
  62. def test_url_bbcode_with_quotes_and_long_link_text(request_mock, user, snapshot):
  63. text = 'Lorem [url="https://placekitten.com/g/1200/500"]dolor met[/url] ipsum'
  64. result = parse(text, request_mock, user, minify=False)
  65. snapshot.assert_match(result["parsed_text"])
  66. def test_url_bbcode_link_text_is_escaped(request_mock, user, snapshot):
  67. text = (
  68. 'Lorem [url=<script language="application/javascript">]'
  69. '<script language="application/javascript">'
  70. "[/url] ipsum"
  71. )
  72. result = parse(text, request_mock, user, minify=False)
  73. snapshot.assert_match(result["parsed_text"])