Add unknown_whitelist_manager/tests/test_core.py

This commit is contained in:
Mika 2026-02-11 12:51:46 +00:00
parent 9b99ca42f4
commit 27179d7b65

View file

@ -0,0 +1,60 @@
import json
import tempfile
from pathlib import Path
import pytest
from unknown_whitelist_manager.core import update_whitelist
@pytest.fixture
def temp_whitelist_file():
with tempfile.TemporaryDirectory() as tmpdir:
path = Path(tmpdir) / "whitelist.json"
# initial whitelist with one entry
initial_data = [{"entry": "bereits bekannter Fehler"}]
path.write_text(json.dumps(initial_data, ensure_ascii=False))
yield path
def test_add_new_entry(temp_whitelist_file):
new_entry = {"entry": "fehlendes Output-File"}
update_whitelist(str(temp_whitelist_file), new_entry)
with open(temp_whitelist_file, encoding="utf-8") as f:
data = json.load(f)
assert any(e["entry"] == "fehlendes Output-File" for e in data), "Neuer Eintrag sollte hinzugefügt werden"
assert len(data) == 2, "Whitelist sollte nun zwei Einträge enthalten"
def test_add_duplicate_entry_does_not_duplicate(temp_whitelist_file):
duplicate_entry = {"entry": "bereits bekannter Fehler"}
update_whitelist(str(temp_whitelist_file), duplicate_entry)
with open(temp_whitelist_file, encoding="utf-8") as f:
data = json.load(f)
entries = [e["entry"] for e in data]
assert entries.count("bereits bekannter Fehler") == 1, "Doppelte Einträge dürfen nicht entstehen"
def test_invalid_file_path_raises(tmp_path):
non_existing = tmp_path / "non_existing.json"
new_entry = {"entry": "fehlerhafte Datei"}
# file should be created with this new entry (graceful default)
update_whitelist(str(non_existing), new_entry)
with open(non_existing, encoding="utf-8") as f:
content = json.load(f)
assert content == [new_entry], "Neue Datei sollte korrekt erstellt werden"
def test_input_validation_requires_entry_field(temp_whitelist_file):
invalid_entry = {"wrong_field": "oops"}
with pytest.raises((AssertionError, KeyError, ValueError)):
update_whitelist(str(temp_whitelist_file), invalid_entry)