diff --git a/swh/search/api/server.py b/swh/search/api/server.py --- a/swh/search/api/server.py +++ b/swh/search/api/server.py @@ -14,6 +14,7 @@ from swh.search.metrics import timed from .. import get_search +from ..exc import SearchException from ..interface import SearchInterface logger = logging.getLogger(__name__) @@ -32,6 +33,11 @@ search = None +@app.errorhandler(SearchException) +def search_error_handler(exception): + return error_handler(exception, encode_data, status_code=400) + + @app.errorhandler(Exception) def my_error_handler(exception): return error_handler(exception, encode_data) diff --git a/swh/search/tests/test_elasticsearch.py b/swh/search/tests/test_elasticsearch.py --- a/swh/search/tests/test_elasticsearch.py +++ b/swh/search/tests/test_elasticsearch.py @@ -85,6 +85,13 @@ "http://foobar.3.com", } + def test_search_ql_syntax_error(self): + self.search.origin_update(ORIGINS) + self.search.flush() + + with pytest.raises(SearchQuerySyntaxError): + self.search.origin_search(query='origin : "foobar') + def test_search_ql_datetimes(self): self.search.origin_update(ORIGINS) self.search.flush()