diff --git a/zebra-network/src/peer_set/candidate_set/tests.rs b/zebra-network/src/peer_set/candidate_set/tests.rs index b834868f..af9a66f5 100644 --- a/zebra-network/src/peer_set/candidate_set/tests.rs +++ b/zebra-network/src/peer_set/candidate_set/tests.rs @@ -1,3 +1,4 @@ //! [`CandidateSet`] tests. +mod prop; mod vectors; diff --git a/zebra-network/src/peer_set/candidate_set/tests/prop.rs b/zebra-network/src/peer_set/candidate_set/tests/prop.rs new file mode 100644 index 00000000..e35139cc --- /dev/null +++ b/zebra-network/src/peer_set/candidate_set/tests/prop.rs @@ -0,0 +1,23 @@ +use proptest::{collection::vec, prelude::*}; + +use zebra_chain::serialization::DateTime32; + +use super::super::validate_addrs; +use crate::types::MetaAddr; + +proptest! { + /// Test that validated gossiped peers never have a `last_seen` time that's in the future. + #[test] + fn no_last_seen_times_are_in_the_future( + gossiped_peers in vec(MetaAddr::gossiped_strategy(), 1..10), + last_seen_limit in any::(), + ) { + zebra_test::init(); + + let validated_peers = validate_addrs(gossiped_peers, last_seen_limit); + + for peer in validated_peers { + prop_assert![peer.get_last_seen() <= last_seen_limit]; + } + } +}