test_utils.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import mock
  2. from searx.testing import SearxTestCase
  3. from searx import utils
  4. class TestUtils(SearxTestCase):
  5. def test_gen_useragent(self):
  6. self.assertIsInstance(utils.gen_useragent(), str)
  7. self.assertIsNotNone(utils.gen_useragent())
  8. self.assertTrue(utils.gen_useragent().startswith('Mozilla'))
  9. def test_searx_useragent(self):
  10. self.assertIsInstance(utils.searx_useragent(), str)
  11. self.assertIsNotNone(utils.searx_useragent())
  12. self.assertTrue(utils.searx_useragent().startswith('searx'))
  13. def test_highlight_content(self):
  14. self.assertEqual(utils.highlight_content(0, None), None)
  15. self.assertEqual(utils.highlight_content(None, None), None)
  16. self.assertEqual(utils.highlight_content('', None), None)
  17. self.assertEqual(utils.highlight_content(False, None), None)
  18. contents = [
  19. '<html></html>'
  20. 'not<'
  21. ]
  22. for content in contents:
  23. self.assertEqual(utils.highlight_content(content, None), content)
  24. content = 'a'
  25. query = 'test'
  26. self.assertEqual(utils.highlight_content(content, query), content)
  27. query = 'a test'
  28. self.assertEqual(utils.highlight_content(content, query), content)
  29. def test_html_to_text(self):
  30. html = """
  31. <a href="/testlink" class="link_access_account">
  32. <span class="toto">
  33. <span>
  34. <img src="test.jpg" />
  35. </span>
  36. </span>
  37. <span class="titi">
  38. Test text
  39. </span>
  40. </a>
  41. """
  42. self.assertIsInstance(utils.html_to_text(html), unicode)
  43. self.assertIsNotNone(utils.html_to_text(html))
  44. self.assertEqual(utils.html_to_text(html), "Test text")
  45. class TestHTMLTextExtractor(SearxTestCase):
  46. def setUp(self):
  47. self.html_text_extractor = utils.HTMLTextExtractor()
  48. def test__init__(self):
  49. self.assertEqual(self.html_text_extractor.result, [])
  50. def test_handle_charref(self):
  51. self.html_text_extractor.handle_charref('xF')
  52. self.assertIn(u'\x0f', self.html_text_extractor.result)
  53. self.html_text_extractor.handle_charref('XF')
  54. self.assertIn(u'\x0f', self.html_text_extractor.result)
  55. self.html_text_extractor.handle_charref('97')
  56. self.assertIn(u'a', self.html_text_extractor.result)
  57. def test_handle_entityref(self):
  58. entity = 'test'
  59. self.html_text_extractor.handle_entityref(entity)
  60. self.assertIn(entity, self.html_text_extractor.result)
  61. class TestUnicodeWriter(SearxTestCase):
  62. def setUp(self):
  63. self.unicode_writer = utils.UnicodeWriter(mock.MagicMock())
  64. def test_write_row(self):
  65. row = [1, 2, 3]
  66. self.assertEqual(self.unicode_writer.writerow(row), None)
  67. def test_write_rows(self):
  68. self.unicode_writer.writerow = mock.MagicMock()
  69. rows = [1, 2, 3]
  70. self.unicode_writer.writerows(rows)
  71. self.assertEqual(self.unicode_writer.writerow.call_count, len(rows))