Files
searxng/tests/unit/test_standalone_searx.py
T

114 lines
3.7 KiB
Python
Raw Normal View History

2020-11-04 20:38:54 +08:00
# -*- coding: utf-8 -*-
"""Test utils/standalone_searx.py"""
import datetime
2020-11-05 07:15:29 +08:00
import io
2020-11-04 20:38:54 +08:00
import sys
from mock import Mock, patch
from nose2.tools import params
from searx.search import SearchQuery, EngineRef, initialize
2021-10-02 17:30:39 +02:00
from searxng_extra import standalone_searx as sas
from tests import SearxTestCase
2020-11-04 20:38:54 +08:00
class StandaloneSearx(SearxTestCase):
"""Unit test for standalone_searx."""
2020-11-17 10:39:44 +01:00
@classmethod
def setUpClass(cls):
2020-11-16 15:01:34 +01:00
engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1'}]
2020-11-17 10:39:44 +01:00
initialize(engine_list)
2020-11-17 10:39:44 +01:00
2020-11-04 20:38:54 +08:00
def test_parse_argument_no_args(self):
"""Test parse argument without args."""
with patch.object(sys, 'argv', ['standalone_searx']), self.assertRaises(SystemExit):
2020-11-05 07:15:29 +08:00
sys.stderr = io.StringIO()
2020-11-04 20:38:54 +08:00
sas.parse_argument()
2020-11-05 07:15:29 +08:00
sys.stdout = sys.__stderr__
2020-11-04 20:38:54 +08:00
def test_parse_argument_basic_args(self):
"""Test parse argument with basic args."""
query = 'red box'
exp_dict = {
'query': query,
'category': 'general',
'lang': 'all',
'pageno': 1,
'safesearch': '0',
'timerange': None,
}
2020-11-04 20:38:54 +08:00
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."""
self.assertEqual(
sas.to_dict(sas.get_search_query(sas.parse_argument(['red box']))),
2020-11-04 20:38:54 +08:00
{
'search': {'q': 'red box', 'pageno': 1, 'lang': 'all', 'safesearch': 0, 'timerange': None},
'results': [],
'infoboxes': [],
'suggestions': [],
'answers': [],
'paging': False,
'results_number': 0,
},
2020-11-04 20:38:54 +08:00
)
def test_to_dict_with_mock(self):
"""test to dict."""
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': [],
},
2020-11-04 20:38:54 +08:00
)
def test_get_search_query(self):
"""test get_search_query."""
args = sas.parse_argument(
[
'rain',
]
)
2020-11-04 20:38:54 +08:00
search_q = sas.get_search_query(args)
self.assertTrue(search_q)
self.assertEqual(
search_q, SearchQuery('rain', [EngineRef('engine1', 'general')], 'all', 0, 1, None, None, None)
)
2020-11-04 20:38:54 +08:00
def test_no_parsed_url(self):
"""test no_parsed_url func"""
self.assertEqual(sas.no_parsed_url([{'parsed_url': 'http://example.com'}]), [{}])
2020-11-04 20:38:54 +08:00
@params((datetime.datetime(2020, 1, 1), '2020-01-01T00:00:00'), ('a'.encode('utf8'), 'a'), (set([1]), [1]))
2020-11-04 20:38:54 +08:00
def test_json_serial(self, arg, exp_res):
"""test json_serial func"""
self.assertEqual(sas.json_serial(arg), exp_res)
def test_json_serial_error(self):
"""test error on json_serial."""
with self.assertRaises(TypeError):
sas.json_serial('a')