21 lines
610 B
Python
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)
|