|
9 | 9 |
|
10 | 10 | import json |
11 | 11 | import os |
| 12 | +from unittest import mock |
12 | 13 |
|
13 | 14 | import pytest |
14 | 15 | from univers.version_constraint import VersionConstraint |
15 | 16 | from univers.version_range import ApacheVersionRange |
16 | 17 | from univers.versions import SemverVersion |
17 | 18 |
|
| 19 | +from vulnerabilities.importer import AdvisoryData |
18 | 20 | from vulnerabilities.importers.apache_httpd import ApacheHTTPDImporter |
| 21 | +from vulnerabilities.importers.apache_httpd import ApacheHTTPDImprover |
| 22 | +from vulnerabilities.improvers.default import DefaultImprover |
19 | 23 | from vulnerabilities.tests import util_tests |
20 | 24 |
|
21 | 25 | BASE_DIR = os.path.dirname(os.path.abspath(__file__)) |
@@ -116,3 +120,24 @@ def test_to_advisory_CVE_2022_28614(): |
116 | 120 | result = advisories.to_dict() |
117 | 121 | expected_file = os.path.join(TEST_DATA, f"CVE-2022-28614-apache-httpd-expected.json") |
118 | 122 | util_tests.check_results_against_json(result, expected_file) |
| 123 | + |
| 124 | + |
| 125 | +@mock.patch("vulnerabilities.importers.apache_httpd.ApacheHTTPDImprover.get_package_versions") |
| 126 | +def test_apache_httpd_improver(mock_response): |
| 127 | + advisory_file = os.path.join(TEST_DATA, f"CVE-2021-44224-apache-httpd-expected.json") |
| 128 | + expected_file = os.path.join(TEST_DATA, f"apache-httpd-improver-expected.json") |
| 129 | + with open(advisory_file) as exp: |
| 130 | + advisory = AdvisoryData.from_dict(json.load(exp)) |
| 131 | + mock_response.return_value = [ |
| 132 | + "2.4.8", |
| 133 | + "2.4.9", |
| 134 | + "2.4.10", |
| 135 | + "2.4.53", |
| 136 | + "2.4.54", |
| 137 | + ] |
| 138 | + improvers = [ApacheHTTPDImprover(), DefaultImprover()] |
| 139 | + result = [] |
| 140 | + for improver in improvers: |
| 141 | + inference = [data.to_dict() for data in improver.get_inferences(advisory)] |
| 142 | + result.extend(inference) |
| 143 | + util_tests.check_results_against_json(result, expected_file) |
0 commit comments