update
This commit is contained in:
82
APP/backup 24.2.26/_test_consent.py
Normal file
82
APP/backup 24.2.26/_test_consent.py
Normal file
@@ -0,0 +1,82 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Test-Skript fuer aza_consent.py"""
|
||||
import os, sys
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from aza_consent import (
|
||||
has_valid_consent, record_consent, record_revoke,
|
||||
get_consent_status, get_user_history, export_consent_log,
|
||||
verify_chain_integrity, _CONSENT_FILE,
|
||||
)
|
||||
|
||||
# Sicherstellen: kein altes Log
|
||||
if _CONSENT_FILE.exists():
|
||||
_CONSENT_FILE.unlink()
|
||||
|
||||
uid = "TestUser"
|
||||
passed = 0
|
||||
failed = 0
|
||||
|
||||
def check(name, condition):
|
||||
global passed, failed
|
||||
if condition:
|
||||
print(f" PASS: {name}")
|
||||
passed += 1
|
||||
else:
|
||||
print(f" FAIL: {name}")
|
||||
failed += 1
|
||||
|
||||
print("=== TEST 1: Ohne Consent -> blockiert ===")
|
||||
check("has_valid_consent == False", not has_valid_consent(uid))
|
||||
|
||||
print("\n=== TEST 2: Consent erteilen -> erlaubt ===")
|
||||
entry = record_consent(uid, source="test")
|
||||
check("action == grant", entry["action"] == "grant")
|
||||
check("has_valid_consent == True", has_valid_consent(uid))
|
||||
check("hash vorhanden", len(entry.get("hash", "")) == 64)
|
||||
|
||||
print("\n=== TEST 3: Widerruf -> blockiert ===")
|
||||
entry2 = record_revoke(uid, source="test")
|
||||
check("action == revoke", entry2["action"] == "revoke")
|
||||
check("has_valid_consent == False", not has_valid_consent(uid))
|
||||
|
||||
print("\n=== TEST 4: Erneuter Consent -> erlaubt ===")
|
||||
record_consent(uid, source="test")
|
||||
check("has_valid_consent == True", has_valid_consent(uid))
|
||||
|
||||
print("\n=== TEST 5: Hash-Kette (Integritaet) ===")
|
||||
ok, errors = verify_chain_integrity()
|
||||
check("Kette intakt", ok)
|
||||
if errors:
|
||||
for e in errors:
|
||||
print(f" {e}")
|
||||
|
||||
print("\n=== TEST 6: Status-Abfrage ===")
|
||||
status = get_consent_status(uid)
|
||||
check("has_consent == True", status["has_consent"])
|
||||
check("version_match == True", status["version_match"])
|
||||
check("last_grant vorhanden", status["last_grant"] is not None)
|
||||
|
||||
print("\n=== TEST 7: Export ===")
|
||||
path = export_consent_log()
|
||||
check("Exportdatei existiert", os.path.exists(path))
|
||||
os.remove(path)
|
||||
|
||||
print("\n=== TEST 8: User-Historie ===")
|
||||
hist = get_user_history(uid)
|
||||
check(f"3 Eintraege (gefunden: {len(hist)})", len(hist) == 3)
|
||||
|
||||
print("\n=== TEST 9: Anderer User -> kein Consent ===")
|
||||
check("User2 hat keinen Consent", not has_valid_consent("User2"))
|
||||
|
||||
# Cleanup
|
||||
if _CONSENT_FILE.exists():
|
||||
_CONSENT_FILE.unlink()
|
||||
|
||||
print(f"\n{'='*50}")
|
||||
print(f"ERGEBNIS: {passed} PASS, {failed} FAIL")
|
||||
if failed == 0:
|
||||
print("ALLE TESTS BESTANDEN")
|
||||
else:
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user