diff --git a/pagure/api/project.py b/pagure/api/project.py index 643302c..152315e 100644 --- a/pagure/api/project.py +++ b/pagure/api/project.py @@ -564,9 +564,23 @@ def api_projects(): private=private, namespace=namespace, owner=owner, limit=query_limit, start=query_start) + # prepare the output json + jsonout = { + 'total_projects': project_count, + 'projects': projects, + 'args': { + 'tags': tags, + 'username': username, + 'fork': fork, + 'pattern': pattern, + 'namespace': namespace, + 'owner': owner, + 'short': short, + } + } if not projects: - raise pagure.exceptions.APIError( - 404, error_code=APIERROR.ENOPROJECTS) + jsonout['projects'] = [] + return flask.jsonify(jsonout) if not short: projects = [p.to_json(api=True, public=True) for p in projects] @@ -582,19 +596,7 @@ def api_projects(): for p in projects ] - jsonout = { - 'total_projects': project_count, - 'projects': projects, - 'args': { - 'tags': tags, - 'username': username, - 'fork': fork, - 'pattern': pattern, - 'namespace': namespace, - 'owner': owner, - 'short': short, - } - } + jsonout['projects'] = projects if pagination_metadata: jsonout['args']['page'] = page jsonout['args']['per_page'] = per_page diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index 9367556..8055ea7 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -360,11 +360,23 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Check the API output = self.app.get('/api/0/projects?tags=inf') - self.assertEqual(output.status_code, 404) + self.assertEqual(output.status_code, 200) data = json.loads(output.data) self.assertDictEqual( data, - {'error_code': 'ENOPROJECTS', 'error': 'No projects found'} + { + "total_projects": 0, + "projects": [], + "args": { + "fork": None, + "namespace": None, + "owner": None, + "pattern": None, + "short": False, + "tags": ["inf"], + "username": None + } + } ) output = self.app.get('/api/0/projects?tags=infra') self.assertEqual(output.status_code, 200) @@ -1287,7 +1299,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): tests.create_projects(self.session) output = self.app.get('/api/0/projects?page=99999') - self.assertEqual(output.status_code, 404) + self.assertEqual(output.status_code, 200) def test_api_modify_project_main_admin(self): """ Test the api_modify_project method of the flask api when the