aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorJ08nY2023-04-21 15:09:50 +0200
committerJ08nY2023-04-21 15:09:50 +0200
commit3728142d5fa9ec991b00cf16e9a04384b82f65d6 (patch)
tree26335ceef1dc2b1eb3964aa9f9edf396fef98dd2 /tests
parent33e25a84d19b9d74596e1e588204755873a365ea (diff)
downloadsec-certs-3728142d5fa9ec991b00cf16e9a04384b82f65d6.tar.gz
sec-certs-3728142d5fa9ec991b00cf16e9a04384b82f65d6.tar.zst
sec-certs-3728142d5fa9ec991b00cf16e9a04384b82f65d6.zip
Revert "Deduplicate some CC test fixtures into conftest."
This reverts commit 295de0d238602022575580c8d159ab9df9817912.
Diffstat (limited to 'tests')
-rw-r--r--tests/cc/__init__.py0
-rw-r--r--tests/cc/test_cc_certificate.py87
-rw-r--r--tests/cc/test_cc_dataset.py57
-rw-r--r--tests/cc/test_cc_maintenance_updates.py27
-rw-r--r--tests/cc/test_cc_schemes.py12
5 files changed, 146 insertions, 37 deletions
diff --git a/tests/cc/__init__.py b/tests/cc/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/cc/__init__.py
+++ /dev/null
diff --git a/tests/cc/test_cc_certificate.py b/tests/cc/test_cc_certificate.py
index 35482e8a..2a5ff222 100644
--- a/tests/cc/test_cc_certificate.py
+++ b/tests/cc/test_cc_certificate.py
@@ -1,7 +1,84 @@
import json
+import shutil
+from datetime import date
from pathlib import Path
-from sec_certs.sample.cc import CCCertificate
+import pytest
+import tests.data.cc.analysis
+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])
+
+
+@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)
+ cc_dset = CCDataset.from_json(tmp_dir / "vulnerable_dataset.json")
+ cc_dset.download_all_artifacts()
+ cc_dset.convert_all_pdfs()
+
+ 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):
@@ -41,18 +118,18 @@ def test_cert_link_escaping(cert_one: CCCertificate):
)
-def test_cert_to_json(cert_two: CCCertificate, tmp_path: Path, cert_data_dir: Path):
+def test_cert_to_json(cert_two: CCCertificate, tmp_path: Path, data_dir: Path):
cert_two.to_json(tmp_path / "crt_two.json")
with (tmp_path / "crt_two.json").open("r") as handle:
data = json.load(handle)
- with (cert_data_dir / "fictional_cert.json").open("r") as handle:
+ with (data_dir / "fictional_cert.json").open("r") as handle:
template_data = json.load(handle)
assert data == template_data
-def test_cert_from_json(cert_two: CCCertificate, cert_data_dir: Path):
- crt = CCCertificate.from_json(cert_data_dir / "fictional_cert.json")
+def test_cert_from_json(cert_two: CCCertificate, data_dir: Path):
+ crt = CCCertificate.from_json(data_dir / "fictional_cert.json")
assert cert_two == crt
diff --git a/tests/cc/test_cc_dataset.py b/tests/cc/test_cc_dataset.py
index 43749494..39fea62a 100644
--- a/tests/cc/test_cc_dataset.py
+++ b/tests/cc/test_cc_dataset.py
@@ -1,16 +1,51 @@
import json
import shutil
+from datetime import date
from pathlib import Path
from tempfile import TemporaryDirectory
import pytest
+import tests.data.cc.dataset
from sec_certs import constants
from sec_certs.dataset.cc import CCDataset
from sec_certs.sample.cc import CCCertificate
-def test_download_and_convert_pdfs(toy_dataset: CCDataset, dataset_data_dir: Path):
+@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,
+ )
+
+
+@pytest.fixture
+def toy_dataset(data_dir: Path) -> CCDataset:
+ return CCDataset.from_json(data_dir / "toy_dataset.json")
+
+
+def test_download_and_convert_pdfs(toy_dataset: CCDataset, data_dir: Path):
template_report_pdf_hashes = {
"309ac2fd7f2dcf17": "774c41fbba980191ca40ae610b2f61484c5997417b3325b6fd68b345173bde52",
"8cf86948f02f047d": "533a5995ef8b736cc48cfda30e8aafec77d285511471e0e5a9e8007c8750203a",
@@ -49,8 +84,8 @@ def test_download_and_convert_pdfs(toy_dataset: CCDataset, dataset_data_dir: Pat
assert cert.state.report_txt_path.exists()
assert cert.state.st_txt_path.exists()
- template_report_txt_path = dataset_data_dir / "report_309ac2fd7f2dcf17.txt"
- template_st_txt_path = dataset_data_dir / "target_309ac2fd7f2dcf17.txt"
+ template_report_txt_path = data_dir / "report_309ac2fd7f2dcf17.txt"
+ template_st_txt_path = data_dir / "target_309ac2fd7f2dcf17.txt"
assert (
abs(toy_dataset["309ac2fd7f2dcf17"].state.st_txt_path.stat().st_size - template_st_txt_path.stat().st_size)
< 1000
@@ -64,13 +99,13 @@ def test_download_and_convert_pdfs(toy_dataset: CCDataset, dataset_data_dir: Pat
)
-def test_dataset_to_json(toy_dataset: CCDataset, dataset_data_dir: Path, tmp_path: Path):
+def test_dataset_to_json(toy_dataset: CCDataset, data_dir: Path, tmp_path: Path):
toy_dataset.to_json(tmp_path / "dset.json")
with (tmp_path / "dset.json").open("r") as handle:
data = json.load(handle)
- with (dataset_data_dir / "toy_dataset.json").open("r") as handle:
+ with (data_dir / "toy_dataset.json").open("r") as handle:
template_data = json.load(handle)
del data["timestamp"]
@@ -78,8 +113,8 @@ def test_dataset_to_json(toy_dataset: CCDataset, dataset_data_dir: Path, tmp_pat
assert data == template_data
-def test_dataset_from_json(toy_dataset: CCDataset, dataset_data_dir: Path):
- assert toy_dataset == CCDataset.from_json(dataset_data_dir / "toy_dataset.json")
+def test_dataset_from_json(toy_dataset: CCDataset, data_dir: Path):
+ assert toy_dataset == CCDataset.from_json(data_dir / "toy_dataset.json")
def test_build_empty_dataset():
@@ -93,12 +128,12 @@ def test_build_empty_dataset():
assert not dset.state.certs_analyzed
-def test_build_dataset(dataset_data_dir: Path, cert_one: CCCertificate, toy_dataset: CCDataset):
+def test_build_dataset(data_dir: Path, crt: CCCertificate, toy_dataset: CCDataset):
with TemporaryDirectory() as tmp_dir:
dataset_path = Path(tmp_dir)
(dataset_path / "web").mkdir()
- shutil.copyfile(dataset_data_dir / "cc_products_active.csv", dataset_path / "web" / "cc_products_active.csv")
- shutil.copyfile(dataset_data_dir / "cc_products_active.html", dataset_path / "web" / "cc_products_active.html")
+ shutil.copyfile(data_dir / "cc_products_active.csv", dataset_path / "web" / "cc_products_active.csv")
+ shutil.copyfile(data_dir / "cc_products_active.html", dataset_path / "web" / "cc_products_active.html")
dset = CCDataset({}, dataset_path, "sample_dataset", "sample dataset description")
dset.get_certs_from_web(
@@ -107,7 +142,7 @@ def test_build_dataset(dataset_data_dir: Path, cert_one: CCCertificate, toy_data
assert len(list(dataset_path.iterdir())) == 0
assert len(dset) == 3
- assert cert_one in dset
+ assert crt 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 cf7a1644..254df45c 100644
--- a/tests/cc/test_cc_maintenance_updates.py
+++ b/tests/cc/test_cc_maintenance_updates.py
@@ -2,17 +2,26 @@ import json
from pathlib import Path
import pytest
+import tests.data.cc.dataset
-from sec_certs.dataset.cc import CCDatasetMaintenanceUpdates
+from sec_certs.dataset import CCDataset, 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")
+
+
@pytest.fixture
-def mu_dset(dataset_data_dir: Path, tmp_path_factory) -> CCDatasetMaintenanceUpdates:
+def mu_dset(data_dir: Path, tmp_path_factory) -> CCDatasetMaintenanceUpdates:
tmp_dir = tmp_path_factory.mktemp("mu_dset")
- dset = CCDatasetMaintenanceUpdates.from_json(
- dataset_data_dir / "auxiliary_datasets/maintenances/maintenance_updates.json"
- )
+ dset = CCDatasetMaintenanceUpdates.from_json(data_dir / "auxiliary_datasets/maintenances/maintenance_updates.json")
dset.copy_dataset(tmp_dir)
return dset
@@ -43,13 +52,13 @@ def test_download_artifacts(mu_dset: CCDatasetMaintenanceUpdates):
assert mu.state.st_pdf_hash == "d42e4364d037ba742fcd4050a9a84d0e6300f93eb68bcfe8c61f72c429c9ceca"
-def test_dataset_to_json(mu_dset: CCDatasetMaintenanceUpdates, dataset_data_dir: Path, tmp_path: Path):
+def test_dataset_to_json(mu_dset: CCDatasetMaintenanceUpdates, data_dir: Path, tmp_path: Path):
mu_dset.to_json(tmp_path / "dset.json")
with (tmp_path / "dset.json").open("r") as handle:
data = json.load(handle)
- with (dataset_data_dir / "auxiliary_datasets/maintenances/maintenance_updates.json").open("r") as handle:
+ with (data_dir / "auxiliary_datasets/maintenances/maintenance_updates.json").open("r") as handle:
template_data = json.load(handle)
del template_data["timestamp"]
@@ -57,9 +66,9 @@ def test_dataset_to_json(mu_dset: CCDatasetMaintenanceUpdates, dataset_data_dir:
assert data == template_data
-def test_dataset_from_json(mu_dset: CCDatasetMaintenanceUpdates, dataset_data_dir: Path):
+def test_dataset_from_json(mu_dset: CCDatasetMaintenanceUpdates, data_dir: Path):
assert mu_dset == CCDatasetMaintenanceUpdates.from_json(
- dataset_data_dir / "auxiliary_datasets/maintenances/maintenance_updates.json"
+ data_dir / "auxiliary_datasets/maintenances/maintenance_updates.json"
)
diff --git a/tests/cc/test_cc_schemes.py b/tests/cc/test_cc_schemes.py
index 939f77b5..24467709 100644
--- a/tests/cc/test_cc_schemes.py
+++ b/tests/cc/test_cc_schemes.py
@@ -19,7 +19,6 @@ def absolute_urls(results):
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_australia():
ineval = CCSchemes.get_australia_in_evaluation()
assert len(ineval) != 0
@@ -59,7 +58,6 @@ def test_bsi():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_india():
certified = CCSchemes.get_india_certified()
assert len(certified) != 0
@@ -70,7 +68,6 @@ def test_india():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_italy():
certified = CCSchemes.get_italy_certified()
assert len(certified) != 0
@@ -81,7 +78,6 @@ def test_italy():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_japan():
certified = CCSchemes.get_japan_certified()
assert len(certified) != 0
@@ -95,7 +91,6 @@ def test_japan():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_malaysia():
certified = CCSchemes.get_malaysia_certified()
assert len(certified) != 0
@@ -106,7 +101,6 @@ def test_malaysia():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_netherlands():
certified = CCSchemes.get_netherlands_certified()
assert len(certified) != 0
@@ -117,7 +111,6 @@ def test_netherlands():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_norway():
certified = CCSchemes.get_norway_certified()
assert len(certified) != 0
@@ -128,7 +121,6 @@ def test_norway():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_korea():
certified = CCSchemes.get_korea_certified()
assert len(certified) != 0
@@ -139,7 +131,6 @@ def test_korea():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_singapore():
certified = CCSchemes.get_singapore_certified()
assert len(certified) != 0
@@ -153,7 +144,6 @@ def test_singapore():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_spain():
certified = CCSchemes.get_spain_certified()
assert len(certified) != 0
@@ -174,7 +164,6 @@ def test_sweden():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_turkey():
certified = CCSchemes.get_turkey_certified()
assert len(certified) != 0
@@ -182,7 +171,6 @@ def test_turkey():
@pytest.mark.xfail(reason="May fail due to server errors.", raises=RequestException)
-@pytest.mark.slow
def test_usa():
certified = CCSchemes.get_usa_certified()
assert len(certified) != 0