idea168-crisispulse-federat.../tests/test_privacy.py

21 lines
610 B
Python

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)