summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJohannes 'josch' Schauer <josch@debian.org>2020-07-14 16:26:13 +0200
committerJohannes 'josch' Schauer <josch@debian.org>2020-07-14 16:26:13 +0200
commit075e7e02683d9db1b303de8e8c17ff7da4c62510 (patch)
tree72d3ed7514879810445f4309e641e29d9c57d02d /tests
parent61b98ca52e8d48a6ad3b4baed5feb4b38ee53804 (diff)
New upstream version 0.17.0+dfsg1
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_plugins.py18
-rw-r--r--tests/unit/test_search.py111
-rw-r--r--tests/unit/test_webapp.py11
3 files changed, 107 insertions, 33 deletions
diff --git a/tests/unit/test_plugins.py b/tests/unit/test_plugins.py
index e497371..10de847 100644
--- a/tests/unit/test_plugins.py
+++ b/tests/unit/test_plugins.py
@@ -7,7 +7,7 @@ from mock import Mock
def get_search_mock(query, **kwargs):
return Mock(search_query=Mock(query=query, **kwargs),
- result_container=Mock(answers=set()))
+ result_container=Mock(answers=dict()))
class PluginStoreTest(SearxTestCase):
@@ -50,11 +50,11 @@ class SelfIPTest(SearxTestCase):
request.headers.getlist.return_value = []
search = get_search_mock(query=b'ip', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('127.0.0.1' in search.result_container.answers)
+ self.assertTrue('127.0.0.1' in search.result_container.answers["ip"]["answer"])
search = get_search_mock(query=b'ip', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('127.0.0.1' in search.result_container.answers)
+ self.assertFalse('ip' in search.result_container.answers)
# User agent test
request = Mock(user_agent='Mock')
@@ -62,24 +62,24 @@ class SelfIPTest(SearxTestCase):
search = get_search_mock(query=b'user-agent', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('Mock' in search.result_container.answers)
+ self.assertTrue('Mock' in search.result_container.answers["user-agent"]["answer"])
search = get_search_mock(query=b'user-agent', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('Mock' in search.result_container.answers)
+ self.assertFalse('user-agent' in search.result_container.answers)
search = get_search_mock(query=b'user-agent', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('Mock' in search.result_container.answers)
+ self.assertTrue('Mock' in search.result_container.answers["user-agent"]["answer"])
search = get_search_mock(query=b'user-agent', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('Mock' in search.result_container.answers)
+ self.assertFalse('user-agent' in search.result_container.answers)
search = get_search_mock(query=b'What is my User-Agent?', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('Mock' in search.result_container.answers)
+ self.assertTrue('Mock' in search.result_container.answers["user-agent"]["answer"])
search = get_search_mock(query=b'What is my User-Agent?', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('Mock' in search.result_container.answers)
+ self.assertFalse('user-agent' in search.result_container.answers)
diff --git a/tests/unit/test_search.py b/tests/unit/test_search.py
index a39786d..ca9fe86 100644
--- a/tests/unit/test_search.py
+++ b/tests/unit/test_search.py
@@ -1,60 +1,133 @@
# -*- coding: utf-8 -*-
from searx.testing import SearxTestCase
+from searx.preferences import Preferences
+from searx.engines import engines
-import searx.preferences
import searx.search
-import searx.engines
+
+
+SAFESEARCH = 0
+PAGENO = 1
+PUBLIC_ENGINE_NAME = 'general dummy'
+PRIVATE_ENGINE_NAME = 'general private offline'
+TEST_ENGINES = [
+ {
+ 'name': PUBLIC_ENGINE_NAME,
+ 'engine': 'dummy',
+ 'categories': 'general',
+ 'shortcut': 'gd',
+ 'timeout': 3.0,
+ 'tokens': [],
+ },
+ {
+ 'name': PRIVATE_ENGINE_NAME,
+ 'engine': 'dummy-offline',
+ 'categories': 'general',
+ 'shortcut': 'do',
+ 'timeout': 3.0,
+ 'offline': True,
+ 'tokens': ['my-token'],
+ },
+]
class SearchTestCase(SearxTestCase):
@classmethod
def setUpClass(cls):
- searx.engines.initialize_engines([{
- 'name': 'general dummy',
- 'engine': 'dummy',
- 'categories': 'general',
- 'shortcut': 'gd',
- 'timeout': 3.0
- }])
+ searx.engines.initialize_engines(TEST_ENGINES)
def test_timeout_simple(self):
searx.search.max_request_timeout = None
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, None)
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, None,
+ preferences=Preferences(['oscar'], ['general'], engines, []))
search = searx.search.Search(search_query)
search.search()
self.assertEquals(search.actual_timeout, 3.0)
def test_timeout_query_above_default_nomax(self):
searx.search.max_request_timeout = None
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 5.0)
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, 5.0,
+ preferences=Preferences(['oscar'], ['general'], engines, []))
search = searx.search.Search(search_query)
search.search()
self.assertEquals(search.actual_timeout, 3.0)
def test_timeout_query_below_default_nomax(self):
searx.search.max_request_timeout = None
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 1.0)
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, 1.0,
+ preferences=Preferences(['oscar'], ['general'], engines, []))
search = searx.search.Search(search_query)
search.search()
self.assertEquals(search.actual_timeout, 1.0)
def test_timeout_query_below_max(self):
searx.search.max_request_timeout = 10.0
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 5.0)
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, 5.0,
+ preferences=Preferences(['oscar'], ['general'], engines, []))
search = searx.search.Search(search_query)
search.search()
self.assertEquals(search.actual_timeout, 5.0)
def test_timeout_query_above_max(self):
searx.search.max_request_timeout = 10.0
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 15.0)
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, 15.0,
+ preferences=Preferences(['oscar'], ['general'], engines, []))
search = searx.search.Search(search_query)
search.search()
self.assertEquals(search.actual_timeout, 10.0)
+
+ def test_query_private_engine_without_token(self):
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PRIVATE_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, 2.0,
+ preferences=Preferences(['oscar'], ['general'], engines, []))
+ search = searx.search.Search(search_query)
+ results = search.search()
+ self.assertEquals(results.results_length(), 0)
+
+ def test_query_private_engine_with_incorrect_token(self):
+ preferences_with_tokens = Preferences(['oscar'], ['general'], engines, [])
+ preferences_with_tokens.parse_dict({'tokens': 'bad-token'})
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PRIVATE_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, 2.0,
+ preferences=preferences_with_tokens)
+ search = searx.search.Search(search_query)
+ results = search.search()
+ self.assertEquals(results.results_length(), 0)
+
+ def test_query_private_engine_with_correct_token(self):
+ preferences_with_tokens = Preferences(['oscar'], ['general'], engines, [])
+ preferences_with_tokens.parse_dict({'tokens': 'my-token'})
+ search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': PRIVATE_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, 2.0,
+ preferences=preferences_with_tokens)
+ search = searx.search.Search(search_query)
+ results = search.search()
+ self.assertEquals(results.results_length(), 1)
+
+ def test_external_bang(self):
+ search_query = searx.query.SearchQuery('yes yes',
+ [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, None,
+ preferences=Preferences(['oscar'], ['general'], engines, [],),
+ external_bang="yt")
+ search = searx.search.Search(search_query)
+ results = search.search()
+ # For checking if the user redirected with the youtube external bang
+ self.assertTrue(results.redirect_url is not None)
+
+ search_query = searx.query.SearchQuery('youtube never gonna give you up',
+ [{'category': 'general', 'name': PUBLIC_ENGINE_NAME}],
+ ['general'], 'en-US', SAFESEARCH, PAGENO, None, None,
+ preferences=Preferences(['oscar'], ['general'], engines, []),)
+
+ search = searx.search.Search(search_query)
+ results = search.search()
+ # This should not redirect
+ self.assertTrue(results.redirect_url is None)
diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py
index 72ace48..8eed607 100644
--- a/tests/unit/test_webapp.py
+++ b/tests/unit/test_webapp.py
@@ -48,7 +48,7 @@ class ViewsTestCase(SearxTestCase):
def search_mock(search_self, *args):
search_self.result_container = Mock(get_ordered_results=lambda: test_results,
- answers=set(),
+ answers=dict(),
corrections=set(),
suggestions=set(),
infoboxes=[],
@@ -56,7 +56,8 @@ class ViewsTestCase(SearxTestCase):
results=test_results,
results_number=lambda: 3,
results_length=lambda: len(test_results),
- get_timings=lambda: timings)
+ get_timings=lambda: timings,
+ redirect_url=None)
self.setattr4test(Search, 'search', search_mock)
@@ -99,9 +100,9 @@ class ViewsTestCase(SearxTestCase):
result = self.app.post('/', data={'q': 'test', 'format': 'csv'})
self.assertEqual(
- b'title,url,content,host,engine,score\r\n'
- b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,\r\n' # noqa
- b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,\r\n', # noqa
+ b'title,url,content,host,engine,score,type\r\n'
+ b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,,result\r\n' # noqa
+ b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,,result\r\n', # noqa
result.data
)