From 06cd54f39e6d4b69c09ecf77ad2e6d9fbf73628f Mon Sep 17 00:00:00 2001 From: Aaron Weiss Date: Mon, 22 Dec 2014 17:24:56 -0500 Subject: [PATCH] Added CTCP response tests. --- src/server/mod.rs | 102 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/src/server/mod.rs b/src/server/mod.rs index 03d2423..c6c50c9 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -200,7 +200,7 @@ impl IrcServer { "FINGER" => self.send_ctcp(resp, format!("FINGER :{} ({})", self.config.real_name(), self.config.username())[]), - "VERSION" => self.send_ctcp(resp, "VERSION irc v0.6.0 Rust"), + "VERSION" => self.send_ctcp(resp, "VERSION irc:git:Rust"), "SOURCE" => { self.send_ctcp(resp, "SOURCE https://github.com/aatxe/irc"); self.send_ctcp(resp, "SOURCE"); @@ -298,6 +298,7 @@ mod test { alt_nicks: Some(vec![format!("test2")]), server: Some(format!("irc.test.net")), channels: Some(vec![format!("#test"), format!("#test2")]), + user_info: Some(format!("Testing.")), .. Default::default() } } @@ -447,4 +448,103 @@ mod test { levels.retain(|l| exp.access_levels().contains(l)); assert_eq!(levels.len(), exp.access_levels().len()); } + + #[test] + #[cfg(feature = "ctcp")] + fn finger_response() { + let value = "test!test@test PRIVMSG test :\u{001}FINGER\u{001}\r\n"; + let server = IrcServer::from_connection(test_config(), Connection::new( + MemReader::new(value.as_bytes().to_vec()), NullWriter + )); + for message in server.iter() { + println!("{}", message); + } + assert_eq!(get_server_value(server)[], "NOTICE test :\u{001}FINGER :test (test)\u{001}\ + \r\n"); + } + + #[test] + #[cfg(feature = "ctcp")] + fn finger_response() { + let value = "test!test@test PRIVMSG test :\u{001}FINGER\u{001}\r\n"; + let server = IrcServer::from_connection(test_config(), Connection::new( + MemReader::new(value.as_bytes().to_vec()), MemWriter::new() + )); + for message in server.iter() { + println!("{}", message); + } + assert_eq!(get_server_value(server)[], "NOTICE test :\u{001}FINGER :test (test)\u{001}\ + \r\n"); + } + + #[test] + #[cfg(feature = "ctcp")] + fn version_response() { + let value = "test!test@test PRIVMSG test :\u{001}VERSION\u{001}\r\n"; + let server = IrcServer::from_connection(test_config(), Connection::new( + MemReader::new(value.as_bytes().to_vec()), MemWriter::new() + )); + for message in server.iter() { + println!("{}", message); + } + assert_eq!(get_server_value(server)[], "NOTICE test :\u{001}VERSION irc:git:Rust\u{001}\ + \r\n"); + } + + #[test] + #[cfg(feature = "ctcp")] + fn source_response() { + let value = "test!test@test PRIVMSG test :\u{001}SOURCE\u{001}\r\n"; + let server = IrcServer::from_connection(test_config(), Connection::new( + MemReader::new(value.as_bytes().to_vec()), MemWriter::new() + )); + for message in server.iter() { + println!("{}", message); + } + assert_eq!(get_server_value(server)[], + "NOTICE test :\u{001}SOURCE https://github.com/aatxe/irc\u{001}\r\n\ + NOTICE test :\u{001}SOURCE\u{001}\r\n"); + } + + #[test] + #[cfg(feature = "ctcp")] + fn ctcp_ping_response() { + let value = "test!test@test PRIVMSG test :\u{001}PING test\u{001}\r\n"; + let server = IrcServer::from_connection(test_config(), Connection::new( + MemReader::new(value.as_bytes().to_vec()), MemWriter::new() + )); + for message in server.iter() { + println!("{}", message); + } + assert_eq!(get_server_value(server)[], "NOTICE test :\u{001}PING test\u{001}\r\n"); + } + + #[test] + #[cfg(feature = "ctcp")] + fn time_response() { + let value = "test!test@test PRIVMSG test :\u{001}TIME\u{001}\r\n"; + let server = IrcServer::from_connection(test_config(), Connection::new( + MemReader::new(value.as_bytes().to_vec()), MemWriter::new() + )); + for message in server.iter() { + println!("{}", message); + } + let val = get_server_value(server); + assert!(val.starts_with("NOTICE test :\u{001}TIME :")); + assert!(val.ends_with("\u{001}\r\n")); + } + + #[test] + #[cfg(feature = "ctcp")] + fn user_info_response() { + let value = "test!test@test PRIVMSG test :\u{001}USERINFO\u{001}\r\n"; + let server = IrcServer::from_connection(test_config(), Connection::new( + MemReader::new(value.as_bytes().to_vec()), MemWriter::new() + )); + for message in server.iter() { + println!("{}", message); + } + assert_eq!(get_server_value(server)[], "NOTICE test :\u{001}USERINFO :Testing.\u{001}\ + \r\n"); + } }