#[test]
#[cfg(feature = "remote")]
fn standalone_test() {
use crate::with_standalone_server;
use httpmock::MockServer;
use reqwest::blocking::Client;
with_standalone_server();
let server = MockServer::connect("localhost:5050");
let search_mock = server.mock(|when, then| {
when.path("/search").body("wow so large".repeat(1000000));
then.status(202);
});
let client = Client::builder().build().unwrap();
let response = client
.post(server.url("/search"))
.body("wow so large".repeat(1000000))
.send()
.unwrap();
search_mock.assert();
assert_eq!(response.status(), 202);
}
#[cfg(feature = "remote")]
#[tokio::test]
async fn async_standalone_test() {
use crate::with_standalone_server;
use httpmock::MockServer;
use reqwest::Client;
with_standalone_server();
let server = MockServer::connect_from_env_async().await;
let search_mock = server
.mock_async(|when, then| {
when.path_includes("/search")
.query_param("query", "metallica");
then.status(202);
})
.await;
let client = Client::new();
let response = client
.get(format!(
"http://{}/search?query=metallica",
server.address()
))
.send()
.await
.unwrap();
assert_eq!(response.status(), 202);
assert_eq!(search_mock.calls_async().await, 1);
search_mock.delete_async().await;
let response = client
.get(format!(
"http://{}:{}/search?query=metallica",
server.host(),
server.port()
))
.send()
.await
.unwrap();
assert_eq!(response.status(), 404);
}
#[cfg(feature = "remote")]
#[test]
#[should_panic]
fn unsupported_features() {
use crate::with_standalone_server;
use httpmock::MockServer;
with_standalone_server();
let server = MockServer::connect_from_env();
let _ = server.mock(|when, _then| {
when.is_true(|_| true);
});
}
#[cfg(feature = "remote")]
#[test]
fn binary_body_standalone_test() {
use crate::with_standalone_server;
use httpmock::MockServer;
use reqwest::blocking::get;
with_standalone_server();
let binary_content = b"\x80\x02\x03\xF0\x90\x80";
let server = MockServer::connect_from_env();
let m = server.mock(|when, then| {
when.path("/hello");
then.status(200).body(binary_content);
});
let mut response = get(server.url("/hello")).unwrap();
m.assert();
assert_eq!(response.status(), 200);
let mut buf: Vec<u8> = Vec::new();
response.copy_to(&mut buf).expect("Cannot read from body");
assert_eq!(buf, binary_content.to_vec());
}