79 lines
1.6 KiB
Rust
79 lines
1.6 KiB
Rust
//! Utilities to support tests.
|
|
|
|
pub extern crate bytes;
|
|
pub extern crate h2;
|
|
pub extern crate http;
|
|
pub extern crate futures;
|
|
pub extern crate mock_io;
|
|
pub extern crate env_logger;
|
|
|
|
pub use self::futures::{
|
|
Future,
|
|
Sink,
|
|
Stream,
|
|
};
|
|
|
|
pub use self::http::{
|
|
request,
|
|
response,
|
|
method,
|
|
status,
|
|
};
|
|
|
|
pub use self::h2::{
|
|
client,
|
|
server,
|
|
};
|
|
|
|
pub use self::bytes::{
|
|
Buf,
|
|
BufMut,
|
|
Bytes,
|
|
BytesMut,
|
|
};
|
|
|
|
pub trait MockH2 {
|
|
fn handshake(&mut self) -> &mut Self;
|
|
}
|
|
|
|
impl MockH2 for mock_io::Builder {
|
|
fn handshake(&mut self) -> &mut Self {
|
|
self.write(b"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n")
|
|
// Settings frame
|
|
.write(frames::SETTINGS)
|
|
.read(frames::SETTINGS)
|
|
.read(frames::SETTINGS_ACK)
|
|
}
|
|
}
|
|
|
|
pub mod frames {
|
|
//! Some useful frames
|
|
|
|
pub const SETTINGS: &'static [u8] = &[0, 0, 0, 4, 0, 0, 0, 0, 0];
|
|
pub const SETTINGS_ACK: &'static [u8] = &[0, 0, 0, 4, 1, 0, 0, 0, 0];
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! assert_user_err {
|
|
($actual:expr, $err:ident) => {{
|
|
use h2::error::{ConnectionError, User};
|
|
|
|
match $actual {
|
|
ConnectionError::User(e) => assert_eq!(e, User::$err),
|
|
_ => panic!("unexpected connection error type"),
|
|
}
|
|
}};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! assert_proto_err {
|
|
($actual:expr, $err:ident) => {{
|
|
use h2::error::{ConnectionError, Reason};
|
|
|
|
match $actual {
|
|
ConnectionError::Proto(e) => assert_eq!(e, Reason::$err),
|
|
_ => panic!("unexpected connection error type"),
|
|
}
|
|
}};
|
|
}
|