#![cfg(feature = "dashboard-actix")]
use actix_web::{test, App};
use qrush::config::{set_basic_auth, QrushBasicAuthConfig};
use qrush::routes::metrics_route::qrush_metrics_routes;
#[actix_web::test]
async fn health_requires_and_accepts_basic_auth() {
set_basic_auth(Some(QrushBasicAuthConfig {
username: "user".into(),
password: "pass".into(),
}));
let app = test::init_service(App::new().configure(qrush_metrics_routes)).await;
let req = test::TestRequest::get()
.uri("/metrics/health")
.to_request();
let resp = test::call_service(&app, req).await;
assert_eq!(resp.status().as_u16(), 401);
assert!(resp.headers().contains_key("www-authenticate"));
let req = test::TestRequest::get()
.uri("/metrics/health")
.insert_header(("Authorization", "Basic dXNlcjpwYXNz"))
.to_request();
let resp = test::call_service(&app, req).await;
assert_eq!(resp.status().as_u16(), 200);
let body = test::read_body(resp).await;
assert_eq!(&body[..], b"healthy");
let req = test::TestRequest::get()
.uri("/metrics/health")
.insert_header(("Authorization", "Basic dXNlcjpub3Bl"))
.to_request();
let resp = test::call_service(&app, req).await;
assert_eq!(resp.status().as_u16(), 401);
}