Skip to content

Commit 4ebf5fb

Browse files
authored
test(config): add unit tests for ExecutionConfig, NetworkConfig, and RpcConfig (#67)
1 parent b965306 commit 4ebf5fb

File tree

3 files changed

+190
-0
lines changed

3 files changed

+190
-0
lines changed

crates/node/config/src/execution.rs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,58 @@ const fn default_gas_limit() -> u64 {
3333
const fn default_block_time() -> u64 {
3434
DEFAULT_BLOCK_TIME
3535
}
36+
37+
#[cfg(test)]
38+
mod tests {
39+
use super::*;
40+
41+
#[test]
42+
fn test_default_execution_config() {
43+
let config = ExecutionConfig::default();
44+
assert_eq!(config.gas_limit, DEFAULT_GAS_LIMIT);
45+
assert_eq!(config.block_time, DEFAULT_BLOCK_TIME);
46+
}
47+
48+
#[test]
49+
fn test_execution_config_serde_roundtrip() {
50+
let config = ExecutionConfig { gas_limit: 50_000_000, block_time: 5 };
51+
let serialized = serde_json::to_string(&config).expect("serialize");
52+
let deserialized: ExecutionConfig = serde_json::from_str(&serialized).expect("deserialize");
53+
assert_eq!(config, deserialized);
54+
}
55+
56+
#[test]
57+
fn test_execution_config_toml_roundtrip() {
58+
let config = ExecutionConfig { gas_limit: 15_000_000, block_time: 1 };
59+
let serialized = toml::to_string(&config).expect("serialize toml");
60+
let deserialized: ExecutionConfig = toml::from_str(&serialized).expect("deserialize toml");
61+
assert_eq!(config, deserialized);
62+
}
63+
64+
#[test]
65+
fn test_execution_config_serde_defaults() {
66+
let config: ExecutionConfig = serde_json::from_str("{}").expect("deserialize");
67+
assert_eq!(config.gas_limit, DEFAULT_GAS_LIMIT);
68+
assert_eq!(config.block_time, DEFAULT_BLOCK_TIME);
69+
}
70+
71+
#[test]
72+
fn test_execution_config_partial_defaults() {
73+
let config: ExecutionConfig =
74+
serde_json::from_str(r#"{"gas_limit": 10000000}"#).expect("deserialize");
75+
assert_eq!(config.gas_limit, 10_000_000);
76+
assert_eq!(config.block_time, DEFAULT_BLOCK_TIME);
77+
78+
let config: ExecutionConfig =
79+
serde_json::from_str(r#"{"block_time": 10}"#).expect("deserialize");
80+
assert_eq!(config.gas_limit, DEFAULT_GAS_LIMIT);
81+
assert_eq!(config.block_time, 10);
82+
}
83+
84+
#[test]
85+
fn test_execution_config_clone_and_eq() {
86+
let config = ExecutionConfig { gas_limit: 999, block_time: 42 };
87+
assert_eq!(config, config.clone());
88+
assert_ne!(config, ExecutionConfig::default());
89+
}
90+
}

crates/node/config/src/network.rs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,76 @@ impl Default for NetworkConfig {
3535
fn default_listen_addr() -> String {
3636
DEFAULT_LISTEN_ADDR.to_string()
3737
}
38+
39+
#[cfg(test)]
40+
mod tests {
41+
use super::*;
42+
43+
#[test]
44+
fn test_default_network_config() {
45+
let config = NetworkConfig::default();
46+
assert_eq!(config.listen_addr, DEFAULT_LISTEN_ADDR);
47+
assert!(config.dialable_addr.is_none());
48+
assert!(config.bootstrap_peers.is_empty());
49+
}
50+
51+
#[test]
52+
fn test_network_config_serde_roundtrip() {
53+
let config = NetworkConfig {
54+
listen_addr: "127.0.0.1:9000".to_string(),
55+
dialable_addr: Some("1.2.3.4:9000".to_string()),
56+
bootstrap_peers: vec!["peer1:30303".to_string()],
57+
};
58+
let serialized = serde_json::to_string(&config).expect("serialize");
59+
let deserialized: NetworkConfig = serde_json::from_str(&serialized).expect("deserialize");
60+
assert_eq!(config, deserialized);
61+
}
62+
63+
#[test]
64+
fn test_network_config_toml_roundtrip() {
65+
let config = NetworkConfig {
66+
listen_addr: "0.0.0.0:8080".to_string(),
67+
dialable_addr: None,
68+
bootstrap_peers: vec!["node1.example.com:30303".to_string()],
69+
};
70+
let serialized = toml::to_string(&config).expect("serialize toml");
71+
let deserialized: NetworkConfig = toml::from_str(&serialized).expect("deserialize toml");
72+
assert_eq!(config, deserialized);
73+
}
74+
75+
#[test]
76+
fn test_network_config_serde_defaults() {
77+
let config: NetworkConfig = serde_json::from_str("{}").expect("deserialize");
78+
assert_eq!(config.listen_addr, DEFAULT_LISTEN_ADDR);
79+
assert!(config.dialable_addr.is_none());
80+
assert!(config.bootstrap_peers.is_empty());
81+
}
82+
83+
#[test]
84+
fn test_network_config_dialable_addr_skip_serializing_when_none() {
85+
let config = NetworkConfig::default();
86+
let serialized = serde_json::to_string(&config).expect("serialize");
87+
assert!(!serialized.contains("dialable_addr"));
88+
}
89+
90+
#[test]
91+
fn test_network_config_dialable_addr_serialized_when_some() {
92+
let config = NetworkConfig {
93+
dialable_addr: Some("1.2.3.4:30303".to_string()),
94+
..Default::default()
95+
};
96+
let serialized = serde_json::to_string(&config).expect("serialize");
97+
assert!(serialized.contains("dialable_addr"));
98+
}
99+
100+
#[test]
101+
fn test_network_config_clone_and_eq() {
102+
let config = NetworkConfig {
103+
listen_addr: "10.0.0.1:5555".to_string(),
104+
dialable_addr: Some("external.host:5555".to_string()),
105+
bootstrap_peers: vec!["a".to_string()],
106+
};
107+
assert_eq!(config, config.clone());
108+
assert_ne!(config, NetworkConfig::default());
109+
}
110+
}

crates/node/config/src/rpc.rs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,65 @@ fn default_http_addr() -> String {
3333
fn default_ws_addr() -> String {
3434
DEFAULT_WS_ADDR.to_string()
3535
}
36+
37+
#[cfg(test)]
38+
mod tests {
39+
use super::*;
40+
41+
#[test]
42+
fn test_default_rpc_config() {
43+
let config = RpcConfig::default();
44+
assert_eq!(config.http_addr, DEFAULT_HTTP_ADDR);
45+
assert_eq!(config.ws_addr, DEFAULT_WS_ADDR);
46+
}
47+
48+
#[test]
49+
fn test_rpc_config_serde_roundtrip() {
50+
let config = RpcConfig {
51+
http_addr: "127.0.0.1:8080".to_string(),
52+
ws_addr: "127.0.0.1:8081".to_string(),
53+
};
54+
let serialized = serde_json::to_string(&config).expect("serialize");
55+
let deserialized: RpcConfig = serde_json::from_str(&serialized).expect("deserialize");
56+
assert_eq!(config, deserialized);
57+
}
58+
59+
#[test]
60+
fn test_rpc_config_toml_roundtrip() {
61+
let config = RpcConfig {
62+
http_addr: "0.0.0.0:9545".to_string(),
63+
ws_addr: "0.0.0.0:9546".to_string(),
64+
};
65+
let serialized = toml::to_string(&config).expect("serialize toml");
66+
let deserialized: RpcConfig = toml::from_str(&serialized).expect("deserialize toml");
67+
assert_eq!(config, deserialized);
68+
}
69+
70+
#[test]
71+
fn test_rpc_config_serde_defaults() {
72+
let config: RpcConfig = serde_json::from_str("{}").expect("deserialize");
73+
assert_eq!(config.http_addr, DEFAULT_HTTP_ADDR);
74+
assert_eq!(config.ws_addr, DEFAULT_WS_ADDR);
75+
}
76+
77+
#[test]
78+
fn test_rpc_config_partial_defaults() {
79+
let config: RpcConfig =
80+
serde_json::from_str(r#"{"http_addr": "1.2.3.4:8545"}"#).expect("deserialize");
81+
assert_eq!(config.http_addr, "1.2.3.4:8545");
82+
assert_eq!(config.ws_addr, DEFAULT_WS_ADDR);
83+
84+
let config: RpcConfig =
85+
serde_json::from_str(r#"{"ws_addr": "5.6.7.8:8546"}"#).expect("deserialize");
86+
assert_eq!(config.http_addr, DEFAULT_HTTP_ADDR);
87+
assert_eq!(config.ws_addr, "5.6.7.8:8546");
88+
}
89+
90+
#[test]
91+
fn test_rpc_config_clone_and_eq() {
92+
let config =
93+
RpcConfig { http_addr: "custom:1111".to_string(), ws_addr: "custom:2222".to_string() };
94+
assert_eq!(config, config.clone());
95+
assert_ne!(config, RpcConfig::default());
96+
}
97+
}

0 commit comments

Comments
 (0)