porta-rs 0.1.1

Zero-trust CGNAT bypass via WireGuard tunnel
#[cfg(test)]
mod tests {
    use crate::config::{PortMapping, Protocol};

    #[test]
    fn test_port_mapping_serialization() {
        let mapping = PortMapping {
            id: "test-port".to_string(),
            local_port: 8080,
            remote_port: 80,
            protocol: Protocol::Tcp,
            description: "Test web server".to_string(),
            enabled: true,
        };

        let toml = toml::to_string_pretty(&mapping).unwrap();
        assert!(toml.contains("test-port"));
        assert!(toml.contains("8080"));
        assert!(toml.contains("tcp"));

        let deserialized: PortMapping = toml::from_str(&toml).unwrap();
        assert_eq!(deserialized.id, "test-port");
        assert_eq!(deserialized.local_port, 8080);
        assert_eq!(deserialized.remote_port, 80);
        assert_eq!(deserialized.protocol, Protocol::Tcp);
    }

    #[test]
    fn test_protocol_from_str() {
        assert_eq!("tcp".parse::<Protocol>().unwrap(), Protocol::Tcp);
        assert_eq!("udp".parse::<Protocol>().unwrap(), Protocol::Udp);
        assert!("xyz".parse::<Protocol>().is_err());
    }

    #[test]
    fn test_protocol_display() {
        assert_eq!(Protocol::Tcp.to_string(), "tcp");
        assert_eq!(Protocol::Udp.to_string(), "udp");
    }
}