use crate::common::TestServer;
use serde_json::json;

#[tokio::test]
async fn add_and_list_dast_targets() {
    let server = TestServer::start().await;

    // Initially empty
    let resp = server.get("/api/v1/dast/targets").await;
    assert_eq!(resp.status(), 200);
    let body: serde_json::Value = resp.json().await.unwrap();
    assert_eq!(body["data"].as_array().unwrap().len(), 0);

    // Add a target
    let resp = server
        .post(
            "/api/v1/dast/targets",
            &json!({
                "name": "test-app",
                "base_url": "https://test-app.example.com",
                "target_type": "webapp",
            }),
        )
        .await;
    assert_eq!(resp.status(), 200);

    // List should return 1
    let resp = server.get("/api/v1/dast/targets").await;
    let body: serde_json::Value = resp.json().await.unwrap();
    let targets = body["data"].as_array().unwrap();
    assert_eq!(targets.len(), 1);
    assert_eq!(targets[0]["name"], "test-app");
    assert_eq!(targets[0]["base_url"], "https://test-app.example.com");

    server.cleanup().await;
}

#[tokio::test]
async fn list_dast_findings_empty() {
    let server = TestServer::start().await;

    let resp = server.get("/api/v1/dast/findings").await;
    assert_eq!(resp.status(), 200);
    let body: serde_json::Value = resp.json().await.unwrap();
    assert_eq!(body["data"].as_array().unwrap().len(), 0);

    server.cleanup().await;
}
