GitXplorerGitXplorer
B

yup-hyper-mock

public
29 stars
14 forks
0 issues

Commits

List of commits on branch master.
Verified
7cf5c37bf958808b5579b9e2f3e2150bffc26424

Release yup-hyper-mock v8.0.0

BByron committed a year ago
Verified
400dd95ce6159b1d8fc7b494612f0c47eef08467

feat!: support for hyper 1.x

BByron committed a year ago
Unverified
d2d38451f64ca75e40484bceb27f51e90e759cb0

build(deps): Update to hyper 1.x

ffussybeaver committed a year ago
Verified
33e4f24d0585dfc736d9e74d89a3f509e7fb3c20

Release yup-hyper-mock v6.0.0

BByron committed 2 years ago
Verified
4f8d5b35b02d49c8efd8be8e68db8ce2767ccf3e

update changelog

BByron committed 2 years ago
Verified
9bc7a042def5ea1901c33800190f1f5eb413a3b4

Bump major version

BByron committed 2 years ago

README

The README file for this repository.

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.