77# See https://aboutcode.org for more information about nexB OSS projects.
88#
99
10+ import json
1011import os
11- from unittest import TestCase
12+ from unittest . mock import patch
1213
1314from univers .version_constraint import VersionConstraint
1415from univers .version_range import ApacheVersionRange
1516from univers .version_range import MavenVersionRange
1617from univers .versions import MavenVersion
1718from univers .versions import SemverVersion
1819
20+ from vulnerabilities .importer import AdvisoryData
1921from vulnerabilities .importers .apache_tomcat import ApacheTomcatImporter
2022from vulnerabilities .importers .apache_tomcat import extract_tomcat_advisory_data_from_page
2123from vulnerabilities .importers .apache_tomcat import to_version_ranges_apache
2224from vulnerabilities .importers .apache_tomcat import to_version_ranges_maven
25+ from vulnerabilities .improvers .default import DefaultImprover
26+ from vulnerabilities .improvers .valid_versions import ApacheTomcatImprover
2327from vulnerabilities .tests import util_tests
2428
2529BASE_DIR = os .path .dirname (os .path .abspath (__file__ ))
@@ -39,6 +43,34 @@ def test_method_extract_advisories_from_page():
3943 util_tests .check_results_against_json (results , expected_file )
4044
4145
46+ @patch ("vulnerabilities.improvers.valid_versions.ApacheTomcatImprover.get_package_versions" )
47+ def test_apache_tomcat_improver (mock_response ):
48+ advisory_file = os .path .join (
49+ TEST_DATA , f"parse-apache_tomcat-selected-advisories-expected.json"
50+ )
51+ with open (advisory_file ) as exp :
52+ advisories = [AdvisoryData .from_dict (adv ) for adv in (json .load (exp ))]
53+ mock_response .return_value = [
54+ "1.1.0" ,
55+ "1.1.1" ,
56+ "1.1.2" ,
57+ "1.1.3" ,
58+ "1.1.4" ,
59+ "1.1.5" ,
60+ "1.1.6" ,
61+ "1.1.7" ,
62+ "1.1.8" ,
63+ ]
64+ improvers = [ApacheTomcatImprover (), DefaultImprover ()]
65+ result = []
66+ for improver in improvers :
67+ for advisory in advisories :
68+ inference = [data .to_dict () for data in improver .get_inferences (advisory )]
69+ result .extend (inference )
70+ expected_file = os .path .join (TEST_DATA , f"apache-tomcat-improver-expected.json" )
71+ util_tests .check_results_against_json (result , expected_file )
72+
73+
4274def test_extract_advisories_from_page ():
4375 page = """
4476 <h3 id="Fixed_in_Apache_Tomcat_10.0.5"><span class="pull-right">6 April 2021</span> Fixed in Apache Tomcat 10.0.5</h3><div class="text">
0 commit comments