77# See https://aboutcode.org for more information about nexB OSS projects.
88#
99from datetime import datetime
10+ from unittest .mock import patch
1011
1112import pytest
13+ from packageurl import PackageURL
1214from univers .version_range import NpmVersionRange
1315from univers .versions import SemverVersion
1416
15- from vulnerabilities . import_runner import ImportRunner
17+ from vulnerabilities import models
1618from vulnerabilities .importer import AffectedPackage
17- from vulnerabilities .models import *
1819from vulnerabilities .pipelines .npm_importer import NpmImporterPipeline
1920
2021
2122@pytest .mark .django_db
2223def test_package_changelog ():
23- pkg ,
_ = Package .
objects .
get_or_create_from_purl (
"pkg:npm/[email protected] " )
24- assert PackageChangeLog .objects .filter (package = pkg ).count () == 0
25- adv = Advisory .objects .create (
24+ pkg ,
_ = models . Package .
objects .
get_or_create_from_purl (
"pkg:npm/[email protected] " )
25+ assert models . PackageChangeLog .objects .filter (package = pkg ).count () == 0
26+ adv = models . Advisory .objects .create (
2627 created_by = NpmImporterPipeline .pipeline_id ,
2728 summary = "TEST" ,
2829 date_collected = datetime .now (),
@@ -39,16 +40,18 @@ def test_package_changelog():
3940 aliases = ["CVE-123" ],
4041 )
4142 NpmImporterPipeline ().import_advisory (advisory = adv )
42- assert PackageChangeLog .objects .filter (package = pkg ).count () == 1
43+ assert models . PackageChangeLog .objects .filter (package = pkg ).count () == 1
4344 NpmImporterPipeline ().import_advisory (advisory = adv )
44- assert PackageChangeLog .objects .filter (package = pkg ).count () == 1
45+ assert models . PackageChangeLog .objects .filter (package = pkg ).count () == 1
4546 assert (
46- PackageChangeLog .objects .filter (action_type = PackageChangeLog .FIXING , package = pkg ).count ()
47+ models .PackageChangeLog .objects .filter (
48+ action_type = models .PackageChangeLog .FIXING , package = pkg
49+ ).count ()
4750 == 1
4851 )
49- pkg1 ,
_ = Package .
objects .
get_or_create_from_purl (
"pkg:npm/[email protected] " )
50- assert PackageChangeLog .objects .filter (package = pkg1 ).count () == 0
51- adv = Advisory .objects .create (
52+ pkg1 ,
_ = models . Package .
objects .
get_or_create_from_purl (
"pkg:npm/[email protected] " )
53+ assert models . PackageChangeLog .objects .filter (package = pkg1 ).count () == 0
54+ adv = models . Advisory .objects .create (
5255 created_by = NpmImporterPipeline .pipeline_id ,
5356 summary = "TEST-1" ,
5457 date_collected = datetime .now (),
@@ -65,20 +68,21 @@ def test_package_changelog():
6568 aliases = ["CVE-145" ],
6669 )
6770 NpmImporterPipeline ().import_advisory (advisory = adv )
68- assert PackageChangeLog .objects .filter (package = pkg1 ).count () == 1
71+ assert models . PackageChangeLog .objects .filter (package = pkg1 ).count () == 1
6972 NpmImporterPipeline ().import_advisory (advisory = adv )
70- assert PackageChangeLog .objects .filter (package = pkg1 ).count () == 1
73+ assert models . PackageChangeLog .objects .filter (package = pkg1 ).count () == 1
7174 assert (
72- PackageChangeLog .objects .filter (
73- action_type = PackageChangeLog .AFFECTED_BY , package = pkg1
75+ models .PackageChangeLog .objects .filter (
76+ action_type = models .PackageChangeLog .AFFECTED_BY ,
77+ package = pkg1 ,
7478 ).count ()
7579 == 1
7680 )
7781
7882
7983@pytest .mark .django_db
8084def test_vulnerability_changelog ():
81- adv = Advisory .objects .create (
85+ adv = models . Advisory .objects .create (
8286 created_by = NpmImporterPipeline .pipeline_id ,
8387 summary = "TEST_1" ,
8488 date_collected = datetime .now (),
@@ -97,10 +101,37 @@ def test_vulnerability_changelog():
97101 NpmImporterPipeline ().import_advisory (advisory = adv )
98102 # 1 Changelogs is expected here:
99103 # 1 for importing vuln details
100- assert VulnerabilityChangeLog .objects .count () == 1
104+ assert models . VulnerabilityChangeLog .objects .count () == 1
101105 NpmImporterPipeline ().import_advisory (advisory = adv )
102- assert VulnerabilityChangeLog .objects .count () == 1
106+ assert models . VulnerabilityChangeLog .objects .count () == 1
103107 assert (
104- VulnerabilityChangeLog .objects .filter (action_type = VulnerabilityChangeLog .IMPORT ).count ()
108+ models .VulnerabilityChangeLog .objects .filter (
109+ action_type = models .VulnerabilityChangeLog .IMPORT
110+ ).count ()
105111 == 1
106112 )
113+
114+
115+ @patch ("vulnerabilities.models.VULNERABLECODE_VERSION" , "test-version" )
116+ @pytest .mark .django_db
117+ def test_vulnerability_changelog_software_version ():
118+ adv = models .Advisory .objects .create (
119+ created_by = NpmImporterPipeline .pipeline_id ,
120+ summary = "TEST_1" ,
121+ date_collected = datetime .now (),
122+ url = "https://test.com/source" ,
123+ affected_packages = [
124+ AffectedPackage (
125+ package = PackageURL (
126+ type = "npm" ,
127+ name = "foo" ,
128+ ),
129+ fixed_version = SemverVersion ("1.0" ),
130+ ).to_dict ()
131+ ],
132+ aliases = ["CVE-TEST-1234" ],
133+ )
134+ NpmImporterPipeline ().import_advisory (advisory = adv )
135+ npm_vulnerability_log = models .VulnerabilityChangeLog .objects .first ()
136+
137+ assert ("test-version" , npm_vulnerability_log .software_version )
0 commit comments