From 2e2a1191e6ce5b119a28d04bf01de044645ffadc Mon Sep 17 00:00:00 2001 From: tdruez Date: Wed, 4 Sep 2024 14:45:27 +0200 Subject: [PATCH] Complete refactoring to new vulnerabilities module #95 Signed-off-by: tdruez --- component_catalog/tests/test_filters.py | 56 -------------------- dje/management/commands/flushdataset.py | 2 + vulnerabilities/tests/test_commands.py | 1 - vulnerabilities/tests/test_filters.py | 68 +++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 57 deletions(-) create mode 100644 vulnerabilities/tests/test_filters.py diff --git a/component_catalog/tests/test_filters.py b/component_catalog/tests/test_filters.py index f20940b4..1b2764ac 100644 --- a/component_catalog/tests/test_filters.py +++ b/component_catalog/tests/test_filters.py @@ -25,7 +25,6 @@ from license_library.models import License from organization.models import Owner from policy.models import UsagePolicy -from vulnerabilities.filters import VulnerabilityFilterSet from vulnerabilities.tests import make_vulnerability @@ -410,58 +409,3 @@ def test_package_filterset_affected_by_filter(self): data = {"affected_by": vulnerability1.vulnerability_id} filterset = PackageFilterSet(dataspace=self.dataspace, data=data) self.assertQuerySetEqual(filterset.qs, [package1]) - - -class VulnerabilityFilterSetTestCase(TestCase): - def setUp(self): - self.dataspace = Dataspace.objects.create(name="Reference") - self.vulnerability1 = make_vulnerability(self.dataspace, max_score=10.0) - self.vulnerability2 = make_vulnerability( - self.dataspace, max_score=5.5, aliases=["ALIAS-V2"] - ) - self.vulnerability3 = make_vulnerability(self.dataspace, max_score=2.0) - self.vulnerability4 = make_vulnerability(self.dataspace, max_score=None) - - def test_vulnerability_filterset_search(self): - data = {"q": self.vulnerability1.vulnerability_id} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - self.assertQuerySetEqual(filterset.qs, [self.vulnerability1]) - - data = {"q": "ALIAS-V2"} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - self.assertQuerySetEqual(filterset.qs, [self.vulnerability2]) - - def test_vulnerability_filterset_sort_nulls_last_ordering(self): - data = {"sort": "max_score"} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - expected = [ - self.vulnerability3, - self.vulnerability2, - self.vulnerability1, - self.vulnerability4, # The max_score=None are always last - ] - self.assertQuerySetEqual(filterset.qs, expected) - - data = {"sort": "-max_score"} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - expected = [ - self.vulnerability1, - self.vulnerability2, - self.vulnerability3, - self.vulnerability4, # The max_score=None are always last - ] - self.assertQuerySetEqual(filterset.qs, expected) - - def test_vulnerability_filterset_max_score(self): - data = {"max_score": "critical"} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - self.assertQuerySetEqual(filterset.qs, [self.vulnerability1]) - data = {"max_score": "high"} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - self.assertQuerySetEqual(filterset.qs, []) - data = {"max_score": "medium"} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - self.assertQuerySetEqual(filterset.qs, [self.vulnerability2]) - data = {"max_score": "low"} - filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) - self.assertQuerySetEqual(filterset.qs, [self.vulnerability3]) diff --git a/dje/management/commands/flushdataset.py b/dje/management/commands/flushdataset.py index b8193060..c20d3345 100644 --- a/dje/management/commands/flushdataset.py +++ b/dje/management/commands/flushdataset.py @@ -18,6 +18,7 @@ from dje.models import ExternalSource from dje.models import get_unsecured_manager from notification.models import Webhook +from vulnerabilities.models import Vulnerability class Command(DataspacedCommand): @@ -55,6 +56,7 @@ def handle(self, *args, **options): ExternalReference, ExternalSource, Webhook, + Vulnerability, ] ) diff --git a/vulnerabilities/tests/test_commands.py b/vulnerabilities/tests/test_commands.py index 67e33829..7535d593 100644 --- a/vulnerabilities/tests/test_commands.py +++ b/vulnerabilities/tests/test_commands.py @@ -12,7 +12,6 @@ from django.core.management.base import CommandError from django.test import TestCase -from component_catalog.models import Component from dje.models import Dataspace from dje.tests import create_superuser diff --git a/vulnerabilities/tests/test_filters.py b/vulnerabilities/tests/test_filters.py new file mode 100644 index 00000000..b10e5ad7 --- /dev/null +++ b/vulnerabilities/tests/test_filters.py @@ -0,0 +1,68 @@ +# +# Copyright (c) nexB Inc. and others. All rights reserved. +# DejaCode is a trademark of nexB Inc. +# SPDX-License-Identifier: AGPL-3.0-only +# See https://github.com/aboutcode-org/dejacode for support or download. +# See https://aboutcode.org for more information about AboutCode FOSS projects. +# + +from django.test import TestCase + +from dje.models import Dataspace +from vulnerabilities.filters import VulnerabilityFilterSet +from vulnerabilities.tests import make_vulnerability + + +class VulnerabilityFilterSetTestCase(TestCase): + def setUp(self): + self.dataspace = Dataspace.objects.create(name="Reference") + self.vulnerability1 = make_vulnerability(self.dataspace, max_score=10.0) + self.vulnerability2 = make_vulnerability( + self.dataspace, max_score=5.5, aliases=["ALIAS-V2"] + ) + self.vulnerability3 = make_vulnerability(self.dataspace, max_score=2.0) + self.vulnerability4 = make_vulnerability(self.dataspace, max_score=None) + + def test_vulnerability_filterset_search(self): + data = {"q": self.vulnerability1.vulnerability_id} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + self.assertQuerySetEqual(filterset.qs, [self.vulnerability1]) + + data = {"q": "ALIAS-V2"} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + self.assertQuerySetEqual(filterset.qs, [self.vulnerability2]) + + def test_vulnerability_filterset_sort_nulls_last_ordering(self): + data = {"sort": "max_score"} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + expected = [ + self.vulnerability3, + self.vulnerability2, + self.vulnerability1, + self.vulnerability4, # The max_score=None are always last + ] + self.assertQuerySetEqual(filterset.qs, expected) + + data = {"sort": "-max_score"} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + expected = [ + self.vulnerability1, + self.vulnerability2, + self.vulnerability3, + self.vulnerability4, # The max_score=None are always last + ] + self.assertQuerySetEqual(filterset.qs, expected) + + def test_vulnerability_filterset_max_score(self): + data = {"max_score": "critical"} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + self.assertQuerySetEqual(filterset.qs, [self.vulnerability1]) + data = {"max_score": "high"} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + self.assertQuerySetEqual(filterset.qs, []) + data = {"max_score": "medium"} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + self.assertQuerySetEqual(filterset.qs, [self.vulnerability2]) + data = {"max_score": "low"} + filterset = VulnerabilityFilterSet(dataspace=self.dataspace, data=data) + self.assertQuerySetEqual(filterset.qs, [self.vulnerability3])