58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
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
|