added unit tests for connect and info cmd

This commit is contained in:
Mitchell 2020-07-26 13:31:21 +01:00
parent 72d297eca6
commit 3c065781ea
1 changed files with 67 additions and 5 deletions

View File

@ -87,11 +87,8 @@ impl<'z> Server<'z> {
self.update_all_clients(new_client); self.update_all_clients(new_client);
}, },
Commands::Info(None) => { Commands::Info(None) => {
let mut params: HashMap<String, String> = HashMap::new(); let params: HashMap<String, String> = [(String::from("name"), self.name.to_string().clone()), (String::from("owner"), self.author.to_string().clone())].iter().cloned().collect();
params.insert(String::from("name"), self.name.to_string().clone()); let command = Commands::Success(Some(params));
params.insert(String::from("owner"), self.author.to_string().clone());
let command = Commands::Info(Some(params));
self.transmit_data(&stream, command.to_string().as_str()); self.transmit_data(&stream, command.to_string().as_str());
}, },
@ -152,3 +149,68 @@ impl<'z> Server<'z> {
} }
} }
} }
#[cfg(test)]
mod tests{
use super::*;
use std::{thread, time};
fn spawn_server(){
thread::spawn(|| {
lazy_static!{
static ref SERVER_NAME: &'static str = "test";
static ref SERVER_ADDRESS: &'static str = "0.0.0.0:6000";
static ref SERVER_AUTHOR: &'static str = "test";
static ref SERVER: Server<'static> = Server::new(&SERVER_NAME, &SERVER_ADDRESS, &SERVER_AUTHOR);
}
SERVER.start();
});
}
#[test]
fn test_connect_command(){
let mut buffer = [0; 1024];
spawn_server();
let millis = time::Duration::from_millis(2000);
thread::sleep(millis);
let mut stream = TcpStream::connect("0.0.0.0:6000").unwrap();
stream.read(&mut buffer).unwrap();
let mut command = Commands::from(&buffer);
let msg = b"!connect: uuid:123456-1234-1234-123456 name:\"alice\" host:\"127.0.0.1\"";
stream.write(msg).unwrap();
stream.read(&mut buffer).unwrap();
command = Commands::from(&buffer);
assert_eq!(command, Commands::Success(None));
}
#[test]
fn test_info_command(){
let mut buffer = [0; 1024];
spawn_server();
let millis = time::Duration::from_millis(2000);
thread::sleep(millis);
let mut stream = TcpStream::connect("0.0.0.0:6000").unwrap();
stream.read(&mut buffer).unwrap();
let mut command = Commands::from(&buffer);
let msg = b"!info:";
stream.write(msg).unwrap();
stream.read(&mut buffer).unwrap();
command = Commands::from(&buffer);
let params: HashMap<String, String> = [(String::from("name"), String::from("test")), (String::from("owner"), String::from("test"))].iter().cloned().collect();
assert_eq!(command, Commands::Success(Some(params)));
}
}