Skip to content

Commit 3ce29cb

Browse files
🐛 fix DD_EDITABLE_MITIGATED_DATA close finding internal server error #13699 (#13701)
1 parent ed83097 commit 3ce29cb

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

dojo/finding/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,12 +1145,14 @@ def close_finding(request, fid):
11451145
note_type_activation = Note_Type.objects.filter(is_active=True)
11461146
missing_note_types = get_missing_mandatory_notetypes(finding) if len(note_type_activation) else note_type_activation
11471147
form = CloseFindingForm(
1148+
instance=finding,
11481149
missing_note_types=missing_note_types,
11491150
can_edit_mitigated_data=finding_helper.can_edit_mitigated_data(request.user),
11501151
)
11511152
if request.method == "POST":
11521153
form = CloseFindingForm(
11531154
request.POST,
1155+
instance=finding,
11541156
missing_note_types=missing_note_types,
11551157
can_edit_mitigated_data=finding_helper.can_edit_mitigated_data(request.user),
11561158
)

unittests/test_system_settings.py

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
1-
from dojo.models import System_Settings
1+
from django.test import TestCase, override_settings
2+
from django.urls import reverse
3+
from django.utils.timezone import now
4+
5+
from dojo.models import (
6+
Engagement,
7+
Finding,
8+
Product,
9+
Product_Type,
10+
System_Settings,
11+
Test,
12+
Test_Type,
13+
User,
14+
)
215

316
from .dojo_test_case import DojoTestCase
417

@@ -26,3 +39,50 @@ def test_system_settings_update(self):
2639
system_settings.save()
2740
system_settings = System_Settings.objects.get(no_cache=True)
2841
self.assertEqual(system_settings.enable_jira, True)
42+
43+
44+
@override_settings(DD_EDITABLE_MITIGATED_DATA=True)
45+
class CloseFindingViewInstanceTest(TestCase):
46+
def setUp(self):
47+
self.user = User.objects.create_user(
48+
username="tester",
49+
password="pass", # noqa: S106
50+
is_staff=True,
51+
is_superuser=True,
52+
)
53+
self.client.force_login(self.user)
54+
self.product_type = Product_Type.objects.create(name="Test Product Type")
55+
self.product = Product.objects.create(name="Test Product", prod_type=self.product_type)
56+
self.engagement = Engagement.objects.create(
57+
name="Test Engagement",
58+
product=self.product,
59+
target_start=now(),
60+
target_end=now(),
61+
)
62+
self.test_type = Test_Type.objects.create(name="Unit Test Type")
63+
self.test = Test.objects.create(
64+
engagement=self.engagement,
65+
test_type=self.test_type,
66+
title="Test for Finding",
67+
target_start=now(),
68+
target_end=now(),
69+
)
70+
self.finding = Finding.objects.create(
71+
title="Close Finding Test",
72+
active=True,
73+
test=self.test,
74+
reporter=self.user,
75+
)
76+
self.url = reverse("close_finding", args=[self.finding.id])
77+
78+
def test_get_request_initializes_form_with_finding_instance(self):
79+
response = self.client.get(self.url)
80+
self.assertEqual(response.status_code, 200)
81+
form = response.context["form"]
82+
self.assertIsInstance(form.instance, Finding)
83+
self.assertEqual(form.instance.id, self.finding.id)
84+
85+
def test_post_request_initializes_form_with_finding_instance(self):
86+
data = {"close_reason": "Mitigated", "notes": "Closing this finding"}
87+
response = self.client.post(self.url, data)
88+
self.assertIn(response.status_code, [200, 302])

0 commit comments

Comments
 (0)