use crate::utils::EmptyHello;
use tower::ServiceExt;
use tower_api_client::Client;
use wiremock::matchers::{header, method, path};
use wiremock::{Mock, MockServer, ResponseTemplate};
#[tokio::test]
async fn basic_auth() {
let _ = env_logger::try_init();
let server = MockServer::start().await;
let uri = server.uri();
let client = Client::new(&uri).basic_auth("user", "pass");
Mock::given(method("GET"))
.and(path("/hello"))
.and(header("Authorization", "Basic dXNlcjpwYXNz")) .respond_with(ResponseTemplate::new(200))
.mount(&server)
.await;
client.oneshot(EmptyHello).await.unwrap();
}
#[tokio::test]
async fn basic_auth_no_password() {
let _ = env_logger::try_init();
let server = MockServer::start().await;
let uri = server.uri();
let client = Client::new(&uri).basic_auth("user", None);
Mock::given(method("GET"))
.and(path("/hello"))
.and(header("Authorization", "Basic dXNlcjo=")) .respond_with(ResponseTemplate::new(200))
.mount(&server)
.await;
client.oneshot(EmptyHello).await.unwrap();
}