gridguard-secure-attested-c.../tests/test_basic.py

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