agentic-server 0.5.0

Standalone axum server for agentic-api
Documentation
mod common;

use common::{spawn_gateway, spawn_mock_llm, test_config, test_state};

#[tokio::test]
async fn test_cors_preflight_returns_200() {
    let (llm_url, _h1) = spawn_mock_llm().await;
    let (gw_url, _h2) = spawn_gateway(test_state(&test_config(&llm_url))).await;

    let resp = reqwest::Client::new()
        .request(reqwest::Method::OPTIONS, format!("{gw_url}/v1/responses"))
        .header("Origin", "http://example.com")
        .header("Access-Control-Request-Method", "POST")
        .header("Access-Control-Request-Headers", "Content-Type,Authorization")
        .send()
        .await
        .unwrap();

    assert_eq!(resp.status(), 200);
    assert!(resp.headers().contains_key("access-control-allow-origin"));
    assert!(resp.headers().contains_key("access-control-allow-methods"));
    assert!(resp.headers().contains_key("access-control-allow-headers"));
}

#[tokio::test]
async fn test_cors_headers_on_regular_request() {
    let (llm_url, _h1) = spawn_mock_llm().await;
    let (gw_url, _h2) = spawn_gateway(test_state(&test_config(&llm_url))).await;

    let resp = reqwest::Client::new()
        .post(format!("{gw_url}/v1/responses"))
        .header("Origin", "http://example.com")
        .header("Content-Type", "application/json")
        .body(r#"{"model":"test","input":"hi"}"#)
        .send()
        .await
        .unwrap();

    assert!(resp.headers().contains_key("access-control-allow-origin"));
}