From e02936a44a4f4e0fd2c9ec3074a6512f40f7789e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 6 Jul 2020 11:15:20 -0400 Subject: [PATCH] Fix reports API test case --- netbox/extras/api/views.py | 4 ++-- netbox/extras/tests/test_api.py | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 679c4e96d..878bf009a 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -217,7 +217,7 @@ class ReportViewSet(ViewSet): """ # Check that the user has permission to run reports. - if not request.user.has_perm('extras.add_reportresult'): + if not request.user.has_perm('extras.run_script'): raise PermissionDenied("This user does not have permission to run reports.") # Retrieve and run the Report. This will create a new JobResult. @@ -231,7 +231,7 @@ class ReportViewSet(ViewSet): ) report.result = job_result - serializer = serializers.ReportDetailSerializer(report) + serializer = serializers.ReportDetailSerializer(report, context={'request': request}) return Response(serializer.data) diff --git a/netbox/extras/tests/test_api.py b/netbox/extras/tests/test_api.py index cf615d914..f6b7811cd 100644 --- a/netbox/extras/tests/test_api.py +++ b/netbox/extras/tests/test_api.py @@ -6,7 +6,7 @@ from django.utils import timezone from rest_framework import status from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Rack, RackGroup, RackRole, Site -from extras.api.views import ScriptViewSet +from extras.api.views import ReportViewSet, ScriptViewSet from extras.models import ConfigContext, Graph, ExportTemplate, Tag from extras.reports import Report from extras.scripts import BooleanVar, IntegerVar, Script, StringVar @@ -211,28 +211,29 @@ class ConfigContextTest(APIViewTestCases.APIViewTestCase): class ReportTest(APITestCase): class TestReport(Report): - pass # The report is not actually run, we are testing that the view enqueues the job + + def test_foo(self): + self.log_success(None, "Report completed") def get_test_report(self, *args): - return self.TestReport + return self.TestReport() def setUp(self): - super().setUp() # Monkey-patch the API viewset's _get_script method to return our test script above - ReportViewSet._get_report = self.get_test_report + ReportViewSet._retrieve_report = self.get_test_report def test_get_report(self): - url = reverse('extras-api:report-detail', kwargs={'pk': None}) response = self.client.get(url, **self.header) self.assertEqual(response.data['name'], self.TestReport.__name__) def test_run_report(self): + self.add_permissions('extras.run_script') - url = reverse('extras-api:report-detail', kwargs={'pk': None}) + url = reverse('extras-api:report-run', kwargs={'pk': None}) response = self.client.post(url, {}, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_200_OK)