diff options
| -rw-r--r-- | docs/admin/installation-searx.rst | 2 | ||||
| -rw-r--r-- | docs/dev/makefile.rst | 2 | ||||
| -rwxr-xr-x | searx/webapp.py | 8 | ||||
| -rw-r--r-- | tests/unit/test_webapp.py | 25 |
4 files changed, 31 insertions, 6 deletions
diff --git a/docs/admin/installation-searx.rst b/docs/admin/installation-searx.rst index f1d486021..a368bfe8c 100644 --- a/docs/admin/installation-searx.rst +++ b/docs/admin/installation-searx.rst @@ -52,7 +52,7 @@ In the same shell create *virtualenv*: :end-before: END create virtualenv To install searx's dependencies, exit the searx *bash* session you opened above -and restart a new. Before install, first check if your *virualenv* was sourced +and restart a new. Before install, first check if your *virtualenv* was sourced from the login (*~/.profile*): .. kernel-include:: $DOCS_BUILD/includes/searx.rst diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst index 62cd0a984..699729a28 100644 --- a/docs/dev/makefile.rst +++ b/docs/dev/makefile.rst @@ -68,7 +68,7 @@ Python environment ``source ./local/py3/bin/activate`` -With Makefile we do no longer need to build up the virualenv manually (as +With Makefile we do no longer need to build up the virtualenv manually (as described in the :ref:`devquickstart` guide). Jump into your git working tree and release a ``make pyenv``: diff --git a/searx/webapp.py b/searx/webapp.py index d68ae349a..9aa80906a 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -547,10 +547,12 @@ def index(): # redirect to search if there's a query in the request if request.form.get('q'): - return redirect(url_for('search'), 308) + query = ('?' + request.query_string.decode()) if request.query_string else '' + return redirect(url_for('search') + query, 308) return render( 'index.html', + selected_categories=get_selected_categories(request.preferences, request.form), ) @@ -566,8 +568,8 @@ def search(): if output_format not in ['html', 'csv', 'json', 'rss']: output_format = 'html' - # check if there is query - if request.form.get('q') is None: + # check if there is query (not None and not an empty string) + if not request.form.get('q'): if output_format == 'html': return render( 'index.html', diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py index 08a266931..75a968ad8 100644 --- a/tests/unit/test_webapp.py +++ b/tests/unit/test_webapp.py @@ -75,9 +75,32 @@ class ViewsTestCase(SearxTestCase): self.assertEqual(result.status_code, 200) self.assertIn(b'<div class="title"><h1>searx</h1></div>', result.data) - def test_index_html(self): + def test_index_html_post(self): result = self.app.post('/', data={'q': 'test'}) self.assertEqual(result.status_code, 308) + self.assertEqual(result.location, 'http://localhost/search') + + def test_index_html_get(self): + result = self.app.post('/?q=test') + self.assertEqual(result.status_code, 308) + self.assertEqual(result.location, 'http://localhost/search?q=test') + + def test_search_empty_html(self): + result = self.app.post('/search', data={'q': ''}) + self.assertEqual(result.status_code, 200) + self.assertIn(b'<div class="title"><h1>searx</h1></div>', result.data) + + def test_search_empty_json(self): + result = self.app.post('/search', data={'q': '', 'format': 'json'}) + self.assertEqual(result.status_code, 400) + + def test_search_empty_csv(self): + result = self.app.post('/search', data={'q': '', 'format': 'csv'}) + self.assertEqual(result.status_code, 400) + + def test_search_empty_rss(self): + result = self.app.post('/search', data={'q': '', 'format': 'rss'}) + self.assertEqual(result.status_code, 400) def test_search_html(self): result = self.app.post('/search', data={'q': 'test'}) |