refactor(gossipsub): miscellaneous tidy-up of config tests

- Move helpers to the bottom
- Restructure tests to follow arrange-act-assert
- Only set necessary options on builder for each test

Pull-Request: #3836.
This commit is contained in:
Thomas Eizinger
2023-04-26 19:05:08 +02:00
committed by GitHub
parent e0d74bd78f
commit 71805caaec

View File

@ -893,13 +893,90 @@ mod test {
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};
#[test] #[test]
fn create_thing() { fn create_config_with_message_id_as_plain_function() {
let builder: Config = ConfigBuilder::default() let config = ConfigBuilder::default()
.protocol_id_prefix("purple") .message_id_fn(message_id_plain_function)
.build() .build()
.unwrap(); .unwrap();
dbg!(builder); let result = config.message_id(&get_gossipsub_message());
assert_eq!(result, get_expected_message_id());
}
#[test]
fn create_config_with_message_id_as_closure() {
let config = ConfigBuilder::default()
.message_id_fn(|message: &Message| {
let mut s = DefaultHasher::new();
message.data.hash(&mut s);
let mut v = s.finish().to_string();
v.push('e');
MessageId::from(v)
})
.build()
.unwrap();
let result = config.message_id(&get_gossipsub_message());
assert_eq!(result, get_expected_message_id());
}
#[test]
fn create_config_with_message_id_as_closure_with_variable_capture() {
let captured: char = 'e';
let config = ConfigBuilder::default()
.message_id_fn(move |message: &Message| {
let mut s = DefaultHasher::new();
message.data.hash(&mut s);
let mut v = s.finish().to_string();
v.push(captured);
MessageId::from(v)
})
.build()
.unwrap();
let result = config.message_id(&get_gossipsub_message());
assert_eq!(result, get_expected_message_id());
}
#[test]
fn create_config_with_protocol_id_prefix() {
let protocol_config = ProtocolConfig::new(
&ConfigBuilder::default()
.protocol_id_prefix("purple")
.build()
.unwrap(),
);
let protocol_ids = protocol_config.protocol_info();
assert_eq!(protocol_ids.len(), 2);
assert_eq!(protocol_ids[0].protocol_id, b"/purple/1.1.0".to_vec());
assert_eq!(protocol_ids[0].kind, PeerKind::Gossipsubv1_1);
assert_eq!(protocol_ids[1].protocol_id, b"/purple/1.0.0".to_vec());
assert_eq!(protocol_ids[1].kind, PeerKind::Gossipsub);
}
#[test]
fn create_config_with_custom_protocol_id() {
let protocol_config = ProtocolConfig::new(
&ConfigBuilder::default()
.protocol_id("purple", Version::V1_0)
.build()
.unwrap(),
);
let protocol_ids = protocol_config.protocol_info();
assert_eq!(protocol_ids.len(), 1);
assert_eq!(protocol_ids[0].protocol_id, b"purple".to_vec());
assert_eq!(protocol_ids[0].kind, PeerKind::Gossipsub);
} }
fn get_gossipsub_message() -> Message { fn get_gossipsub_message() -> Message {
@ -924,102 +1001,4 @@ mod test {
v.push('e'); v.push('e');
MessageId::from(v) MessageId::from(v)
} }
#[test]
fn create_config_with_message_id_as_plain_function() {
let builder: Config = ConfigBuilder::default()
.protocol_id_prefix("purple")
.message_id_fn(message_id_plain_function)
.build()
.unwrap();
let result = builder.message_id(&get_gossipsub_message());
assert_eq!(result, get_expected_message_id());
}
#[test]
fn create_config_with_message_id_as_closure() {
let closure = |message: &Message| {
let mut s = DefaultHasher::new();
message.data.hash(&mut s);
let mut v = s.finish().to_string();
v.push('e');
MessageId::from(v)
};
let builder: Config = ConfigBuilder::default()
.protocol_id_prefix("purple")
.message_id_fn(closure)
.build()
.unwrap();
let result = builder.message_id(&get_gossipsub_message());
assert_eq!(result, get_expected_message_id());
}
#[test]
fn create_config_with_message_id_as_closure_with_variable_capture() {
let captured: char = 'e';
let closure = move |message: &Message| {
let mut s = DefaultHasher::new();
message.data.hash(&mut s);
let mut v = s.finish().to_string();
v.push(captured);
MessageId::from(v)
};
let builder: Config = ConfigBuilder::default()
.protocol_id_prefix("purple")
.message_id_fn(closure)
.build()
.unwrap();
let result = builder.message_id(&get_gossipsub_message());
assert_eq!(result, get_expected_message_id());
}
#[test]
fn create_config_with_protocol_id_prefix() {
let builder: Config = ConfigBuilder::default()
.protocol_id_prefix("purple")
.validation_mode(ValidationMode::Anonymous)
.message_id_fn(message_id_plain_function)
.build()
.unwrap();
assert_eq!(builder.protocol_id(), "purple");
assert_eq!(builder.custom_id_version(), &None);
let protocol_config = ProtocolConfig::new(&builder);
let protocol_ids = protocol_config.protocol_info();
assert_eq!(protocol_ids.len(), 2);
assert_eq!(protocol_ids[0].protocol_id, b"/purple/1.1.0".to_vec());
assert_eq!(protocol_ids[0].kind, PeerKind::Gossipsubv1_1);
assert_eq!(protocol_ids[1].protocol_id, b"/purple/1.0.0".to_vec());
assert_eq!(protocol_ids[1].kind, PeerKind::Gossipsub);
}
#[test]
fn create_config_with_custom_protocol_id() {
let builder: Config = ConfigBuilder::default()
.protocol_id("purple", Version::V1_0)
.validation_mode(ValidationMode::Anonymous)
.message_id_fn(message_id_plain_function)
.build()
.unwrap();
assert_eq!(builder.protocol_id(), "purple");
assert_eq!(builder.custom_id_version(), &Some(Version::V1_0));
let protocol_config = ProtocolConfig::new(&builder);
let protocol_ids = protocol_config.protocol_info();
assert_eq!(protocol_ids.len(), 1);
assert_eq!(protocol_ids[0].protocol_id, b"purple".to_vec());
assert_eq!(protocol_ids[0].kind, PeerKind::Gossipsub);
}
} }