From 5731b88499a3dab4ac6bf68f0b5287946cf63215 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 14 Aug 2023 15:39:20 +1000 Subject: [PATCH] Raise error if no search term provided for search endpoint (#5441) - Also adjust unit testing --- InvenTree/InvenTree/api.py | 5 +++++ InvenTree/InvenTree/test_api.py | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/InvenTree/InvenTree/api.py b/InvenTree/InvenTree/api.py index 6301656701..c0b10d673e 100644 --- a/InvenTree/InvenTree/api.py +++ b/InvenTree/InvenTree/api.py @@ -287,6 +287,11 @@ class APISearchView(APIView): 'offset': 0, } + if 'search' not in data: + raise ValidationError({ + 'search': 'Search term must be provided', + }) + for key, cls in self.get_result_types().items(): # Only return results which are specifically requested if key in data: diff --git a/InvenTree/InvenTree/test_api.py b/InvenTree/InvenTree/test_api.py index 81593a9e73..162b1bc8b7 100644 --- a/InvenTree/InvenTree/test_api.py +++ b/InvenTree/InvenTree/test_api.py @@ -316,6 +316,19 @@ class SearchTests(InvenTreeAPITestCase): 'sales_order', ] + def test_empty(self): + """Test empty request""" + + data = [ + '', + None, + {}, + ] + + for d in data: + response = self.post(reverse('api-search'), d, expected_code=400) + self.assertIn('Search term must be provided', str(response.data)) + def test_results(self): """Test individual result types"""