|
9 | 9 | from django.test import TestCase |
10 | 10 |
|
11 | 11 | from dje.models import Dataspace |
| 12 | +from vulnerabilities.triage.forms import AnalysisPresetForm |
12 | 13 | from vulnerabilities.triage.forms import TriageRulesetForm |
| 14 | +from vulnerabilities.triage.models import AnalysisPreset |
13 | 15 | from vulnerabilities.triage.models import TriageRuleset |
14 | 16 |
|
15 | 17 |
|
| 18 | +class AnalysisPresetFormTestCase(TestCase): |
| 19 | + def setUp(self): |
| 20 | + self.dataspace = Dataspace.objects.create(name="nexB") |
| 21 | + |
| 22 | + def test_rejects_a_preset_with_no_content_field_set(self): |
| 23 | + # Mirrors VulnerabilityAnalysisForm.clean: is_reachable alone is not enough content |
| 24 | + # to apply, and must be caught here rather than crash in AnalysisPreset.save(). |
| 25 | + data = {"name": "No content", "is_reachable": True} |
| 26 | + form = AnalysisPresetForm(data=data, instance=AnalysisPreset(dataspace=self.dataspace)) |
| 27 | + self.assertFalse(form.is_valid()) |
| 28 | + msg = "At least one of state, justification, responses or detail must be provided." |
| 29 | + self.assertEqual({"__all__": [msg]}, form.errors) |
| 30 | + |
| 31 | + def test_accepts_a_preset_with_detail_only(self): |
| 32 | + data = {"name": "Detail only", "detail": "Some detail"} |
| 33 | + form = AnalysisPresetForm(data=data, instance=AnalysisPreset(dataspace=self.dataspace)) |
| 34 | + self.assertTrue(form.is_valid(), form.errors) |
| 35 | + preset = form.save() |
| 36 | + self.assertEqual("Some detail", preset.detail) |
| 37 | + |
| 38 | + |
16 | 39 | class TriageRulesetFormTestCase(TestCase): |
17 | 40 | def setUp(self): |
18 | 41 | self.dataspace = Dataspace.objects.create(name="nexB") |
|
0 commit comments