diff options
| author | J08nY | 2025-02-14 14:22:47 +0100 |
|---|---|---|
| committer | J08nY | 2025-02-14 14:22:47 +0100 |
| commit | d5d8838c8b883e5b8aebcde81ea1089757dcfb4f (patch) | |
| tree | f91ddffd09b425036b97b99b141bcc07ad6c5d9a | |
| parent | 175165e34c07b17f3ee734b0d089322dd82e07b8 (diff) | |
| download | sec-certs-d5d8838c8b883e5b8aebcde81ea1089757dcfb4f.tar.gz sec-certs-d5d8838c8b883e5b8aebcde81ea1089757dcfb4f.tar.zst sec-certs-d5d8838c8b883e5b8aebcde81ea1089757dcfb4f.zip | |
Unify CVE and CPEDataset from_web with the rest.
| -rw-r--r-- | src/sec_certs/dataset/cpe.py | 9 | ||||
| -rw-r--r-- | src/sec_certs/dataset/cve.py | 9 | ||||
| -rw-r--r-- | tests/test_nvd_dataset_builder.py | 13 |
3 files changed, 15 insertions, 16 deletions
diff --git a/src/sec_certs/dataset/cpe.py b/src/sec_certs/dataset/cpe.py index c93ddd71..56e6ac5d 100644 --- a/src/sec_certs/dataset/cpe.py +++ b/src/sec_certs/dataset/cpe.py @@ -71,7 +71,7 @@ class CPEDataset(JSONPathDataset, ComplexSerializableType): return cls(**dct) @classmethod - def from_web(cls, json_path: str | Path = constants.DUMMY_NONEXISTING_PATH) -> CPEDataset: + def from_web(cls, json_path: str | Path | None = None) -> CPEDataset: """ Creates CPEDataset from NIST resources published on-line @@ -91,8 +91,11 @@ class CPEDataset(JSONPathDataset, ComplexSerializableType): raise RuntimeError(f"Could not download CPEDataset from {config.cpe_latest_snapshot}.") dset = cls.from_json(dset_path, is_compressed=True) - dset.json_path = json_path - dset.to_json() + if json_path: + dset.json_path = json_path + dset.to_json() + else: + dset.json_path = constants.DUMMY_NONEXISTING_PATH return dset def enhance_with_nvd_data(self, nvd_data: dict[Any, Any]) -> None: diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index 52d988b1..6314040c 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -67,7 +67,7 @@ class CVEDataset(JSONPathDataset, ComplexSerializableType): return bool(self._cpe_uri_to_cve_ids_lookup) @classmethod - def from_web(cls, json_path: str | Path = constants.DUMMY_NONEXISTING_PATH) -> CVEDataset: + def from_web(cls, json_path: str | Path | None = None) -> CVEDataset: """ Creates CVEDataset from NIST resources published on-line @@ -87,8 +87,11 @@ class CVEDataset(JSONPathDataset, ComplexSerializableType): raise RuntimeError(f"Could not download CVEDataset from {config_module.config.cve_latest_snapshot}.") dset = cls.from_json(dset_path, is_compressed=True) - dset.json_path = json_path - dset.to_json() + if json_path: + dset.json_path = json_path + dset.to_json() + else: + dset.json_path = constants.DUMMY_NONEXISTING_PATH return dset def _get_cves_with_criteria_configurations(self) -> None: diff --git a/tests/test_nvd_dataset_builder.py b/tests/test_nvd_dataset_builder.py index daf0270a..a8d9380c 100644 --- a/tests/test_nvd_dataset_builder.py +++ b/tests/test_nvd_dataset_builder.py @@ -5,7 +5,7 @@ from typing import Any import pytest from sec_certs.configuration import config -from sec_certs.dataset import CCDataset, CPEDataset, CVEDataset +from sec_certs.dataset import CPEDataset, CVEDataset from sec_certs.utils.nvd_dataset_builder import ( CpeMatchNvdDatasetBuilder, CpeNvdDatasetBuilder, @@ -20,27 +20,20 @@ def load_test_config(): config.load_from_yaml(path) -@pytest.mark.skip(reason="not yet implemented on the web") +@pytest.mark.slow def test_cpe_download_from_seccerts(): cpe_dataset = CPEDataset.from_web() assert len(cpe_dataset) > 100000 assert cpe_dataset.last_update_timestamp > datetime.now() - timedelta(days=28) -@pytest.mark.skip(reason="not yet implemented on the web") +@pytest.mark.slow def test_cve_download_from_seccerts(): cve_dataset = CVEDataset.from_web() assert len(cve_dataset) > 100000 assert cve_dataset.last_update_timestamp > datetime.now() - timedelta(days=28) -@pytest.mark.skip(reason="not yet implemented on the web") -def test_cpe_match_download_from_seccerts(): - cpe_match_dict = CCDataset._prepare_cpe_match_dict() - assert len(cpe_match_dict["match_strings"]) > 100000 - assert datetime.fromisoformat(cpe_match_dict["timestamp"]) > datetime.now() - timedelta(days=28) - - @pytest.mark.xfail(reason="May fail due to NVD server errors.") @pytest.mark.parametrize( "default_dataset, builder_class", |
