mod notify;
mod record;
mod zone;
mod test {
use axum::http::StatusCode;
use crate::common::TestContext;
#[tokio::test]
async fn api_home_returns_running_message() {
let ctx = TestContext::new().await;
let (status, body) = ctx.make_request("GET", "/", None).await;
assert_eq!(status, StatusCode::OK);
assert_eq!(body["msg"], "bindizr API running");
}
#[tokio::test]
async fn missing_resources_and_invalid_payloads_return_client_errors() {
let ctx = TestContext::new().await;
let (status, _) = ctx.make_request("GET", "/zones/99999", None).await;
assert_eq!(status, StatusCode::NOT_FOUND);
let (status, _) = ctx.make_request("GET", "/records/99999", None).await;
assert_eq!(status, StatusCode::NOT_FOUND);
let invalid_json = serde_json::json!({
"name": "test.com"
});
let (status, _) = ctx.make_request("POST", "/zones", Some(invalid_json)).await;
assert_eq!(status, StatusCode::BAD_REQUEST);
let zone = ctx.create_test_zone().await;
let invalid_record = serde_json::json!({
"name": "test.example.com",
"record_type": "INVALID",
"value": "192.168.1.1",
"zone_name": zone.name
});
let (status, _) = ctx
.make_request("POST", "/records", Some(invalid_record))
.await;
assert!(status == StatusCode::BAD_REQUEST);
}
}