From c0f3379a14b41db8f514c4155d3d91906f9c5c1b Mon Sep 17 00:00:00 2001 From: jmwample <8297368+jmwample@users.noreply.github.com> Date: Fri, 22 Mar 2024 16:27:15 -0600 Subject: [PATCH] add a few more tests for coverage --- crates/ptrs/src/helpers.rs | 43 +++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/crates/ptrs/src/helpers.rs b/crates/ptrs/src/helpers.rs index 5cd0b2f..5e29854 100644 --- a/crates/ptrs/src/helpers.rs +++ b/crates/ptrs/src/helpers.rs @@ -418,6 +418,27 @@ mod test { use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + #[test] + fn is_client_from_env() -> Result<(), Error> { + env::remove_var(constants::CLIENT_TRANSPORTS); + env::remove_var(constants::SERVER_TRANSPORTS); + assert!(is_client().is_err()); + + env::set_var(constants::CLIENT_TRANSPORTS, "trebuchet"); + env::remove_var(constants::SERVER_TRANSPORTS); + assert!(is_client().is_ok_and(|is_client| is_client)); + + env::remove_var(constants::CLIENT_TRANSPORTS); + env::set_var(constants::SERVER_TRANSPORTS, "trebuchet1"); + assert!(is_client().is_ok_and(|is_client| !is_client)); + + env::set_var(constants::CLIENT_TRANSPORTS, "trebuchet2"); + env::set_var(constants::SERVER_TRANSPORTS, "trebuchet2"); + assert!(is_client().is_err()); + + Ok(()) + } + #[test] fn statedir() -> Result<(), Error> { // TOR_PT_STATE_LOCATION not set. @@ -571,14 +592,15 @@ mod test { #[test] fn validate_url() -> Result<(), Error> { - // This function validates that a provided url: - // - uses one of `socks4a`, `socks5`, `http` protocols. - // - has a defined host field that DOES NOT require dns resolution. (i.e. an IP address) - // - DOES NOT have defined `path`, `query`, or `fragment` fields. - // - socks5 urls must have non-empty username and password fields. - // - if socks4 urls have a password they must have a username. - - let bad_url = vec!["asdals;kdmma", "http/example.com", "127.0.0.1:8080"]; + env::remove_var(constants::PROXY); + assert!(get_proxy_url().is_ok_and(|url| url.is_none())); + + let bad_url = vec![ + "asdals;kdmma", + "http/example.com", + "127.0.0.1:8080", + "socks5://admin:admin@:9000", // No host + ]; let bad = vec![ "socks5://admin:admin@1.2.3.4:", @@ -637,8 +659,9 @@ mod test { } for trial in good { - let url = Url::parse(trial).unwrap(); - let res = validate_proxy_url(&url); + env::set_var(constants::PROXY, trial); + + let res = get_proxy_url(); assert!( res.is_ok(), "\"{trial}\" unexpectedly failed to validate: {res:?}"