use axum::body::Body;
use axum::Router;
use http::{Request, StatusCode};
use tower::ServiceExt;
pub struct TestResponse {
pub status: StatusCode,
pub body: String,
}
pub async fn send(router: Router, method: &str, uri: &str, body: &str) -> TestResponse {
let request = Request::builder()
.method(method)
.uri(uri)
.body(Body::from(body.to_string()))
.expect("valid test request");
let response = router
.oneshot(request)
.await
.expect("router handled the request");
let status = response.status();
let bytes = axum::body::to_bytes(response.into_body(), usize::MAX)
.await
.expect("read response body");
TestResponse {
status,
body: String::from_utf8_lossy(&bytes).to_string(),
}
}