From 8b3a42536696f62b72a0de130d8608d0d5a4f67b Mon Sep 17 00:00:00 2001 From: Alex Ruzenhack Date: Thu, 18 Jan 2024 00:40:17 +0000 Subject: [PATCH] fix: legacy node data without best_block property - Fix by making the best_block property Optional. --- domain/network/network.py | 2 +- tests/unit/gateways/test_node_gateway.py | 25 +++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/domain/network/network.py b/domain/network/network.py index 49bf015..1b56ed8 100644 --- a/domain/network/network.py +++ b/domain/network/network.py @@ -150,7 +150,7 @@ class AggregatedNode: uptime: float state: NodeState latest_timestamp: int - best_block: BlockInfo + best_block: Optional[BlockInfo] entrypoints: List[str] connected_peers: List[str] diff --git a/tests/unit/gateways/test_node_gateway.py b/tests/unit/gateways/test_node_gateway.py index d1bbdf6..98d07d0 100644 --- a/tests/unit/gateways/test_node_gateway.py +++ b/tests/unit/gateways/test_node_gateway.py @@ -3,7 +3,7 @@ import pytest from gateways.node_gateway import NodeGateway -from tests.fixtures.network_factory import NetworkFactory +from tests.fixtures.network_factory import AggregatedNodeFactory, NetworkFactory from tests.fixtures.node_factory import NodeFactory @@ -114,6 +114,29 @@ def test_get_network(self, cache_client): assert result.peers[0].id == network.peers[0].id assert result.nodes[0].id == network.nodes[0].id + def test_get_network_no_best_block(self, cache_client): + """Test legacy node data stored in the cache.""" + + network = NetworkFactory(nodes=[AggregatedNodeFactory()]) + network_dict = network.to_dict() + + # remove best_block as property from each node + for each_node in network_dict.get("nodes"): + each_node.pop("best_block") + + cache_client.get = MagicMock(return_value=network_dict) + + gateway = NodeGateway(cache_client=cache_client) + + result = gateway.get_network() + + cache_client.get.assert_called_once_with("network", "v1") + + assert result.peers[0].id == network.peers[0].id + assert result.nodes[0].id == network.nodes[0].id + assert hasattr(result.nodes[0], "best_block") + assert result.nodes[0].best_block is None + def test_get_no_network(self, cache_client): cache_client.get = MagicMock(return_value=None)