test_search.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # -*- coding: utf-8 -*-
  2. from searx.testing import SearxTestCase
  3. from searx.search import SearchQuery, EngineRef
  4. import searx.search
  5. SAFESEARCH = 0
  6. PAGENO = 1
  7. PUBLIC_ENGINE_NAME = 'general dummy'
  8. TEST_ENGINES = [
  9. {
  10. 'name': PUBLIC_ENGINE_NAME,
  11. 'engine': 'dummy',
  12. 'categories': 'general',
  13. 'shortcut': 'gd',
  14. 'timeout': 3.0,
  15. 'tokens': [],
  16. },
  17. ]
  18. class SearchTestCase(SearxTestCase):
  19. @classmethod
  20. def setUpClass(cls):
  21. searx.engines.initialize_engines(TEST_ENGINES)
  22. def test_timeout_simple(self):
  23. searx.search.max_request_timeout = None
  24. search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
  25. ['general'], 'en-US', SAFESEARCH, PAGENO, None, None)
  26. search = searx.search.Search(search_query)
  27. search.search()
  28. self.assertEqual(search.actual_timeout, 3.0)
  29. def test_timeout_query_above_default_nomax(self):
  30. searx.search.max_request_timeout = None
  31. search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
  32. ['general'], 'en-US', SAFESEARCH, PAGENO, None, 5.0)
  33. search = searx.search.Search(search_query)
  34. search.search()
  35. self.assertEqual(search.actual_timeout, 3.0)
  36. def test_timeout_query_below_default_nomax(self):
  37. searx.search.max_request_timeout = None
  38. search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
  39. ['general'], 'en-US', SAFESEARCH, PAGENO, None, 1.0)
  40. search = searx.search.Search(search_query)
  41. search.search()
  42. self.assertEqual(search.actual_timeout, 1.0)
  43. def test_timeout_query_below_max(self):
  44. searx.search.max_request_timeout = 10.0
  45. search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
  46. ['general'], 'en-US', SAFESEARCH, PAGENO, None, 5.0)
  47. search = searx.search.Search(search_query)
  48. search.search()
  49. self.assertEqual(search.actual_timeout, 5.0)
  50. def test_timeout_query_above_max(self):
  51. searx.search.max_request_timeout = 10.0
  52. search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
  53. ['general'], 'en-US', SAFESEARCH, PAGENO, None, 15.0)
  54. search = searx.search.Search(search_query)
  55. search.search()
  56. self.assertEqual(search.actual_timeout, 10.0)
  57. def test_external_bang(self):
  58. search_query = SearchQuery('yes yes',
  59. [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
  60. ['general'], 'en-US', SAFESEARCH, PAGENO, None, None,
  61. external_bang="yt")
  62. search = searx.search.Search(search_query)
  63. results = search.search()
  64. # For checking if the user redirected with the youtube external bang
  65. self.assertTrue(results.redirect_url is not None)
  66. search_query = SearchQuery('youtube never gonna give you up',
  67. [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
  68. ['general'], 'en-US', SAFESEARCH, PAGENO, None, None)
  69. search = searx.search.Search(search_query)
  70. results = search.search()
  71. # This should not redirect
  72. self.assertTrue(results.redirect_url is None)