yup-hyper-mock

Crates.ioyup-hyper-mock
lib.rsyup-hyper-mock
version8.0.0
sourcesrc
created_at2015-02-27 07:17:38.426149
updated_at2024-01-15 18:36:57.437319
descriptionA utility library for testing clients using hyper
homepage
repositoryhttps://github.com/Byron/yup-hyper-mock
max_upload_size
id1483
size13,708
Sebastian Thiel (Byron)

documentation

http://byron.github.io/yup-hyper-mock

README

Rust Crates.io

hyper-mock is a utility library to help hyper clients with their testing. It provides types used to test hyper itself, most notably, mock connections and macros to ease their use.

Usage

Set it up for use in tests in Cargo.toml

[dev-dependencies]
yup-hyper-mock = "*"
log = "*"  # log macros are used within yup-hyper-mock

In your tests module

#[cfg(test)]
mod tests {
    use hyper;
    use hyper_util::client::legacy::Client;

    yup_hyper_mock::mock_connector!(MockRedirectPolicy {
        "http://127.0.0.1" =>       "HTTP/1.1 301 Redirect\r\n\
                                     Location: http://127.0.0.2\r\n\
                                     Server: mock1\r\n\
                                     \r\n\
                                    "
        "http://127.0.0.2" =>       "HTTP/1.1 302 Found\r\n\
                                     Location: https://127.0.0.3\r\n\
                                     Server: mock2\r\n\
                                     \r\n\
                                    "
        "https://127.0.0.3" =>      "HTTP/1.1 200 OK\r\n\
                                     Server: mock3\r\n\
                                     \r\n\
                                    "
    });

    #[tokio::test]
    async fn test_redirect_followall() {
        let builder =
            hyper_util::client::legacy::Client::builder(hyper_util::rt::TokioExecutor::new());
        let client: Client<MockRedirectPolicy, http_body_util::Empty<hyper::body::Bytes>> =
            builder.build(MockRedirectPolicy::default());

        let res = client
            .get(hyper::Uri::from_static("http://127.0.0.1"))
            .await
            .unwrap();

        let headers = res.headers();
        assert!(headers.contains_key("Server"));
        assert_eq!(headers["Server"], "mock1");
    }
}

Credits

yup-hyper-mock is code from hyper/src/mock.rs, which was adjusted to work within its very own crate.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.

Commit count: 88

cargo fmt