import json from gridguard_secure_attested_cross_domain_e import EnergiBridge, SecurityContract, ContractRegistry, DERAdapter, WaterPumpAdapter from gridguard_secure_attested_cross_domain_e.energi_bridge import LocalProblem, SharedVariable, PlanDelta def test_energi_bridge_contract_and_adapter_registration(): bridge = EnergiBridge() contract = SecurityContract(contract_id="contract-1", version=1, rules={"exposure": "private"}) bridge.register_contract(contract) # register adapters bridge.register_adapter("DER-Adapter-1", contract.contract_id, data_schema={"type": "object"}) bridge.register_adapter("Water-Adapter-1", contract.contract_id, data_schema={"type": "object"}) # basic state update through adapters der = DERAdapter() pump = WaterPumpAdapter() assert der.attest() is True assert pump.attest() is True # local problem / shared variable update sp = SharedVariable(name="grid_load", version=1, value=0.0, exposed=True) bridge.update_state(sp) assert bridge.get_state("grid_load").value == 0.0 def test_delta_sync_with_valid_proof(): bridge = EnergiBridge() plan = PlanDelta( delta_id="delta-1", source_domain="site-A", target_domain="site-B", changes={"grid_load": 0.75}, timestamp=0.0, cryptographic_tag="tag-1", ) nonce = "nonce-123" proof = bridge.generate_proof(plan.changes, nonce) ok = bridge.delta_sync(plan, proof, nonce) assert ok is True def test_delta_sync_with_invalid_proof(): bridge = EnergiBridge() plan = PlanDelta( delta_id="delta-2", source_domain="site-A", target_domain="site-B", changes={"grid_load": 0.25}, timestamp=0.0, cryptographic_tag="tag-2", ) nonce = "nonce-999" bad_proof = bridge.generate_proof(plan.changes, nonce) # mutate plan data to fail verification plan.changes["grid_load"] = 0.99 ok = bridge.delta_sync(plan, bad_proof, nonce) assert ok is False