#[cfg(all(test, feature = "admin"))]
mod admin_server_integration_tests {
use lazydns::config::Config;
use lazydns::server::admin::{AdminServer, AdminState};
use std::sync::Arc;
use tokio::sync::RwLock;
use tokio::time::{Duration, sleep};
#[tokio::test]
async fn test_admin_server_startup() {
let config = Arc::new(RwLock::new(Config::new()));
let registry = Arc::new(lazydns::plugin::Registry::new());
let state = AdminState::new(Arc::clone(&config), Arc::clone(®istry));
let server = AdminServer::new("127.0.0.1:9999", state);
let server_task = tokio::spawn(async move { server.run().await });
sleep(Duration::from_millis(500)).await;
let client = reqwest::Client::new();
let response = client
.get("http://127.0.0.1:9999/api/server/stats")
.send()
.await;
server_task.abort();
assert!(response.is_ok(), "Server should be responding");
let resp = response.unwrap();
assert_eq!(resp.status(), 200);
let body = resp.json::<serde_json::Value>().await.unwrap();
assert_eq!(body["status"], "running");
assert!(body["version"].is_string());
}
}