| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
							- # -*- coding: utf-8 -*-
 
- """Test utils/standalone_searx.py"""
 
- import datetime
 
- import importlib.util
 
- import io
 
- import sys
 
- from mock import Mock, patch
 
- from nose2.tools import params
 
- from searx.search import SearchQuery, EngineRef
 
- from searx.engines import initialize_engines
 
- from searx.testing import SearxTestCase
 
- def get_standalone_searx_module():
 
-     """Get standalone_searx module."""
 
-     module_name = 'utils.standalone_searx'
 
-     filename = 'utils/standalone_searx.py'
 
-     spec = importlib.util.spec_from_file_location(module_name, filename)
 
-     sas = importlib.util.module_from_spec(spec)
 
-     spec.loader.exec_module(sas)
 
-     return sas
 
- class StandaloneSearx(SearxTestCase):
 
-     """Unit test for standalone_searx."""
 
-     @classmethod
 
-     def setUpClass(cls):
 
-         engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1'}]
 
-         initialize_engines(engine_list)
 
-     def test_parse_argument_no_args(self):
 
-         """Test parse argument without args."""
 
-         sas = get_standalone_searx_module()
 
-         with patch.object(sys, 'argv', ['standalone_searx']), \
 
-                 self.assertRaises(SystemExit):
 
-             sys.stderr = io.StringIO()
 
-             sas.parse_argument()
 
-             sys.stdout = sys.__stderr__
 
-     def test_parse_argument_basic_args(self):
 
-         """Test parse argument with basic args."""
 
-         sas = get_standalone_searx_module()
 
-         query = 'red box'
 
-         exp_dict = {
 
-             'query': query, 'category': 'general', 'lang': 'all', 'pageno': 1,
 
-             'safesearch': '0', 'timerange': None}
 
-         args = ['standalone_searx', query]
 
-         with patch.object(sys, 'argv', args):
 
-             res = sas.parse_argument()
 
-             self.assertEqual(exp_dict, vars(res))
 
-         res2 = sas.parse_argument(args[1:])
 
-         self.assertEqual(exp_dict, vars(res2))
 
-     def test_to_dict(self):
 
-         """test to_dict."""
 
-         sas = get_standalone_searx_module()
 
-         self.assertEqual(
 
-             sas.to_dict(
 
-                 sas.get_search_query(sas.parse_argument(['red box']))),
 
-             {
 
-                 'search': {
 
-                     'q': 'red box', 'pageno': 1, 'lang': 'all',
 
-                     'safesearch': 0, 'timerange': None
 
-                 },
 
-                 'results': [], 'infoboxes': [], 'suggestions': [],
 
-                 'answers': [], 'paging': False, 'results_number': 0
 
-             }
 
-         )
 
-     def test_to_dict_with_mock(self):
 
-         """test to dict."""
 
-         sas = get_standalone_searx_module()
 
-         with patch.object(sas.searx.search, 'Search') as mock_s:
 
-             m_search = mock_s().search()
 
-             m_sq = Mock()
 
-             self.assertEqual(
 
-                 sas.to_dict(m_sq),
 
-                 {
 
-                     'answers': [],
 
-                     'infoboxes': m_search.infoboxes,
 
-                     'paging': m_search.paging,
 
-                     'results': m_search.get_ordered_results(),
 
-                     'results_number': m_search.results_number(),
 
-                     'search': {
 
-                         'lang': m_sq.lang,
 
-                         'pageno': m_sq.pageno,
 
-                         'q': m_sq.query,
 
-                         'safesearch': m_sq.safesearch,
 
-                         'timerange': m_sq.time_range,
 
-                     },
 
-                     'suggestions': []
 
-                 }
 
-             )
 
-     def test_get_search_query(self):
 
-         """test get_search_query."""
 
-         sas = get_standalone_searx_module()
 
-         args = sas.parse_argument(['rain', ])
 
-         search_q = sas.get_search_query(args)
 
-         self.assertTrue(search_q)
 
-         self.assertEqual(search_q, SearchQuery('rain', [EngineRef('engine1', 'general', False)],
 
-                          ['general'], 'all', 0, 1, None, None, None))
 
-     def test_no_parsed_url(self):
 
-         """test no_parsed_url func"""
 
-         sas = get_standalone_searx_module()
 
-         self.assertEqual(
 
-             sas.no_parsed_url([{'parsed_url': 'http://example.com'}]),
 
-             [{}]
 
-         )
 
-     @params(
 
-         (datetime.datetime(2020, 1, 1), '2020-01-01T00:00:00'),
 
-         ('a'.encode('utf8'), 'a'),
 
-         (set([1]), [1])
 
-     )
 
-     def test_json_serial(self, arg, exp_res):
 
-         """test json_serial func"""
 
-         sas = get_standalone_searx_module()
 
-         self.assertEqual(sas.json_serial(arg), exp_res)
 
-     def test_json_serial_error(self):
 
-         """test error on json_serial."""
 
-         sas = get_standalone_searx_module()
 
-         with self.assertRaises(TypeError):
 
-             sas.json_serial('a')
 
 
  |