From 133ebf8888f0da9b02664651c2aa07c2f7955a0b Mon Sep 17 00:00:00 2001 From: vagola Date: Mon, 30 Dec 2019 22:38:43 +0300 Subject: [PATCH] Finished with tests for client bound login packets --- protocol/src/login.rs | 146 +++++++++++++++++- .../test/packet/login/encryption_request.dat | 3 + .../test/packet/login/login_disconnect.dat | 1 + .../packet/login/login_plugin_request.dat | 1 + .../packet/login/login_set_compression.dat | 1 + protocol/test/packet/login/login_success.dat | 1 + 6 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 protocol/test/packet/login/encryption_request.dat create mode 100644 protocol/test/packet/login/login_disconnect.dat create mode 100644 protocol/test/packet/login/login_plugin_request.dat create mode 100644 protocol/test/packet/login/login_set_compression.dat create mode 100644 protocol/test/packet/login/login_success.dat diff --git a/protocol/src/login.rs b/protocol/src/login.rs index 8e15b41..479aedb 100644 --- a/protocol/src/login.rs +++ b/protocol/src/login.rs @@ -395,10 +395,13 @@ impl PacketParser for LoginPluginRequest { #[cfg(test)] mod tests { - use crate::login::LoginStart; + use crate::chat::{MessageBuilder, Payload}; + use crate::login::{EncryptionRequest, LoginDisconnect, LoginPluginRequest, SetCompression}; use crate::login::{EncryptionResponse, LoginPluginResponse}; + use crate::login::{LoginStart, LoginSuccess}; use crate::PacketParser; use std::io::Cursor; + use uuid::Uuid; #[test] fn test_login_start_packet_encode() { @@ -483,4 +486,145 @@ mod tests { vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ); } + + #[test] + fn test_login_disconnect_encode() { + let login_disconnect = LoginDisconnect { + reason: MessageBuilder::builder(Payload::text("Message")).build(), + }; + + let mut vec = Vec::new(); + login_disconnect.encode(&mut vec).unwrap(); + + assert_eq!( + vec, + include_bytes!("../test/packet/login/login_disconnect.dat").to_vec() + ); + } + + #[test] + fn test_login_disconnect_decode() { + let mut cursor = + Cursor::new(include_bytes!("../test/packet/login/login_disconnect.dat").to_vec()); + let login_disconnect = LoginDisconnect::decode(&mut cursor).unwrap(); + + assert_eq!( + login_disconnect.reason, + MessageBuilder::builder(Payload::text("Message")).build() + ); + } + + #[test] + fn test_encryption_request_encode() { + let encryption_request = EncryptionRequest { + server_id: String::from("ServerID"), + public_key: vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + verify_token: vec![1, 2, 3, 4], + }; + + let mut vec = Vec::new(); + encryption_request.encode(&mut vec).unwrap(); + + assert_eq!( + vec, + include_bytes!("../test/packet/login/encryption_request.dat").to_vec() + ); + } + + #[test] + fn test_encryption_request_decode() { + let mut cursor = + Cursor::new(include_bytes!("../test/packet/login/encryption_request.dat").to_vec()); + let encryption_request = EncryptionRequest::decode(&mut cursor).unwrap(); + + assert_eq!(encryption_request.server_id, String::from("ServerID")); + assert_eq!( + encryption_request.public_key, + vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + ); + assert_eq!(encryption_request.verify_token, vec![1, 2, 3, 4]); + } + + #[test] + fn test_login_success_encode() { + let login_success = LoginSuccess { + uuid: Uuid::parse_str("35ee313b-d89a-41b8-b25e-d32e8aff0389").unwrap(), + username: String::from("Username"), + }; + + let mut vec = Vec::new(); + login_success.encode(&mut vec).unwrap(); + + assert_eq!( + vec, + include_bytes!("../test/packet/login/login_success.dat").to_vec() + ); + } + + #[test] + fn test_login_success_decode() { + let mut cursor = + Cursor::new(include_bytes!("../test/packet/login/login_success.dat").to_vec()); + let login_success = LoginSuccess::decode(&mut cursor).unwrap(); + + assert_eq!(login_success.username, String::from("Username")); + + assert_eq!( + login_success.uuid, + Uuid::parse_str("35ee313b-d89a-41b8-b25e-d32e8aff0389").unwrap() + ); + } + + #[test] + fn test_set_compression_encode() { + let set_compression = SetCompression { threshold: 1 }; + + let mut vec = Vec::new(); + set_compression.encode(&mut vec).unwrap(); + + assert_eq!( + vec, + include_bytes!("../test/packet/login/login_set_compression.dat").to_vec() + ); + } + + #[test] + fn test_set_compression_decode() { + let mut cursor = + Cursor::new(include_bytes!("../test/packet/login/login_set_compression.dat").to_vec()); + let set_compression = SetCompression::decode(&mut cursor).unwrap(); + + assert_eq!(set_compression.threshold, 1); + } + + #[test] + fn test_login_plugin_request_encode() { + let login_plugin_request = LoginPluginRequest { + message_id: 55, + channel: String::from("Channel"), + data: vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + }; + + let mut vec = Vec::new(); + login_plugin_request.encode(&mut vec).unwrap(); + + assert_eq!( + vec, + include_bytes!("../test/packet/login/login_plugin_request.dat").to_vec() + ); + } + + #[test] + fn test_login_plugin_request_decode() { + let mut cursor = + Cursor::new(include_bytes!("../test/packet/login/login_plugin_request.dat").to_vec()); + let login_plugin_request = LoginPluginRequest::decode(&mut cursor).unwrap(); + + assert_eq!(login_plugin_request.message_id, 55); + assert_eq!(login_plugin_request.channel, String::from("Channel")); + assert_eq!( + login_plugin_request.data, + vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + ); + } } diff --git a/protocol/test/packet/login/encryption_request.dat b/protocol/test/packet/login/encryption_request.dat new file mode 100644 index 0000000..154ec3a --- /dev/null +++ b/protocol/test/packet/login/encryption_request.dat @@ -0,0 +1,3 @@ +ServerID + + \ No newline at end of file diff --git a/protocol/test/packet/login/login_disconnect.dat b/protocol/test/packet/login/login_disconnect.dat new file mode 100644 index 0000000..104c7f9 --- /dev/null +++ b/protocol/test/packet/login/login_disconnect.dat @@ -0,0 +1 @@ +{"text":"Message"} \ No newline at end of file diff --git a/protocol/test/packet/login/login_plugin_request.dat b/protocol/test/packet/login/login_plugin_request.dat new file mode 100644 index 0000000..909fb07 --- /dev/null +++ b/protocol/test/packet/login/login_plugin_request.dat @@ -0,0 +1 @@ +7Channel diff --git a/protocol/test/packet/login/login_set_compression.dat b/protocol/test/packet/login/login_set_compression.dat new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/protocol/test/packet/login/login_set_compression.dat @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/protocol/test/packet/login/login_success.dat b/protocol/test/packet/login/login_success.dat new file mode 100644 index 0000000..8bc273f --- /dev/null +++ b/protocol/test/packet/login/login_success.dat @@ -0,0 +1 @@ +$35ee313b-d89a-41b8-b25e-d32e8aff0389Username \ No newline at end of file