vl-convert-server 2.0.0-rc2

HTTP server for converting Vega-Lite and Vega specifications to static images
mod common;

use common::*;

#[tokio::test]
async fn test_auth_healthz_no_key_needed() {
    let server = &*AUTH_SERVER;
    let resp = server
        .client
        .get(format!("{}/healthz", server.base_url))
        .send()
        .await
        .unwrap();
    assert_eq!(
        resp.status(),
        200,
        "health endpoints should be accessible without auth"
    );
}

#[tokio::test]
async fn test_auth_api_rejected_without_valid_key() {
    let server = &*AUTH_SERVER;
    for auth_header in [None, Some("Bearer wrong-key")] {
        let mut req = server.client.get(format!("{}/themes", server.base_url));
        if let Some(auth_header) = auth_header {
            req = req.header("authorization", auth_header);
        }
        let resp = req.send().await.unwrap();
        assert_eq!(resp.status(), 401, "auth_header={auth_header:?}");
        assert!(
            resp.headers().get("www-authenticate").is_some(),
            "expected WWW-Authenticate header on 401; auth_header={auth_header:?}"
        );
    }
}

#[tokio::test]
async fn test_auth_api_accepted_with_correct_key() {
    let server = &*AUTH_SERVER;
    let resp = server
        .client
        .get(format!("{}/themes", server.base_url))
        .header("authorization", "Bearer test-secret")
        .send()
        .await
        .unwrap();
    assert_eq!(
        resp.status(),
        200,
        "expected 200 with correct API key, got: {}",
        resp.status()
    );
}