import os import sys import pathlib ROOT = pathlib.Path(__file__).resolve().parents[1] SRC = str(ROOT / "src") sys.path.insert(0, SRC) from idea168_crisispulse_federated_resource.core.privacy import PrivacyBudget, secure_aggregate def test_privacy_budget_and_aggregate(): budget = PrivacyBudget(per_entry_budget=5) data = {"camp1": 3, "camp2": 4} masked = secure_aggregate(data, budget) assert all(v <= 5 for v in masked.values()) # second call uses remaining budgets more = {"camp1": 3, "camp2": 2} masked2 = secure_aggregate(more, budget) assert isinstance(masked2, dict)