Skip to content

Commit

Permalink
Complete refactoring to new vulnerabilities module #95
Browse files Browse the repository at this point in the history
Signed-off-by: tdruez <tdruez@nexb.com>
  • Loading branch information
tdruez committed Sep 4, 2024
1 parent 4770a04 commit 2e2a119
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 57 deletions.
56 changes: 0 additions & 56 deletions component_catalog/tests/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -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])
2 changes: 2 additions & 0 deletions dje/management/commands/flushdataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -55,6 +56,7 @@ def handle(self, *args, **options):
ExternalReference,
ExternalSource,
Webhook,
Vulnerability,
]
)

Expand Down
1 change: 0 additions & 1 deletion vulnerabilities/tests/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
68 changes: 68 additions & 0 deletions vulnerabilities/tests/test_filters.py
Original file line number Diff line number Diff line change
@@ -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])

0 comments on commit 2e2a119

Please sign in to comment.