use haiai::{HaiClient, HaiClientOptions, StaticJacsProvider};
use httpmock::Method::POST;
use httpmock::MockServer;
use serde_json::json;

#[tokio::test]
async fn verify_document_posts_to_public_endpoint_without_auth() {
    let server = MockServer::start_async().await;

    let mock = server
        .mock_async(|when, then| {
            when.method(POST).path("/api/jacs/verify").json_body(json!({
                "document": "{\"jacsId\":\"agent-1\"}"
            }));
            then.status(200).json_body(json!({
                "valid": true,
                "verified_at": "2026-01-01T00:00:00Z",
                "document_type": "JacsDocument",
                "issuer_verified": true,
                "signature_verified": true,
                "signer_id": "agent-1",
                "signed_at": "2026-01-01T00:00:00Z"
            }));
        })
        .await;

    let client = HaiClient::new(
        StaticJacsProvider::new("agent/with/slash"),
        HaiClientOptions {
            base_url: server.base_url(),
            ..HaiClientOptions::default()
        },
    )
    .expect("client");

    let result = client
        .verify_document("{\"jacsId\":\"agent-1\"}")
        .await
        .expect("verify document");
    assert!(result.valid);
    assert_eq!(result.document_type, "JacsDocument");

    mock.assert_async().await;
}
