#[cfg(test)]
mod tests {
use std::{
collections::HashSet,
net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr},
};
use aex::connection::{node::Node, protocol::Protocol, scope::NetworkScope};
#[test]
fn test_node_new_and_from_addr() {
let id = vec![1, 2, 3];
let addr: SocketAddr = "1.1.1.1:8080".parse().unwrap();
let node = Node::from_addr(addr, Some(2), Some(id.clone()));
assert_eq!(node.port, 8080);
assert_eq!(node.version, 2);
assert_eq!(node.id, id);
assert_eq!(node.ips.len(), 1);
assert_eq!(node.ips[0].0, NetworkScope::Extranet);
let node_default = Node::from_addr(addr, None, None);
assert_eq!(node_default.version, 1);
assert_eq!(node_default.id.len(), 32);
}
#[test]
fn test_node_protocols() {
let node = Node::from_addr("127.0.0.1:9000".parse().unwrap(), None, None);
let defaults = Node::default_protocols();
assert!(defaults.contains(&Protocol::Tcp));
assert!(node.protocols.contains(&Protocol::Http));
let mut custom_set = HashSet::new();
custom_set.insert(Protocol::Tcp);
let node = node.with_protocols(custom_set);
assert_eq!(node.protocols.len(), 1);
}
#[test]
fn test_node_ip_filtering() {
let mut node = Node::from_addr("127.0.0.1:80".parse().unwrap(), None, None);
node.ips.clear();
node.add_observed_ip(
NetworkScope::Intranet,
IpAddr::V4(Ipv4Addr::new(10, 0, 0, 1)),
);
node.add_observed_ip(
NetworkScope::Intranet,
IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)),
);
node.add_observed_ip(
NetworkScope::Extranet,
IpAddr::V4(Ipv4Addr::new(8, 8, 8, 8)),
);
node.add_observed_ip(
NetworkScope::Extranet,
IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1)),
);
let len_before = node.ips.len();
node.add_observed_ip(
NetworkScope::Intranet,
IpAddr::V4(Ipv4Addr::new(10, 0, 0, 1)),
);
assert_eq!(node.ips.len(), len_before);
assert_eq!(node.get_all().len(), 4);
assert_eq!(node.get_intranet_v4().len(), 1);
assert_eq!(node.get_intranet_v6().len(), 1);
assert_eq!(node.get_extranet_ips_v4().len(), 1);
assert_eq!(node.get_extranet_ips_v6().len(), 1);
assert_eq!(node.get_intranet_ips().len(), 2);
assert_eq!(node.get_extranet_ips().len(), 2);
}
#[test]
fn test_from_system() {
let node = Node::from_system(1234, vec![0; 32], 1);
assert_eq!(node.port, 1234);
println!("Detected IPs: {:?}", node.ips);
}
}