mod runtimes; mod server; use self::api::TestApi; use pretend::http::HeaderValue; use pretend::interceptor::{InterceptRequest, Request}; use pretend::{Pretend, Result, Url}; use pretend_reqwest::Client; mod api { use pretend::{pretend, Json, Result}; use std::collections::HashMap; #[pretend] pub trait TestApi { #[request(method = "GET", path = "/headers")] async fn headers(&self) -> Result>>; } } struct AuthInterceptor; impl InterceptRequest for AuthInterceptor { fn intercept(&self, mut request: Request) -> Result { let value = HeaderValue::from_static("Bearer abcde"); request.headers.append("Authorization", value); Ok(request) } } fn new_client() -> impl TestApi { let url = Url::parse(server::URL).unwrap(); Pretend::for_client(Client::default()) .with_url(url) .with_request_interceptor(AuthInterceptor) } #[test] fn pretend_interceptor_modifies_header() { server::test(|| { runtimes::block_on(async { let result = new_client().headers().await.unwrap(); let headers = result.value(); assert_eq!(headers.get("authorization").unwrap(), "Bearer abcde"); }) }) }