diff --git a/src/client/config.rs b/src/client/config.rs index 0bd5cb1..f08220c 100644 --- a/src/client/config.rs +++ b/src/client/config.rs @@ -21,11 +21,20 @@ impl ServerConfig { ServerConfig { auto: true, ports: HashMap::new() } } + #[cfg(test)] + pub fn set_auto(&mut self, auto: bool) { + self.auto = auto; + } + #[cfg(test)] pub fn insert(&mut self, port: u16, config: PortConfig) { self.ports.insert(port, config); } + pub fn auto(&self) -> bool { + self.auto + } + pub fn iter(&self) -> hash_map::Iter { self.ports.iter() } @@ -33,13 +42,6 @@ impl ServerConfig { pub fn contains_key(&self, port: u16) -> bool { self.ports.contains_key(&port) } - - pub fn get(&self, port: u16) -> PortConfig { - match self.ports.get(&port) { - None => PortConfig { enabled: self.auto, description: None }, - Some(c) => c.clone(), - } - } } #[derive(Debug)] diff --git a/src/client/ui.rs b/src/client/ui.rs index d8a3751..7fb0968 100644 --- a/src/client/ui.rs +++ b/src/client/ui.rs @@ -95,9 +95,17 @@ struct Listener { } impl Listener { - pub fn from_desc(socks_port: Option, desc: PortDesc) -> Listener { + pub fn from_desc( + socks_port: Option, + desc: PortDesc, + enabled: bool, + ) -> Listener { let mut listener = Listener { - state: State::Enabled.boxed(), + state: if enabled { + State::Enabled.boxed() + } else { + State::Disabled.boxed() + }, config: None, stop: None, desc: Some(desc), @@ -599,7 +607,11 @@ impl UI { assert!(!self.config.contains_key(port_desc.port)); self.ports.insert( port_desc.port, - Listener::from_desc(self.socks_port, port_desc), + Listener::from_desc( + self.socks_port, + port_desc, + self.config.auto(), + ), ); } } @@ -1103,4 +1115,24 @@ mod tests { drop(sender); } + + #[test] + fn port_default_disabled_respected() { + let (sender, receiver) = mpsc::channel(64); + let mut config = ServerConfig::default(); + config.set_auto(false); + + let mut ui = UI::new(receiver, config); + + ui.handle_internal_event(Some(UIEvent::Ports(vec![PortDesc { + port: 8080, + desc: "python3".to_string(), + }]))); + + let listener = ui.ports.get(&8080).unwrap(); + assert_eq!(listener.state(), State::Disabled); + assert_eq!(listener.description(), "python3"); + + drop(sender); + } }