test: add simple test for client I/O

This commit is contained in:
DarkCat09 2024-08-29 13:39:23 +04:00
parent 44d7461ea2
commit fd6702d029
Signed by: DarkCat09
GPG key ID: BD3CE9B65916CD82
2 changed files with 45 additions and 0 deletions

View file

@ -3,6 +3,9 @@
pub mod builder; pub mod builder;
pub mod response; pub mod response;
#[cfg(test)]
pub mod tests;
pub use response::Response; pub use response::Response;
#[cfg(feature = "hickory")] #[cfg(feature = "hickory")]

42
src/client/tests/mod.rs Normal file
View file

@ -0,0 +1,42 @@
use tokio::runtime::Runtime;
use super::*;
#[test]
fn check_parser() {
let rt = Runtime::new().unwrap();
let client = Client::builder().dangerous_with_no_verifier().build();
let mut recv = Vec::new();
let stream = tokio::io::join(
"20 text/gemini\r\n# hello world\n👍\n".as_bytes(),
&mut recv,
);
let mut resp = rt
.block_on(client.perform_io("gemini://unw.dc09.ru", stream))
.unwrap();
{
let status = resp.status();
assert_eq!(status.status_code(), StatusCode::Success);
assert_eq!(status.reply_type(), ReplyType::Success);
assert_eq!(status.num(), 20u8);
assert_eq!(status.second_digit(), 0u8);
}
assert_eq!(resp.is_ok(), true);
assert_eq!(resp.message(), "text/gemini");
{
let mime = resp.mime().unwrap();
assert_eq!(mime.type_(), mime::TEXT);
assert_eq!(mime.subtype(), "gemini");
}
assert_eq!(rt.block_on(resp.text()).unwrap(), "# hello world\n👍\n");
drop(resp); // to free recv from mutable borrowing
assert_eq!(recv.as_slice(), b"gemini://unw.dc09.ru\r\n");
}