diff --git a/dojo/finding/views.py b/dojo/finding/views.py index 9a944dccb60..e48554e613d 100644 --- a/dojo/finding/views.py +++ b/dojo/finding/views.py @@ -1145,12 +1145,14 @@ def close_finding(request, fid): note_type_activation = Note_Type.objects.filter(is_active=True) missing_note_types = get_missing_mandatory_notetypes(finding) if len(note_type_activation) else note_type_activation form = CloseFindingForm( + instance=finding, missing_note_types=missing_note_types, can_edit_mitigated_data=finding_helper.can_edit_mitigated_data(request.user), ) if request.method == "POST": form = CloseFindingForm( request.POST, + instance=finding, missing_note_types=missing_note_types, can_edit_mitigated_data=finding_helper.can_edit_mitigated_data(request.user), ) diff --git a/unittests/test_system_settings.py b/unittests/test_system_settings.py index a735ca03f98..d2e25630b0c 100644 --- a/unittests/test_system_settings.py +++ b/unittests/test_system_settings.py @@ -1,4 +1,17 @@ -from dojo.models import System_Settings +from django.test import TestCase, override_settings +from django.urls import reverse +from django.utils.timezone import now + +from dojo.models import ( + Engagement, + Finding, + Product, + Product_Type, + System_Settings, + Test, + Test_Type, + User, +) from .dojo_test_case import DojoTestCase @@ -26,3 +39,50 @@ def test_system_settings_update(self): system_settings.save() system_settings = System_Settings.objects.get(no_cache=True) self.assertEqual(system_settings.enable_jira, True) + + +@override_settings(DD_EDITABLE_MITIGATED_DATA=True) +class CloseFindingViewInstanceTest(TestCase): + def setUp(self): + self.user = User.objects.create_user( + username="tester", + password="pass", # noqa: S106 + is_staff=True, + is_superuser=True, + ) + self.client.force_login(self.user) + self.product_type = Product_Type.objects.create(name="Test Product Type") + self.product = Product.objects.create(name="Test Product", prod_type=self.product_type) + self.engagement = Engagement.objects.create( + name="Test Engagement", + product=self.product, + target_start=now(), + target_end=now(), + ) + self.test_type = Test_Type.objects.create(name="Unit Test Type") + self.test = Test.objects.create( + engagement=self.engagement, + test_type=self.test_type, + title="Test for Finding", + target_start=now(), + target_end=now(), + ) + self.finding = Finding.objects.create( + title="Close Finding Test", + active=True, + test=self.test, + reporter=self.user, + ) + self.url = reverse("close_finding", args=[self.finding.id]) + + def test_get_request_initializes_form_with_finding_instance(self): + response = self.client.get(self.url) + self.assertEqual(response.status_code, 200) + form = response.context["form"] + self.assertIsInstance(form.instance, Finding) + self.assertEqual(form.instance.id, self.finding.id) + + def test_post_request_initializes_form_with_finding_instance(self): + data = {"close_reason": "Mitigated", "notes": "Closing this finding"} + response = self.client.post(self.url, data) + self.assertIn(response.status_code, [200, 302])