From 27179d7b658c5a510a5315aee9a72fd314522803 Mon Sep 17 00:00:00 2001 From: Mika Date: Wed, 11 Feb 2026 12:51:46 +0000 Subject: [PATCH] Add unknown_whitelist_manager/tests/test_core.py --- unknown_whitelist_manager/tests/test_core.py | 60 ++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 unknown_whitelist_manager/tests/test_core.py diff --git a/unknown_whitelist_manager/tests/test_core.py b/unknown_whitelist_manager/tests/test_core.py new file mode 100644 index 0000000..064d736 --- /dev/null +++ b/unknown_whitelist_manager/tests/test_core.py @@ -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)