mercurymesh-privacy-preserv.../tests/test_contracts.py

40 lines
1.1 KiB
Python

import pytest
from datetime import datetime
from mercurymesh.contracts import MarketSignal, AggregatedSignal, PlanDelta, PrivacyBudget, AuditLog, ProvenanceProof
def test_market_signal_roundtrip():
ms = MarketSignal(
venue_id="venue-a",
symbol="ABC",
timestamp=datetime.utcnow(),
features={"liquidity_proxy": 1.0, "order_flow_intensity": 0.5},
)
assert ms.venue_id == "venue-a"
assert ms.symbol == "ABC"
assert isinstance(ms.features, dict)
def test_aggregated_signal_schema():
agg = AggregatedSignal(
venues=["venue-a", "venue-b"],
feature_vector={"liquidity_proxy": 0.8, "volatility_proxy": 0.2},
privacy_budget_used=0.1,
nonce="nonce-123",
merkle_proof=None,
)
assert "liquidity_proxy" in agg.feature_vector
def test_provenance_and_audit():
prov = ProvenanceProof(
venue_id="venue-a",
timestamp=datetime.utcnow(),
merkle_root="abc123",
proof="proofdata",
)
audit = AuditLog(entries=["signal produced"], last_updated=None)
assert prov.venue_id == "venue-a"
assert isinstance(audit.entries, list)