test: add simple test for client I/O
This commit is contained in:
parent
44d7461ea2
commit
fd6702d029
2 changed files with 45 additions and 0 deletions
|
@ -3,6 +3,9 @@
|
|||
pub mod builder;
|
||||
pub mod response;
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod tests;
|
||||
|
||||
pub use response::Response;
|
||||
|
||||
#[cfg(feature = "hickory")]
|
||||
|
|
42
src/client/tests/mod.rs
Normal file
42
src/client/tests/mod.rs
Normal 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");
|
||||
}
|
Loading…
Reference in a new issue