aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJ08nY2025-02-14 14:22:47 +0100
committerJ08nY2025-02-14 14:22:47 +0100
commitd5d8838c8b883e5b8aebcde81ea1089757dcfb4f (patch)
treef91ddffd09b425036b97b99b141bcc07ad6c5d9a
parent175165e34c07b17f3ee734b0d089322dd82e07b8 (diff)
downloadsec-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.py9
-rw-r--r--src/sec_certs/dataset/cve.py9
-rw-r--r--tests/test_nvd_dataset_builder.py13
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",