|
30 | 30 | from vulnerabilities.importer import PatchData |
31 | 31 | from vulnerabilities.importer import Reference |
32 | 32 | from vulnerabilities.importer import ReferenceV2 |
| 33 | +from vulnerabilities.importer import VulnerabilitySeverity |
33 | 34 | from vulnerabilities.models import AdvisorySeverity |
34 | 35 | from vulnerabilities.models import Alias |
35 | 36 | from vulnerabilities.models import Package |
36 | 37 | from vulnerabilities.models import Patch |
37 | 38 | from vulnerabilities.models import Vulnerability |
| 39 | +from vulnerabilities.severity_systems import CVSSV3 |
38 | 40 | from vulnerabilities.severity_systems import CVSSV4 |
| 41 | +from vulnerabilities.severity_systems import ScoringSystem |
39 | 42 | from vulnerabilities.utils import compute_content_id |
40 | 43 |
|
41 | 44 |
|
@@ -771,3 +774,47 @@ def test_advisoryv2_to_advisory_data_patch_seralization(self): |
771 | 774 | result = models.AdvisoryV2.objects.first().to_advisory_data() |
772 | 775 |
|
773 | 776 | self.assertEqual(result, self.advisoryv2_data1) |
| 777 | + |
| 778 | + |
| 779 | +class TestAdvisoryV2ModelDuplication(DjangoTestCase): |
| 780 | + def setUp(self): |
| 781 | + self.advisoryv2_data1 = AdvisoryDataV2( |
| 782 | + advisory_id="CVE-2023-0401", |
| 783 | + aliases=[], |
| 784 | + summary="", |
| 785 | + affected_packages=[], |
| 786 | + severities=[ |
| 787 | + VulnerabilitySeverity( |
| 788 | + system=CVSSV3, |
| 789 | + value="7.5", |
| 790 | + scoring_elements="CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", |
| 791 | + ) |
| 792 | + ], |
| 793 | + patches=[], |
| 794 | + url="https://test.com", |
| 795 | + ) |
| 796 | + |
| 797 | + self.advisoryv2_data2 = AdvisoryDataV2( |
| 798 | + advisory_id="CVE-2023-0662", |
| 799 | + aliases=[], |
| 800 | + summary="", |
| 801 | + affected_packages=[], |
| 802 | + severities=[ |
| 803 | + VulnerabilitySeverity( |
| 804 | + system=CVSSV3, |
| 805 | + value="7.5", |
| 806 | + scoring_elements="CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", |
| 807 | + ) |
| 808 | + ], |
| 809 | + patches=[], |
| 810 | + url="https://test.com", |
| 811 | + ) |
| 812 | + |
| 813 | + def test_advisoryv2_duplication_data(self): |
| 814 | + from vulnerabilities.pipes.advisory import insert_advisory_v2 |
| 815 | + |
| 816 | + insert_advisory_v2(advisory=self.advisoryv2_data1, pipeline_id="test_pipeline") |
| 817 | + insert_advisory_v2(advisory=self.advisoryv2_data2, pipeline_id="test_pipeline") |
| 818 | + result = models.AdvisoryV2.objects.count() |
| 819 | + |
| 820 | + self.assertEqual(result, 2) |
0 commit comments