aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Janovsky2023-04-20 16:22:52 +0200
committerAdam Janovsky2023-04-20 16:22:52 +0200
commitfec63347e3d012a32038762917a78f565c9e5b1c (patch)
treec4a5ab8d2369c36b2ff169a0c118a57b194a6303
parent9545cae8288e7e58e3b1df409fc27b7f164087d9 (diff)
downloadsec-certs-fec63347e3d012a32038762917a78f565c9e5b1c.tar.gz
sec-certs-fec63347e3d012a32038762917a78f565c9e5b1c.tar.zst
sec-certs-fec63347e3d012a32038762917a78f565c9e5b1c.zip
share some code in tests, use importlib.resources
-rw-r--r--tests/cc/conftest.py57
-rw-r--r--tests/cc/test_cc_certificate.py63
-rw-r--r--tests/cc/test_cc_dataset.py37
-rw-r--r--tests/cc/test_cc_maintenance_updates.py11
-rw-r--r--tests/data/cc/certificate/__init__.py0
-rw-r--r--tests/data/cc/dataset/__init__.py0
-rw-r--r--tests/data/fips/certificate/__init__.py0
-rw-r--r--tests/data/fips/iut/__init__.py0
-rw-r--r--tests/data/fips/mip/__init__.py0
-rw-r--r--tests/fips/conftest.py12
-rw-r--r--tests/fips/test_fips_algorithm_dataset.py12
-rw-r--r--tests/fips/test_fips_analysis.py44
-rw-r--r--tests/fips/test_fips_certificate.py11
-rw-r--r--tests/fips/test_fips_dataset.py9
-rw-r--r--tests/fips/test_fips_iut.py4
-rw-r--r--tests/fips/test_fips_mip.py4
-rw-r--r--tests/test_config.py5
-rw-r--r--tests/test_nvd_dataset_builder.py4
18 files changed, 129 insertions, 144 deletions
diff --git a/tests/cc/conftest.py b/tests/cc/conftest.py
new file mode 100644
index 00000000..fae4ecae
--- /dev/null
+++ b/tests/cc/conftest.py
@@ -0,0 +1,57 @@
+from datetime import date
+
+import pytest
+
+from sec_certs.sample.cc import CCCertificate
+from sec_certs.sample.protection_profile import ProtectionProfile
+
+
+@pytest.fixture(scope="module")
+def cert_one() -> CCCertificate:
+ return CCCertificate(
+ "active",
+ "Access Control Devices and Systems",
+ "NetIQ Identity Manager 4.7",
+ "NetIQ Corporation",
+ "SE",
+ {"ALC_FLR.2", "EAL3+"},
+ date(2020, 6, 15),
+ date(2025, 6, 15),
+ "https://www.commoncriteriaportal.org/files/epfiles/Certification%20Report%20-%20NetIQ®%20Identity%20Manager%204.7.pdf",
+ "https://www.commoncriteriaportal.org/files/epfiles/ST%20-%20NetIQ%20Identity%20Manager%204.7.pdf",
+ "https://www.commoncriteriaportal.org/files/epfiles/Certifikat%20CCRA%20-%20NetIQ%20Identity%20Manager%204.7_signed.pdf",
+ "https://www.netiq.com/",
+ set(),
+ set(),
+ None,
+ None,
+ None,
+ )
+
+
+@pytest.fixture(scope="module")
+def cert_two() -> CCCertificate:
+ pp = ProtectionProfile("sample_pp", None, pp_link="https://sample.pp")
+ update = CCCertificate.MaintenanceReport(
+ date(1900, 1, 1), "Sample maintenance", "https://maintenance.up", "https://maintenance.up"
+ )
+
+ return CCCertificate(
+ "archived",
+ "Sample category",
+ "Sample certificate name",
+ "Sample manufacturer",
+ "Sample scheme",
+ {"Sample security level"},
+ date(1900, 1, 2),
+ date(1900, 1, 3),
+ "https://path.to/report/link",
+ "https://path.to/st/link",
+ "https://path.to/cert/link",
+ "https://path.to/manufacturer/web",
+ {pp},
+ {update},
+ None,
+ None,
+ None,
+ )
diff --git a/tests/cc/test_cc_certificate.py b/tests/cc/test_cc_certificate.py
index 2a5ff222..10dfa248 100644
--- a/tests/cc/test_cc_certificate.py
+++ b/tests/cc/test_cc_certificate.py
@@ -1,6 +1,6 @@
import json
import shutil
-from datetime import date
+from importlib import resources
from pathlib import Path
import pytest
@@ -9,20 +9,20 @@ import tests.data.cc.certificate
from sec_certs.dataset import CCDataset
from sec_certs.sample import CCCertificate
-from sec_certs.sample.protection_profile import ProtectionProfile
@pytest.fixture(scope="module")
def data_dir() -> Path:
- return Path(tests.data.cc.certificate.__path__[0])
+ with resources.path(tests.data.cc.certificate, "") as path:
+ return path
@pytest.fixture(scope="module")
def vulnerable_certificate(tmp_path_factory) -> CCCertificate:
tmp_dir = tmp_path_factory.mktemp("dset")
- dset_json_path = Path(tests.data.cc.analysis.__path__[0]) / "vulnerable_dataset.json"
- data_dir_path = dset_json_path.parent
- shutil.copytree(data_dir_path, tmp_dir, dirs_exist_ok=True)
+
+ with resources.path(tests.data.cc.analysis, "") as analysis_path:
+ shutil.copytree(analysis_path, tmp_dir, dirs_exist_ok=True)
cc_dset = CCDataset.from_json(tmp_dir / "vulnerable_dataset.json")
cc_dset.download_all_artifacts()
cc_dset.convert_all_pdfs()
@@ -30,57 +30,6 @@ def vulnerable_certificate(tmp_path_factory) -> CCCertificate:
return list(cc_dset.certs.values())[0]
-@pytest.fixture(scope="module")
-def cert_one() -> CCCertificate:
- return CCCertificate(
- "active",
- "Access Control Devices and Systems",
- "NetIQ Identity Manager 4.7",
- "NetIQ Corporation",
- "SE",
- {"ALC_FLR.2", "EAL3+"},
- date(2020, 6, 15),
- date(2025, 6, 15),
- "https://www.commoncriteriaportal.org/files/epfiles/Certification%20Report%20-%20NetIQ®%20Identity%20Manager%204.7.pdf",
- "https://www.commoncriteriaportal.org/files/epfiles/ST%20-%20NetIQ%20Identity%20Manager%204.7.pdf",
- "https://www.commoncriteriaportal.org/files/epfiles/Certifikat%20CCRA%20-%20NetIQ%20Identity%20Manager%204.7_signed.pdf",
- "https://www.netiq.com/",
- set(),
- set(),
- None,
- None,
- None,
- )
-
-
-@pytest.fixture(scope="module")
-def cert_two() -> CCCertificate:
- pp = ProtectionProfile("sample_pp", None, pp_link="https://sample.pp")
- update = CCCertificate.MaintenanceReport(
- date(1900, 1, 1), "Sample maintenance", "https://maintenance.up", "https://maintenance.up"
- )
-
- return CCCertificate(
- "archived",
- "Sample category",
- "Sample certificate name",
- "Sample manufacturer",
- "Sample scheme",
- {"Sample security level"},
- date(1900, 1, 2),
- date(1900, 1, 3),
- "https://path.to/report/link",
- "https://path.to/st/link",
- "https://path.to/cert/link",
- "https://path.to/manufacturer/web",
- {pp},
- {update},
- None,
- None,
- None,
- )
-
-
def test_extract_metadata(vulnerable_certificate: CCCertificate):
vulnerable_certificate.state.st_extract_ok = True
CCCertificate.extract_st_pdf_metadata(vulnerable_certificate)
diff --git a/tests/cc/test_cc_dataset.py b/tests/cc/test_cc_dataset.py
index 6d6abff4..d9fe79e3 100644
--- a/tests/cc/test_cc_dataset.py
+++ b/tests/cc/test_cc_dataset.py
@@ -1,6 +1,6 @@
import json
import shutil
-from datetime import date
+from importlib import resources
from pathlib import Path
from tempfile import TemporaryDirectory
@@ -14,35 +14,14 @@ from sec_certs.sample.cc import CCCertificate
@pytest.fixture(scope="module")
def data_dir() -> Path:
- return Path(tests.data.cc.dataset.__path__[0])
-
-
-@pytest.fixture(scope="module")
-def crt() -> CCCertificate:
- return CCCertificate(
- "active",
- "Access Control Devices and Systems",
- "NetIQ Identity Manager 4.7",
- "NetIQ Corporation",
- "SE",
- {"ALC_FLR.2", "EAL3+"},
- date(2020, 6, 15),
- date(2025, 6, 15),
- "https://www.commoncriteriaportal.org/files/epfiles/Certification%20Report%20-%20NetIQ®%20Identity%20Manager%204.7.pdf",
- "https://www.commoncriteriaportal.org/files/epfiles/ST%20-%20NetIQ%20Identity%20Manager%204.7.pdf",
- "https://www.commoncriteriaportal.org/files/epfiles/Certifikat%20CCRA%20-%20NetIQ%20Identity%20Manager%204.7_signed.pdf",
- "https://www.netiq.com/",
- set(),
- set(),
- None,
- None,
- None,
- )
+ with resources.path(tests.data.cc.dataset, "") as path:
+ return path
@pytest.fixture
-def toy_dataset(data_dir: Path) -> CCDataset:
- return CCDataset.from_json(data_dir / "toy_dataset.json")
+def toy_dataset() -> CCDataset:
+ with resources.path(tests.data.cc.dataset, "toy_dataset.json") as path:
+ return CCDataset.from_json(path)
def test_download_and_convert_pdfs(toy_dataset: CCDataset, data_dir: Path):
@@ -133,7 +112,7 @@ def test_build_empty_dataset():
assert not dset.state.certs_analyzed
-def test_build_dataset(data_dir: Path, crt: CCCertificate, toy_dataset: CCDataset):
+def test_build_dataset(data_dir: Path, cert_one: CCCertificate, toy_dataset: CCDataset):
with TemporaryDirectory() as tmp_dir:
dataset_path = Path(tmp_dir)
(dataset_path / "web").mkdir()
@@ -147,7 +126,7 @@ def test_build_dataset(data_dir: Path, crt: CCCertificate, toy_dataset: CCDatase
assert len(list(dataset_path.iterdir())) == 0
assert len(dset) == 3
- assert crt in dset
+ assert cert_one in dset
assert dset == toy_dataset
diff --git a/tests/cc/test_cc_maintenance_updates.py b/tests/cc/test_cc_maintenance_updates.py
index 254df45c..a017df8b 100644
--- a/tests/cc/test_cc_maintenance_updates.py
+++ b/tests/cc/test_cc_maintenance_updates.py
@@ -1,21 +1,18 @@
import json
+from importlib import resources
from pathlib import Path
import pytest
import tests.data.cc.dataset
-from sec_certs.dataset import CCDataset, CCDatasetMaintenanceUpdates
+from sec_certs.dataset import CCDatasetMaintenanceUpdates
from sec_certs.sample.cc_maintenance_update import CCMaintenanceUpdate
@pytest.fixture(scope="module")
def data_dir() -> Path:
- return Path(tests.data.cc.dataset.__path__[0])
-
-
-@pytest.fixture(scope="module")
-def cc_dset(data_dir: Path) -> CCDataset:
- return CCDataset.from_json(data_dir / "toy_dataset.json")
+ with resources.path(tests.data.cc.dataset, "") as path:
+ return path
@pytest.fixture
diff --git a/tests/data/cc/certificate/__init__.py b/tests/data/cc/certificate/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/data/cc/certificate/__init__.py
diff --git a/tests/data/cc/dataset/__init__.py b/tests/data/cc/dataset/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/data/cc/dataset/__init__.py
diff --git a/tests/data/fips/certificate/__init__.py b/tests/data/fips/certificate/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/data/fips/certificate/__init__.py
diff --git a/tests/data/fips/iut/__init__.py b/tests/data/fips/iut/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/data/fips/iut/__init__.py
diff --git a/tests/data/fips/mip/__init__.py b/tests/data/fips/mip/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/data/fips/mip/__init__.py
diff --git a/tests/fips/conftest.py b/tests/fips/conftest.py
new file mode 100644
index 00000000..4fa3c2b4
--- /dev/null
+++ b/tests/fips/conftest.py
@@ -0,0 +1,12 @@
+from importlib import resources
+
+import pytest
+import tests.data.fips.dataset
+
+from sec_certs.dataset import FIPSDataset
+
+
+@pytest.fixture(scope="module")
+def toy_dataset() -> FIPSDataset:
+ with resources.path(tests.data.fips.dataset, "toy_dataset.json") as dataset_path:
+ return FIPSDataset.from_json(dataset_path)
diff --git a/tests/fips/test_fips_algorithm_dataset.py b/tests/fips/test_fips_algorithm_dataset.py
index 1d45e67c..0ef9a177 100644
--- a/tests/fips/test_fips_algorithm_dataset.py
+++ b/tests/fips/test_fips_algorithm_dataset.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from pathlib import Path
+from importlib import resources
from typing import Any
import pytest
@@ -23,13 +23,9 @@ def test_alg_dset_from_web(tmp_path):
@pytest.fixture(scope="module")
-def alg_dset_path() -> Path:
- return Path(tests.data.fips.dataset.__path__[0]) / "alg_dataset.json"
-
-
-@pytest.fixture(scope="module")
-def alg_dset(alg_dset_path: Path) -> FIPSAlgorithmDataset:
- return FIPSAlgorithmDataset.from_json(alg_dset_path)
+def alg_dset() -> FIPSAlgorithmDataset:
+ with resources.path(tests.data.fips.dataset, "alg_dataset.json") as alg_dset_path:
+ return FIPSAlgorithmDataset.from_json(alg_dset_path)
@pytest.fixture(scope="module")
diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py
index 4827f43e..f91cac8b 100644
--- a/tests/fips/test_fips_analysis.py
+++ b/tests/fips/test_fips_analysis.py
@@ -1,48 +1,38 @@
from __future__ import annotations
-from importlib import resources
-
import pytest
-import tests.data.common
-import tests.data.fips.dataset
from sec_certs.dataset import CPEDataset, CVEDataset
from sec_certs.dataset.fips import FIPSDataset
@pytest.fixture(scope="module")
-def toy_static_dataset() -> FIPSDataset:
- with resources.path(tests.data.fips.dataset, "toy_dataset.json") as dataset_path:
- return FIPSDataset.from_json(dataset_path)
-
-
-@pytest.fixture(scope="module")
def processed_dataset(
- toy_static_dataset: FIPSDataset, cpe_dataset: CPEDataset, cve_dataset: CVEDataset, tmp_path_factory
+ toy_dataset: FIPSDataset, cpe_dataset: CPEDataset, cve_dataset: CVEDataset, tmp_path_factory
) -> FIPSDataset:
tmp_dir = tmp_path_factory.mktemp("fips_dset")
- toy_static_dataset.copy_dataset(tmp_dir)
+ toy_dataset.copy_dataset(tmp_dir)
tested_certs = [
- toy_static_dataset["3095"],
- toy_static_dataset["3093"],
- toy_static_dataset["3197"],
- toy_static_dataset["2441"],
+ toy_dataset["3095"],
+ toy_dataset["3093"],
+ toy_dataset["3197"],
+ toy_dataset["2441"],
]
- toy_static_dataset.certs = {x.dgst: x for x in tested_certs}
+ toy_dataset.certs = {x.dgst: x for x in tested_certs}
- toy_static_dataset.download_all_artifacts()
- toy_static_dataset.convert_all_pdfs()
- toy_static_dataset.extract_data()
- toy_static_dataset._compute_references(keep_unknowns=True)
+ toy_dataset.download_all_artifacts()
+ toy_dataset.convert_all_pdfs()
+ toy_dataset.extract_data()
+ toy_dataset._compute_references(keep_unknowns=True)
- toy_static_dataset.auxiliary_datasets.cpe_dset = cpe_dataset
- toy_static_dataset.auxiliary_datasets.cve_dset = cve_dataset
- toy_static_dataset.compute_cpe_heuristics()
- toy_static_dataset.compute_related_cves()
- toy_static_dataset._compute_transitive_vulnerabilities()
+ toy_dataset.auxiliary_datasets.cpe_dset = cpe_dataset
+ toy_dataset.auxiliary_datasets.cve_dset = cve_dataset
+ toy_dataset.compute_cpe_heuristics()
+ toy_dataset.compute_related_cves()
+ toy_dataset._compute_transitive_vulnerabilities()
- return toy_static_dataset
+ return toy_dataset
@pytest.mark.parametrize(
diff --git a/tests/fips/test_fips_certificate.py b/tests/fips/test_fips_certificate.py
index 8f68238e..207ae46d 100644
--- a/tests/fips/test_fips_certificate.py
+++ b/tests/fips/test_fips_certificate.py
@@ -1,5 +1,6 @@
import json
import shutil
+from importlib import resources
from pathlib import Path
import pytest
@@ -12,15 +13,17 @@ from sec_certs.sample.fips import FIPSCertificate
@pytest.fixture(scope="module")
def data_dir() -> Path:
- return Path(tests.data.fips.certificate.__path__[0])
+ with resources.path(tests.data.fips.certificate, "") as path:
+ return path
@pytest.fixture
def certificate(tmp_path_factory) -> FIPSCertificate:
tmp_dir = tmp_path_factory.mktemp("dset")
- dset_json_path = Path(tests.data.fips.dataset.__path__[0]) / "toy_dataset.json"
- data_dir_path = dset_json_path.parent
- shutil.copytree(data_dir_path, tmp_dir, dirs_exist_ok=True)
+
+ with resources.path(tests.data.fips.dataset, "") as dataset_path:
+ shutil.copytree(dataset_path, tmp_dir, dirs_exist_ok=True)
+
fips_dset = FIPSDataset.from_json(tmp_dir / "toy_dataset.json")
crt = fips_dset["184097a88a9b4ad9"]
diff --git a/tests/fips/test_fips_dataset.py b/tests/fips/test_fips_dataset.py
index 50c8352d..7a4bc712 100644
--- a/tests/fips/test_fips_dataset.py
+++ b/tests/fips/test_fips_dataset.py
@@ -1,5 +1,6 @@
import json
import shutil
+from importlib import resources
from pathlib import Path
from tempfile import TemporaryDirectory
@@ -13,12 +14,8 @@ from sec_certs.sample.fips import FIPSCertificate
@pytest.fixture(scope="module")
def data_dir() -> Path:
- return Path(tests.data.fips.dataset.__path__[0])
-
-
-@pytest.fixture
-def toy_dataset(data_dir: Path) -> FIPSDataset:
- return FIPSDataset.from_json(data_dir / "toy_dataset.json")
+ with resources.path(tests.data.fips.dataset, "") as path:
+ return path
def test_dataset_to_json(toy_dataset: FIPSDataset, data_dir: Path, tmp_path: Path):
diff --git a/tests/fips/test_fips_iut.py b/tests/fips/test_fips_iut.py
index 1dca086c..3412f6f2 100644
--- a/tests/fips/test_fips_iut.py
+++ b/tests/fips/test_fips_iut.py
@@ -1,3 +1,4 @@
+from importlib import resources
from pathlib import Path
import pytest
@@ -9,7 +10,8 @@ from sec_certs.sample import IUTSnapshot
@pytest.fixture(scope="module")
def data_dir() -> Path:
- return Path(tests.data.fips.iut.__path__[0])
+ with resources.path(tests.data.fips.iut, "") as path:
+ return path
@pytest.fixture(scope="module")
diff --git a/tests/fips/test_fips_mip.py b/tests/fips/test_fips_mip.py
index 4918a4c6..807b83af 100644
--- a/tests/fips/test_fips_mip.py
+++ b/tests/fips/test_fips_mip.py
@@ -1,3 +1,4 @@
+from importlib import resources
from pathlib import Path
import pytest
@@ -9,7 +10,8 @@ from sec_certs.sample import MIPSnapshot
@pytest.fixture(scope="module")
def data_dir() -> Path:
- return Path(tests.data.fips.mip.__path__[0])
+ with resources.path(tests.data.fips.mip, "") as path:
+ return path
@pytest.fixture(scope="module")
diff --git a/tests/test_config.py b/tests/test_config.py
index 39102111..7c20dec1 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -1,6 +1,7 @@
from __future__ import annotations
import os
+from importlib import resources
from pathlib import Path
from typing import Any
@@ -13,8 +14,8 @@ import tests.data
@pytest.fixture(autouse=True)
def load_test_config():
- pth = Path(tests.data.__path__[0]) / "settings_tests.yml"
- config_module.config.load_from_yaml(pth)
+ with resources.path(tests.data.common, "settings_tests.yml") as path:
+ config_module.config.load_from_yaml(path)
@pytest.fixture
diff --git a/tests/test_nvd_dataset_builder.py b/tests/test_nvd_dataset_builder.py
index d887596e..0e71764c 100644
--- a/tests/test_nvd_dataset_builder.py
+++ b/tests/test_nvd_dataset_builder.py
@@ -4,7 +4,7 @@ from typing import Any
import pytest
-import tests.data
+import tests.data.common
from sec_certs.configuration import config
from sec_certs.dataset import CCDataset, CPEDataset, CVEDataset
from sec_certs.utils.nvd_dataset_builder import (
@@ -17,7 +17,7 @@ from sec_certs.utils.nvd_dataset_builder import (
@pytest.fixture(autouse=True)
def load_test_config():
- with resources.path(tests.data, "settings_tests.yml") as path:
+ with resources.path(tests.data.common, "settings_tests.yml") as path:
config.load_from_yaml(path)